Конвертация данных, редакция 3.0. Урок 3. Перед Записью Полученных Данных
Обработчик Перед Записью Полученных Данных
Процедура ПКО_<ИмяПКО>_ПередЗаписьюПолученныхДанных в общем модуле МенеджерОбменаЧерезУниверсальныйФормат содержит текст обработчика ПередЗаписьюПолученныхДанных для конкретного ПКО. Текст обработчика может быть пустым. Однако, на практике всегда используется при загрузке данных для реализации дополнительной логики, которую необходимо выполнить перед записью объекта в информационную базу. Например, нужно ли загрузить изменения в существующие данные ИБ либо следует загрузить их как новые данные.
Обработчик содержит следующие параметры;
- ДанныеИБ – Тип –СправочникОбъект, ДокументОбъект. Элемент данных информационной базы, соответствующий полученным данным. Если соответствующие данные не найдены, то этот параметр имеет значение Неопределено.
- ПолученныеДанные – Тип –СправочникОбъект или ДокументОбъект. Элемент данных, сформированный путем конвертации данных XDTO. Записывается в случае, если эти данные являются для информационной базы новыми (параметр ДанныеИБ содержит значение Неопределено). В противном случае ПолученныеДанные замещают собой ДанныеИБ (все свойства из ПолученныеДанные переносятся в ДанныеИБ). Если стандартное замещение данных ИБ полученными данными не требуется, следует прописать свою логику переноса, после чего установить ПолученныеДанные значение Неопределено
- КонвертацияСвойств. Тип –Таблица значений. Содержит правила конвертации свойств текущего объекта, инициализированные в рамках выполнения сеанса обмена.
- КомпонентыОбмена. Структура, которая содержит компоненты обмена: правила обмена и параметры обмена. Процедура инициализации компонентов обмена находится в модуле ОбменДаннымиXDTOСервер
Рассмотрим некоторые практические примеры, которые я решал в расширенной конфигурации, чтобы не менять основную конфигурацию типовых прикладных решений 1С.
Не замещать найденные объекты при загрузке
В правилах конвертации объектов редакции 3.0 в отличии от редакции 2.0 отсутствует свойство “Не замещать найденные объекты при загрузке” благодаря которому, найденные объекты в информационной базе приемника по значению синхронизирующих полей не будут изменяться.
В правилах конвертации объектов редакции 3.0 параметр ДанныеИБ имеет значение неопреднлено если обеъект не найден. Кроме того, если параметр ПолученныеДанные имеет занчение неопреднлено, то при выъоде из обработчика м не будут заменены.
Работадатель попросил, чтобы я изменил правила конвертации между типовыми конфигурациями УТ 11 и БП 3.0 таким образом , чтобы данные справочника организаций и складов в бухгалтерии не проподали при обмене с УТ. Особенно проподали дополнительные реквизиты этих справочников в бухгалтерри, каждый раз когда когда в УТ элементы этих справочников зарегистрировались для отправки в бухгалтерю .
Эту задачу я выполнил в расширении конфигурации бухгалтерии, чтобы не менять основную конфигурацию. Решение показано на рис. 1 . Если элемент справочника существует ( найден в источнике) , то параметр ДанныеИБ определено и чтобы все свойства из ПолученныеДанные НЕ переносились в ДанныеИБ следует установить ПолученныеДанные значение Неопределено
Если объект справочника не найден, то параметр ДанныеИБ имеет значение Неопределено и тогда я вызываю процедуру ПродолжитьВызов для продолжения вызова обработчика события из расширяемой конфигурации
Не отражать документы в регламентированном учете
Меня попросили, чтобы была возможность не отражать в бухгалтерии 3.0 некоторые документы отгрузки, которые создаются в управлении торговлей 11. С этой целю я ввел дополнительный реквизит документа реализации «Не отражать документы в регламентированном учете». Если флаг установлен, то этот документ дожжен быть помечен на удаление в базе приемника ( БП 3.0). Сложность этой задачи заключается в том, что в бухгалтерии предприятия у документов нет дополнительных реквизитов. Я решил использовать поле комментарии. При отправке на стороне источника ( УТ 11) я заполняю реквизит комментарии с соответствующей надписью, а на приемнике ( БП) , в обработчике перед запиью полученных данных я устанавливаю пометку на удаление как показано на рис 2
Спасибо большое за информацию,очень полезно.