Имя: Пароль:
1C
 
УТ. Заполнение ТЧ через механизм дополнительных отчетов и обработок заполнения
0 SerGa
 
20.06.24
12:42
УТ. Документ ПрочееОприходование товаров

   Пробую реализовать с помощью механизма дополнительных обработок заполнение ТЧ документа по ТЧ другого документа (перемещения). Чтобы пользователь мог интерактивно выбрать документ перемещение и в ТЧ Оприходования автоматически заполнились строки.

   И столкнулся с тем, что в УТ 11 в отличии от УПП или старых УПП при интерактивной работе в табличной части формы автоматом заполняется куча служебных реквизитов без заполнения которых строки корректно не отображаются.
   Если смотреть стандартный код, то эти реквизиты при интерактивной работе заполняются жуткими конструкциями типа:
СтруктураДействий = Новый Структура;
        СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
        СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
        СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
        СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
        СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
        СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", Новый Структура("Дата, Валюта, ВидЦены", Объект.Дата, Объект.Валюта, Объект.ВидЦены));
        
        // Выбор статей и аналитик.
        ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
            СтруктураДействий,
            ЭтотОбъект,
            Объект.ХозяйственнаяОперация,
            Объект.Организация,
            Объект.Подразделение,
            "Объект.Товары",
            "СтатьяРасходовДоходов");
        
        ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
        УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
        
        НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
        ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
        ПриДобавленииСтрокиТоваровНаСервере(ТекущаяСтрока);
        Модифицированность = Истина;

причем большая часть этих функций формы не экспортная и их вызвать не получится из внешней обработки заполнения.

Кто-нибудь пытался через механизм доп обработок сделать интерактивное заполнение строк? Как это сделать красиво?

Или придется не через внешние обработки заполнения делать а через расширение в самой форме документа ?
1 Одинист
 
20.06.24
12:43
Посмотри как происходит заполнение при вводе на основании.
2 Мультук
 
20.06.24
13:14
(0)

Это 100% делается через доп.обработку.
Увы, у меня нет "красивого" примера, да и некрасивого (увы) почему-то нет.

>>заполняются жуткими конструкциями типа
Это не самое жуткое
Кстати
а) главное, не забудьте Количество в КоличествоУпаковок или наоборот пересчитать
б) Сравнить (выбрать оба документа запросом и глазами посмотреть) на внутренности вашего документа
и  документа заполненного вручную
в) Упаковки "это важно"!


>>не экспортная и их вызвать не получится
Нужно посмотреть, а как это сделано и повторить вызовы.
Желательно разобраться и делать сразу правильно, как написано в типовых.


P.S.
Добро пожаловать "во взрослый мир" !
Я шучу и шутка так себе, но дальше (увы) будет сложнее.
Из УПП в УТ11.5 это больно, но реально.

>> через расширение в самой форме документа
Вы еще успеете ступить на эту ступеньку (расширения) ведущую в ад.
Кроме того, вам в любом случае нужно будет разобраться как работает "волшебство" из (0)
3 SerGa
 
20.06.24
17:09
(2) спасибо за подробный ответ
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший