Как исправить расхождения в регистрах остатков товаров в 1С:УТ 11 при отключении ордерной схемы?

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

В процессе эксплуатации 1С:Управление торговлей 11 нередко возникают ситуации, когда бизнес-процессы меняются "на лету". Одной из самых болезненных операций является отключение ордерной схемы документооборота на складах, по которым уже велся учет. Если на момент отключения в системе остались неполностью обработанные ордера (например, расходная накладная проведена, а расходный ордер — нет), возникают серьезные коллизии в регистрах накопления. Данные в отчетах по складу, по организациям и в помощниках продаж начинают «разъезжаться».

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

Почему возникают расхождения при отключении ордерной схемы?

Проанализируем архитектуру УТ 11. В этой конфигурации складской и финансовый контуры разделены. Когда склад является ордерным:

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

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

Шаг 1: Анализ проблемных регистров

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

Важно помнить, что в новых версиях УТ 11 (начиная с 11.4.7) также активно используется регистр РаспределенныеЗапасы. Если его не учесть, правки могут не отразиться на доступности товара для заказов.

Шаг 2: Выбор стратегии исправления — Инвентаризация vs Корректировка

Рассмотрим два основных пути решения проблемы:

Путь А: Методически верный (через складские акты). Мы создаем документы СписаниеНедостачТоваров для обнуления текущих (неверных) остатков и ОприходованиеИзлишковТоваров для ввода актуальных данных. Этот способ хорош тем, что система автоматически пропишет движения во все связанные регистры, включая СебестоимостьТоваров и ПартииТоваровОрганизаций. Это исключит проблемы при закрытии месяца.

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

Шаг 3: Разработка обработки для обнуления и корректировки

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

Сначала сформируем запрос к виртуальным таблицам остатков. Нам нужно получить данные в разрезе всей ключевой аналитики: Номенклатура, Характеристика, Склад, Организация, НомерГТД.


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ТоварыНаСкладах.Номенклатура КАК Номенклатура,
    |	ТоварыНаСкладах.Характеристика КАК Характеристика,
    |	ТоварыНаСкладах.Склад КАК Склад,
    |	ТоварыНаСкладах.ВНаличииОстаток КАК КоличествоСклад
    |ИЗ
    |	РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладах";

Запрос.УстановитьПараметр("Период", ГраницаКорректировки);
Результат = Запрос.Выполнить().Выгрузить();

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

Шаг 4: Программное создание корректировки

Разберем пример кода для заполнения движений регистра ТоварыНаСкладах в документе КорректировкаРегистров:


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

// Добавляем таблицу регистра в список корректируемых
НоваяСтрокаРегистра = НовыйДокумент.ТаблицаРегистровНакопления.Добавить();
НоваяСтрокаРегистра.Имя = "ТоварыНаСкладах";

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

НовыйДокумент.Записать();

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

Важные нюансы и риски

Проанализируем ситуацию глубже. Прямая корректировка регистров — это всегда риск для финансового результата. Рассмотрим основные «подводные камни»:

  1. Себестоимость: Если вы обнуляете количество в ТоварыОрганизаций, но не корректируете регистр СебестоимостьТоваров, система при закрытии месяца может выдать ошибку о наличии стоимости при нулевом количестве. Рекомендуется также очищать этот регистр в разрезе тех же позиций.
  2. Транзитные остатки: Обязательно проверьте регистры ТоварыКОформлениюОрдеровПриемки и ТоварыКОформлениюОрдеровОтгрузки. Если в них остались записи, их нужно закрыть в ноль, иначе в отчетах по складу всё равно будут висеть рекомендации «Оформить ордер».
  3. Интеркампани: Если у вас настроена продажа между организациями, проверьте отчет «Контроль передач товаров». Ручное обнуление может скрыть реальную потребность в оформлении документов ПередачаТоваровМеждуОрганизациями.
  4. Резервы: Если на момент корректировки в базе есть проведенные ЗаказыКлиентов с резервами, регистр СвободныеОстатки может рассчитаться некорректно. Перед выполнением работ желательно отменить проведение заказов с резервами или учитывать их в расчетах.

Итоговые рекомендации

Подведем итог. Исправление регистров в УТ 11 — задача комплексная. Если есть возможность, всегда отдавайте предпочтение документам ИнвентаризацияТоваров, так как они задействуют встроенные механизмы проверки бизнес-логики 1С. Если же вы решили использовать Корректировку регистров, следуйте правилу «полного охвата»: корректируйте не только ТоварыНаСкладах, но и финансовый контур вместе с регистрами к оформлению.

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

← На главную