Получить в 1С открытую форму документа из внешней обработки

В УПП есть возможность подключить к документу установки цен номенклатуры внешнюю обработку заполнения табличной части. Нужно сделать заполнение документа через построитель запроса максимально штатно. Без изменения штатной формы документа. Здесь появляется сложность получения открытой формы документа из внешней обработки.

У документа данные хранятся в двух табличных частях. Первая – Товары, вторая – ТипыЦен. Тот кросс цен, который мы видим на форме (товары – строки, типы цен – колонки) заполняется логикой формы документа.

При этом у формы нет публичных (экспортных) процедур, позволяющих после наполнения данных формы, пересчитать отображение кросс-таблицы на форме.

Вариантов решения несколько, но в отсутствии экспортируемых процедур все сводится к одному – нужно программно закрыть/открыть форму. Здесь варианты:

  1. Как обычно наплевать на красивость и при завершении работы обработки заполнения вывести юзеру сообщение о том, что документ заполнился и нужно его закрыть/открыть, при этом форма отрисуется как нужно.
  2. Найти какой то способ добраться до формы, например через табличное поле, которое передается в процедуру инициализации внешней обработки заполнения третьим параметром. Здесь получить родителя элемента формы в виде собственно родителя не получится. В толстых формах это по всей видимости не работает. Это вам не HTML.
  3. Обратиться к форме напрямую, через документ-объект. Документ-объект передается в первом параметре процедуры инициализации обработки. Однако попытка обратиться к уже открытой форме документа из формы обработки заполнения успехом не увенчивается. Есть ощущение, что форма внешней обработки живет в каком то своем контексте и открытую форму объекта из того же сеанса не видит. К примеру если получить форму документа через объект и попытаться открыть ее, то ничего не произойдет.
  4. Работающее решение по Мерфи нашлось последним. Так всегда происходит, очевидно потому, что дальше уже не ищут. Нужная форма обнаруживается через конструкцию ДокументОбъект.ПолучитьФорму() в модуле объекта внешней обработки заполнения табличной части.

После того как форма обнаружена ее хоть и нельзя вертеть как ту гимнастку, но уж закрыть открыть получается без проблем.

Получить в 1С открытую форму документа из внешней обработки

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *