Переход с редакции 2.0 на 3.0 в «1С:Бухгалтерии предприятия» — это не просто обновление интерфейса, а глубокая трансформация структуры данных. Когда перед разработчиком встает задача не разового перехода, а регулярного переноса документов (например, из доработанной старой базы в новую типовую), возникает вопрос: как обеспечить идентичность данных? Рассмотрим механизмы, которые позволяют реализовать перенос данных «копейка в копейку», разберем внутреннее устройство процесса обновления и определим оптимальные инструменты для автоматизации обмена.
Для начала проанализируем, как происходит переход в штатном режиме. В отличие от обмена через XML, процесс обновления конфигурации (накатывание cf-файла) работает на уровне СУБД. Однако, поскольку метаданные в 3.0 существенно отличаются, платформа не может просто переименовать поля таблиц. Процесс разделен на два этапа:
ОбновлениеИнформационнойБазы. Именно здесь заложен алгоритм переноса данных «копейка в копейку». Система пересчитывает итоги, заполняет новые регистры (например, по учету НДС или раздельному учету) на основании данных первичных документов.Если ваша задача — регулярный перенос, «накатывать» обновление каждый раз невозможно. Поэтому нам нужно извлечь логику этих преобразований и использовать её в правилах обмена.
Самый надежный способ обеспечить точность данных при регулярном обмене — это создание правил обмена в Конвертации данных 2.1 (КД 2). Многие программисты считают это трудозатратным, но для типовых документов БП 2.0 и БП 3.0 структура объектов совпадает на 80–90%. Рассмотрим алгоритм создания таких правил:
MD83Exp.epf.Дата, Номер, Организация, СуммаДокумента) идентичны, КД автоматически сопоставит большинство полей.Проанализируем ситуацию, когда в БП 3.0 появились новые обязательные реквизиты, которых нет в 2.0. В этом случае в ПКС можно прописать фиксированные значения или алгоритм поиска:
// Пример в ПКС перед выгрузкой
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
Значение = Объект.Контрагент.ОсновнойДоговор;
Иначе
Отказ = Истина;
КонецЕсли;
Вам не обязательно писать все правила с нуля. В составе дистрибутива обновления БП 3.0 или внутри самой конфигурации часто присутствуют макеты с правилами перехода. Рассмотрим, как их найти:
ПравилаОбмена_БП20_БП30 или аналогичные.Это даст вам мощный фундамент. Вы сможете удалить из этих правил все лишнее, оставив только нужные вам документы (Поступления, Реализации, Кассу), и адаптировать их под свои нетиповые реквизиты. Это значительно быстрее, чем ручное создание всех связей.
Если бюджет ограничен, а время дорого, можно рассмотреть «костыльный», но рабочий метод, предложенный участниками сообщества. Разберем его по шагам:
Обновлятор1С) эта копия обновляется до типовой БП 3.0. При этом срабатывают все встроенные обработчики, которые выверяют данные «копейка в копейку».ВыгрузкаЗагрузкаДанныхXML.epf.Этот метод хорош тем, что не требует написания правил обмена, так как перенос идет между идентичными структурами БП 3.0 (из обновленной копии в рабочую базу).
Для программиста, который хочет полностью контролировать процесс, оптимальным будет написание обработки, работающей через COMConnector. Выясним причину выбора этого метода: он позволяет избежать промежуточных файлов и работать с объектами напрямую. Рассмотрим примерный код подключения и поиска документа:
// Подключение к базе БП 2.0 из БП 3.0
COMСоединитель = Новый COMОбъект("V83.COMConnector");
ПутьКБазе = "File=""C:\Bases\BP20"";Usr=""Admin"";";
Попытка
База20 = COMСоединитель.Connect(ПутьКБазе);
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
// Выборка документов в старой базе
Запрос = База20.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата МЕЖДУ &Начало И &Конец";
// ... установка параметров и выполнение
При таком подходе вы просто читаете свойства объекта в 2.0 и присваиваете их объекту в 3.0. Основная сложность здесь — правильное сопоставление ссылочных данных (Справочников: Контрагенты, Номенклатура). Рекомендуется сопоставлять их по УникальныйИдентификатор или по ИНН/КПП для контрагентов.
Чтобы данные сошлись «копейка в копейку», недостаточно просто перенести суммы. Проанализируем критические точки:
НДС Предъявленный, НДС Продажи и т.д.). При программном создании документов обязательно вызывайте метод ЗаполнитьСчетаУчета() и проверяйте движения по этим регистрам.Резюме: Если вам нужен быстрый результат для нескольких видов документов, лучший путь — извлечь типовые правила из макетов БП 3.0, обрезать их в «Конвертации данных 2.1» и использовать для регулярной выгрузки. Это гарантирует, что логика, заложенная методистами 1С для перехода «копейка в копейку», будет сохранена и в вашем обмене.