Почему возникает синтаксическая ошибка при закрытии месяца после обновления 1С и как её исправить?

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

При обновлении конфигурации 1С:Бухгалтерия на релизы серии 3.0.140 и выше многие специалисты сталкиваются с внезапной синтаксической ошибкой при выполнении регламентной операции «Расчет расходов будущих периодов». Сообщение об ошибке содержит указание на функцию ОКР внутри текста запроса. Давайте разберем, почему это происходит и как устранить данную проблему, не дожидаясь экстренного обновления серверной инфраструктуры предприятия.

Разбор причин ошибки: несовместимость версий платформы

Основная причина заключается в том, что разработчики 1С в последних версиях конфигурации начали использовать новые возможности языка запросов, которые поддерживаются только начиная с платформы 8.3.20 и выше. Функция ОКР (округление) в запросах — это мощный инструмент, который существенно упростил расчеты, но старые версии платформы (например, 8.3.17 или 8.3.18) просто не «понимают» этот синтаксис.

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

Решение 1: Официальный путь (обновление платформы)

Наиболее правильным и рекомендуемым решением является обновление платформы 1С:Предприятие до версии, указанной в файле описания поставки релиза (обычно это 8.3.20.2184 или выше). Это обеспечит полную поддержку всех новых функций, встроенных в конфигурацию, и избавит от подобных ошибок в будущем.

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

Решение 2: Временное исправление через расширение конфигурации

Если обновление платформы невозможно, мы можем применить расширение конфигурации для исправления логики работы метода РаспределитьЧастьРасходовЗаМесяц в общем модуле РасходыБудущихПериодов. Мы можем заменить «новый» синтаксис на конструкцию, которая была доступна в старых версиях системы.

Для реализации этого метода выполним следующие шаги:

  1. Создадим новое расширение конфигурации с безопасным режимом, отключенным на этапе разработки.
  2. Добавим в расширение общий модуль РасходыБудущихПериодов.
  3. Переопределим функцию РаспределитьЧастьРасходовЗаМесяц, используя аннотацию &Вместо.
  4. Заменим проблемный фрагмент кода в запросе.

Посмотрим, как выглядел фрагмент с ошибкой и чем его заменить. Вместо использования ОКР для вычисления срока, мы вернемся к вычислению даты окончания периода через функции ДОБАВИТЬКДАТЕ и КОНЕЦПЕРИОДА:


// Пример замены логики в запросе расширения:
// Было (использовалась функция ОКР, вызывающая ошибку):
// ВЫБРАТЬ ... ОКР(Срок / Коэффициент ... ) КАК СрокРаспределения

// Стало (совместимый синтаксис):
КОНЕЦПЕРИОДА(
    ДОБАВИТЬКДАТЕ(
        ОсновныеСредстваДатаСнятияСУчета.ДатаСостоянияСнятоСУчета, 
        МЕСЯЦ, 
        ОсновныеСредстваСрокПолезногоИспользования.СрокПолезногоИспользования
    ), 
    МЕСЯЦ
)

Решение 3: Альтернативная замена оператора

Если по каким-то причинам предыдущий вариант кажется вам слишком сложным для внедрения в вашу структуру данных, некоторые специалисты успешно применяют замену функции ОКР на ВЫРАЗИТЬ. Это позволяет привести тип данных к формату, который корректно обрабатывается старой версией платформы 1С:Предприятие. Тем не менее, перед применением этого метода обязательно протестируйте результат на копии базы данных, чтобы убедиться в математической точности расчетов расходов будущих периодов.

Важные рекомендации по сопровождению

Чтобы избежать подобных инцидентов в будущем, проанализируем основные принципы работы с обновлениями:

Использование расширений — это эффективный способ оперативно залатать «пробоины» в работе системы, не дожидаясь глобальных изменений в IT-инфраструктуре компании. Работайте структурно, используйте расширения для временных правок и всегда стремитесь к обновлению платформы как к целевому состоянию системы.

← На главную