Почему не сдвигается граница последовательности при проведении документов в 1С:Управление торговлей и как это исправить?

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

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

Причина 1. Настройка свойства объекта метаданных «Использование»

Проанализируем архитектуру конфигурации в Конфигураторе 1С. У объекта метаданных «Последовательность» есть свойство Перемещение границы при проведении (или Использование). В платформе предусмотрено два варианта поведения:

  1. Перемещать: платформа автоматически смещает границу последовательности назад при перепроведении или отмене проведения документа, если его дата раньше текущей границы.
  2. Не перемещать: платформа не меняет положение границы при операциях с документами. Вся логика сдвига перекладывается на программный код конфигурации или регламентные задания.

В типовых конфигурациях (например, УТ 11) разработчики фирма «1С» принудительно устанавливают режим Не перемещать. Это сделано для исключения монопольных платформенных блокировок в многопользовательском режиме. Автоматическое перемещение границы платформой при одновременно активной работе десятков пользователей приводит к блокировкам таблиц и снижению производительности системы.

Причина 2. Особенность расчета партий и регламентные задания

В конфигурации «1С:Управление торговлей 11» восстановление последовательности партионного учета тесно связано с формированием движений по партиям товаров. При оперативном проведении первичных документов (таких как «Сборка товаров» или «Реализация товаров и услуг») движения по партионному учету могут не формироваться мгновенно.

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

Программное управление записями последовательности

Разберем по шагам, как осуществляется программное заполнение и обновление записей последовательности в коде конфигурации. Так как платформа не сдвигает границу автоматически, логика записи формируется в модулях проведения документов.

Рассмотрим пример процедуры отражения документа в последовательности из типового модуля:


Процедура ОтразитьПереоценкаДенежныхСредствПоследовательность(ДополнительныеСвойства, ПринадлежностьПоследовательностям, Отказ) Экспорт
    ТаблицаДвижений = ДополнительныеСвойства.ТаблицыДляДвижений.ТаблицаПереоценкаДенежныхСредствПоследовательность;
    ПоследовательностьПереоценка = ПринадлежностьПоследовательностям.ПереоценкаДенежныхСредств;
    ПоследовательностьПереоценка.Очистить();
    
    Если Отказ ИЛИ ТаблицаДвижений.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;
    
    ПоследовательностьПереоценка.Отбор.Регистратор.Установить(ДополнительныеСвойства.ДляПроведения.Ссылка);
    
    Для Каждого СтрокаТаблицы Из ТаблицаДвижений Цикл
        НоваяЗапись = ПоследовательностьПереоценка.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяЗапись, СтрокаТаблицы);
    КонецЦикла;
КонецПроцедуры

Для каждого движения последовательности критически важно значение свойства Период. Именно период записи определяет положение документа в хронологической цепочке:


// Добавляем новую запись в набор записей последовательности
Движение = НаборЗаписей.Добавить();

// Указываем ссылку на документ-регистратор и период проведения
Движение.Регистратор = Источник.Ссылка;
Движение.Период = Период;

// Заполняем измерения последовательности
Движение.Организация = Источник.Организация;
Движение.СостояниеПроведения = СостояниеПроведения;

Способы ручного и программного сброса границы

Если требуется принудительно сместить границу последовательности для исправления учета или перерасчета партий задним числом, можно использовать следующие варианты:

  1. Интерактивный сброс из формы списка: в формах списков партий (например, в списке документов партионного учета) через контекстное меню доступна команда сброса границы последовательности на выбранный документ.
  2. Программный метод УстановитьГраницу(): вы можете воспользоваться встроенным методом языка 1С для явной установки границы последовательности по конкретным измерениям:
    
    ОтборПоследовательности = Новый Структура;
    ОтборПоследовательности.Вставить("Организация", ВыбраннаяОрганизация);
    
    МоментДокумента = Новый МоментВремени(СсылкаНаДокумент.Дата, СсылкаНаДокумент);
    Последовательности.ПартионныйУчет.УстановитьГраницу(МоментДокумента, ОтборПоследовательности);
    
  3. Диагностика с помощью ПолучитьГраницы(): чтобы проверить, на какую дату выставлена точка актуальности в разрезе аналитик, выполните программный вызов: ТаблицаГраниц = Последовательности.ПартионныйУчет.ПолучитьГраницы();

Проверка расхождения периодов

Посмотрим на ещё одну распространенную причину ошибок: расхождение между датой регистратора и полем Период в самой последовательности. Для диагностики ситуации сформируйте запрос к таблице последовательности и сравните реквизиты Период и Регистратор.Дата. Если даты различаются, документ может отражаться в последовательности некорректно, из-за чего алгоритмы проведения не могут правильно определить начальное звено цепочки.

Резюме: Если в «1С:Управление торговлей» граница последовательности не смещается при перепроведении первого документа — это штатнное поведение системы, вызванное установленным свойством Не перемещать и переносом партионных расчетов на фоновые задания. Для актуализации данных необходимо запустить регламентное задание расчета партий либо воспользоваться специализированными обработками закрытия месяца.

← На главную