Почему документ «Установка цен номенклатуры» не делает движения по регистру сведений?

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

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

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

1. Путаница между собственными ценами компании и ценами контрагентов

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

  1. Цены номенклатуры компании — регистрируются документом Установка цен номенклатуры и записываются в регистр сведений Цены номенклатуры. Эти цены используются для продажи, прайс-листов и плановой себестоимости.
  2. Цены контрагентов (поставщиков) — регистрируются документом Установка цен номенклатуры контрагентов и попадают в регистр Цены номенклатуры контрагентов.

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

2. Проверка способа расчета и вида типа цен

Проанализируем настройки справочника Типы цен номенклатуры. Поведение алгоритма проведения напрямую зависит от реквизитов выбранного типа цены:

  1. Динамические цены: Если у типа цены установлен вид «Динамический», документ физически не формирует движений в регистре Цены номенклатуры. Такие цены рассчитываются «на лету» в документах реализации на основании базового типа цен и заданной процентной наценки.
  2. Способ расчета и нулевые значения: Если для типа цены указан расчетный способ, но формулы или наценки приводят к нулевому результату, документ может игнорировать строки с нулевыми суммами.

Для проверки создадим новый тип цен со способом установки Базовый и вручную укажем фиксированные значения в документе.

3. Несоответствие и рассинхронизация табличных частей документа

В конфигурации 1С:УТ 10.3 документ Установка цен номенклатуры имеет сложную структуру данных, состоящую из двух взаимосвязанных табличных частей:

  1. ТипыЦен — содержит перечень регистрируемых в документе типов цен (колонок).
  2. Товары — содержит номенклатурные позиции, единицы измерения, коэффициенты и реквизиты значений цен.

При программной загрузке данных из внешних источников (например, Excel) или использовании сторонних обработок часто заполняется только табличная часть Товары, а табличная часть ТипыЦен остается пустой либо не содержит нужной ссылки. В результате запрос в модуле объекта при проведении формирует пустую выборку по незарегистрированному типу цен.

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


ВЫБРАТЬ
    Док.Ссылка,
    Док.ТипЦен
ИЗ
    Документ.УстановкаЦенНоменклатуры.ТипыЦен КАК Док
ГДЕ
    Док.Ссылка = &ДокументСсылка;

ВЫБРАТЬ
    Товары.Номенклатура,
    Товары.ТипЦен,
    Товары.Цена,
    Товары.ЕдиницаИзмерения,
    Товары.Коэффициент
ИЗ
    Документ.УстановкаЦенНоменклатуры.Товары КАК Товары
ГДЕ
    Товары.Ссылка = &ДокументСсылка;

4. Проверка единиц измерения, коэффициентов и валют

При формировании набора записей регистра сведений обработчик проведения выполняет пересчет цен с учетом коэффициента единицы измерения и курса валюты:

  1. Коэффициент единицы: Если реквизит Коэффициент в строке табличной части равен нулю или не заполнен, рассчитанное значение цены обнуляется.
  2. Курсы валют: Убедимся, что в регистре сведений Курсы валют на дату документа заданы актуальные курс и кратность для валюты, указанной в типе цен.

5. Отладка модуля объекта и проверка набора движений

Если визуально документ заполнен верно, выясним причину с помощью отладчика. Для этого выполним следующие действия:

  1. Откроем конфигуратор и найдем документ УстановкаЦенНоменклатуры.
  2. Перейдем в Модуль объекта и установим точку останова в процедуре ОбработкаПроведения.
  3. Запустим проведение проблемного документа в режиме «1С:Предприятие».
  4. Посмотрим значение внутренней таблицы ТаблицаПоТоварам и проанализируем условие формирования набора записей:

// В процедуре ОбработкаПроведения формируются движения по регистру
Движения.ЦеныНоменклатуры.Записывать = Истина;

Для Каждого ТекСтрока Из ТаблицаПоТоварам Цикл
    Если ТекСтрока.Цена > 0 Тогда
        Движение = Движения.ЦеныНоменклатуры.Добавить();
        Движение.Период = Дата;
        Движение.Номенклатура = ТекСтрока.Номенклатура;
        Движение.ХарактеристикаНоменклатуры = ТекСтрока.ХарактеристикаНоменклатуры;
        Движение.ТипЦен = ТекСтрока.ТипЦен;
        Движение.Цена = ТекСтрока.Цена;
        Движение.Валюта = ТекСтрока.Валюта;
        Движение.ЕдиницаИзмерения = ТекСтрока.ЕдиницаИзмерения;
    КонецЕсли;
КонецЦикла;

С помощью табло отладчика проверим, попадают ли строки с закупочным типом цен в коллекцию ТаблицаПоТоварам, и не отсекаются ли они фильтрами по нулевой цене или несовпадающим типам цен.

6. Проверка целостности базы данных

В редких случаях движения фактически формируются и отображаются в окне движений документа, но не выводятся в форме списка регистра сведений из-за ошибок индексации таблиц СУБД. В такой ситуации необходимо выполнить Тестирование и исправление информационной базы через меню Администрирование в режиме конфигуратора (с установленными флагами реиндексации и проверки логической целостности).

← На главную