Перенос данных из устаревших систем на платформе 1С:Предприятие 7.7 в современные конфигурации на базе 1С:Предприятие 8.3 (например, Бухгалтерия предприятия 3.0) часто сопровождается трудностями. Одной из наиболее распространенных проблем является некорректное заполнение реквизитов Организация и Договор контрагента в документах реализации. Это происходит из-за различий в архитектуре справочников: в 7.7 структура учета может быть плоской или опираться на субконто, тогда как в 8.3 связи между объектами строго регламентированы.
В этой статье мы подробно разберем, как с помощью программного кода и настройки правил в конфигурации «Конвертация данных 2.0» обеспечить безошибочное заполнение этих полей.
Если в целевой базе Бухгалтерия предприятия 3.0 ведется учет только по одной организации, у разработчика есть несколько путей. Проанализируем каждый из них, чтобы выбрать наиболее надежный.
Вариант 1. Использование обработчика «После загрузки»
Этот метод считается одним из самых стабильных, так как он срабатывает непосредственно в момент записи объекта в базу 8.3. Мы можем принудительно найти нужную организацию по коду или ИНН и подставить ее в документ, если поле осталось пустым. Рассмотрим пример кода для обработчика ПослеЗагрузки в ПКО (Правила конвертации объектов):
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
// Ищем организацию по коду, который задан в целевой базе БП 3.0
СсылкаНаОрг = Справочники.Организации.НайтиПоКоду("00-000001");
Если НЕ СсылкаНаОрг.Пустая() Тогда
Объект.Организация = СсылкаНаОрг;
КонецЕсли;
КонецЕсли;
Вариант 2. Настройка ПКО для Организации с фиксированным поиском
Рассмотрим другой подход: создание отдельного ПКО для справочника Организации. В этом правиле мы отключаем передачу данных из источника и настраиваем поиск по конкретному реквизиту. Например, можно создать правило выгрузки с одним реквизитом ПометкаУдаления (установив ему значение Ложь) и включить поиск по этому полю. Если организация в базе одна, система всегда будет находить именно ее.
Вариант 3. Использование параметров конвертации
Выясним, как сделать решение более гибким. Вместо жесткого прописывания кода организации в правилах, лучше использовать Параметры. Перед началом выгрузки мы можем создать параметр ОсновнаяОрганизация. В ПКС (Правила конвертации свойств) для реквизита Организация в обработчике Перед выгрузкой пропишем:
Значение = Параметры.ОсновнаяОрганизация;
Это позволит пользователю выбирать организацию в интерфейсе обработки обмена данными, не заходя в конфигуратор Конвертации данных.
Проблема с договорами сложнее, так как в 1С 8.3 справочник ДоговорыКонтрагентов является подчиненным справочнику Контрагенты. Кроме того, договор жестко привязан к Организации. Если вы просто передадите наименование договора, программа может его не найти или создать дубль без привязки к владельцу.
Разберем по шагам алгоритм настройки ПКО для договоров:
ДоговорыКонтрагентов обязательно установите флаг «Искать по владельцу». Это гарантирует, что поиск будет вестись только среди договоров того контрагента, который указан в документе.Реализация (акты, накладные) требует, чтобы у договора был тип С покупателем. Это перечисление. В ПКС для свойства ВидДоговора укажите фиксированное значение.Поля поиска для ПКО договора можно использовать следующий код:
// Пытаемся найти договор по владельцу, организации и виду договора
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ДоговорыКонтрагентов.Ссылка
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Владелец = &Владелец
| И ДоговорыКонтрагентов.Организация = &Организация
| И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора";
Запрос.УстановитьПараметр("Владелец", СвойстваПоиска["Владелец"]);
Запрос.УстановитьПараметр("Организация", СвойстваПоиска["Организация"]);
Запрос.УстановитьПараметр("ВидДоговора", Перечисления.ВидыДоговоров.СПокупателем);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
СсылкаНаОбъект = Выборка.Ссылка;
КонецЕсли;
При переносе данных из нетиповой 7.7 важно помнить о реквизитах, которых могло не быть в старой базе, но которые критичны для БП 3.0:
1. Валюта расчетов. В договоре 8.3 обязательно должна быть указана валюта (обычно руб.). Если ее не заполнить, в документе реализации не подставятся суммы и цены. Убедитесь, что в ПКО договора валюта заполняется значением по умолчанию.
2. Счета учета. Хотя в форме документа Реализация счета подставляются автоматически, при программной загрузке через Конвертацию данных рекомендуется явно заполнять СчетУчетаРасчетов (62.01) и СчетУчетаАвансов (62.02). Это обеспечит корректное проведение документа сразу после загрузки без необходимости ручного перевыбора контрагента.
3. Статус договора. В последних релизах Бухгалтерии предприятия 3.0 у договоров появилось поле Статус. При создании нового договора через правила обмена обязательно устанавливайте значение Действует, иначе договор будет невидимым для большинства стандартных отчетов и подстановок.
Таким образом, успех конвертации из 1С 7.7 в БП 3.0 зависит от правильной настройки поиска Организации и жесткой привязки Договора к его владельцу и организации через механизмы поиска в ПКО. Рассмотренные нами методы позволяют автоматизировать этот процесс и избежать ручной правки документов после переноса.