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

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

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

Программа выдает ошибку: «Не заполнена колонка "Серия" в строке...». Однако при попытке открыть форму заполнения серий для этой строки система выдает противоположное сообщение: «Указание серий не требуется». В результате пользователь оказывается в замкнутом круге: провести документ невозможно, а указать серии программа не позволяет. Давайте разберем по шагам, почему возникает этот конфликт настроек и как его оперативно устранить.

Выясняем причину проблемы: почему возникает конфликт настроек серий?

Данная ошибка представляет собой классическое проявление рассинхронизации данных в базе. Проблема кроется в архитектуре хранения настроек серийного учета в конфигурациях на платформе 1С:Предприятие 8.3. При необходимости выполнить точечную миграцию объектов с настройкой правил сопоставления применяется перенос данных между похожими конфигурациями 1С.

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

Логика сбоя выглядит следующим образом:

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

Решение 1. Очистка реквизита «ВладелецСерий» через групповое изменение

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

Рассмотрим этот процесс по шагам:

  1. Перейдем в раздел НСИ и администрирование — Обслуживание — Корректировка данных.
  2. Откроем ссылку Групповое изменение реквизитов.
  3. В поле «Изменять» выберем справочник Номенклатура.
  4. В обязательном порядке настроим отбор, чтобы случайно не повредить данные действительно серийных товаров. Нажмем «Добавить условие отбора»: Вид номенклатуры.Использовать серии Равно Ложь.
  5. Нажмем кнопку «Дополнительные параметры» (в некоторых версиях — кнопка «Настройки») и в списке специальных возможностей включим флаг «Показывать служебные реквизиты» или режим разработчика. Без этого действия служебные реквизиты не будут доступны для редактирования.
  6. В списке доступных реквизитов найдем поле Владелец серий.
  7. Установим напротив него флаг для изменения, но само значение оставим пустым (незаполненным).
  8. Нажмем кнопку «Изменить параметры».

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

Решение 2. Программное исправление залипших реквизитов

Если у вас есть доступ к консоли кода или вы создаете внешнюю обработку для исправления базы, очистку реквизита можно выполнить с помощью простого скрипта на встроенном языке 1С. Проанализируем пример кода:


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

Применение свойства ОбменДанными.Загрузка = Истина позволяет быстро перезаписать элементы, минуя платформенные проверки, которые могли бы заблокировать запись карточки из-за незаполненности других обязательных полей.

Настройка совместного хранения серийных и несерийных товаров на складе

Часто возникает вопрос: можно ли вообще хранить серийный и несерийный товар на одном складе? Да, программные механизмы «1С:Управление торговлей 11» полностью поддерживают такую возможность. Главное — придерживаться правильной методологии настройки системы. Для корректной первоначальной настройки системы при переходе доступен подбор решений для переноса данных в 1С:УТ.

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

Очистка кэша в проблемных документах

Иногда после того, как реквизит ВладелецСерий успешно очищен в справочнике, ранее созданный документ все равно отказывается проводиться с той же ошибкой. Почему это происходит?

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

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

  1. Удалите полностью строку с проблемным товаром из табличной части документа.
  2. Запишите документ без этой строки.
  3. Добавьте товар в документ заново через кнопку «Добавить» или «Подобрать». При новом добавлении система обратится к исправленным реквизитам карточки номенклатуры и применит верные правила проведения без запроса серий.
← На главную