При работе в среде 1С:Предприятие 7.7 (особенно в конфигурации «Торговля и Склад» редакции 9.2) пользователи часто сталкиваются с ситуацией, когда изменение процента наценки в справочнике Типы цен не приводит к автоматическому изменению цен у товаров. Мы видим, что в шапке столбца наценка изменилась, но фактические значения в строках остаются прежними. Разберем детально, почему так происходит и как правильно обновить цены, чтобы новые значения вступили в силу.
Для начала проанализируем внутреннюю логику системы. В 1С 7.7 цены номенклатуры являются периодическими реквизитами. Это означает, что программа хранит не одно значение, а целую историю изменений, привязанную к конкретным датам. Когда мы меняем процент в справочнике Типы цен, мы меняем лишь «шаблон» или «правило», по которому 1С может рассчитать цену в будущем.
Существует два основных вида цен в системе:
Цены, подчиненный номенклатуре). Именно с этим типом цен чаще всего возникают сложности. Система не может самостоятельно «переписать» историю цен для тысяч товаров только потому, что вы изменили одну цифру в настройках типа цен.Рассмотрим пошаговый алгоритм действий для актуализации хранимых цен.
Прежде чем приступать к массовому пересчету, убедимся, что настройки в справочнике выполнены верно. Перейдем в меню «Справочники» — «Цены и налоги» — «Типы цен». Выберем нужный нам тип (например, «Мелкий опт»). Проверим, что указан верный Процент наценки и правильно выбрана Базовая цена, от которой будет идти расчет. После внесения изменений нажмите «ОК».
Для того чтобы система физически пересчитала и записала новые значения в базу, необходимо воспользоваться специализированным инструментом. Выясним, как это сделать правильно:
Тип цен в соответствующей колонке.Теперь рассмотрим, как инициировать сам процесс вычисления. В нижней части или в меню кнопки «Действия» (в зависимости от релиза конфигурации) выберем пункт «Рассчитать все цены по наценкам».
Проанализируем ситуацию: система возьмет значение базовой цены для каждого товара, прибавит к ней ваш новый процент (например, 50% вместо 45%) и выведет результат в колонку «Новая цена».
Обратите внимание: на данном этапе изменения еще не сохранены в базу данных! Вы видите только предварительный расчет в таблице.
Чтобы новые цены действительно начали подставляться в документы, их нужно записать в историю цен на определенную дату. Рассмотрим, как это сделать:
Только после нажатия кнопки «Выполнить» старые значения (45%) будут перекрыты новыми значениями (50%) в истории цен.
Рассмотрим причины, по которым расчет может не сработать даже после выполнения всех шагов:
Типы цен будет игнорироваться, пока вы не измените процент в самой карточке.Для программистов и администраторов полезно понимать, как этот процесс выглядит изнутри. В момент нажатия кнопки «Выполнить» обработка Формирование цен перебирает строки таблицы и для каждой строки вызывает метод записи периодического реквизита. Примерная логика выглядит так:
// Пример логики записи новой цены
СпрЦены = СоздатьОбъект("Справочник.Цены");
СпрЦены.ИспользоватьВладельца(Товар);
Если СпрЦены.НайтиПоНаименованию(ВыбранныйТипЦен, 0, 1) = 1 Тогда
СпрЦены.Цена.Установить(РабочаяДата, НовоеЗначениеЦены);
СпрЦены.Записать();
КонецЕсли;
Если вы хотите автоматизировать этот процесс без участия пользователя, придется написать внешнюю обработку, которая будет циклически проходить по всей номенклатуре и принудительно вызывать метод Установить() для периодического реквизита цены на нужную дату.
Таким образом, мы выяснили: изменение процента наценки в справочнике Типы цен — это лишь подготовительный этап. Основная работа по актуализации данных выполняется в обработке Формирование цен. Только пройдя цикл «Заполнить — Рассчитать — Выполнить», вы добьетесь корректного обновления цен в системе 1С 7.7.