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