При ведении ценообразования в конфигурации «1С:Управление торговлей 10.3» пользователи и разработчики нередко сталкиваются с ситуацией, когда документ Установка цен номенклатуры успешно проводится без сообщений об ошибках, однако записи в регистре сведений Цены номенклатуры по конкретному типу цен не появляются. При этом по другим типам цен (например, розничным) движения могут формироваться штатно.
Разберем основные причины такого поведения системы, проанализируем внутреннее устройство документа и последовательно рассмотрим методы решения проблемы.
В типовых конфигурациях 1С ценообразование разделено на два независимых контура:
Установка цен номенклатуры и записываются в регистр сведений Цены номенклатуры. Эти цены используются для продажи, прайс-листов и плановой себестоимости.Установка цен номенклатуры контрагентов и попадают в регистр Цены номенклатуры контрагентов.Если требуется зафиксировать входящие цены конкретного поставщика, необходимо использовать специализированный документ установки цен контрагентов либо включить флаг Регистрировать цены поставщика на вкладке Цены и валюта в документе Поступление товаров и услуг.
Проанализируем настройки справочника Типы цен номенклатуры. Поведение алгоритма проведения напрямую зависит от реквизитов выбранного типа цены:
Цены номенклатуры. Такие цены рассчитываются «на лету» в документах реализации на основании базового типа цен и заданной процентной наценки.Для проверки создадим новый тип цен со способом установки Базовый и вручную укажем фиксированные значения в документе.
В конфигурации 1С:УТ 10.3 документ Установка цен номенклатуры имеет сложную структуру данных, состоящую из двух взаимосвязанных табличных частей:
ТипыЦен — содержит перечень регистрируемых в документе типов цен (колонок).Товары — содержит номенклатурные позиции, единицы измерения, коэффициенты и реквизиты значений цен.При программной загрузке данных из внешних источников (например, Excel) или использовании сторонних обработок часто заполняется только табличная часть Товары, а табличная часть ТипыЦен остается пустой либо не содержит нужной ссылки. В результате запрос в модуле объекта при проведении формирует пустую выборку по незарегистрированному типу цен.
Для диагностики откроем консоль запросов и выполним проверку содержимого табличных частей проблемного документа:
ВЫБРАТЬ
Док.Ссылка,
Док.ТипЦен
ИЗ
Документ.УстановкаЦенНоменклатуры.ТипыЦен КАК Док
ГДЕ
Док.Ссылка = &ДокументСсылка;
ВЫБРАТЬ
Товары.Номенклатура,
Товары.ТипЦен,
Товары.Цена,
Товары.ЕдиницаИзмерения,
Товары.Коэффициент
ИЗ
Документ.УстановкаЦенНоменклатуры.Товары КАК Товары
ГДЕ
Товары.Ссылка = &ДокументСсылка;
При формировании набора записей регистра сведений обработчик проведения выполняет пересчет цен с учетом коэффициента единицы измерения и курса валюты:
Коэффициент в строке табличной части равен нулю или не заполнен, рассчитанное значение цены обнуляется.Курсы валют на дату документа заданы актуальные курс и кратность для валюты, указанной в типе цен.Если визуально документ заполнен верно, выясним причину с помощью отладчика. Для этого выполним следующие действия:
УстановкаЦенНоменклатуры.ОбработкаПроведения.ТаблицаПоТоварам и проанализируем условие формирования набора записей:
// В процедуре ОбработкаПроведения формируются движения по регистру
Движения.ЦеныНоменклатуры.Записывать = Истина;
Для Каждого ТекСтрока Из ТаблицаПоТоварам Цикл
Если ТекСтрока.Цена > 0 Тогда
Движение = Движения.ЦеныНоменклатуры.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрока.Номенклатура;
Движение.ХарактеристикаНоменклатуры = ТекСтрока.ХарактеристикаНоменклатуры;
Движение.ТипЦен = ТекСтрока.ТипЦен;
Движение.Цена = ТекСтрока.Цена;
Движение.Валюта = ТекСтрока.Валюта;
Движение.ЕдиницаИзмерения = ТекСтрока.ЕдиницаИзмерения;
КонецЕсли;
КонецЦикла;
С помощью табло отладчика проверим, попадают ли строки с закупочным типом цен в коллекцию ТаблицаПоТоварам, и не отсекаются ли они фильтрами по нулевой цене или несовпадающим типам цен.
В редких случаях движения фактически формируются и отображаются в окне движений документа, но не выводятся в форме списка регистра сведений из-за ошибок индексации таблиц СУБД. В такой ситуации необходимо выполнить Тестирование и исправление информационной базы через меню Администрирование в режиме конфигуратора (с установленными флагами реиндексации и проверки логической целостности).