Конвертация данных 2 Сопоставление табличной части и перезапись некоторых строк
Всем привет!
Уважаемые знатоки КД 2, подскажите пожалуйста:
Каким образом можно настроить правила таким образом, чтобы строки табличной части приемника сопоставлялись с тч источника по ключу (например Таб. номер сотрудника + Должность). Добавляем новую строку, если ключ не находим, а если находим, то перезаписываем значения ячеек, но тоже по какому-то условию (например: одна из ячеек заполнена, тогда и вторую не заполняем, а третью заполняем или первая не заполнена, то заполняем первую вторую и третью).
Читаю описание обработчиков и не могу понять, где можно получить ТЧ приемника и в зависимости от заполненных данных перезаписывать те или иные строки / ячейки. Возможно есть какой-то более простой способ.
Всем хорошего дня в этот солнечный денек, и всем спасибо за комментарии
Уважаемые знатоки КД 2, подскажите пожалуйста:
Каким образом можно настроить правила таким образом, чтобы строки табличной части приемника сопоставлялись с тч источника по ключу (например Таб. номер сотрудника + Должность). Добавляем новую строку, если ключ не находим, а если находим, то перезаписываем значения ячеек, но тоже по какому-то условию (например: одна из ячеек заполнена, тогда и вторую не заполняем, а третью заполняем или первая не заполнена, то заполняем первую вторую и третью).
Читаю описание обработчиков и не могу понять, где можно получить ТЧ приемника и в зависимости от заполненных данных перезаписывать те или иные строки / ячейки. Возможно есть какой-то более простой способ.
Всем хорошего дня в этот солнечный денек, и всем спасибо за комментарии
Найденные решения
Попробуйте пойти следующим путем:
1. В обработчике "При загрузке" ПКО сохранить целиком исходную табличную часть, если объект был ранее загружен:
2. В обработчике "После загрузки" ПКО у Вас уже есть как загруженная табличная часть, так и исходная. Модифицируйте ТЧ объекта как хотите.
1. В обработчике "При загрузке" ПКО сохранить целиком исходную табличную часть, если объект был ранее загружен:
Если ОбъектНайден Тогда
Объект.ДополнительныеСвойства.Вставить("СтараяТЧ", Объект.ТЧ.Выгрузить());
КонецЕсли;
2. В обработчике "После загрузки" ПКО у Вас уже есть как загруженная табличная часть, так и исходная. Модифицируйте ТЧ объекта как хотите.
Если ОбъектНайден Тогда
СтараяТЧ = Объект.ДополнительныеСвойства.СтараяТЧ;
НоваяТЧ = Объект.ТЧ;
// ... модификация новой ТЧ в зависимости от данных в старой.
КонецЕсли;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Попробуйте пойти следующим путем:
1. В обработчике "При загрузке" ПКО сохранить целиком исходную табличную часть, если объект был ранее загружен:
2. В обработчике "После загрузки" ПКО у Вас уже есть как загруженная табличная часть, так и исходная. Модифицируйте ТЧ объекта как хотите.
1. В обработчике "При загрузке" ПКО сохранить целиком исходную табличную часть, если объект был ранее загружен:
Если ОбъектНайден Тогда
Объект.ДополнительныеСвойства.Вставить("СтараяТЧ", Объект.ТЧ.Выгрузить());
КонецЕсли;
2. В обработчике "После загрузки" ПКО у Вас уже есть как загруженная табличная часть, так и исходная. Модифицируйте ТЧ объекта как хотите.
Если ОбъектНайден Тогда
СтараяТЧ = Объект.ДополнительныеСвойства.СтараяТЧ;
НоваяТЧ = Объект.ТЧ;
// ... модификация новой ТЧ в зависимости от данных в старой.
КонецЕсли;
(4)Мы по правилам, перезаписали табличную часть документа, а потом в обработчике "После загрузки" еще раз пытаемся что-то перезаписать, или это не так работает?
Избежать потому, что это лишние действия и расходуются лишние ресурсы. Если документом 200 тыс. и в каждом по 100-тне сотрудников, это будет отрабатывать очень медленно, на мой взгляд.
Избежать потому, что это лишние действия и расходуются лишние ресурсы. Если документом 200 тыс. и в каждом по 100-тне сотрудников, это будет отрабатывать очень медленно, на мой взгляд.
(5) Между этими двумя обработчиками не осуществляется запись объекта, если конечно эту операцию явно не реализовать в одном из них. Пусть Вас не вводит в заблуждение название "После загрузки". Да простят мне специалисты мое упрощение, обработчики срабатывают примерно так:
Объект = Документы.МойДокумент.СоздатьДокумент();
// <-- здесь выполняется обработчик "При загрузке"
ЗаполнитьЗначенияСвойств(Объект, ДанныеИзФайла);
// <-- здесь выполняется обработчик "После загрузки"
Объект.Записать();
Показать
(5) Если же Вы имеете ввиду то, что сначала целиком заполняется таблица из файла обмена, а потом обрабатывается, вместо того, чтобы обрабатываться непосредственно при заполнении, то я бы на Вашем месте не беспокоился об этом. Не думаю, что выигрыш будет большим. Ведь для того, чтобы понять, что за данные пришли, нужно данные из файла обмена конвертировать и где-нибудь сохранить промежуточный результат. Да и наполнение таблицы, полагаю, заметно менее затратная операция, чем конвертация.
(7) Хорошо, я понял, спасибо.
Я правильно понимаю, что в моем случае не получится в ПКС указать галочку "Поиск" например по полям "Сотрудник" и "Должность" ?
Т.е. придется каким-то образом уже в обработчике ПКО "После загрузки" самостоятельно каким-то образом искать по ключам строки в так называемой "СтаройТЧ" из "НовойТЧ"
Я правильно понимаю, что в моем случае не получится в ПКС указать галочку "Поиск" например по полям "Сотрудник" и "Должность" ?
Т.е. придется каким-то образом уже в обработчике ПКО "После загрузки" самостоятельно каким-то образом искать по ключам строки в так называемой "СтаройТЧ" из "НовойТЧ"
(8)
Да, именно это я и подразумевал.
Я, признаться, не знаю, как работает "Поиск" по полям табличной части, не могу прокомментировать. Возможно кто-то из форумчан предложит более элегантное решение Вашей задачи.
Т.е. придется каким-то образом уже в обработчике ПКО "После загрузки" самостоятельно каким-то образом искать по ключам строки в так называемой "СтаройТЧ" из "НовойТЧ"
Да, именно это я и подразумевал.
Я, признаться, не знаю, как работает "Поиск" по полям табличной части, не могу прокомментировать. Возможно кто-то из форумчан предложит более элегантное решение Вашей задачи.
(11) Из Контрагентов из разных конфигураций УТ 10.3 и БП3 хочу переписать ТабличнуюЧасть - полностью идентичную.
УТ - Источник
БП - Приемник
Раньше информация шла в основном из УТ в БП.
Теперь надо, чтобы из БП в УТ шла эта ТабличнаяЧасть.
В каталоге выгрузки, информации со строками табличной части не появляется.
Значит, начинать надо править обмен в БП.
пс
Галочку, как выше на рисунке установил, во всех полях, а не как в примере.
В остальном обмен БП --> УТ по Контрагенту отрабатывает, Наименование и прочие поля выгружаются.
***
В чем может быть косяк?
УТ - Источник
БП - Приемник
Раньше информация шла в основном из УТ в БП.
Теперь надо, чтобы из БП в УТ шла эта ТабличнаяЧасть.
В каталоге выгрузки, информации со строками табличной части не появляется.
Значит, начинать надо править обмен в БП.
пс
Галочку, как выше на рисунке установил, во всех полях, а не как в примере.
В остальном обмен БП --> УТ по Контрагенту отрабатывает, Наименование и прочие поля выгружаются.
***
В чем может быть косяк?
Прикрепленные файлы:


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