Почему документ Установка цен номенклатуры в УТ 11 не делает движений по регистру ЦеныНоменклатуры

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

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

Архитектурная причина проблемы в запросе проведения

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

  1. Реквизит ИспользованиеХарактеристик принимает значение Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать.
  2. Либо ИспользованиеХарактеристик не равно значению «Не использовать», но в строке документа явно заполнена характеристика (значение не равно пустой ссылке справочника ХарактеристикиНоменклатуры).

Если номенклатура создавалась программно или загружалась из внешнего источника (например, из файлов Excel, XML или через API) без явного указания этого реквизита, в базе данных он остается равным пустой ссылке перечисления или значению NULL. В итоге при проведении документа первое условие запроса дает ложь (значение не равно «Не использовать»), и второе условие также дает ложь (характеристика пустая, так как учет по характеристикам в базе отключен). Строка отсекается на уровне отбора SQL-запроса, и в регистр ничего не записывается.

Способ 1. Корректировка существующих данных в информационной базе

Разберем по шагам, как исправить карточки номенклатуры, которые уже загружены в программу с незаполненным значением реквизита:

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

Способ 2. Правильное программное заполнение при импорте номенклатуры

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

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


НовыйТовар = Справочники.Номенклатура.СоздатьЭлемент();
НовыйТовар.Заполнить(ВидНоменклатурыТовар);
НовыйТовар.Наименование = "Тестовый товар";
НовыйТовар.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать;
НовыйТовар.Записать();

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

Другие причины отсутствия движений в регистре цен

Если реквизит ИспользованиеХарактеристик заполнен правильно, но движений по-прежнему нет, проверим следующие настройки системы:

  1. Динамический расчет цен. В справочнике ВидыЦен проверьте способ задания цены. Если для вида цены указан расчет по формуле или заполнение по данным информационной базы, и при этом снят признак хранения цен в базе, документ не создает физических записей в регистре. Такие цены рассчитываются «на лету» при оформлении документов продажи.
  2. Статус документа. Убедимся, что реквизит Статус документа равен значению Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован, а реквизит Согласован имеет значение Истина. При статусе «Не согласован» движения не формируются.
  3. Регистрация нулевых цен. Если в документе установлены нулевые значения цен, они могут отсекаться механизмом проведения, если не включен признак регистрации нулевых цен для данного вида цен.
  4. Использование подсистемы Ценообразование 2.5. В версиях УТ 11.5 при включении новой подсистемы ценообразования данные записываются не в базовый регистр ЦеныНоменклатуры, а в регистр сведений ЦеныНоменклатуры25. Обязательно проверяйте движения через просмотр записей именно того регистра, который активен в функциональных опциях вашей базы.
← На главную