Функционал расчета зависимых цен предусмотрен штатным функционалом 1С. Однако нередко возникают ситуации когда загрузка цен происходит автоматически без участия пользователя (загрузка из файлов EXCEL, обмен с сайтом и пр.).
Программно создать документ "Установка цен номенклатуры" не составляет большого труда, НО вот если после загрузки требуется рассчитать цены, которые зависят от загруженных... с этим уже возникают трудности автоматизации. По методике 1С предусмотрено лишь зайти в пользовательском режиме в созданный документ и пересчитать цены, на вкладке видов цен автоматически подберутся все зависимые цены. Весь штатный механизм заточен на клиентскую часть и связан с коллекцией данных формы документа.
В наборе процедур и функций реализован механизм использования штатных средств расчета цен при обработке на сервере. По большей части используются типовые процедуры и функции из общих модулей.
Ложка дегтя: всё же присутствует потребность в небольшом вмешательстве в типовой код, в силу обращения в нём в элементам расчета как к данным формы. Изменения касаются общего модуля "УстановкаЦенСервер", но не содержат большой смысловой нагрузки, лишь проверка на соответствие типов.
Работа функционала протестирована на конфигурации Управление торговлей, редакция 11 (11.4.5.118) и была использована в работе начиная с релиза 11.4.2.109.
Описание:
В поставке 2 файла:
1. Обработка по загрузке цен из таблицы на форме.
В главную процедуру создания документа установки цен можно передавать таблицу, аналогичную таблице на форме с колонками: Номенклатура (СправочникСсылка.Номенклатура), Вид цены (СправочникСсылка.ВидыЦен), Цена (Число). К примеру при загрузке из Excel файла поставщика можно получить такую таблицу и выполнить создание цен.
2. Текстовый файл общего модуля с исправлениями описанными комментариями:
//-->Начало исправления - создание документа установка цен на сервере
...<текст исправления>...
//<--Окончание исправления - создание документа установка цен на сервере
Модуль взят из конфигурации Управление торговлей, редакция 11 (11.4.5.118).