При переносе данных из устаревших конфигураций 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.
Проанализируем разделение сред выполнения в Конвертации данных:
Объект.Наиболее простой и надежный вариант подстановки постоянного элемента в приемнике — заполнение реквизита в основном Правиле Конвертации Объектов (ПКО).
Разберем процесс по шагам:
После загрузки.
Объект.Организация = Справочники.Организации.НайтиПоКоду("000000001");
Вызывать метод Объект.Записать() вручную в данном событии не требуется. Механизм Конвертации данных автоматически сохранит объект со всеми измененными реквизитами после выполнения обработки.
Если нужно заполнить отдельное свойство прямо в Правиле Конвертации Свойств (ПКС), настроим его следующим образом:
Организация.Организация.
Значение = Справочники.Организации.НайтиПоКоду("000000001");
В момент загрузки обработка сама вычистит данное выражение и присвоит найденную ссылку реквизиту объекта.
Иногда при переносе возникает задача сопоставить текстовые наименования улиц из 1С 7.7 с элементами справочника 1С 8.3. Использование прямого поиска через Справочники.икУлицы.НайтиПоНаименованию(Источник.Улица) может давать сбои из-за расхождений в написании ("Агурина" в 7.7 и "Агурина ул" в 8.3).
Выясним, какие варианты решения существуют для корректного переноса адресов:
СтрЗаменить).