Как решить ошибку записи в регистр «Задания к распределению расчетов с клиентами» при установленной дате запрета изменения?

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

При работе в конфигурации «1С:Управление торговлей 11» пользователи могут столкнуться с ошибкой проведения документов реализации товаров и услуг или оплаты. В момент проведения документа система пытается сформировать служебную запись в регистре сведений ЗаданияКРаспределениюРасчетовСКлиентами с датой начала текущего месяца (01-е число, 00:00:00). Если в системе установлена дата запрета изменения внутри текущего месяца (например, смещенная на 3 дня назад), подсистема дат запрета блокирует проведение документа из-за попытки записи в закрытый период.

Рассмотрим подробно причины возникновения этой проблемы и разберем практические варианты ее исправления.

Выясним причину возникновения ошибки

Проанализируем механику работы отложенных взаиморасчетов в 1С. Подсистема взаиморасчетов использует регистр сведений ЗаданияКРаспределениюРасчетовСКлиентами для фоновой актуализации данных. Чтобы расчет аналитики выполнялся корректно с начала отчетного периода, программа при проведении документа автоматически округляет дату создаваемой служебной записи до первого числа текущего месяца.

Если дата запрета изменения задана внутри текущего месяца (например, 10-го числа при дате проведения 12-го числа), механизм контроля дат запрета проверяет дату формируемой служебной записи (01-е число) и ошибочно воспринимает её как редактирование ранее закрытого периода. В результате пользователь получает ошибку прав или запрета изменения данных.

Вариант 1. Доработка общего модуля или создание расширения

Разберем вариант доработки программы для исключения служебного регистра из проверки подсистемы дат запрета изменения.

  1. Перейдем в режим конфигуратора и найдем общий модуль ДатыЗапретаИзмененияУТ (или ДатыЗапретаИзмененияПереопределяемый).
  2. Установим точку останова в процедуре ПередПроверкойЗапретаИзменения.
  3. Запустим отладку и отловим момент проверки записи регистра ЗаданияКРаспределениюРасчетовСКлиентами.
  4. Добавим исключение для данного регистра сведений, чтобы подсистема не блокировала его запись.

Посмотрим на пример кода, реализующего отмену проверки запрета изменения для служебного объекта:


Процедура ПередПроверкойЗапретаИзменения(Источник, Отказ) Экспорт
    
    Если ТипЗнч(Источник) = Тип("РегистрСведенийМенеджерЗаписи.ЗаданияКРаспределениюРасчетовСКлиентами") Тогда
        Отказ = Ложь;
        Возврат;
    КонецЕсли;

КонецПроцедуры

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

Вариант 2. Переключение режима расчета взаиморасчетов

Рассмотрим альтернативный способ решения без изменения программного кода. Ошибка возникает только при использовании отложенного (офлайн) режима проведения расчетов. Если переключить систему на прямой расчет, записи в регистры заданий создаваться не будут.

  1. Откроем раздел НСИ и администрирование.
  2. Перейдем в подраздел Финансовый результат и контроллинг — Взаиморасчеты.
  3. Изменим режим выполнения расчетов с отложенного на Онлайн-расчет.

При включенном онлайн-режиме распределение взаиморасчетов происходит непосредственно в момент проведения документа, исключая обращение к служебному регистру ЗаданияКРаспределениюРасчетовСКлиентами.

Вариант 3. Обновление конфигурации и коррекция регламента

Проанализируем также стандартные административные шаги:

  1. Обновление конфигурации: Данная проблема является известной ошибкой отдельных релизов БСП и УТ 11. В более новых релизах разработчики добавили регистрационные таблицы заданий в список исключений подсистемы дат запрета.
  2. Регламент установки дат запрета: Рекомендуется устанавливать дату запрета изменения строго по границам закрытых отчетных периодов (конец предыдущего месяца или квартала), избегая скользящих дат в середине текущего месяца.
← На главную