Как правильно перенести контрагентов из 1С 7.7 (ТиС) в 1С 8.3 (КА/УТ 11)?

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

Разберем достаточно распространенную и при этом нетривиальную задачу: перенос нормативно-справочной информации, а именно базы контрагентов, из устаревшей конфигурации 1С:Торговля и Склад 7.7 (ТиС) в современные решения на базе 1С 8.3 — Комплексную автоматизацию 2 (КА) или Управление торговлей 11 (УТ 11). Часто при попытке переноса разработчики сталкиваются с дублированием элементов, запутанной структурой справочников-источников и жесткими требованиями к структуре приемника. Проанализируем эти проблемы и найдем оптимальные решения.

Анализ структуры справочников в 1С 7.7 (ТиС)

Прежде чем приступать к написанию правил конвертации, рассмотрим, как хранятся данные в конфигурации-источнике. В ТиС пользователи и разработчики часто видят несколько справочников, которые кажутся дублирующими друг друга: Контрагенты, СвоиЮрЛица, ФизЛица, Фирмы. Выясним причину такой организации.

Это штатная идея 1С 7.7 для организации многофирменного учета и оформления внутригрупповых (межфирменных) операций. Представим ситуацию: в одной информационной базе ведется учет по двум организациям — "Организация А" и "Организация Б". Чтобы оформить продажу товаров от "Организации А" в пользу "Организации Б", необходимо, чтобы "Организация Б" выступала в роли контрагента-покупателя. Именно поэтому собственные фирмы дублируются в справочнике Контрагенты.

Технически в справочнике Фирмы существует реквизит ЮрЛицо, который имеет тип Справочник.СвоиЮрЛица. Половина реквизитов, отображаемых на форме фирмы, берется именно оттуда. В то же время в справочнике Контрагенты есть реквизит ЮрФизЛицо, ссылающийся либо на ФизЛица, либо на ЮрЛица (или СвоиЮрЛица). Прямой программной связи (ссылки) между справочником Фирмы и справочником Контрагенты нет — элементы заносятся туда параллельно.

Важный вывод: Если вам не требуется переносить историю межфирменных продаж, переносить справочник Фирмы (и связанные с ним СвоиЮрЛица) в справочник Контрагенты базы-приемника не нужно. Организации переносятся в справочник Организации.

Особенности архитектуры 1С 8.3 (КА 2 / УТ 11)

Посмотрим на базу-приемник. В современных конфигурациях 1С реализована концепция разделения управленческой и регламентированной информации, что выражается в жесткой связке справочников Партнеры и Контрагенты.

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

У нас есть два пути решения этой проблемы:

  1. Создавать в правилах конвертации для каждого контрагента соответствующего ему партнера (это стандартный и наиболее корректный подход).
  2. Если в КА/УТ включена настройка "Независимо вести контрагентов и партнеров", можно при загрузке подставлять всем контрагентам предопределенный служебный элемент НеизвестныйПартнер. Однако это сильно затруднит дальнейшее ведение взаиморасчетов и аналитику в базе.

Борьба с дублированием: настройка полей поиска в КД 2.1

При переносе часто возникает проблема дублей. Рассмотрим причины их появления:

Настроим правильный поиск. Задавать логику поиска логичнее на этапе загрузки, так как именно база-приемник определяет, как идентифицировать объекты. В правилах конвертации объектов (ПКО) внутри обработчика "Поля поиска" создадим многоступенчатый алгоритм. Для этого используем системную переменную НомерВариантаПоиска, которая позволяет задать до 10 итераций.

Примерный алгоритм работы:

  1. Шаг 1: Ищем элемент по уникальному идентификатору (УИД).
  2. Шаг 2 (если не нашли по УИД): Ищем по строгой связке ИНН + КПП.
  3. Шаг 3 (если снова не нашли): Ищем только по ИНН.

Чтобы избежать проблем с пересечением элементов, обязательно установите в КД 2.1 флаг "Продолжить поиск по реквизитам, если по идентификатору не нашли". Самый надежный метод избежать дублей из-за запутанной структуры словарей 7.7 — провести предварительную нормализацию НСИ (объединение дублирующихся записей) непосредственно в самой базе 7.7 с помощью обработок поиска и замены значений до начала процесса конвертации.

Перенос дополнительных реквизитов

Разберем, как перенести свойства контрагентов в дополнительные реквизиты 8.3. В КА 2 и УТ 11 механизм дополнительных реквизитов реализован через табличные части справочников и План видов характеристик (ПВХ) Дополнительные реквизиты и сведения.

Напрямую сопоставить обычный реквизит из 7.7 с дополнительным реквизитом 8.3 в интерфейсе КД 2.1 невозможно. Применим следующий метод:

  1. В правилах конвертации свойств (ПКС) для нужного реквизита-источника устанавливаем признак "Передать данные в параметр".
  2. Значение из 7.7 выгрузится во временную структуру ПараметрыОбъекта.
  3. В обработчике "После загрузки" в ПКО базы-приемника пишем программный код, который добавляет новую строку в табличную часть дополнительных реквизитов созданного объекта и заполняет ее значением из параметра.

Общие рекомендации и альтернативные подходы

Поскольку структура справочника контрагентов в УТ 11 и КА 2 практически идентична, не стоит "изобретать велосипед". Найдите типовые правила конвертации переноса из ТиС 7.7 в УТ 11. Внимательно проанализируйте их: посмотрите, какие справочники переносятся, как настроены ПКО для Контрагенты и Партнеры, как реализован поиск. Возьмите эти правила за основу и доработайте под свои нужды.

Если настройка КД 2.1 кажется слишком сложной из-за особенностей 7.7, рассмотрите альтернативный вариант — обмен через формат EnterpriseData (Универсальный формат). Можно написать скрипт прямого чтения таблиц 7.7 через OLE/COM-соединение и формировать XML-файл в формате EnterpriseData. При загрузке такого файла типовые механизмы базы 1С 8.3 самостоятельно и корректно создадут нужную иерархию Партнеров и Контрагентов без риска нарушить логику конфигурации.

← На главную