Доброго времени суток.
Случилось мне внедрять управление торговлей на бакалейном складе. Пришлось попотеть.
Одним из вопросов, которые необходимо было решить, был вопрос наценки на товар. Стандартный механизм для этой задачи никак не подходил. Объясняю подробнее: при оптовой и мелкооптовой торговле, в частности сахарным песком, необходимо учесть стоимость фасовки. Песок приходит фурами в мешках по 50кг. Чтобы была возможность справедливо оценить работу фасовщиков, нужно при смене упаковки немного наценить килограмм сахарного песка. Как видно из скриншота:
цена за килограмм сахара увеличивается с уменьшением веса упаковки, так в мешке 50кг. один килограмм сахара стоит 36р.10к., в мешке 25 кг. уже 36р.50к., в мешке 10кг. 37р.20к. и в мешке 5кг. 37р.40к., соответственно наценка составит за М25 = 40коп., за М10 = 1р.10коп., за М5 = 1р.30коп.
Вашему вниманию предлагается расширение, которое подобным образом меняет цену на товар по определённому алгоритму. Исходя из определения расширения, исходная конфигурация никаким образом не затрагивается. Разумеется, в каждом конкретном случае придётся его немного подправить. Но код открыт, и с программированием, на мой взгляд, справится даже домохозяйка.
Представляю фрагмент кода, где собственно и происходит наценка:
ЗначениеЕдиницыИзмеренияТип = НайтиЕдиницуИзмерения(ТекущаяСтрока.Упаковка);
Если ТекущаяСтрока.Артикул = "00000159" Тогда // Сахар
Если ЗначениеЕдиницыИзмеренияТип = "М25" Тогда
ТекущаяСтрока.Цена = (ТекущаяСтрока.Цена / 25 + 0.40) * 25;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.КоличествоУпаковок;
ИначеЕсли ЗначениеЕдиницыИзмеренияТип = "М10" Тогда
ТекущаяСтрока.Цена = (ТекущаяСтрока.Цена / 10 + 1.10) * 10;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.КоличествоУпаковок;
ИначеЕсли ЗначениеЕдиницыИзмеренияТип = "М5" Тогда
ТекущаяСтрока.Цена = (ТекущаяСтрока.Цена / 5 + 1.30) * 5;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.КоличествоУпаковок;
КонецЕсли
ИначеЕсли ГруппаНоменклатурыСтроки = "Крупы" Тогда // Крупы
Если ЗначениеЕдиницыИзмеренияТип = "М25" Тогда
ТекущаяСтрока.Цена = (ТекущаяСтрока.Цена / 25 + 0.40) * 25;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.КоличествоУпаковок
ИначеЕсли ЗначениеЕдиницыИзмеренияТип = "М10" Тогда
ТекущаяСтрока.Цена = (ТекущаяСтрока.Цена / 10 + 1.20) * 10;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.КоличествоУпаковок
ИначеЕсли ЗначениеЕдиницыИзмеренияТип = "М8" Тогда
ТекущаяСтрока.Цена = (ТекущаяСтрока.Цена / 8 + 1.40) * 8;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.КоличествоУпаковок
КонецЕсли
ИначеЕсли ГруппаНоменклатурыСтроки <> "Кондитерка" Тогда // Всё, кроме кондитерки
// Нужно, чтобы если штуки на любом товаре, кроме кондитерки, а не упаковки
// к цене добавлялось 4% ****************
Если НЕ ВРЕГ(Лев(ТекущаяСтрока.Упаковка,1)) = "У" Тогда
ТекущаяСтрока.Цена = ТекущаяСтрока.Цена * 1.04;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.КоличествоУпаковок
КонецЕсли
КонецЕсли;
Привязка происходит либо по присвоенному артикулу товара (вариант 1, Сахарный песок), либо по названию вида номенклатуры (варианты 2 и 3).
Для достижения результата необходимо будет зайти в конфигуратор и сделать необходимые изменения в соответствии с вашей базой данных. Ну и, конечно, любой каприз за ваши деньги.
Расширение испытано на платформе 1С:Предприятие 8.3 (8.3.17.1386), релиз Управление торговлей, редакция 11 (11.4.11.102).