Как заполнить реквизиты по умолчанию при перегрузке данных из 1С 7.7 в 1С 8.3

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

При переносе данных из устаревших конфигураций 1С 7.7 в современные базы на платформе 1С 8.3 разработчики часто сталкиваются с разницей в структуре данных. Например, в конфигурации-приемнике 1С 8.3 справочник или документ имеет реквизит Организация, а в источнике 1С 7.7 такой реквизит отсутствует. Разберем, как правильно организовать заполнение таких данных с помощью правил обмена в Конвертации данных 2.1.

Анализ ошибки при выгрузке и загрузке

Рассмотрим распространенную ошибку: попытку обратиться к объектам и функциям платформы 1С 8.3 (например, Справочники.Организации) на стороне выгрузки из 1С 7.7. В результате система выдает ошибки, так как глобальный контекст и структура 1С 8.3 недоступны в среде 1С 7.7.

Проанализируем разделение сред выполнения в Конвертации данных:

  1. Обработчики выгрузки: Выполняются в базе-источнике (1С 7.7). Здесь доступен только встроенный язык 1С 7.7 и объекты базы-источника.
  2. Обработчики загрузки: Выполняются в базе-приемнике (1С 8.3). В этих событиях доступен весь синтаксис 1С 8.3 и переменная Объект.

Способ 1. Заполнение реквизита в событии «После загрузки» ПКО

Наиболее простой и надежный вариант подстановки постоянного элемента в приемнике — заполнение реквизита в основном Правиле Конвертации Объектов (ПКО).

Разберем процесс по шагам:

  1. Откроем созданное ПКО для загружаемого справочника (например, «Лицевые счета»).
  2. Перейдем к обработчику события После загрузки.
  3. Укажем код поиска и подстановки значения реквизита:

Объект.Организация = Справочники.Организации.НайтиПоКоду("000000001");

Вызывать метод Объект.Записать() вручную в данном событии не требуется. Механизм Конвертации данных автоматически сохранит объект со всеми измененными реквизитами после выполнения обработки.

Способ 2. Использование свойства «Выражение» в ПКС

Если нужно заполнить отдельное свойство прямо в Правиле Конвертации Свойств (ПКС), настроим его следующим образом:

  1. В ПКО создаем правило для свойства Организация.
  2. Поле Источник оставляем пустым. В поле Приемник выбираем Организация.
  3. В поле Выражение прописываем исполняемый код для стороны приемника:

Значение = Справочники.Организации.НайтиПоКоду("000000001");

В момент загрузки обработка сама вычистит данное выражение и присвоит найденную ссылку реквизиту объекта.

Сложности сопоставления адресов и улиц при переносе

Иногда при переносе возникает задача сопоставить текстовые наименования улиц из 1С 7.7 с элементами справочника 1С 8.3. Использование прямого поиска через Справочники.икУлицы.НайтиПоНаименованию(Источник.Улица) может давать сбои из-за расхождений в написании ("Агурина" в 7.7 и "Агурина ул" в 8.3).

Выясним, какие варианты решения существуют для корректного переноса адресов:

  1. Нормализация наименований: Перед поиском необходимо очищать строку от сокращений типа "ул.", "улица", "пер." с помощью функций работы со строками (например, СтрЗаменить).
  2. Использование Адресного классификатора (ФИАС/ГАР): В современных конфигурациях 8.3 адреса хранятся в виде структурированных данных БСП. Для правильного переноса строку адреса разбирают на составляющие и регистрируют с помощью функций подсистемы адресного классификатора.
  3. Таблицы соответствия: При неоднозначных данных создают регистр или таблицу соответствия наименований 7.7 и элементов 8.3, чтобы разово сопоставить улицы вручную.
← На главную