Почему в 1С:Управление торговлей 11 не переносится контактная информация и как настроить ее перенос?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При переносе данных между базами 1С разработчики нередко сталкиваются с ситуацией, когда после стандартной выгрузки и загрузки справочников (например, контрагентов или партнеров) адреса, телефоны и адреса электронной почты не появляются в целевой базе. Попытка найти привычный регистр сведений также не дает результатов. Разберем по шагам, с чем связано такое поведение системы и как правильно организовать перенос контактной информации.

Архитектурные изменения хранения контактной информации в УТ 11

Проанализируем архитектуру конфигурации 1С:Управление торговлей 11. В конфигурациях предыдущих поколений (таких как «Управление торговлей 10.3», «Управление производственным предприятием 1.3» или «Бухгалтерия предприятия 2.0») контактная информация традиционно хранилась в независимом регистре сведений КонтактнаяИнформация.

В актуальных версиях на базе Библиотеки стандартных подсистем (БСП) подход кардинально изменился: отдельного регистра сведений для контактной информации больше нет. Теперь контактные данные хранятся непосредственно в подчиненной табличной части КонтактнаяИнформация самих объектов метаданных — справочников Партнеры, Контрагенты, ФизическиеЛица, Организации и других.

Именно по этой причине стандартная обработка «Выгрузка и загрузка данных XML» не может перенести данные между разными конфигурациями: она рассчитана на полную идентичность структуры метаданных источника и приемника. Попытка перенести записи несуществующего в УТ 11 регистра ни к чему не приведет.

Особенности разделения партнеров и контрагентов в УТ 11

Выясним еще одну важную деталь прикладного решения. В УТ 11 разделены понятия управленческого учета (справочник Партнеры) и регламентированного учета (справочник Контрагенты). Табличная часть КонтактнаяИнформация присутствует в обоих объектах.

Если правила переноса загружают контактные данные исключительно в справочник Контрагенты, менеджеры по продажам в интерфейсе при работе со справочником Партнеры и в документах реализации этих адресов не увидят. При разработке правил необходимо четко сопоставлять, к какому именно объекту должна быть привязана переносимая контактная информация.

Тонкости отображения данных и структура реквизита ЗначенияПолей

Рассмотрим, почему данные могут не отображаться в пользовательском интерфейсе даже после успешной записи в табличную часть:

  1. Динамическое построение формы: Форма элемента не выводит строки табличной части напрямую. Она опрашивает справочник Виды контактной информации и выводит только те поля, группа-владелец которых жестко соответствует текущему объекту (например, предопределенная группа «Справочник Партнеры»). Если вид КИ привязан к другой группе, строка в базе сохранится, но на форме будет невидима.
  2. Формат хранения адреса: Для хранения адресов используется не только строковое Представление, но и реквизит ЗначенияПолей, где хранится сериализованный XML с разобранными составными частями адреса (город, улица, дом). Если перенести только строку представления, адрес будет считаться неклассифицированным (введенным вручную), и форма ввода адреса откроется пустой.

Перенос контактной информации с помощью правил конвертации данных

Разберем практический способ решения проблемы при помощи конфигурации «1С:Конвертация данных 2.1». Когда источником выступает регистр сведений, а приемником — табличная часть объекта, стандартная прямая выгрузка не подходит. Необходимо программно заполнить коллекцию табличной части в обработчиках событий.

Посмотрим на пример выборки данных из регистра сведений в обработчике Перед выгрузкой правила конвертации объекта (ПКО) или группы свойств табличной части. Данные извлекаются запросом и передаются в структуру входящих данных:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   КИ.Объект,
    |   КИ.Тип,
    |   КИ.Вид,
    |   КИ.Представление,
    |   КИ.ЗначенияПолей,
    |   КИ.Страна,
    |   КИ.Регион,
    |   КИ.Город,
    |   КИ.АдресЭП,
    |   КИ.ДоменноеИмяСервера,
    |   КИ.НомерТелефона,
    |   КИ.НомерТелефонаБезКодов
    |ИЗ
    |   РегистрСведений.КонтактнаяИнформация КАК КИ
    |ГДЕ
    |   КИ.Объект = &Объект";

Запрос.УстановитьПараметр("Объект", Источник.Ссылка);

ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("КонтактнаяИнформация", Запрос.Выполнить().Выгрузить());

Рассмотрим дальнейшие шаги по настройке правил обмена:

  1. В ПКО целевого справочника создаем правило конвертации группы свойств (ПКГС) для табличной части КонтактнаяИнформация.
  2. В настройках ПКГС включаем флаг Получить из входящих данных и указываем имя входящего свойства КонтактнаяИнформация. Либо в обработчике «Перед выгрузкой» группы свойств явно переопределяем коллекцию: КоллекцияОбъектов = ВходящиеДанные.КонтактнаяИнформация;.
  3. Для реквизита Вид создаем отдельное ПКО справочника Виды контактной информации и настраиваем таблицу синхронизации значений (ПКЗ), чтобы предопределенные элементы старой базы сопоставлялись с корректными предопределенными элементами УТ 11.
  4. Для реквизита Тип сопоставляем значения перечисления ТипыКонтактнойИнформации (Адрес, Телефон, АдресЭлектроннойПочты и др.).

При использовании такого подхода контактная информация корректно переносится из плоского регистра сведений в табличную часть объектов новой информационной базы.

← На главную