Как программно заполнить и провести документ с типовой операцией в БГУ 2?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При разработке под конфигурацию 1С:Бухгалтерия государственного учреждения 2 (БГУ 2) многие разработчики сталкиваются с тем, что механизм «Типовых операций» устроен сложнее, чем в предыдущих версиях платформы. Типовая операция здесь — это не просто реквизит документа, а комплексная подсистема, основанная на метаданных и регистрах сведений. Давайте разберем, как правильно взаимодействовать с ней программно, чтобы документ корректно формировал проводки.

Понимание архитектуры типовых операций

В БГУ 2 визуально представленная на форме вкладка «Бухгалтерская операция» не является прямым хранилищем данных. Она динамически формирует элементы управления на основе настроек типовой операции. Сами же значения дополнительных реквизитов операции сохраняются в регистре сведений ЗначенияДополнительныхРеквизитовОпераций. Попытка простого присвоения значений через реквизиты объекта приведет к тому, что документ «не увидит» данных при проведении.

Метод использования серверного модуля для заполнения операции

Для корректного взаимодействия с системой необходимо использовать методы общего модуля БухгалтерскиеОперацииСервер. Это гарантирует, что все связи будут установлены правильно, а регистры сведений обновлены согласно правилам типовой конфигурации.

Рассмотрим пошагово, как реализовать этот процесс в программном коде:

  1. Определите ссылку на нужную вам ТиповуюОперацию (например, для внутреннего перемещения по счету 27.02) из справочника ТиповыеОперации.
  2. Подготовьте структуру дополнительных реквизитов, которые требуются для данной операции. Чтобы узнать, какие именно ключи (имена реквизитов) ожидает операция, используйте функцию Справочники.ТиповыеОперации.ДополнительныеРеквизитыТиповойОперации(ТиповаяОперация, , "ИмяДляФормулы").
  3. Используйте процедуру БухгалтерскиеОперацииСервер.ДобавитьДанныеДляПроведения для передачи данных в документ, например, при оприходовании материалов со счета 22.2 на 105.

Пример программной реализации

Ниже представлен пример кода, демонстрирующий, как выполнить заполнение реквизитов документа «Отражение зарплаты в учете», назначить операцию и передать в нее данные:


// 1. Получаем ссылку на типовую операцию
ТиповаяОперация = Справочники.ТиповыеОперации.ОтражениеЗарплатыВУчете_ОтражениеЗарплаты;

// 2. Получаем структуру дополнительных реквизитов
// Предположим, что нам нужно заполнить реквизит 'ОсновнойКонтрагент'
ЗначениеРеквизита = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка");
ДополнительныеРеквизиты = Новый Структура("ОсновнойКонтрагент", ЗначениеРеквизита);

// 3. Заполняем данные через серверный модуль
БухгалтерскиеОперацииСервер.ДобавитьДанныеДляПроведения(ДокОбъект, ТиповаяОперация, ДополнительныеРеквизиты, Истина);

// 4. Записываем документ
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);

Альтернативный подход через запись данных операции

Если по каким-то причинам вы работаете с уже существующим объектом документа, можно воспользоваться методом ЗаписатьДанныеТиповойОперацииОбъекта. Этот путь полезен, если вам нужно принудительно переназначить тип операции у записанного документа:


// Записываем документ для инициализации
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);

// Применяем типовую операцию через серверный метод
БухгалтерскиеОперацииСервер.ЗаписатьДанныеТиповойОперацииОбъекта(ДокОбъект, Справочники.ТиповыеОперации.ИмяНужнойОперации);

// Перепроводим для формирования проводок
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);

Важные рекомендации при работе

При реализации данного функционала обратите внимание на следующие аспекты:

Следуя этим рекомендациям и используя методы серверного модуля, вы сможете автоматизировать процесс заполнения документов с типовыми операциями, обеспечив стабильную работу учета в вашей информационной системе.

← На главную