При работе в конфигурации «1С:Управление торговлей 11» пользователи могут столкнуться с ошибкой проведения документов реализации товаров и услуг или оплаты. В момент проведения документа система пытается сформировать служебную запись в регистре сведений ЗаданияКРаспределениюРасчетовСКлиентами с датой начала текущего месяца (01-е число, 00:00:00). Если в системе установлена дата запрета изменения внутри текущего месяца (например, смещенная на 3 дня назад), подсистема дат запрета блокирует проведение документа из-за попытки записи в закрытый период.
Рассмотрим подробно причины возникновения этой проблемы и разберем практические варианты ее исправления.
Проанализируем механику работы отложенных взаиморасчетов в 1С. Подсистема взаиморасчетов использует регистр сведений ЗаданияКРаспределениюРасчетовСКлиентами для фоновой актуализации данных. Чтобы расчет аналитики выполнялся корректно с начала отчетного периода, программа при проведении документа автоматически округляет дату создаваемой служебной записи до первого числа текущего месяца.
Если дата запрета изменения задана внутри текущего месяца (например, 10-го числа при дате проведения 12-го числа), механизм контроля дат запрета проверяет дату формируемой служебной записи (01-е число) и ошибочно воспринимает её как редактирование ранее закрытого периода. В результате пользователь получает ошибку прав или запрета изменения данных.
Разберем вариант доработки программы для исключения служебного регистра из проверки подсистемы дат запрета изменения.
ДатыЗапретаИзмененияУТ (или ДатыЗапретаИзмененияПереопределяемый).ПередПроверкойЗапретаИзменения.ЗаданияКРаспределениюРасчетовСКлиентами.Посмотрим на пример кода, реализующего отмену проверки запрета изменения для служебного объекта:
Процедура ПередПроверкойЗапретаИзменения(Источник, Отказ) Экспорт
Если ТипЗнч(Источник) = Тип("РегистрСведенийМенеджерЗаписи.ЗаданияКРаспределениюРасчетовСКлиентами") Тогда
Отказ = Ложь;
Возврат;
КонецЕсли;
КонецПроцедуры
Важно: Чтобы не снимать конфигурацию с поддержки, доработку рекомендуется выполнять через механизм расширений конфигурации.
Рассмотрим альтернативный способ решения без изменения программного кода. Ошибка возникает только при использовании отложенного (офлайн) режима проведения расчетов. Если переключить систему на прямой расчет, записи в регистры заданий создаваться не будут.
При включенном онлайн-режиме распределение взаиморасчетов происходит непосредственно в момент проведения документа, исключая обращение к служебному регистру ЗаданияКРаспределениюРасчетовСКлиентами.
Проанализируем также стандартные административные шаги: