При работе с подсистемой визирования в «БИТ.Финанс» часто возникает необходимость задать нестандартную логику проверки заявок. Пользователи нередко пытаются вставить громоздкий программный код, включая запросы и циклы, непосредственно в поле «Пользовательское условие». Однако это приводит к ошибкам компиляции, так как механизм Вычислить() не предназначен для выполнения сложных конструкций в одну строку.
Система ожидает получить на выходе логическое значение (Истина или Ложь). Попытка выполнить Новый Запрос внутри текстового поля вызывает синтаксическую ошибку, так как контекст выполнения этого условия не является полноценным модулем 1С. Кроме того, прямое обращение к объектам документации в запросе является плохой практикой, снижающей быстродействие системы.
Для того чтобы система корректно отрабатывала сложные условия, мы рекомендуем использовать следующий подход:
Рассмотрим пример реализации такой функции:
// В общем модуле (например, Расш_МойМодуль)
Функция ПроверитьЛимитЗаявки(Контекст) Экспорт
// Выполняем проверку через регистры накопления, а не документы
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(Обороты.СуммаОборот) КАК Сумма
|ИЗ
| РегистрНакопления.ОборотыБюджетов.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Обороты";
// ... установка параметров и логика вычислений
Результат = Запрос.Выполнить().Выбрать();
// Возвращаем Истину, если условие соблюдено
Возврат Результат.Сумма > 50000;
КонецФункции
После создания функции, в поле «Пользовательское условие» в настройках «БИТ.Финанс» вам останется написать всего одну строку:
Расш_МойМодуль.ПроверитьЛимитЗаявки(СтруктураКонтекст)
Часто возникает вопрос: как автоматически проставлять визу «Согласовано»? Важно понимать, что бизнес-процессы «БИТ.Финанс» строятся на маршрутах, а не на принудительной записи в регистры виз.
Основные принципы работы с визированием:
Задачи 1С.Чтобы ваша система работала быстро и стабильно, проанализируем следующие моменты:
Обороты или Остатки.Выбрать() и проверяйте только Следующий(), не выгружая всю таблицу результатов в память.Следуя этим рекомендациям, вы сможете настроить гибкие и производительные проверки, избегая ошибок и «костылей» в архитектуре вашей системы.