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