При настройке обмена данными между конфигурациями 1С часто возникает задача перенести данные из одного документа в другой. Одной из самых нетривиальных задач, особенно для начинающих, является конвертация произвольного документа в документ «Операция (бухгалтерский и налоговый учет)». Основная сложность заключается в том, что в старых инструкциях и примерах можно найти упоминание о переносе данных в табличную часть «Хозрасчетный» документа «ОперацияБух», которой в современных конфигурациях может попросту не быть. Разберем по шагам, как правильно подойти к этой задаче и какие нюансы стоит учесть.
Ключевое отличие конвертации в «Операцию» от других документов в том, что мы переносим не столько реквизиты шапки и таблиц, сколько формируем бухгалтерские проводки. Документ «Операция» в данном случае выступает лишь в роли «контейнера» или, выражаясь техническим языком, регистратора для этих проводок. Сами же проводки хранятся в регистре бухгалтерии, например, «Хозрасчетный».
Поэтому наша главная цель — настроить правила для переноса движений исходного документа в набор записей нужного регистра бухгалтерии в базе-приемнике. Давайте рассмотрим этот процесс по шагам.
Выгрузка структуры метаданных. Это первый и обязательный шаг для любой настройки в «1С:Конвертация данных». Необходимо выгрузить структуру конфигураций источника и приемника в XML-файлы с помощью стандартной обработки (например, MD83Exp.epf). Эти файлы загружаются в конфигурацию «Конвертация данных», чтобы она "знала", с какими объектами ей предстоит работать.
Создание Правила конвертации объектов (ПКО). Создадим правила конвертации объектов (ПКО) для пары «Исходный документ» -> «ОперацияБух». Здесь настраивается перенос основных реквизитов из шапки документа-источника в шапку документа «ОперацияБух» (например, «Дата», «Номер», «Комментарий», «Организация»).
Создание правила для движений регистра. Это самый важный этап. Вместо того чтобы искать табличную часть в приемнике, мы создаем правило для конвертации набора записей регистра бухгалтерии. В качестве источника мы указываем движения исходного документа по регистру «Хозрасчетный» (или любому другому нужному регистру), а в качестве приемника — набор записей того же регистра «Хозрасчетный» в базе-приемнике. Документ «ОперацияБух» будет автоматически подставлен в качестве регистратора для этих движений.
Таким образом, логика верна: мы сопоставляем регистр источника с регистром приемника, и в результате в базе-приемнике создается документ «Операция», который регистрирует перенесенные проводки.
В процессе настройки можно столкнуться с таким понятием, как «Переключатель режима» или параметры выгрузки. Это мощный инструмент для создания гибких и универсальных правил обмена. Разберемся, как он работает.
Назначение: Параметры позволяют управлять поведением правил обмена «на лету», без необходимости их изменять и перезагружать. Например, можно создать параметр «РежимВыгрузкиДокументов» с типом Перечисление, у которого будут значения «Полный» и «Упрощенный».
Как это работает:
«Перед выгрузкой», «При выгрузке»), можно получить доступ к значению этого параметра и в зависимости от него выполнить разный код.Посмотрим на пример. Допустим, мы хотим выгружать документы только в «Полном» режиме. В обработчике события «Перед выгрузкой» для нужного документа можно написать такой код:
// Проверяем значение параметра, который пользователь задал перед выгрузкой
Если Параметры.РежимВыгрузкиДокументов = Перечисления.РежимыВыгрузки.Упрощенный Тогда
// Если режим "Упрощенный", отказываемся от выгрузки этого объекта
Отказ = Истина;
КонецЕсли;
Таким образом, программа «понимает», какой режим используется, через обращение к заранее заданному параметру Параметры. Это позволяет использовать одни и те же правила для разных сценариев обмена.
Начинать изучение «Конвертации данных» с документа «Операция» — задача не из легких. Важно быть готовым к некоторым проблемам и знать, как с ними бороться.
Проблема: В проводках документа «Операция» в качестве аналитики (Субконто) могут выступать практически любые объекты конфигурации: справочники (Контрагенты, Номенклатура), документы, перечисления и т.д. Для корректного переноса проводок необходимо, чтобы в «Конвертации данных» существовали правила конвертации для каждого возможного типа субконто, который встречается в ваших данных.
Решение:
Проблема: Эта проблема особенно актуальна, если учет ведется параллельно в двух базах. При стандартных настройках поиск объектов в базе-приемнике происходит по внутреннему идентификатору (GUID). Если один и тот же контрагент был заведен вручную в обеих базах, их идентификаторы будут разными. При обмене система не найдет контрагента в приемнике и создаст нового, т.е. дубль.
Решение:
Необходимо тщательно настраивать правила поиска объектов в приемнике. Вместо поиска по внутреннему идентификатору используйте уникальные для бизнеса поля:
«Контрагенты»: поиск по связке полей ИНН + КПП.«Номенклатура»: поиск по Артикулу или Коду.Настройка полей поиска выполняется в ПКО на закладке «Настройки поиска».
Проблема: Механизм автоматического сопоставления реквизитов и объектов, который предлагает «Конвертация данных», хорошо работает для простых случаев (когда имена и типы совпадают). Но он не является панацеей и часто требует ручной доработки.
Решение:
Будьте готовы писать код в обработчиках событий. Например, если в источнике используется значение перечисления, а в приемнике ему должен соответствовать элемент справочника, для такого сопоставления придется написать небольшой алгоритм в обработчике «При выгрузке» для соответствующего реквизита.
Подводя итог, конвертация в документ «Операция» — это мощный, но требующий внимания механизм. Главное — помнить, что вы работаете с движениями регистров, и заранее продумать правила конвертации для всех связанных объектов и правила поиска для предотвращения дублей.