При автоматизации бухгалтерского и налогового учета часто возникает необходимость массово формировать налоговые проводки для документов ОперацияБух (или «Операция, введенная вручную»). В типовых конфигурациях (например, в «Бухгалтерии для Казахстана» или «Бухгалтерии предприятия») на форме документа присутствует кнопка автозаполнения налогового учета на основе введенных бухгалтерских записей. Разберем, как воспользоваться этой функциональностью программно или реализовать аналог в собственной внешней обработке.
Проанализируем ситуацию, когда необходимо быстро повторить поведение штатной кнопки формы без полного переписывания алгоритма сопоставления счетов. В этом случае мы можем программно открыть форму существующего документа в фоновом режиме, очистить существующий набор налоговых записей, вызвать серверную процедуру заполнения и сохранить результат.
Рассмотрим пример кода, который выполняет эту задачу:
Процедура ЗаполнитьНалоговыйНаборЗаписей(ссДок)
П = Новый Структура("Ключ", ссДок);
фрмДок = ПолучитьФорму("Документ.ОперацияБух.ФормаОбъекта", П);
фрмДок.НалоговыйНаборЗаписей.Очистить();
фрмДок.БУЗаполнитьНУНаСервере();
фрмДок.Записать();
КонецПроцедуры
Разберем по шагам, как работает приведенный алгоритм:
Ключ, передавая ссылку на документ ссДок.ПолучитьФорму инициализируем форму объекта Документ.ОперацияБух.ФормаОбъекта.НалоговыйНаборЗаписей.БУЗаполнитьНУНаСервере, которая сопоставляет бухгалтерские счета с налоговыми и генерирует проводки.Записать для сохранения изменений в документе и движениях регистров.Посмотрим на особенности применения первого способа. Хотя этот вариант прост в реализации, он имеет существенные ограничения:
ПолучитьФорму недоступен в регламентных и фоновых заданиях, а также в Web- и HTTP-сервисах, так как там отсутствует клиентский интерфейс.Выясним, как реализовать более производительный и универсальный механизм, который можно запускать в регламентных заданиях и на сервере без привлечения интерфейсных объектов.
Для прямого формирования налоговых проводок выполним следующие шаги:
Соответствие счетов БУ и НУ. Выполняем запрос к этому регистру для получения соответствий для каждого бухгалтерского счета из документа.Движения объекта документа или создаем набор записей соответствующего регистра бухгалтерии налогового учета с отбором по регистратору.СпособЗаполнения (устанавливая, например, значение «Вручную»), чтобы исключить случайное перезаписывание данных при повторном проведении документа пользователями.Таким образом, для разовых интерактивных обработок вполне подходит вызов экспортных процедур формы, а для высоконагруженной и фоновой групповой обработки рекомендуется применять прямую работу с набором записей регистра бухгалтерии.