Перенос данных из устаревших конфигураций, таких как «Комплексная автоматизация 1.1» (КА 1.1), в современные решения на базе БСП 3.0 (например, «Бухгалтерия предприятия 3.0») часто вызывает трудности у технических специалистов. Основная проблема заключается в принципиальном различии архитектуры хранения контактной информации.
В этой статье мы подробно разберем, как «ловчее» всего выполнить эту задачу, рассмотрим различные методы — от профессиональной разработки правил обмена до простых «быстрых» способов с использованием Excel.
Прежде чем приступать к переносу, проанализируем ситуацию. В КА 1.1 (аналогично УПП 1.3 и УТ 10.3) адреса и телефоны хранятся в регистре сведений КонтактнаяИнформация. В БП 3.0 контактная информация переместилась непосредственно внутрь объектов и хранится в табличной части КонтактнаяИнформация справочника Контрагенты.
Кроме того, современные конфигурации используют формат JSON для хранения структурированного адреса по ФИАС, в то время как старые базы опирались на КЛАДР и строковую структуру. Простое копирование строки Представление может привести к тому, что адрес в новой базе будет считаться некорректным и его придется перебивать вручную для сдачи отчетности.
Это наиболее правильный и гибкий метод, если вам нужно переносить данные неоднократно или вы хотите полностью контролировать процесс. Рассмотрим по шагам, как настроить правила в КД 2.0 для трансформации данных из регистра в табличную часть.
Для реализации этого метода нам необходимо в ПКО (Правило конвертации объекта) для контрагентов настроить ПКС (Правило конвертации свойства) для табличной части:
КонтактнаяИнформация. Источник оставляем пустым.ПередВыгрузкой этого ПКС пишем код, который сформирует таблицу данных на лету.Разберем пример кода для заполнения коллекции данных:
// Создаем таблицу, структура которой совпадает с ТЧ "КонтактнаяИнформация" в БП 3.0
КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("Тип");
КоллекцияОбъектов.Колонки.Добавить("Вид");
КоллекцияОбъектов.Колонки.Добавить("Представление");
КоллекцияОбъектов.Колонки.Добавить("ЗначенияПолей"); // Для хранения структуры
// Запрашиваем данные из регистра старой базы
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КИ.Тип,
| КИ.Вид,
| КИ.Представление,
| КИ.Поля КАК ЗначенияПолей
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КИ
|ГДЕ
| КИ.Объект = &Объект";
Запрос.УстановитьПараметр("Объект", Источник);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = КоллекцияОбъектов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЦикла;
Важный момент: Чтобы данные корректно сопоставились, убедитесь, что Виды контактной информации в обеих базах называются одинаково или настройте для них отдельное ПКО.
Зачастую программисты пытаются «изобрести велосипед», забывая, что фирма «1С» уже подготовила правила для перехода с типовых конфигураций. Поскольку справочники КА 1.1 практически идентичны Управлению торговлей 10.3, мы можем воспользоваться этим.
Посмотрим, где найти эти правила:
AppData/Roaming/1C/1cv8/tmplts/...).Обмены данными часто лежат файлы .xml с правилами для УТ 10.3 или УПП 1.3.Эти правила уже содержат в себе всю логику по извлечению данных из регистра и преобразованию их в формат, понятный для БП 3.0. Вам достаточно загрузить их в обработку Универсальный обмен данными XML.
Если вы не хотите связываться с КД 2.0 и вам нужно перенести данные один раз, воспользуемся методом Запрос + Excel + Стандартная загрузка. Основная сложность здесь — вывести адреса в одну строку с контрагентом.
Выясним, как составить запрос для вывода данных в удобном виде. Нам нужно «развернуть» регистр сведений, чтобы юридический и фактический адреса стояли в одной колонке с названием контрагента. Проанализируем пример запроса:
ВЫБРАТЬ
Контрагенты.Наименование КАК Наименование,
Контрагенты.ИНН КАК ИНН,
МАКСИМУМ(ВЫБОР КОГДА КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформация.ЮрАдресКонтрагента) ТОГДА КИ.Представление КОНЕЦ) КАК ЮрАдрес,
МАКСИМУМ(ВЫБОР КОГДА КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформация.ФактАдресКонтрагента) ТОГДА КИ.Представление КОНЕЦ) КАК ФактАдрес
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.КонтактнаяИнформация КАК КИ ПО КИ.Объект = Контрагенты.Ссылка
СГРУППИРОВАТЬ ПО
Контрагенты.Наименование,
Контрагенты.ИНН
Выполнив такой запрос в «Консоли запросов», вы получите плоскую таблицу. Далее действуем по схеме:
Контрагенты и сопоставляем колонки. Программа автоматически создаст записи в табличной части контактной информации.Мало кто знает, что встроенный в «Бухгалтерию» помощник загрузки из 1С:Предприятие 8 умеет подключаться к базам через COM-соединение. Несмотря на то, что КА 1.1 может не быть в списке «рекомендуемых», механизм часто срабатывает, если выбрать «Загрузку из УТ 10.3».
Программа сама подключится к базе-источнику, найдет нужные метаданные и распределит адреса по полям. Это избавляет от необходимости писать код, но требует, чтобы обе базы были доступны на одном сервере/компьютере.
После переноса обязательно проверьте несколько карточек контрагентов. Рассмотрим, на что обратить внимание:
Выбор метода зависит от ваших навыков: если вы уверенно владеете инструментом Конвертация данных, используйте его. Если нужно «здесь и сейчас» — метод с запросом и Excel будет самым быстрым и наглядным.