При переносе данных между базами 1С разработчики нередко сталкиваются с ситуацией, когда после стандартной выгрузки и загрузки справочников (например, контрагентов или партнеров) адреса, телефоны и адреса электронной почты не появляются в целевой базе. Попытка найти привычный регистр сведений также не дает результатов. Разберем по шагам, с чем связано такое поведение системы и как правильно организовать перенос контактной информации.
Проанализируем архитектуру конфигурации 1С:Управление торговлей 11. В конфигурациях предыдущих поколений (таких как «Управление торговлей 10.3», «Управление производственным предприятием 1.3» или «Бухгалтерия предприятия 2.0») контактная информация традиционно хранилась в независимом регистре сведений КонтактнаяИнформация.
В актуальных версиях на базе Библиотеки стандартных подсистем (БСП) подход кардинально изменился: отдельного регистра сведений для контактной информации больше нет. Теперь контактные данные хранятся непосредственно в подчиненной табличной части КонтактнаяИнформация самих объектов метаданных — справочников Партнеры, Контрагенты, ФизическиеЛица, Организации и других.
Именно по этой причине стандартная обработка «Выгрузка и загрузка данных XML» не может перенести данные между разными конфигурациями: она рассчитана на полную идентичность структуры метаданных источника и приемника. Попытка перенести записи несуществующего в УТ 11 регистра ни к чему не приведет.
Выясним еще одну важную деталь прикладного решения. В УТ 11 разделены понятия управленческого учета (справочник Партнеры) и регламентированного учета (справочник Контрагенты). Табличная часть КонтактнаяИнформация присутствует в обоих объектах.
Если правила переноса загружают контактные данные исключительно в справочник Контрагенты, менеджеры по продажам в интерфейсе при работе со справочником Партнеры и в документах реализации этих адресов не увидят. При разработке правил необходимо четко сопоставлять, к какому именно объекту должна быть привязана переносимая контактная информация.
Рассмотрим, почему данные могут не отображаться в пользовательском интерфейсе даже после успешной записи в табличную часть:
Виды контактной информации и выводит только те поля, группа-владелец которых жестко соответствует текущему объекту (например, предопределенная группа «Справочник Партнеры»). Если вид КИ привязан к другой группе, строка в базе сохранится, но на форме будет невидима.Представление, но и реквизит ЗначенияПолей, где хранится сериализованный XML с разобранными составными частями адреса (город, улица, дом). Если перенести только строку представления, адрес будет считаться неклассифицированным (введенным вручную), и форма ввода адреса откроется пустой.Разберем практический способ решения проблемы при помощи конфигурации «1С:Конвертация данных 2.1». Когда источником выступает регистр сведений, а приемником — табличная часть объекта, стандартная прямая выгрузка не подходит. Необходимо программно заполнить коллекцию табличной части в обработчиках событий.
Посмотрим на пример выборки данных из регистра сведений в обработчике Перед выгрузкой правила конвертации объекта (ПКО) или группы свойств табличной части. Данные извлекаются запросом и передаются в структуру входящих данных:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КИ.Объект,
| КИ.Тип,
| КИ.Вид,
| КИ.Представление,
| КИ.ЗначенияПолей,
| КИ.Страна,
| КИ.Регион,
| КИ.Город,
| КИ.АдресЭП,
| КИ.ДоменноеИмяСервера,
| КИ.НомерТелефона,
| КИ.НомерТелефонаБезКодов
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КИ
|ГДЕ
| КИ.Объект = &Объект";
Запрос.УстановитьПараметр("Объект", Источник.Ссылка);
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("КонтактнаяИнформация", Запрос.Выполнить().Выгрузить());
Рассмотрим дальнейшие шаги по настройке правил обмена:
КонтактнаяИнформация.КонтактнаяИнформация. Либо в обработчике «Перед выгрузкой» группы свойств явно переопределяем коллекцию: КоллекцияОбъектов = ВходящиеДанные.КонтактнаяИнформация;.Вид создаем отдельное ПКО справочника Виды контактной информации и настраиваем таблицу синхронизации значений (ПКЗ), чтобы предопределенные элементы старой базы сопоставлялись с корректными предопределенными элементами УТ 11.Тип сопоставляем значения перечисления ТипыКонтактнойИнформации (Адрес, Телефон, АдресЭлектроннойПочты и др.).При использовании такого подхода контактная информация корректно переносится из плоского регистра сведений в табличную часть объектов новой информационной базы.