В процессе работы с программой «1С:Бухгалтерия государственного учреждения 2.0» (БГУ) часто возникает необходимость массово изменить данные в документах, например, в «Заявках на кассовый расход». Одной из самых сложных задач является изменение реквизита Бухгалтерская операция. Сложность заключается в том, что этот реквизит часто скрыт в стандартном списке доступных полей групповой обработки, а его простое изменение может потребовать дополнительной логики заполнения параметров. Разберем пошагово, как решить эту задачу, даже если база находится в облаке и доступ к Конфигуратору ограничен.
Прежде всего, нам необходимо открыть стандартную обработку Групповое изменение реквизитов. По умолчанию она работает в упрощенном режиме, который скрывает служебные данные, чтобы обычный пользователь случайно не нарушил целостность базы. Чтобы увидеть нужный нам реквизит и получить возможность писать код, выполним следующие настройки:
После включения этих опций в списке доступных реквизитов для изменения появится поле ТиповаяОперация. В метаданных БГУ 2.0 реквизит, который в интерфейсе называется «Бухгалтерская операция», технически именуется именно так.
Проанализируем ситуацию: бухгалтерская операция — это ссылочный тип данных. Мы не можем просто вписать туда текст. Программе нужно передать конкретную ссылку на элемент справочника ТиповыеОперации. Рассмотрим пример, когда нам нужно установить операцию с названием «Оплата поставщикам и другие платежи (206.00, 302.00)».
Поскольку мы работаем в облаке, мы не можем зайти в Конфигуратор и посмотреть точный код. Однако мы можем использовать программный поиск по наименованию. Важно помнить, что в коде 1С не допускаются пробелы в именах переменных, но в строковых значениях (в кавычках) они обязательны для точного совпадения.
Перейдем на вкладку Произвольный алгоритм. Здесь мы можем написать код, который будет выполнен для каждого выбранного объекта. В контексте этой обработки текущий документ доступен через переменную Объект.
Выясним, как правильно составить алгоритм. Нам нужно найти ссылку на операцию и присвоить её реквизиту документа. Рассмотрим пример кода:
// Находим нужную операцию в справочнике по её точному наименованию
НужнаяОперация = Справочники.ТиповыеОперации.НайтиПоНаименованию("Оплата поставщикам и другие платежи (206.00, 302.00)");
// Проверяем, найдена ли операция, чтобы не записать пустое значение
Если Не НужнаяОперация.Пустая() Тогда
Объект.ТиповаяОперация = НужнаяОперация;
КонецЕсли;
Обратите внимание: метод Объект.Записать() в тексте алгоритма вызывать не обязательно, если на основной вкладке обработки установлен флаг «Записывать объекты». Обработка сама выполнит запись после выполнения вашего кода.
Проанализируем важный технический нюанс БГУ 2.0. Бухгалтерская операция в этой конфигурации — это не просто ссылка. К ней часто привязаны дополнительные параметры (КБК, счета, виды налогов), которые хранятся в отдельной табличной части документа. Если мы просто заменим ссылку на операцию через Объект.ТиповаяОперация = ..., параметры старой операции могут остаться в документе, или новые параметры не заполнятся автоматически.
В идеале после смены операции требуется вызов экспортных процедур из модуля объекта для перезаполнения параметров, но в режиме группового изменения в облаке это может быть затруднительно. Поэтому после выполнения алгоритма обязательно выполните следующие действия:
Выясним, почему иногда вкладка «Произвольный алгоритм» не появляется даже после включения режима разработчика. В облачных сервисах (SaaS) администраторы часто ограничивают исполнение произвольного кода в целях безопасности. Если кнопка заблокирована, это означает, что политика безопасности вашего провайдера запрещает такие действия пользователям. В этом случае единственным выходом будет обращение в техподдержку или использование специализированных внешних обработок, прошедших аудит безопасности сервиса.
Если же доступ есть, будьте предельно осторожны. Перед запуском алгоритма на большом массиве документов обязательно проверьте его работу на одной тестовой записи, указав её в отборе.