Документ «Установка цен номенклатуры»

Документ массово задаёт отпускные цены номенклатуры (по типу цен) и фиксирует их в периодическом регистре сведений ЦеныНоменклатуры — никаких бухгалтерских проводок он не делает. Из этого регистра цены потом подставляются в счета, реализацию и прайс-листы на дату документа.

Бухгалтерия для Казахстана, ред. 3.0 · v3.0.72.1 · обновлено 2026-06-04

🎯 Что это и зачем

Чтобы при выписке счёта или реализации цена подставлялась сама, её надо где-то хранить. «Установка цен номенклатуры» — это документ-прайс: вы задаёте для организации и выбранного типа цен (Розничная, Оптовая, Закупочная, …) список позиций с ценами, проводите — и система запоминает, что «с такой-то даты для такого-то типа цен товар стоит столько-то».

Документ решает повседневные задачи ценообразования: - плановый пересмотр прайс-листа (сезон, акция, индексация); - установка розничных цен на основании поступления (закупочная цена + наценка); - массовая загрузка прайса поставщика из файла Excel; - копирование действующих цен с последующей корректировкой (например, «+10 % ко всем»).

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

⚠️ Это не бухгалтерский документ. Он не формирует Дт/Кт, не двигает товар по складу и не затрагивает счета учёта. Единственный результат проведения — записи в регистре сведений ЦеныНоменклатуры. Подробнее см. [Часть 2 → Движения](#движения--куда-документ-пишет-данные).

🧭 Где найти в программе

Раздел «Номенклатура и склад» → пункт «Установка цен номенклатуры» (рядом со справочниками «Номенклатура» и «Склады»). Откроется журнал документов; новый создаём кнопкой «Создать». Документ также вызывается из карточки Поступления товаров и услуг командой «Создать на основании».

📷 СКРИН 01
СКРИН 01 — раздел «Номенклатура и склад», открытый журнал «Установка цен номенклатуры» с кнопкой «Создать». (AccountingKZ30 во Fresh)
⚠️ Пробел в навигации [KZ30-NAV-UCN]. В справочнике маршрутов navigation-map.json объекта Документ.УстановкаЦенНоменклатуры нет — точный путь во Fresh не зафиксирован. Раздел указан как «Номенклатура и склад» по аналогии с соседними объектами (Справочник.Номенклатура, Справочник.Склады маршрутизируются именно туда), а разбор objects/ упоминает альтернативный вход через «Справочники»/«Продажа». Перед публикацией проверьте реальное расположение пункта меню в целевой базе и допишите маршрут в navigation-map.json.

👤 Часть 1. Для пользователя

Проходим по шагам: от пустого документа до проведённого прайса и проверки записанных цен.

Урок 1. Прайс-лист вручную

Когда: плановый пересмотр цен, сезонные изменения, маркетинговая акция.

Шаг 1. Создаём документ

Раздел «Номенклатура и склад» → «Установка цен номенклатуры» → «Создать».

📷 СКРИН 02
СКРИН 02 — пустая форма нового документа.

Шаг 2. Заполняем шапку

📷 СКРИН 03
СКРИН 03 — заполненная шапка — Организация и Тип цен.
⚠️ Важно про подразделение. Поле Структурное подразделение есть в шапке, но в цену оно не записывается: регистр ЦеныНоменклатуры хранит цену в разрезе Организация + Тип цен + Номенклатура, без подразделения (проверено по коду релиза 3.0.72.1). Поэтому разные цены для разных магазинов через это поле получить нельзя — для этого заводят разные типы цен. Подразделение тут — справочный реквизит. См. [несостыковку KZ30-UCN-0002](#несостыковка-kz30-ucn-0002).

Шаг 3. Заполняем товары

Табличная часть Товары — главное в документе. Способы наполнения: - Подбор — выбрать позиции из справочника номенклатуры и проставить цены. - Добавить строку вручную: Номенклатура → Цена → Валюта. - кнопки группового заполнения (по ценам, по себестоимости, по поступлению, из файла) — см. Уроки 2–4.

📷 СКРИН 04
СКРИН 04 — табличная часть «Товары» с колонками Номенклатура / Цена / Валюта.
💡 Подсказка. Валюта в строке обычно подставляется из валюты регламентированного учёта организации (тенге). Меняйте её вручную, только если действительно ведёте мультивалютный прайс.

Шаг 4. Проводим

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

📷 СКРИН 05
СКРИН 05 — проведённый документ.
💡 Как проверить результат. Бухгалтерских проводок (Дт/Кт) у документа нет — кнопка «Дт/Кт» ничего не покажет. Чтобы убедиться, что цена записалась, откройте отчёт по ценам номенклатуры (или регистр ЦеныНоменклатуры) либо создайте тестовый счёт/реализацию и посмотрите, какая цена подставилась.
⚠️ Дубли номенклатуры. Одна позиция не должна встречаться в табличной части дважды — иначе в регистр запишутся две записи на одну дату/тип цен, и какая «победит», зависит от порядка. Перед проведением уберите повторы.

Урок 2. Цены на основании поступления

Когда: оприходовали товар и хотим сразу выставить отпускную цену (закупка + наценка).

  1. Откройте проведённый документ Поступление товаров и услуг.
  2. «Создать на основании» → «Установка цен номенклатуры».
  3. Система заполнит: Документ-основание (ссылку на поступление), Организацию и табличную часть Товары строками из поступления.
  4. Укажите/проверьте Тип цен и проставьте наценку (скорректируйте цены вручную или групповым изменением).
  5. Записать и провести.
📷 СКРИН 06
СКРИН 06 — меню «Создать на основании» в поступлении → «Установка цен номенклатуры».
💡 Закупочную цену из поступления удобно превратить в розничную групповой формулой (например, Цена * 1.30). Базовой автонаценки «из коробки» в документе нет — процент задаёте сами.

Урок 3. Заполнение по действующим ценам и по себестоимости

Чтобы не вводить заново, табличную часть можно наполнить расчётно:

Варианты команд (важно не перепутать): - Заполнить… — очищает таблицу и заполняет заново; - Добавить… — дописывает строки к уже введённым; - Обновить… — обновляет цену у уже добавленных позиций, не добавляя новых.

📷 СКРИН 07
СКРИН 07 — диалог заполнения «по ценам номенклатуры» (исходный тип цен и дата).

Урок 4. Загрузка прайса из файла

Когда: поставщик прислал прайс таблицей.

  1. Создайте документ, заполните шапку.
  2. «Загрузить из файла» → выберите Excel (колонки вида Артикул/Наименование/Цена/Валюта).
  3. Система сопоставит строки файла с номенклатурой по артикулу/наименованию. При неоднозначности предложит выбрать нужную позицию из списка совпадений.
  4. Несопоставленные строки останутся помеченными — заведите номенклатуру или уточните соответствие вручную.
  5. Записать и провести.
📷 СКРИН 08
СКРИН 08 — окно загрузки из файла с таблицей сопоставления номенклатуры.
💡 Групповое изменение нескольких прайсов. В журнале можно выделить несколько документов и через «Изменить выделенные» массово пересчитать Товары.Цена формулой, затем перепровести — пригодится для разовой индексации сразу по пачке прайсов.

🛠 Часть 2. Для программиста

Источник: реальный код релиза 3.0.72.1 — Documents/УстановкаЦенНоменклатуры/Ext/ObjectModule.bsl (модуль маленький, разобран целиком) и …/Ext/ManagerModule.bsl (процедуры проведения и печати), плюс разбор objects/ и business-logic/.

Структура объекта

Реквизиты шапки:

Реквизит Тип Обязательность Назначение
Организация СправочникСсылка.Организации ShowError Владелец прайса; пишется в регистр.
ТипЦен СправочникСсылка.ТипыЦенНоменклатуры ShowError Вид цены; один на весь документ; пишется в регистр.
СтруктурноеПодразделение СправочникСсылка.ПодразделенияОрганизаций DontCheck Справочный реквизит. В регистр не пишется (см. ниже).
ДокументОснование ДокументСсылка.ПоступлениеТоваровУслуг DontCheck Ссылка на поступление при вводе «на основании».
РучнаяКорректировка Булево DontCheck Истина → авто-движения не формируются (ручная правка регистра).
НеПроводитьНулевыеЗначения Булево DontCheck Исключает строки с Цена = 0 из движений.
Ответственный, Автор СправочникСсылка.Пользователи DontCheck Аудит.
Комментарий Строка DontCheck Произвольный текст.
УдалитьИнформация Строка DontCheck Устаревший реквизит (префикс «Удалить»), в логике не используется.

Табличная часть Товары: Номенклатура (СправочникСсылка.Номенклатура), Цена (Число), Валюта (СправочникСсылка.Валюты). Только эти три поля участвуют в проведении.

Формы: ФормаДокумента (основная, с командами заполнения и загрузки), ФормаСписка (журнал + «Изменить выделенные»), ФормаВыбора.

Жизненный цикл (обработчики ObjectModule)

ObjectModule.bsl целиком обёрнут в #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение. Обработчиков всего три:

Обработчик Строк Что делает
ОбработкаЗаполнения ~14 Если основание — ДокументСсылка.ПоступлениеТоваровУслуг, вызывает ЗаполнитьПоДокументуОснования; если пришла Структура — ЗаполнитьЗначенияСвойств (с удалением ключа Автор). В конце всегда — ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(...).
ПриКопировании 2 ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(...) — восстанавливает валюту регламентированного учёта и шапку при копировании.
ОбработкаПроведения ~17 Готовит наборы записей, при РучнаяКорректировка выходит, иначе формирует движения по ЦеныНоменклатуры (разбор ниже).

Плюс служебная экспортная процедура ЗаполнитьПоДокументуОснования(Основание) — она же присваивает ДокументОснование = Основание.

⚠️ Чего в ObjectModule НЕТ. Нет ОбработкаПроверкиЗаполнения — обязательность Организация/ТипЦен обеспечивается только флагом ShowError метаданных (платформенная проверка). Никакой прикладной проверки дублей номенклатуры или неотрицательности цены в модуле объекта нет (вопреки тому, что предполагает разбор objects/). Если такие проверки нужны — они должны жить в модуле формы, а не здесь.

Как формируется проведение — реальный код (3.0.72.1)

Главное правило конфигурации соблюдено и здесь: движения формирует не сам документ, а модуль менеджера. ОбработкаПроведения лишь оркеструет.

Источник: ObjectModule.bsl, процедура ОбработкаПроведения (целиком):

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

    // ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
    ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
    Если РучнаяКорректировка Тогда
        Возврат;
    КонецЕсли;

    ПараметрыПроведения = Документы.УстановкаЦенНоменклатуры.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
    Если Отказ Тогда
        Возврат;
    КонецЕсли;

    // ФОРМИРОВАНИЕ ДВИЖЕНИЙ
    Документы.УстановкаЦенНоменклатуры.СформироватьДвиженияУстановкаЦен(ПараметрыПроведения.ТаблицаТовары,
        ПараметрыПроведения.ТаблицаРеквизитов, Движения, Отказ);

КонецПроцедуры

Разбор по строкам: 1. ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект) вызывается всегда, до проверки РучнаяКорректировка — наборы записей подготавливаются в любом случае. 2. Если РучнаяКорректировка ... Возврат — в режиме ручной корректировки автоформирование пропускается; движения регистра заполняет пользователь. 3. ПодготовитьПараметрыПроведения(Ссылка, Отказ) (ManagerModule) одним пакетом запросов вытаскивает реквизиты документа (Период=Дата, Организация, ТипЦен, НеПроводитьНулевыеЗначения) и табличную часть Товары. Именно здесь работает фильтр нулей — в тексте запроса: И НЕ(&НеПроводитьНулевыеЗначения И ТаблицаТовары.Цена = 0). 4. СформироватьДвиженияУстановкаЦен(...) раскладывает строки в набор записей регистра.

Ключевая процедура движений (ManagerModule, СформироватьДвиженияУстановкаЦен, стр. 271, целиком):

Процедура СформироватьДвиженияУстановкаЦен(Таблица, ТаблицаРеквизитов, Движения, Отказ) Экспорт

    Если Таблица.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;

    Реквизиты = ТаблицаРеквизитов[0];

    Для каждого СтрокаТовара Из Таблица Цикл

        Движение = Движения.ЦеныНоменклатуры.Добавить();

        Движение.Период      = Реквизиты.Период;
        Движение.ТипЦен      = Реквизиты.ТипЦен;
        Движение.Организация = Реквизиты.Организация;
        Движение.Номенклатура = СтрокаТовара.Номенклатура;
        Движение.Цена        = СтрокаТовара.Цена;
        Движение.Валюта      = СтрокаТовара.Валюта;

    КонецЦикла;

    Движения.ЦеныНоменклатуры.Записывать = Истина;

КонецПроцедуры

Отсюда видно точную «форму» записи регистра — см. таблицу движений ниже.

Движения — куда документ пишет данные

Бухгалтерских проводок документ не делает: в регистрах бухгалтерии (Типовой, Налоговый) движений нет, по складу (ТоварыОрганизацийБУ) — тоже. Единственный приёмник:

Регистр Вид Что пишет
РегистрСведений.ЦеныНоменклатуры Периодический регистр сведений (период = Дата документа), подчинён регистратору По строке на каждую позицию Товары

Структура записи (по факту кода):

Поле регистра Источник Роль
Период Дата документа период (на эту дату действует цена)
ТипЦен шапка ТипЦен измерение
Организация шапка Организация измерение
Номенклатура строка Товары.Номенклатура измерение
Цена строка Товары.Цена ресурс
Валюта строка Товары.Валюта ресурс
⚠️ Несостыковка [KZ30-UCN-0002]. Разбор objects/ указывает среди измерений регистра Подразделение (из шапки СтруктурноеПодразделение). В реальном коде 3.0.72.1 этого нет: ТекстЗапросаРеквизитыДокумента() не выбирает подразделение, а СформироватьДвиженияУстановкаЦен его не присваивает. Цена хранится в разрезе Организация + Тип цен + Номенклатура. Дифференциация цен по подразделениям через это поле невозможна — для этого используют отдельные типы цен. Источник истины — ManagerModule.bsl.
⚠️ Несостыковка [KZ30-UCN-0001]. Разбор objects/ описывает ОбработкаПроведения так, будто ПодготовитьНаборыЗаписейКПроведению вызывается под условием РучнаяКорректировка = Ложь. В реальном коде порядок обратный: подготовка наборов идёт безусловно, и лишь затем — Если РучнаяКорректировка Тогда Возврат. Источник истины — ObjectModule.bsl.

Валидации

Зависимости (общие модули)

Модуль Зачем
Документы.УстановкаЦенНоменклатуры (ManagerModule) ПодготовитьПараметрыПроведения, СформироватьДвиженияУстановкаЦен, ЗаполнитьДокументПоПоступлению, печать
ПроведениеСервер ПодготовитьНаборыЗаписейКПроведению
ЗаполнениеДокументов ЗаполнитьШапкуДокумента (заполнение/копирование)
ОбщегоНазначенияБКВызовСервераПовтИсп ПолучитьВалютуРегламентированногоУчета
ОбщегоНазначенияБКВызовСервера ТекстРазделителяЗапросовПакета (пакетные запросы менеджера)
УправлениеПечатью печать макета «Перечень цен» (ManagerModule)

Связи объекта: основание — Документ.ПоступлениеТоваровУслуг (через ЗаполнитьДокументПоПоступлению, ~121 стр. в ManagerModule). На основании самого документа ничего не создаётся — он конечное звено: данные дальше живут в регистре ЦеныНоменклатуры и читаются документами продажи. Печатная форма — макет «ПереченьЦен» (регистрируется ДобавитьКомандыПечати, выводится обработчиком Печать).

💼 Партнёру / внедренцу.
  • «Цена не подставляется в счёт/реализацию» — почти всегда дело не в этом документе, а в связке: (1) задан ли в договоре/настройках покупателя нужный тип цен; (2) есть ли запись в ЦеныНоменклатуры для пары организация + тип цен + номенклатура на дату продажи; (3) совпадает ли валюта. Проверяйте именно регистр на дату.
  • «Нужны разные цены по магазинам» — поле СтруктурноеПодразделение тут не поможет (в регистр не пишется). Решение — отдельные типы цен под точки продаж.
  • Бухгалтерия не сходится из-за этого документа — не сходится не может: проводок он не делает. Если в ОСВ что-то «не так», источник — документы продажи/поступления, а не прайс.
  • Простая версия конфигурации блокирует у документа Дату/Номер и реквизит НеПроводитьНулевыеЗначения (см. ПолучитьБлокируемыеРеквизитыОбъекта в ManagerModule) — учитывайте при доработках и инструктаже.
🧩 Заметки для разработчика.
  1. Хотите перехватить/расширить запись цен — точка входа одна: Документы.УстановкаЦенНоменклатуры.СформироватьДвиженияУстановкаЦен. Документ туда только делегирует.
  2. РучнаяКорректировка = Истина полностью отключает автоформирование (ранний Возврат) — движения регистра тогда на совести пользователя.
  3. Фильтр НеПроводитьНулевыеЗначения реализован в SQL запроса ПодготовитьПараметрыПроведения, а не в цикле движений — если меняете логику нулей, правьте текст запроса, иначе фильтр «утечёт».
  4. Заполнение «на основании» поддержано только из ПоступлениеТоваровУслуг; для других оснований ЗаполнитьПоДокументуОснования лишь проставит ДокументОснование, строки не заполнит.
  5. Регистр периодический по Период = Дата — две установки цен в один день на одну пару тип цен + номенклатура перетрут друг друга по дате; для истории цен нужны разные даты документов.

🔗 Связанные разделы

🆕 Что нового

Версия Изменение Тип
3.0.72.1 Первичное описание (на релизе 3.0.72.1) 🆕