КД2 - в каком месте программно добавить строку и заполнить ее в табличной части загружаемого объекта?

1. acces969 344 03.12.21 08:16 Сейчас в теме
В событиях "ПриЗагрузке" и "ПослеЗагрузки" ПКО добавляю
СтрокаТЧ = Объект.Товары.Добавить()
,
но строка не появляется в загруженном объекте. Похоже, добавление происходит, но позже табличная часть очищается.
Конвертации свойств для табличной части в правилах нету - т.е. изменена ТЧ может быть только программно.
Вознаграждение за ответ
Показать полностью
Найденные решения
8. dmitrit 22 10.12.21 12:58 Сейчас в теме
Есть еще вариант. На мой взгляд наиболее оптимальный. Это использование ПКГС документа. Этот обработчик специально существует
для програмной подмены таб части объекта-приемника.

Обработчики "Правила конвертации группы свойств"

Перед обработкой

Условия возникновения события

Событие выполняется перед обработкой группы свойств, например, перед выгрузкой табличной части. Возможен отказ от выгрузки. Можно определить произвольную коллекцию, являющуюся источником данных.

Параметры:

Отказ - Булево - Если Истина, то группа свойств не обрабатывается

Источник – выгружаемый объект.

Приемник - xml-узел формируемого объекта приемника

ВходящиеДанные – произвольные вспомогательные данные, переданные правилу конвертации из других правил, например, из правила выгрузки данных или правила конвертации свойств.

ИсходящиеДанные – произвольные вспомогательные данные, передаваемые правилам конвертации свойств.

КоллекцияОбъектов - Неопределено. Если в теле обработчика определить коллекцию (присвоив данной переменной значение, например, описывающее табличную часть или набор движений, например, типа ТаблицаЗначений), то стандартное получение коллекции выполняться не будет.

НеЗамещать - Булево. По умолчанию определяется в настройках правила, но может быть изменено в теле обработчика. Если установить значение Истина, то для существующих объектов информационной базы загрузка подчиненных объектов (например, табличной части) выполняться не будет.

НеОчищать - Булево. Если в теле обработчика данному параметру установить значение Истина, то существующие подчиненные объекты (например, строки табличной части) удаляться не будут. Параметр используется только при загрузке на платформе 1С:Предприятие 8.

Обратите внимание на описание "КоллекцияОбъектов".

Рабочий пример: (фрагмент)

// берем таб часть дока-источника (или создаем тз сами)
ТабЧастьДока = Источник.Товары.Выгрузить();
ПараметрыЧисла = Новый КвалификаторыЧисла(10, 3);
ТабЧастьДока.Колонки.Добавить("ЦенаВРознице",Новый ОписаниеТипов ("Число", ПараметрыЧисла) );
ТабЧастьДока.Колонки.Добавить("ПроцентРозничнойНаценки",Новый ОписаниеТипов ("Число", ПараметрыЧисла) );

//обрабатываем...
Для Каждого текСтрока из ТабЧастьДока Цикл


КонецЦикла;

//Присваиваем
КоллекцияОбъектов = ТабЧастьДока;

Естествено структура "КоллекцияОбъектов" должна соответствовать приемнику
Прикрепленные файлы:
acces969; +1 Ответить
5. acces969 344 03.12.21 11:36 Сейчас в теме +0.7 $m
Работает прекрасно все при добавлении строк в событии "ПриЗагрузке" у ПКО документа.
Проблема была в другом - нельзя выполнять чтение узлов файла, как это показано в примере в информации по обработчикам - из за этого последующая обработка файла xml прекращается обработкой загрузки и все последующие объекты не записываются в ИБ.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. pyrkin_vanya 488 03.12.21 08:20 Сейчас в теме +0.1 $m
(1)

ПослеЗагрузки
СтрокаТЧ = Объект.Товары.Добавить()
Попытка
Объект.Записать()
Исключение
// исключение ошибки
КонецПопытки;

Показать
4. dmbarchenkov 03.12.21 10:44 Сейчас в теме
(1) записать нужно Объект после добавления строки.
3. user799503 6 03.12.21 09:15 Сейчас в теме
НЕ понятны параметры процедур.

Возможно, в них есть Параметр ТекущийОбъект, тогда должно быть так

СтрокаТЧ = ТекущийОбъект.Товары.Добавить()
5. acces969 344 03.12.21 11:36 Сейчас в теме +0.7 $m
Работает прекрасно все при добавлении строк в событии "ПриЗагрузке" у ПКО документа.
Проблема была в другом - нельзя выполнять чтение узлов файла, как это показано в примере в информации по обработчикам - из за этого последующая обработка файла xml прекращается обработкой загрузки и все последующие объекты не записываются в ИБ.
6. marv-ua 03.12.21 16:00 Сейчас в теме
я формирую табличные части в обработчике ПередОбработкой ПКС табличной части. Если надо что - то добавить или изменить то прохожусь повторно в ПослеЗагрузки ПКО
acces969; +1 Ответить
7. acces969 344 07.12.21 07:25 Сейчас в теме
(6)спасибо, возьму на заметку
8. dmitrit 22 10.12.21 12:58 Сейчас в теме
Есть еще вариант. На мой взгляд наиболее оптимальный. Это использование ПКГС документа. Этот обработчик специально существует
для програмной подмены таб части объекта-приемника.

Обработчики "Правила конвертации группы свойств"

Перед обработкой

Условия возникновения события

Событие выполняется перед обработкой группы свойств, например, перед выгрузкой табличной части. Возможен отказ от выгрузки. Можно определить произвольную коллекцию, являющуюся источником данных.

Параметры:

Отказ - Булево - Если Истина, то группа свойств не обрабатывается

Источник – выгружаемый объект.

Приемник - xml-узел формируемого объекта приемника

ВходящиеДанные – произвольные вспомогательные данные, переданные правилу конвертации из других правил, например, из правила выгрузки данных или правила конвертации свойств.

ИсходящиеДанные – произвольные вспомогательные данные, передаваемые правилам конвертации свойств.

КоллекцияОбъектов - Неопределено. Если в теле обработчика определить коллекцию (присвоив данной переменной значение, например, описывающее табличную часть или набор движений, например, типа ТаблицаЗначений), то стандартное получение коллекции выполняться не будет.

НеЗамещать - Булево. По умолчанию определяется в настройках правила, но может быть изменено в теле обработчика. Если установить значение Истина, то для существующих объектов информационной базы загрузка подчиненных объектов (например, табличной части) выполняться не будет.

НеОчищать - Булево. Если в теле обработчика данному параметру установить значение Истина, то существующие подчиненные объекты (например, строки табличной части) удаляться не будут. Параметр используется только при загрузке на платформе 1С:Предприятие 8.

Обратите внимание на описание "КоллекцияОбъектов".

Рабочий пример: (фрагмент)

// берем таб часть дока-источника (или создаем тз сами)
ТабЧастьДока = Источник.Товары.Выгрузить();
ПараметрыЧисла = Новый КвалификаторыЧисла(10, 3);
ТабЧастьДока.Колонки.Добавить("ЦенаВРознице",Новый ОписаниеТипов ("Число", ПараметрыЧисла) );
ТабЧастьДока.Колонки.Добавить("ПроцентРозничнойНаценки",Новый ОписаниеТипов ("Число", ПараметрыЧисла) );

//обрабатываем...
Для Каждого текСтрока из ТабЧастьДока Цикл


КонецЦикла;

//Присваиваем
КоллекцияОбъектов = ТабЧастьДока;

Естествено структура "КоллекцияОбъектов" должна соответствовать приемнику
Прикрепленные файлы:
acces969; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот