Как исправить ошибку «Не установлен отбор по регистратору» и правильно выровнять остатки товаров в 1С?

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

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

Причина ошибки: почему регистр накопления требует регистратор

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

Посмотрим на ошибочный пример кода, который приводит к исключительной ситуации:


Для Каждого СтрокаТЗ Из ТЗДвиженияПоСкладу Цикл
    НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
    // Попытка добавить запись без установки регистратора
    Запись = НаборЗаписей.ДобавитьРасход();
    Запись.Номенклатура = СтрокаТЗ.Номенклатура;
    Запись.Склад        = СтрокаТЗ.Склад;
    Запись.ВНаличии     = СтрокаТЗ.Количество;
    
    НаборЗаписей.Записать(); // Здесь возникает ошибка: "Не установлен отбор по регистратору"
КонецЦикла;

Метод Записать() объекта РегистрНакопленияНаборЗаписей требует обязательной установки фильтра по полю Регистратор. Если регистратор не указан в отборе, платформа блокирует операцию, защищая целостность структуры данных.

Способ 1. Программная запись с указанием документа-регистратора

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

Разберем корректный алгоритм записи по шагам:

  1. Определяем или создаем документ-регистратор (например, специализированный документ КорректировкаРегистров или складской акт).
  2. Устанавливаем отбор по ссылке на документ через свойство Отбор.Регистратор.
  3. Заполняем строки набора записей и выполняем запись.

Посмотрим на пример правильного программного формирования движений:


// Создаем документ Корректировка регистров
ДокКорректировка = Документы.КорректировкаРегистров.СоздатьДокумент();
ДокКорректировка.Дата = ТекущаяДата();
ДокКорректировка.Комментарий = "Ручное выравнивание остатков";
ДокКорректировка.Записать(РежимЗаписиДокумента.Запись);

// Формируем набор записей по регистру
НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокКорректировка.Ссылка);

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

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

Важно: вызов метода НаборЗаписей.Записать() полностью заменяет все существующие движения выбранного документа по данному регистру. Если требуется дополнить существующие движения, перед добавлением новых строк необходимо вызвать метод НаборЗаписей.Прочитать().

Способ 2. Использование документа «Корректировка регистров»

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

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

Риски ручной правки регистров и последствия для расчета себестоимости

В современных конфигурациях 1С учет товарных запасов является многослойным. Складские и финансовые остатки распределяются по цепочке взаимосвязанных регистров:

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

Если скорректировать только регистр ТоварыНаСкладах, не затронув регистры организаций и себестоимости, в системе возникнет рассинхронизация. В результате регламентная процедура «Закрытие месяца» начнет выдавать ошибки распределения партий, возникнут зависшие суммовые остатки при нулевом количестве, а отчеты по валовой прибыли покажут некорректные данные.

Способ 3. Штатные методики выравнивания остатков

Проанализируем типовые причины расхождения между регистрами ТоварыНаСкладах и ТоварыОрганизаций и штатные способы их устранения:

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

Перед исправлением остатков всегда проводите диагностику с помощью отчетов «Ведомость по товарам на складах», «Ведомость по товарам организаций» и отчета «Контроль отрицательных остатков», а любые корректировки согласовывайте с бухгалтерской службой.

← На главную