Как можно из внешней обработки запустить экспортную функцию модуля менеджера документа с передачей формы этого документа?
Добрый день.
Делаю обработку которая массово создает док-ты ИнвентаризацияМЗ. Заполняю данными необходимыми для работы кнопки "Заполнить по данным учета".(т.е. если потом открыть этот документ и нажать заполнить всё заполняет)
А далее мне надо вызвать процедуру из модуля менеджера док-та ИнвентаризацияМЗ - Процедура ЗаполнитьПоДаннымУчета(Форма) Экспорт.
В самой форме документа она вызывается так:
А как её можно вызвать из внешней обработки? И можно ли вообще?
(Я могу конечно сам код процедуры перенести во внешнюю обработку, но не хотелось бы)
P.S. УФ БГУ2.0
Делаю обработку которая массово создает док-ты ИнвентаризацияМЗ. Заполняю данными необходимыми для работы кнопки "Заполнить по данным учета".(т.е. если потом открыть этот документ и нажать заполнить всё заполняет)
А далее мне надо вызвать процедуру из модуля менеджера док-та ИнвентаризацияМЗ - Процедура ЗаполнитьПоДаннымУчета(Форма) Экспорт.
В самой форме документа она вызывается так:
&НаСервере
Процедура ЗаполнитьПоДаннымУчетаСервер()
Документы.ИнвентаризацияМЗ.ЗаполнитьПоДаннымУчета(ЭтаФорма);
КонецПроцедуры
А как её можно вызвать из внешней обработки? И можно ли вообще?
(Я могу конечно сам код процедуры перенести во внешнюю обработку, но не хотелось бы)
P.S. УФ БГУ2.0
По теме из базы знаний
- Под капотом управляемых форм
- Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов
- Тестер: частые вопросы
- Разработка и сценарное тестирование с Vanessa-ADD. Собственные шаги и библиотеки. Экспортные сценарии
- Применение внешних компонент для решения задач сценарного тестирования
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Добрый день! В обработке надо написать примерно следующий код:
Документы.ИнвентаризацияМЗ.ЗаполнитьПоДаннымУчета(ЭтаФорма);
Добрый день! В обработке надо написать примерно следующий код:
ЗаменительФормы = Новый Структура("Объект", СоздаваемыйДокументОбъект);
Документы.ИнвентаризацияМЗ.ЗаполнитьПоДаннымУчета(ЗаменительФормы);
(2)Так она и так экспортная.
проблема не в вызове(не так вопрос задал, хотя в теме вопроса написано понятнее)).
Проблема в том что надо передать форму самого документа, не из документа, а при работе внешней обработки.(но похоже это никак не сделать)
надо вызвать процедуру из модуля менеджера док-та ИнвентаризацияМЗ - Процедура ЗаполнитьПоДаннымУчета(Форма) Экспорт.
проблема не в вызове(не так вопрос задал, хотя в теме вопроса написано понятнее)).
Проблема в том что надо передать форму самого документа, не из документа, а при работе внешней обработки.(но похоже это никак не сделать)
(4) В документе не видно, что она экспортная:
&НаСервере
Процедура ЗаполнитьПоДаннымУчетаСервер()
Должно быть:
&НаСервере
Процедура ЗаполнитьПоДаннымУчетаСервер() Экспорт
И зачем Вам форма документа, если Вы заполняете его из обработки?
Просто вызов процедуры см.3
&НаСервере
Процедура ЗаполнитьПоДаннымУчетаСервер()
Должно быть:
&НаСервере
Процедура ЗаполнитьПоДаннымУчетаСервер() Экспорт
И зачем Вам форма документа, если Вы заполняете его из обработки?
Просто вызов процедуры см.3
(5) Не так поняли.
В самой форме документа она вызывается так:
это она вызывает в самой форме документа - процедуру из МодуляМенеджера (которая там экспортная) с передачей "ЭтаФорма" (форму документа открытая)
Так в том то и дело - В обработке я заполняю только шапку документов(например надо сделать документы инвентаризации МЗ по одному человеку у которого несколько мест хранения, т.е. ЦМО будет несколько штук), по которой, используя процедуру из МодуляМенеджера она заполняется. Т.е. я не весь документ заполняю обработкой, а хочу использовать типовую процедуру.
В самой форме документа она вызывается так:
&НаСервере
Процедура ЗаполнитьПоДаннымУчетаСервер()
Документы.ИнвентаризацияМЗ.ЗаполнитьПоДаннымУчета(ЭтаФорма);
КонецПроцедуры
это она вызывает в самой форме документа - процедуру из МодуляМенеджера (которая там экспортная) с передачей "ЭтаФорма" (форму документа открытая)
Так в том то и дело - В обработке я заполняю только шапку документов(например надо сделать документы инвентаризации МЗ по одному человеку у которого несколько мест хранения, т.е. ЦМО будет несколько штук), по которой, используя процедуру из МодуляМенеджера она заполняется. Т.е. я не весь документ заполняю обработкой, а хочу использовать типовую процедуру.
В документе:
Процедура ЗаполнитьПоДаннымУчетаСервер() Экспорт
При создании документа и заполнении документа из обработки Вы получаете объект - созданный документ и заполняете его.
Поставьте Имя созданного документа +"."+ЗаполнитьПоДаннымУчетаСервер()
Например:
Галочка = ИнвентаризацияМЗ.ПолучитьОбъект();
Галочка.ЗаполнитьПоДаннымУчетаСервер();
Галочка.Записать(РежимЗаписиДокумента.Проведение);
Процедура ЗаполнитьПоДаннымУчетаСервер() Экспорт
При создании документа и заполнении документа из обработки Вы получаете объект - созданный документ и заполняете его.
Поставьте Имя созданного документа +"."+ЗаполнитьПоДаннымУчетаСервер()
Например:
Галочка = ИнвентаризацияМЗ.ПолучитьОбъект();
Галочка.ЗаполнитьПоДаннымУчетаСервер();
Галочка.Записать(РежимЗаписиДокумента.Проведение);
(7) Да в том то и дело что заполняется объект. Про скопировать я писал как краний вариант
(Я могу конечно сам код процедуры перенести во внешнюю обработку, но не хотелось бы)
Процедура ЗаполнитьПоДаннымУчета(Форма) Экспорт
Перем СдвигИндексаТаблицыМатериалы;
ДокументОбъект = Форма["Объект"];
ПараметрыНакладываемогоОтбора = ОпределитьПараметрыНакладываемогоОтбора(Форма);
ДатаОпределенияОстатков = Новый Граница(КонецДня(ДокументОбъект["ДатаИнвентаризации"]), ВидГраницы.Включая);
ИспользоватьБалансовуюСтоимость = НЕ ЗначениеЗаполнено(ДокументОбъект["ТипЦен"]);
ПризнакиИспользованияКолонок = Документы.ИнвентаризацияМЗ.ПолучитьПризнакиИспользованияКолонокТаблицыПорядокСписания();
ВариантФормированияОписи = ДокументОбъект["ВариантФормированияОписи"];
ЗапросОстатки = Новый Запрос();
ЗапросОстатки.УстановитьПараметр("Организация", ДокументОбъект["Организация"]);
ЗапросОстатки.УстановитьПараметр("ДатаЗапроса", ДатаОпределенияОстатков);
ЗапросОстатки.УстановитьПараметр("СчетаОстатков", ПараметрыНакладываемогоОтбора["СчетаОстатков"]);
ЗапросОстатки.УстановитьПараметр("ИспользоватьУчетПоИФО", ПараметрыНакладываемогоОтбора["ИспользоватьУчетПоИФО"]);
ЗапросОстатки.УстановитьПараметр("НакладыватьОтборПоИФО", ПараметрыНакладываемогоОтбора["НакладыватьОтборПоИФО"]);
ЗапросОстатки.УстановитьПараметр("ИФО", ДокументОбъект["ИФО"]);
ЗапросОстатки.УстановитьПараметр("НакладыватьОтборПоКФО", ПараметрыНакладываемогоОтбора["НакладыватьОтборПоКФО"]);
ЗапросОстатки.УстановитьПараметр("КФО", ДокументОбъект["КФО"]);
ЗапросОстатки.УстановитьПараметр("НакладыватьОтборПоПодразделению", ПараметрыНакладываемогоОтбора["НакладыватьОтборПоПодразделению"]);
ЗапросОстатки.УстановитьПараметр("Подразделение", ДокументОбъект["Подразделение"]);
ЗапросОстатки.УстановитьПараметр("НакладыватьОтборПоКПС", ПараметрыНакладываемогоОтбора["НакладыватьОтборПоКПС"]);
ЗапросОстатки.УстановитьПараметр("КПС", ДокументОбъект["КПС"]);
ЗапросОстатки.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка());
ЗапросОстатки.УстановитьПараметр("ТипЦен", ДокументОбъект["ТипЦен"]);
// Отбор по МОЛ
ЗапросОстатки.УстановитьПараметр("ЗначенияДляОтбораПоМОЛ", ПараметрыНакладываемогоОтбора["ЗначенияДляОтбораПоМОЛ"]);
// Отбор по дополнительному субконто
ЗапросОстатки.УстановитьПараметр("СледуетИспользоватьДополнительноеСубконто", ПараметрыНакладываемогоОтбора["СледуетИспользоватьДополнительноеСубконто"]);
ЗапросОстатки.УстановитьПараметр("ТаблицаРеальныхДополнительныхСубконто", ПараметрыНакладываемогоОтбора["ТаблицаРеальныхДополнительныхСубконто"]);
ЗапросОстатки.УстановитьПараметр("НакладыватьОтборПоДополнительномуСубконто", ПараметрыНакладываемогоОтбора["НакладыватьОтборПоДополнительномуСубконто"]);
ЗапросОстатки.УстановитьПараметр("ЗначениеДляОтбораПоДополнительномуСубконто", ДокументОбъект["Субконто3"]);
// В ТЧ "Порядок списания" используются не все колонки, а только некоторые
ЗапросОстатки.УстановитьПараметр("ИспользуетсяКолонкаИФО", ПризнакиИспользованияКолонок["ИФО"]);
ЗапросОстатки.УстановитьПараметр("ИспользуетсяКолонкаКФО", ПризнакиИспользованияКолонок["КФО"]);
ЗапросОстатки.УстановитьПараметр("ИспользуетсяКолонкаЦМО", ПризнакиИспользованияКолонок["ЦМО"]);
ЗапросОстатки.УстановитьПараметр("ИспользуетсяКолонкаКПС", ПризнакиИспользованияКолонок["КПС"]);
ЗапросОстатки.УстановитьПараметр("ИспользуетсяКолонкаСчет", ПризнакиИспользованияКолонок["Счет"]);
ЗапросОстатки.УстановитьПараметр("ИспользуетсяКолонкаСубконто3", ПризнакиИспользованияКолонок["Субконто3"]);
ЗапросОстатки.УстановитьПараметр("СчетГруппа", ДокументОбъект["СчетГруппа"]);
ЗапросОстатки.УстановитьПараметр("НеЗаполнятьЦену", ДокументОбъект["НеЗаполнятьЦену"]);
ТекстЗапроса = "
|//////////////////////////////////////////////////////////// ////////////////////
|// [0]. Таблица реальных дополнительных субконто для Счетов остатков
|//
|ВЫБРАТЬ
| ТЗ.Счет КАК Счет,
| ТЗ.РеальноеДополнительноеСубконто КАК РеальноеДополнительноеСубконто,
| ТЗ.НомерРеальногоДополнительногоСубконто КАК НомерРеальногоДополнительногоСубконто
|ПОМЕСТИТЬ
| ТаблицаРеальныхДополнительныхСубконто
|ИЗ
| &ТаблицаРеальныхДополнительныхСубконто КАК ТЗ
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|// [1]. Все остатки по полным счетам, с отбором по МОЛ.
|// Т.к. применяется отбор по МОЛ, то могут быть остатки с нулевыми суммами
|// (если на соответствующих счетах не ведется суммовой
|// учет по субконто для МОЛ)
|//
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Остатки.Счет КАК Счет,
| Остатки.КФО КАК КФО,
| ЕСТЬNULL(Остатки.КПС,ЗНАЧЕНИЕ(Справочник.КлассификационныеПризнакиСчетов.ПустаяСсылка)) КАК КПС,
| ВЫБОР
| КОГДА &ИспользоватьУчетПоИФО ТОГДА
| Остатки.ИФО
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.ИсточникиФинансовогоОбеспечения.ПустаяСсылка)
| КОНЕЦ КАК ИФО,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто1) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто1 КАК Справочник.Номенклатура)
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто2) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто2 КАК Справочник.Номенклатура)
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто3) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто3 КАК Справочник.Номенклатура)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА Субконто1 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| Субконто1
| КОГДА Субконто2 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| Субконто2
| КОГДА Субконто3 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| Субконто3
| КОНЕЦ КАК МОЛ,
| ВЫБОР
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 1 ТОГДА
| Остатки.Субконто1
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 2 ТОГДА
| Остатки.Субконто2
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 3 ТОГДА
| Остатки.Субконто3
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Субконто3,
| СУММА(Остатки.КоличествоРазвернутыйОстатокДт - Остатки.КоличествоРазвернутыйОстатокКт) КАК КоличествоУчет,
| СУММА(Остатки.СуммаРазвернутыйОстатокДт - Остатки.СуммаРазвернутыйОстатокКт) КАК СуммаУчет
|ПОМЕСТИТЬ
| ОстаткиСОтборомПоМОЛ
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &ДатаЗапроса, // 1 Период
| Счет В (&СчетаОстатков), // 2 Условие счета
| , // 3 Виды субконто
| Организация = &Организация // 4 Условие
| И ВЫБОР
| КОГДА &НакладыватьОтборПоИФО ТОГДА
| ИФО = &ИФО
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &НакладыватьОтборПоКФО ТОГДА
| КФО = &КФО
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &НакладыватьОтборПоКПС ТОГДА
| КПС = &КПС
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &НакладыватьОтборПоПодразделению ТОГДА
| Подразделение = &Подразделение
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
| // Отбор по МОЛ
| И ВЫБОР
| КОГДА Субконто1 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| ИСТИНА
| КОГДА Субконто2 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| ИСТИНА
| КОГДА Субконто3 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ
| ) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРеальныхДополнительныхСубконто
| ПО Остатки.Счет = ТаблицаРеальныхДополнительныхСубконто.Счет
|ГДЕ
| // Только заполненная номенклатура
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто1) = ТИП(Справочник.Номенклатура) ТОГДА
| НЕ Остатки.Субконто1 = &ПустаяНоменклатура
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто2) = ТИП(Справочник.Номенклатура) ТОГДА
| НЕ Остатки.Субконто2 = &ПустаяНоменклатура
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто3) = ТИП(Справочник.Номенклатура) ТОГДА
| НЕ Остатки.Субконто3 = &ПустаяНоменклатура
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ
| // Отбор по дополнительному субконто
| И ВЫБОР
| КОГДА &НакладыватьОтборПоДополнительномуСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 1 ТОГДА
| Остатки.Субконто1 = &ЗначениеДляОтбораПоДополнительномуСубконто
| КОГДА &НакладыватьОтборПоДополнительномуСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 2 ТОГДА
| Остатки.Субконто2 = &ЗначениеДляОтбораПоДополнительномуСубконто
| КОГДА &НакладыватьОтборПоДополнительномуСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 3 ТОГДА
| Остатки.Субконто3 = &ЗначениеДляОтбораПоДополнительномуСубконто
| КОГДА &НакладыватьОтборПоДополнительномуСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 0 ТОГДА
| ЛОЖЬ
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
|СГРУППИРОВАТЬ ПО
| Остатки.Счет,
| Остатки.КФО,
| ЕСТЬNULL(Остатки.КПС,ЗНАЧЕНИЕ(Справочник.КлассификационныеПризнакиСчетов.ПустаяСсылка)),
| ВЫБОР
| КОГДА &ИспользоватьУчетПоИФО ТОГДА
| Остатки.ИФО
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.ИсточникиФинансовогоОбеспечения.ПустаяСсылка)
| КОНЕЦ,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто1) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто1 КАК Справочник.Номенклатура)
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто2) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто2 КАК Справочник.Номенклатура)
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто3) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто3 КАК Справочник.Номенклатура)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| КОНЕЦ,
| ВЫБОР
| КОГДА Субконто1 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| Субконто1
| КОГДА Субконто2 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| Субконто2
| КОГДА Субконто3 В (&ЗначенияДляОтбораПоМОЛ) ТОГДА
| Субконто3
| КОНЕЦ,
| ВЫБОР
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 1 ТОГДА
| Остатки.Субконто1
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 2 ТОГДА
| Остатки.Субконто2
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 3 ТОГДА
| Остатки.Субконто3
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ
|ИМЕЮЩИЕ
| НЕ СУММА(Остатки.КоличествоРазвернутыйОстатокДт - Остатки.КоличествоРазвернутыйОстатокКт) = 0
|ИНДЕКСИРОВАТЬ ПО
| Счет,
| КФО,
| КПС,
| ИФО,
| Субконто3,
| Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|// [2]. Данные для заполнения таблицы ПорядокСписания
|// (Финальная таблица)
|//
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВЫБОР КОГДА &ИспользуетсяКолонкаИФО ТОГДА ИФО ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК ИФО,
| ВЫБОР КОГДА &ИспользуетсяКолонкаКФО ТОГДА КФО ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК КФО,
| ВЫБОР КОГДА &ИспользуетсяКолонкаЦМО ТОГДА МОЛ ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК ЦМО,
| ВЫБОР КОГДА &ИспользуетсяКолонкаКПС ТОГДА КПС ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК КПС,
| ВЫБОР КОГДА &ИспользуетсяКолонкаСчет ТОГДА Счет ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК Счет,
| ВЫБОР КОГДА &ИспользуетсяКолонкаСубконто3 ТОГДА Субконто3 ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК Субконто3
|ИЗ
| ОстаткиСОтборомПоМОЛ КАК Остатки
|;";
Если ИспользоватьБалансовуюСтоимость Тогда
Если ВариантФормированияОписи = 3 Тогда
// 3. Опись с 2018 г. Счет в таблице (5 знаков). Одна строка - один объект
ТекстЗапросаБлижайшиеОбщиеРодителиСчетов = ИнвентаризацияСервер.ПолучитьТекстЗапросаБлижайшиеОбщиеРодителиСчетов(
"А_ОстаткиСОтборомПоМОЛ",
"Номенклатура",
,
СдвигИндексаТаблицыМатериалы);
Иначе
ТекстЗапросаБлижайшиеОбщиеРодителиСчетов = "";
СдвигИндексаТаблицыМатериалы = 0;
КонецЕсли;
//------------------------------------------------------------------------------
// Вариант А.
// Заполнение сумм по балансовой стоимости
//------------------------------------------------------------------------------
ТекстЗапроса = ТекстЗапроса + "
|//////////////////////////////////////////////////////////// ////////////////////
|// [3А]. Все остатки по полным счетам, без отбора по МОЛ.
|// Т.к. отбор по МОЛ не применяется, то в остатках будет заполнена сумма,
|// вне зависимости от ведения суммового учета по субконто ЦМО или Контрагенты
|//
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Остатки.Счет КАК Счет,
| Остатки.КФО КАК КФО,
| ЕСТЬNULL(Остатки.КПС,ЗНАЧЕНИЕ(Справочник.КлассификационныеПризнакиСчетов.ПустаяСсылка)) КАК КПС,
| ВЫБОР
| КОГДА &ИспользоватьУчетПоИФО ТОГДА
| Остатки.ИФО
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.ИсточникиФинансовогоОбеспечения.ПустаяСсылка)
| КОНЕЦ КАК ИФО,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто1) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто1 КАК Справочник.Номенклатура)
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто2) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто2 КАК Справочник.Номенклатура)
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто3) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто3 КАК Справочник.Номенклатура)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 1 ТОГДА
| Остатки.Субконто1
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 2 ТОГДА
| Остатки.Субконто2
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 3 ТОГДА
| Остатки.Субконто3
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Субконто3,
| СУММА(Остатки.КоличествоРазвернутыйОстатокДт - Остатки.КоличествоРазвернутыйОстатокКт) КАК КоличествоУчет,
| СУММА(Остатки.СуммаРазвернутыйОстатокДт - Остатки.СуммаРазвернутыйОстатокКт) КАК СуммаУчет
|ПОМЕСТИТЬ
| А_ОстаткиБезОтбораПоМОЛ
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Остатки(
| &ДатаЗапроса, // 1 Период
| Счет В (&СчетаОстатков), // 2 Условие счета
| , // 3 Виды субконто
| Организация = &Организация // 4 Условие
| И ВЫБОР
| КОГДА &НакладыватьОтборПоИФО ТОГДА
| ИФО = &ИФО
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &НакладыватьОтборПоКФО ТОГДА
| КФО = &КФО
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &НакладыватьОтборПоКПС ТОГДА
| КПС = &КПС
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &НакладыватьОтборПоПодразделению ТОГДА
| Подразделение = &Подразделение
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
| ) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРеальныхДополнительныхСубконто
| ПО Остатки.Счет = ТаблицаРеальныхДополнительныхСубконто.Счет
|ГДЕ
| // Только заполненная номенклатура
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто1) = ТИП(Справочник.Номенклатура) ТОГДА
| НЕ Остатки.Субконто1 = &ПустаяНоменклатура
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто2) = ТИП(Справочник.Номенклатура) ТОГДА
| НЕ Остатки.Субконто2 = &ПустаяНоменклатура
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто3) = ТИП(Справочник.Номенклатура) ТОГДА
| НЕ Остатки.Субконто3 = &ПустаяНоменклатура
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ
| // Отбор по дополнительному субконто
| И ВЫБОР
| КОГДА &НакладыватьОтборПоДополнительномуСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 1 ТОГДА
| Остатки.Субконто1 = &ЗначениеДляОтбораПоДополнительномуСубконто
| КОГДА &НакладыватьОтборПоДополнительномуСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 2 ТОГДА
| Остатки.Субконто2 = &ЗначениеДляОтбораПоДополнительномуСубконто
| КОГДА &НакладыватьОтборПоДополнительномуСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 3 ТОГДА
| Остатки.Субконто3 = &ЗначениеДляОтбораПоДополнительномуСубконто
| КОГДА &НакладыватьОтборПоДополнительномуСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 0 ТОГДА
| ЛОЖЬ
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
|СГРУППИРОВАТЬ ПО
| Остатки.Счет,
| Остатки.КФО,
| ЕСТЬNULL(Остатки.КПС,ЗНАЧЕНИЕ(Справочник.КлассификационныеПризнакиСчетов.ПустаяСсылка)),
| ВЫБОР
| КОГДА &ИспользоватьУчетПоИФО ТОГДА
| Остатки.ИФО
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.ИсточникиФинансовогоОбеспечения.ПустаяСсылка)
| КОНЕЦ,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто1) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто1 КАК Справочник.Номенклатура)
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто2) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто2 КАК Справочник.Номенклатура)
| КОГДА ТИПЗНАЧЕНИЯ(Остатки.Субконто3) = ТИП(Справочник.Номенклатура) ТОГДА
| ВЫРАЗИТЬ(Остатки.Субконто3 КАК Справочник.Номенклатура)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| КОНЕЦ,
| ВЫБОР
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 1 ТОГДА
| Остатки.Субконто1
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 2 ТОГДА
| Остатки.Субконто2
| КОГДА &СледуетИспользоватьДополнительноеСубконто И ТаблицаРеальныхДополнительныхСубконто.НомерРеальногоДополнительногоСубконто = 3 ТОГДА
| Остатки.Субконто3
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ
|ИМЕЮЩИЕ
| НЕ СУММА(Остатки.КоличествоРазвернутыйОстатокДт - Остатки.КоличествоРазвернутыйОстатокКт) = 0
|ИНДЕКСИРОВАТЬ ПО
| Счет,
| КФО,
| КПС,
| ИФО,
| Субконто3,
| Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|// [4А]. Суммы остатков номенклатуры (балансовая стоимость) по выбранному МОЛ
|//
|ВЫБРАТЬ
| ОстаткиБезОтбораПоМОЛ.Счет КАК Счет,
| ОстаткиБезОтбораПоМОЛ.КФО КАК КФО,
| ОстаткиБезОтбораПоМОЛ.КПС КАК КПС,
| ОстаткиБезОтбораПоМОЛ.ИФО КАК ИФО,
| ОстаткиБезОтбораПоМОЛ.Субконто3 КАК Субконто3,
| ОстаткиБезОтбораПоМОЛ.Номенклатура КАК Номенклатура,
| ОстаткиСОтборомПоМОЛ.МОЛ КАК МОЛ,
| СУММА(ОстаткиСОтборомПоМОЛ.КоличествоУчет) КАК КоличествоУчет,
|
| // Балансовая стоимость
| СУММА(ВЫБОР
| КОГДА ОстаткиБезОтбораПоМОЛ.КоличествоУчет = 0 ТОГДА
| 0
| КОГДА ОстаткиСОтборомПоМОЛ.СуммаУчет <> 0 ТОГДА
| ОстаткиСОтборомПоМОЛ.СуммаУчет
| ИНАЧЕ
| ОстаткиБезОтбораПоМОЛ.СуммаУчет * ОстаткиСОтборомПоМОЛ.КоличествоУчет / ОстаткиБезОтбораПоМОЛ.КоличествоУчет
| КОНЕЦ) КАК СуммаУчетБалансовая
|ПОМЕСТИТЬ
| А_ОстаткиСОтборомПоМОЛ
|ИЗ
| А_ОстаткиБезОтбораПоМОЛ КАК ОстаткиБезОтбораПоМОЛ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиСОтборомПоМОЛ КАК ОстаткиСОтборомПоМОЛ
| ПО ОстаткиБезОтбораПоМОЛ.Счет = ОстаткиСОтборомПоМОЛ.Счет
| И ОстаткиБезОтбораПоМОЛ.КФО = ОстаткиСОтборомПоМОЛ.КФО
| И ОстаткиБезОтбораПоМОЛ.КПС = ОстаткиСОтборомПоМОЛ.КПС
| И ОстаткиБезОтбораПоМОЛ.ИФО = ОстаткиСОтборомПоМОЛ.ИФО
| И ОстаткиБезОтбораПоМОЛ.Субконто3 = ОстаткиСОтборомПоМОЛ.Субконто3
| И ОстаткиБезОтбораПоМОЛ.Номенклатура = ОстаткиСОтборомПоМОЛ.Номенклатура
|СГРУППИРОВАТЬ ПО
| ОстаткиБезОтбораПоМОЛ.Счет,
| ОстаткиБезОтбораПоМОЛ.КФО,
| ОстаткиБезОтбораПоМОЛ.КПС,
| ОстаткиБезОтбораПоМОЛ.ИФО,
| ОстаткиБезОтбораПоМОЛ.Субконто3,
| ОстаткиБезОтбораПоМОЛ.Номенклатура,
| ОстаткиСОтборомПоМОЛ.МОЛ
|ИМЕЮЩИЕ
| НЕ (СУММА(ОстаткиСОтборомПоМОЛ.КоличествоУчет) = 0)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|// [5А]. Данные для заполнения таблицы Остатки (балансовая стоимость)
|// (Финальная таблица)
|//
|ВЫБРАТЬ
| Счет КАК Счет,
| ИФО КАК ИФО,
| КФО КАК КФО,
| КПС КАК КПС,
| МОЛ КАК ЦМО,
| Субконто3 КАК Субконто3,
| Номенклатура КАК Номенклатура,
| СУММА(КоличествоУчет) КАК КоличествоУчет,
| СУММА(СуммаУчетБалансовая) КАК СуммаУчет
|ИЗ
| А_ОстаткиСОтборомПоМОЛ
|СГРУППИРОВАТЬ ПО
| Счет,
| ИФО,
| КФО,
| КПС,
| МОЛ,
| Субконто3,
| Номенклатура
|УПОРЯДОЧИТЬ ПО
| СуммаУчет УБЫВ
|;
|"
+ ТекстЗапросаБлижайшиеОбщиеРодителиСчетов
+ "
|//////////////////////////////////////////////////////////// ////////////////////
|// [6А]. Данные для заполнения таблицы Материалы (балансовая стоимость)
|// (Финальная таблица)
|//
|ВЫБРАТЬ
| Субконто3 КАК Субконто3,
| Номенклатура КАК Номенклатура,
| КоличествоУчет КАК КоличествоУчет,
| ВЫБОР
| КОГДА &НеЗаполнятьЦену ТОГДА
| 0
| КОГДА КоличествоУчет = 0 ТОГДА
| 0
| ИНАЧЕ
| СуммаУчетБалансовая / КоличествоУчет
| КОНЕЦ КАК Цена,
| СуммаУчетБалансовая КАК СуммаУчет,
|
| Счет КАК Счет,
| КПС КАК КПС,
| КФО КАК КФО,
|
| // Недостача
| ВЫБОР
| КОГДА КоличествоУчет > 0 ТОГДА
| КоличествоУчет
| ИНАЧЕ
| 0
| КОНЕЦ КАК НедостачаКоличество,
| ВЫБОР
| КОГДА СуммаУчетБалансовая > 0 ТОГДА
| СуммаУчетБалансовая
| ИНАЧЕ
| 0
| КОНЕЦ КАК НедостачаСумма,
|
| // Излишек
| ВЫБОР
| КОГДА КоличествоУчет < 0 ТОГДА
| -КоличествоУчет
| ИНАЧЕ
| 0
| КОНЕЦ КАК ИзлишекКоличество,
| ВЫБОР
| КОГДА СуммаУчетБалансовая < 0 ТОГДА
| -СуммаУчетБалансовая
| ИНАЧЕ
| 0
| КОНЕЦ КАК ИзлишекСумма
|ИЗ
| ("
+ ПолучитьТекстЗапросаСвернутыеОстаткиДляТаблицыМатериалы(
ВариантФормированияОписи,
ИспользоватьБалансовуюСтоимость)
+ ") КАК СвернутыеОстатки
|УПОРЯДОЧИТЬ ПО
| Номенклатура.Наименование
|;";
// [5А]. Данные для заполнения таблицы Остатки (балансовая стоимость)
ИндексТаблицыОстатки = 5;
// [6А]. Данные для заполнения таблицы Материалы (балансовая стоимость)
ИндексТаблицыМатериалы = 6 + СдвигИндексаТаблицыМатериалы;
Иначе
//------------------------------------------------------------------------------
// Вариант Б.
// Заполнение сумм по указанному типу цен номенклатуры
//------------------------------------------------------------------------------
Если ВариантФормированияОписи = 3 Тогда
// 3. Опись с 2018 г. Счет в таблице (5 знаков). Одна строка - один объект
ТекстЗапросаБлижайшиеОбщиеРодителиСчетов = ИнвентаризацияСервер.ПолучитьТекстЗапросаБлижайшиеОбщиеРодителиСчетов(
"ОстаткиСОтборомПоМОЛ",
"Номенклатура",
,
СдвигИндексаТаблицыМатериалы);
Иначе
ТекстЗапросаБлижайшиеОбщиеРодителиСчетов = "";
СдвигИндексаТаблицыМатериалы = 0;
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|//////////////////////////////////////////////////////////// ////////////////////
|// [3Б]. Установленные цены номенклатуры
|//
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Номенклатура КАК Номенклатура,
| Цена КАК Цена
|ПОМЕСТИТЬ
| Б_ЦеныНоменклатуры
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &ДатаЗапроса,
| Организация = &Организация
| И ТипЦен = &ТипЦен
| И Номенклатура В
| (ВЫБРАТЬ
| Номенклатура
| ИЗ
| ОстаткиСОтборомПоМОЛ)
| ) КАК ЦеныНоменклатурыСрезПоследних
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|// [4Б]. Данные для заполнения таблицы Остатки (указанный тип цен)
|// (Финальная таблица)
|//
|ВЫБРАТЬ
| Остатки.Счет КАК Счет,
| Остатки.ИФО КАК ИФО,
| Остатки.КФО КАК КФО,
| Остатки.КПС КАК КПС,
| Остатки.МОЛ КАК ЦМО,
| Остатки.Субконто3 КАК Субконто3,
| Остатки.Номенклатура КАК Номенклатура,
| СУММА(Остатки.КоличествоУчет) КАК КоличествоУчет,
| СУММА(Цены.Цена * Остатки.КоличествоУчет) КАК СуммаУчет
|ИЗ
| ОстаткиСОтборомПоМОЛ КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Б_ЦеныНоменклатуры КАК Цены
| ПО Остатки.Номенклатура = Цены.Номенклатура
|СГРУППИРОВАТЬ ПО
| Остатки.Счет,
| Остатки.ИФО,
| Остатки.КФО,
| Остатки.КПС,
| Остатки.МОЛ,
| Остатки.Субконто3,
| Остатки.Номенклатура
|УПОРЯДОЧИТЬ ПО
| Остатки.Номенклатура.Наименование
|;
|"
+ ТекстЗапросаБлижайшиеОбщиеРодителиСчетов
+ "
|//////////////////////////////////////////////////////////// ////////////////////
|// [5Б]. Данные для заполнения таблицы Материалы (указанный тип цен)
|// (Финальная таблица)
|//
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Субконто3 КАК Субконто3,
| Номенклатура КАК Номенклатура,
| КоличествоУчет КАК КоличествоУчет,
| ВЫБОР
| КОГДА &НеЗаполнятьЦену ТОГДА
| 0
| ИНАЧЕ
| Цена
| КОНЕЦ КАК Цена,
| СуммаУчет КАК СуммаУчет,
|
| Счет КАК Счет,
| КПС КАК КПС,
| КФО КАК КФО,
|
| // Недостача
| ВЫБОР
| КОГДА КоличествоУчет > 0 ТОГДА
| КоличествоУчет
| ИНАЧЕ
| 0
| КОНЕЦ КАК НедостачаКоличество,
| ВЫБОР
| КОГДА СуммаУчет > 0 ТОГДА
| СуммаУчет
| ИНАЧЕ
| 0
| КОНЕЦ КАК НедостачаСумма,
|
| // Излишек
| ВЫБОР
| КОГДА КоличествоУчет < 0 ТОГДА
| -КоличествоУчет
| ИНАЧЕ
| 0
| КОНЕЦ КАК ИзлишекКоличество,
| ВЫБОР
| КОГДА СуммаУчет < 0 ТОГДА
| -СуммаУчет
| ИНАЧЕ
| 0
| КОНЕЦ КАК ИзлишекСумма
|ИЗ
| ("
+ ПолучитьТекстЗапросаСвернутыеОстаткиДляТаблицыМатериалы(
ВариантФормированияОписи,
ИспользоватьБалансовуюСтоимость)
+ ") КАК СвернутыеОстаткиПОВыбраннымЦМО
|УПОРЯДОЧИТЬ ПО
| Номенклатура.Наименование
|;";
// [4Б]. Данные для заполнения таблицы Остатки (указанный тип цен)
ИндексТаблицыОстатки = 4;
// [5Б]. Данные для заполнения таблицы Материалы (указанный тип цен)
ИндексТаблицыМатериалы = 5 + СдвигИндексаТаблицыМатериалы;
КонецЕсли;
ЗапросОстатки.Текст = ТекстЗапроса;
Результаты = ЗапросОстатки.ВыполнитьПакет();
// [2]. Данные для заполнения таблицы ПорядокСписания
ИндексТаблицыПорядокСписания = 2;
ДокументОбъект["Материалы"].Загрузить( Результаты[ИндексТаблицыМатериалы].Выгрузить());
ДокументОбъект["Остатки"].Загрузить( Результаты[ИндексТаблицыОстатки].Выгрузить());
ДокументОбъект["ПорядокСписания"].Загрузить( Результаты[ИндексТаблицыПорядокСписания].Выгрузить());
КонецПроцедуры
Показать
Передать форму объекта куда-либо на сервере можно только во внешней обработке с видом ЗаполнениеОбъекта в команде с типом ЗаполнениеФормы. Если ваша обработка не предполагает работу на клиенте, то достаточно будет такой команды. Иначе придется делать 2 команды: первая, например, ОткрытиеФормы, вторая – скрытая, ЗаполнениеФормы. В команде ОткрытиеФормы можно будет программно вызвать команду ЗаполнениеФормы.
(9) ДокументОбъект = Форма["Объект"];
ДокументОбъект - это не прикладной объект, а данные формы. На первый взгляд не так сложно переписать. Копируете всю процедуру и заменяете параметр Форма, на объект. Следовательно ДокументОбъект будет равен параметру, а не Форма["Объект"].
Главное чтобы не было обращений к реквизитам формы и не было вызова экспортных методов формы.
ДокументОбъект - это не прикладной объект, а данные формы. На первый взгляд не так сложно переписать. Копируете всю процедуру и заменяете параметр Форма, на объект. Следовательно ДокументОбъект будет равен параметру, а не Форма["Объект"].
Главное чтобы не было обращений к реквизитам формы и не было вызова экспортных методов формы.
Скорее всего никак.
Нельзя передавать форму с сервера на клиент и наоборот - форма несериализуемый объект. 1С против таких действий из-за больших расходов ресурсов.
Если вы получаете форму при помощи ПолучитьФорму(), то и доступ к форме у вас только со стороны клиента.
Возможные варианты:
1. Если не нужна форма, а нужен только документ:
- полностью отказывайтесь от работы с формой, работайте только с объектом документа.
2. Если нужна форма уже записанного документа:
- создаете объект документа, заполняете, записываете, открываете форму документа и передаете туда ссылку на созданный документ
3. Если нужна форма незаписанного документа:
В вашем случае лучше исправить саму процедуру заполнения в менеджере документа, тем более там форма всего один раз передается в функцию
либо передавайте в нее объект, либо необходимые реквизиты отдельными параметрами. Тогда необходимость в манипулировании формой отпадет сама собой.
Нельзя передавать форму с сервера на клиент и наоборот - форма несериализуемый объект. 1С против таких действий из-за больших расходов ресурсов.
Если вы получаете форму при помощи ПолучитьФорму(), то и доступ к форме у вас только со стороны клиента.
Возможные варианты:
1. Если не нужна форма, а нужен только документ:
- полностью отказывайтесь от работы с формой, работайте только с объектом документа.
2. Если нужна форма уже записанного документа:
- создаете объект документа, заполняете, записываете, открываете форму документа и передаете туда ссылку на созданный документ
ДокументОбъект = Документы.ИнвентаризацияМЗ.Создать();
ЗаполнитьДокумент(ДокументОбъект);
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
ОткрытьФорму("Документы.ИнвентаризацияМЗ.Форма.ФормаОбъекта", Новый Структура("Ключ", ДокументОбъект.Ссылка));
3. Если нужна форма незаписанного документа:
ДанныеЗаполнения = Новый Структура();
ЗаполнениеДанных(ДанныеЗаполнения);
ОткрытьФорму("Документы.ИнвентаризацияМЗ.Форма.ФормаОбъекта", Новый Структура("ЗначенияЗаполнения", ДанныеЗаполнения);
В вашем случае лучше исправить саму процедуру заполнения в менеджере документа, тем более там форма всего один раз передается в функцию
ОпределитьПараметрыНакладываемогоОтбора(Форма)
либо передавайте в нее объект, либо необходимые реквизиты отдельными параметрами. Тогда необходимость в манипулировании формой отпадет сама собой.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот