Как исправить ошибку «Запись неверна: период не может быть пустым» в регистрах плановых оплат и отгрузок в 1С:ERP, КА 2 и УТ 11?

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

При работе в современных конфигурациях на платформе 1С:Предприятие 8.3, таких как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация 2 или 1С:Управление торговлей 11, пользователи часто сталкиваются с системной ошибкой при проведении документов: «Запись неверна: период не может быть пустым (регистр накопления Плановые оплаты клиентов)». Эта проблема блокирует работу с первичными документами (заказами, реализациями, оплатами) и часто возникает внезапно, даже если документ за старый период просто пытаются перепровести или пометить на удаление.

В рамках данной статьи мы подробно разберем, почему возникает эта ситуация, как работает механизм взаиморасчетов «под капотом» системы и какими способами можно оперативно устранить ошибку.

Разберем причину: механизм «Регистратора расчетов»

Для начала проанализируем архитектуру подсистемы взаиморасчетов версий 2.4 и 2.5. В отличие от упрощенных схем, где движения по регистрам делает сам документ (например, РеализацияТоваровУслуг), в ERP и КА используется механизм «Регистратора расчетов». Это специальный технический объект, который консолидирует все записи по конкретной аналитике: Организация, Партнер, Контрагент и Договор.

Когда вы проводите новый документ, система выполняет следующие действия:

  1. Определяет КлючАналитикиУчетаПартнеров.
  2. Находит технический документ РегистраторРасчетов, привязанный к этой аналитике.
  3. Пытается полностью перезаписать весь набор записей в регистрах ПлановыеОплатыКлиентов или ПлановыеОплатыПоставщикам для этого регистратора.

Если в какой-то момент в цепочке документов (например, в старом заказе двухлетней давности) данные «сломались» или график оплаты стал некорректным, система не сможет записать обновленный набор, так как поле Период в одной из строк окажется пустым. Платформа 1С на уровне ядра запрещает записывать движения в регистры накопления с пустой датой, что и вызывает ошибку.

Способ 1: Использование типовой обработки заполнения регистров

Самый простой и «мирный» способ решения проблемы — использование встроенных средств диагностики. Рассмотрим, как запустить исправление данных взаиморасчетов:

  1. Перейдем в раздел НСИ и АдминистрированиеОбслуживаниеКорректировка данных.
  2. Найдем пункт Служебные обработки (в некоторых версиях путь может отличаться, ищите обработку через «Функции для технического специалиста» под названием ЗаполнениеРегистровВзаиморасчетов).
  3. В открывшейся форме выберем вариант «Заполнить только плановые оплаты, отгрузки и поставки».
  4. Нажмем кнопку «Выполнить».

Важный нюанс: Если база данных имеет большой объем (миллионы документов), полная очистка и перезаполнение регистров могут занять несколько суток. Мы рекомендуем сначала попробовать выполнить частичное заполнение («только плановые»), так как это работает значительно быстрее и чаще всего решает проблему пустого периода.

Способ 2: Поиск «битого» документа вручную

Если типовая обработка не помогла или вы хотите точечно исправить проблему, проанализируем ситуацию через поиск конкретной записи. В сообщении об ошибке система часто указывает номер строки (например, «номер строки: 94»).

Рассмотрим алгоритм поиска:

  1. Откроем регистр накопления (например, ПлановыеОплатыПоставщикам) через «Функции для технического специалиста».
  2. Установим отбор по контрагенту или договору, по которому возникла ошибка.
  3. Найдем колонку Номер строки и перейдем к указанному в ошибке значению.
  4. Посмотрим на поле Регистратор (это будет технический документ) и, что более важно, на поле Объект оплаты.

Как правило, Объект оплаты указывает на первичный документ (Заказ или Накладную), в котором «поехал» график платежей. Выясним причину ошибки внутри этого документа: часто там на вкладке «Основное» в правилах оплаты указана сумма, но не рассчитана дата (пустое поле «Дата платежа»). Исправим дату вручную, проведем документ, и ошибка исчезнет.

Способ 3: Распроведение цепочки (Эквайринг и Зачеты)

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

  1. Найдем все документы оплаты и зачета, связанные с этой сделкой.
  2. Распроведем их в обратном хронологическом порядке.
  3. Внесем изменения в целевой документ (например, ПриобретениеТоваровУслуг).
  4. Последовательно проведем документы обратно.

Этот метод помогает «пересобрать» РегистраторРасчетов с чистого листа, удаляя из него некорректные временные записи.

Способ 4: Программное решение через расширение (для программистов)

Если ошибка возникает массово и «разбираться в коде» некогда, можно применить «заглушку». Мы создадим расширение, которое принудительно будет заполнять пустой период датой самого регистратора. Рассмотрим пример кода в модуле набора записей регистра накопления ПлановыеОплатыКлиентов:


&Перед("ПередЗаписью")
Процедура ИСПР_ПередЗаписью(Отказ, Замещение)
	
	Для Каждого СтрокаНабора Из ЭтотОбъект Цикл
		Если НЕ ЗначениеЗаполнено(СтрокаНабора.Период) Тогда
			// Если период пустой, подставляем дату регистратора или текущую дату
			Если ЗначениеЗаполнено(СтрокаНабора.Регистратор) Тогда
				СтрокаНабора.Period = СтрокаНабора.Регистратор.Дата;
			Иначе
				СтрокаНабора.Period = ТекущаяДата();
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

Внимание: Использование такой «заглушки» — это крайняя мера. Она позволит провести документы, но не устранит первопричину появления пустых данных. Проанализируем последствия: если период будет заполнен неверно, данные в отчетах «План-фактный анализ оплат» или «Календарь платежей» могут исказиться.

Резюме и рекомендации

Мы выяснили, что ошибка «Период не может быть пустым» в регистрах плановых оплат — это следствие нарушения логической целостности данных в цепочке взаиморасчетов. Для долгосрочного решения проблемы рекомендуем:

Используя приведенные выше методы, вы сможете восстановить работоспособность системы и избежать блокировки операционной деятельности предприятия.

← На главную