Переход с платформы 1С:Управление торговлей 10.3 на современную 1С:Управление торговлей 11 часто вызывает ступор у опытных пользователей. Один из самых частых вопросов касается гибкой установки цен. В старой редакции 10.3 пользователь мог легко зафиксировать закупочную цену в документе, а затем прямо в табличной части рассчитать розничную цену, просто указав формулу или наценку (например, +20%), хотя сама розничная цена в справочнике была настроена для ручного ввода.
В этой статье мы подробно разберем, почему в УТ 11 изменилась эта логика, и рассмотрим 4 практических способа реализации этой задачи в новых редакциях (включая современные релизы УТ 11.5).
В конфигурации 1С:УТ 10.3 расчет цен происходил динамически прямо в документе «здесь и сейчас». Вы могли взять любой тип цен и применить к нему произвольный математический алгоритм в интерактивном режиме. В 1С:УТ 11 разработчики внедрили более строгую методологию. Теперь ценообразование строится вокруг справочника ВидыЦен, в котором правила расчета (формулы, наценки, округления) жестко фиксируются в карточке настройки. По задумке методологов фирмы 1С, менеджер не должен вручную изобретать наценки в каждом отдельном документе — все отклонения должны регулироваться скидками, наценками или строго определенными видами цен.
Тем не менее, в реальном бизнесе постоянно возникают ситуации, когда один и тот же вид цен (например, «Розничная») в одном документе нужно рассчитать как Закупка + 20%, а в другом — как Закупка + 40%. Давайте разберем по шагам, как решить эту задачу штатными и программными средствами.
Если ваш вид цены «Розничная» настроен как устанавливаемый вручную (в карточке вида цены выбран способ задания «Ручное назначение»), вы все равно можете быстро рассчитать его на основании другого вида цен прямо в документе установки. Это самый близкий аналог логики работы УТ 10.3.
Рассмотрим пошаговый алгоритм:
УстановкаЦенНоменклатуры.[Закупочная] * 1.20 (что соответствует наценке 20%).В следующем документе установки цен вы можете повторить эту процедуру, но указать формулу [Закупочная] * 1.40 (наценка 40%). При этом сам вид цены «Розничная» останется независимым, а формулы будут применяться только для разового расчета в конкретный момент времени.
В современных версиях 1С:Управление торговлей (начиная с редакции 11.5) появился еще более удобный интерактивный механизм управления расчетами прямо из интерфейса рабочего места ценообразования.
Проанализируем этот вариант:
УстановкаЦенНоменклатуры в нижней панели найдите и нажмите на гиперссылку Настроить.1.2 на 1.4 для текущей сессии работы).Важно: измененная таким образом формула применится локально внутри данного документа и не перезапишет глобальные настройки в справочнике ВидыЦен, если вы не выберете опцию принудительного сохранения правил в карточку.
Если наценки в 20% и 40% — это не случайный хаотичный выбор менеджера, а две устоявшиеся торговые политики (например, обычная розница и розница для отдаленных регионов / акционная розница), правильнее будет создать два самостоятельных элемента в справочнике ВидыЦен:
[Закупочная] * 1.2.[Закупочная] * 1.4.В этом случае при создании документа установки цен система сама мгновенно и безошибочно рассчитает оба варианта. В документах продажи (или соглашениях с клиентами) вы сможете выбирать, по какому именно виду цен производить отгрузку конкретному контрагенту.
Если бизнес-процессы требуют полной свободы действий и менеджеры хотят вводить произвольный процент наценки прямо в диалоговом окне при заполнении цен, лучшим решением будет подключение внешней обработки заполнения табличной части к документу УстановкаЦенНоменклатуры.
Этот способ позволяет не снимать конфигурацию с поддержки и полностью автоматизировать расчет. Напишем пример кода, который может быть базой для создания команды заполнения цен по произвольному проценту наценки:
// Пример процедуры обработки заполнения для внешней обработки
Процедура ЗаполнитьЦеныПоПроценту(ТабличнаяЧастьДокумента, БазовыйВидЦены, РасчетныйВидЦены, ПроцентНаценки) Экспорт
Для Каждого СтрокаТаблицы Из ТабличнаяЧастьДокумента Цикл
// Находим строку с базовой ценой (например, Закупочной)
Если СтрокаТаблицы.ВидЦены = БазовыйВидЦены Тогда
БазоваяЦена = СтрокаТаблицы.Цена;
// Находим строку расчетной цены для этой же номенклатуры
ПараметрыОтбора = Новый Структура("Номенклатура, Характеристика, ВидЦены",
СтрокаТаблицы.Номенклатура,
СтрокаТаблицы.Характеристика,
РасчетныйВидЦены);
НайденныеСтроки = ТабличнаяЧастьДокумента.НайтиСтроки(ПараметрыОтбора);
Для Каждого СтрокаРасчета Из НайденныеСтроки Цикл
// Рассчитываем новую цену с учетом переданного процента
СтрокаРасчета.Цена = БазоваяЦена * (1 + ПроцентНаценки / 100);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Такая обработка регистрируется в базе через раздел НСИ и администрирование — Печатные формы, отчеты и обработки. После подключения менеджеры смогут одной кнопкой вызывать окно ввода процента наценки, и система выполнит всю рутинную калькуляцию за долю секунды.
Мы рассмотрели различные варианты решения проблемы динамического расчета цен. Для разовых и нерегулярных операций идеально подходит Способ 1 и Способ 2 с использованием штатных инструментов изменения формул в документе. Если же разница в наценках обусловлена системными правилами продаж, настоятельно рекомендуем использовать Способ 3 и разделить виды цен в справочнике для обеспечения порядка в учете и исключения человеческого фактора.