При настройке типовых операций в конфигурации 1С:БГУ часто возникает необходимость гибкого заполнения реквизитов, таких как КЭК (Код экономической классификации), в зависимости от конкретного счета или других параметров документа. Многие разработчики сталкиваются с ошибками при попытке использовать простой программный код в полях настроек типовой операции. Давайте разберемся, как правильно настроить такие условия.
Важно помнить, что механизм типовых операций в 1С построен на основе системы СКД (Системы компоновки данных). Когда вы пишете выражение в поле настройки, система интерпретирует его не как обычный код на языке 1С, а как выражение языка запросов или выражений СКД. Это накладывает ряд существенных ограничений:
Счет = \"106.6И\" приведет к ошибке или некорректной работе. Необходимо использовать специальные методы для получения ссылок.БухгалтерскиеОперации).Документ.Ссылка или данные строки табличной части, иначе функция вернет пустое значение или значение по умолчанию.Чтобы условие заработало, необходимо сравнивать счет не со строковым литералом, а со ссылкой на объект в плане счетов. Для этого используем функции типа СчетПоКоду. Рассмотрим пример правильной структуры:
ВЫБОР
КОГДА Проводка.СчетДт = БухгалтерскиеОперации.СчетПоКоду("106.6И")
ТОГДА БухгалтерскиеОперации.КЭКПоКоду("271")
ИНАЧЕ БухгалтерскиеОперации.ПолучитьПараметрыАмортизацииОС(СтрокаТаблицы.ОсновноеСредство, Документ.Ссылка, "КЭКЗатрат")
КОНЕЦ
Здесь мы используем конструкцию ВЫБОР-КОГДА, которая является стандартной для выражений СКД. Если условие выполняется, система устанавливает 271, в противном случае выполняется типовая функция получения параметров амортизации.
Иногда счета объединяются в группы, и проверять каждый счет отдельно — нерационально. В таких случаях лучше использовать функции проверки иерархии. Это сделает код более устойчивым к изменениям в плане счетов:
ВЫБОР
КОГДА БухгалтерскиеОперации.СчетВИерархии(Проводка.СчетДт, "106.3И")
ТОГДА БухгалтерскиеОперации.КЭКПоКоду("271")
ИНАЧЕ БухгалтерскиеОперации.ПолучитьПараметрыАмортизацииОС(СтрокаТаблицы.ОсновноеСредство, Документ.Ссылка, "КЭКЗатрат")
КОНЕЦ
Использование метода СчетВИерархии позволяет охватить все субсчета заданной группы, что значительно упрощает поддержку типовой операции в будущем.
Если вы внесли изменения, но система продолжает подставлять старое значение (например, 340), обратите внимание на следующие моменты:
ИНАЧЕ должна возвращать объект, совместимый с полем КЭК. Если функция ничего не возвращает, система может откатываться к значению по умолчанию.БухгалтерскиеОперации.КЭКПоКоду("271") в простом поле, чтобы убедиться, что функция доступна и работает корректно, прежде чем строить на ней логические условия.Разбор данных примеров поможет вам создавать надежные и гибкие настройки для проводок, исключая ошибки типизации и логические нестыковки в работе системы.