Ценообразование по группам контрагентов от закупочной цены УТ10, УПП, КА

07.11.12

Разработка - Механизмы типовых конфигураций

Существует целый класс предприятий в которых цена для клиента жёстко привязана к закупочной (по определённому правилу) и зависит от его формального статуса (например от принадлежности к группе VIP,ОПТ...). В этой статье я предлагаю несколько простых действий для реализации подобной системы ценообразования.

Скачать исходный код

Наименование Файл Версия Размер
ПечатьПрайсЛиста
.epf 48,39Kb
21
.epf 48,39Kb 21 Скачать

Задача реализовать систему, когда для определения цены продажи клиента на конкретную позицию номенклатуры используются заранее установленные правила расчёта от закупочной цены учитывая группу к которой принадлежит клиент (например Опт, Розница,VIP) и ценовую (или номенклатурную) группу номенклатуры (например обувь, продукты, электровозы)

Собственно говоря, в классических торгово-производственных конфигурациях (УТ10,УПП,КА) есть механизм, который почти нам подходит (это документ "Установка типов цен по группам номенклатуры для покупателей").  Не подходит этот механизм из за невозможности вместо контрагентов указывать правила для групп (так было 5 лет назад, и так осталось до сих пор).

Исправим это, попытавшись минимально вмешаться в типовую конфигурацию.

Идея решения была предоставленна (Alex141516) в 2008 году

Подсистемы ценообразования в УТ10,КА,УТ1.2 скорее всего идентичны, так как действия выполненные в древней УПП (1.2.22.3) оказались работоспособными в УТ (10.3.12)

Реализация: (простая до безобразия. )

1)      В конфигураторе в документе «УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателей» у реквизита «Контрагент»

В свойстве «Выбор групп и элементов» нужно поставить «Группы» и в форме у соответствующего элемента управления установить ВыборГруппИЭлементов = Группы

2)      Для корректного вычисления цены необходимо подправить в общем модуле «Ценообразование» функцию ПолучитьЦенуНоменклатуры()

Вместо:


Запрос = Новый Запрос;

Запрос.УстановитьПараметр("Дата", Дата);

Запрос.УстановитьПараметр("Контрагент", ДоговорКонтрагента.Владелец);

Запрос.УстановитьПараметр("Группы", ПолучитьМассивГруппНоменклатуры(Номенклатура));

Нужно написать:


Если ТипЗнч(ДоговорКонтрагента) = Тип("СправочникСсылка.Контрагенты") Тогда

   
Контр = ДоговорКонтрагента;

Иначе

   
Контр ДоговорКонтрагента.Владелец.Родитель;

КонецЕсли;

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("Дата", Дата);

Запрос.УстановитьПараметр("Контрагент", Контр);

Запрос.УстановитьПараметр("Группы",                 ПолучитьМассивГруппНоменклатуры(Номенклатура));

3)      Для работоспособности подбора номенклатуры необходимо в обработке ПодборНоменклатуры в модуле объекта внутри процедуры ВременнаяТаблицаЦен(Запрос) поменять одну строчку.

Вместо:  


Запрос.Текст = "

    |ВЫБРАТЬ РАЗРЕШЕННЫЕ

    |       ТипИЗГрупп.НоменклатурнаяЦеноваяГруппа КАК НоменклатурнаяЦеноваяГруппа,

    |       ТипИЗГрупп.ТипЦен                      КАК ТипЦен

    |ПОМЕСТИТЬ ТипИЗГрупп

    |ИЗ

    |   РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей.СрезПоследних(&ДатаРегистраСведений, Контрагент = &Контрагент) КАК ТипИЗГрупп

    |ГДЕ

    |   НЕ ТипИЗГрупп.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.ПустаяСсылка)

    |ИНДЕКСИРОВАТЬ ПО НоменклатурнаяЦеноваяГруппа

    |"
;

Написать :


Запрос.Текст = "

    |ВЫБРАТЬ РАЗРЕШЕННЫЕ

    |       ТипИЗГрупп.НоменклатурнаяЦеноваяГруппа КАК НоменклатурнаяЦеноваяГруппа,

    |       ТипИЗГрупп.ТипЦен                      КАК ТипЦен

    |ПОМЕСТИТЬ ТипИЗГрупп

    |ИЗ

    |   РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей.СрезПоследних(&ДатаРегистраСведений, Контрагент = (&Контрагент).Родитель) КАК ТипИЗГрупп

    |ГДЕ

    |   НЕ ТипИЗГрупп.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.ПустаяСсылка)

    |ИНДЕКСИРОВАТЬ ПО НоменклатурнаяЦеноваяГруппа

    |"
;

И в процедуре мКоманднаяПанельТаблицыХарактеристикНоменклатурыЗаполнить() поменять одну строчку.

Вместо:


Запрос.Текст = "

                |ВЫБРАТЬ РАЗРЕШЕННЫЕ

                |       ТипИЗГрупп.НоменклатурнаяЦеноваяГруппа КАК НоменклатурнаяЦеноваяГруппа,

                |       ТипИЗГрупп.ТипЦен                      КАК ТипЦен

                |ПОМЕСТИТЬ ТипИЗГрупп

                |ИЗ

                |   РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей.СрезПоследних(&ДатаРегистраСведений, Контрагент = &Контрагент) КАК ТипИЗГрупп

                |ГДЕ

                |   НЕ ТипИЗГрупп.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.ПустаяСсылка)

                |ИНДЕКСИРОВАТЬ ПО НоменклатурнаяЦеноваяГруппа

                |"
;

Написать:


Запрос.Текст = "

                |ВЫБРАТЬ РАЗРЕШЕННЫЕ

                |       ТипИЗГрупп.НоменклатурнаяЦеноваяГруппа КАК НоменклатурнаяЦеноваяГруппа,

                |       ТипИЗГрупп.ТипЦен                      КАК ТипЦен

                |ПОМЕСТИТЬ ТипИЗГрупп

                |ИЗ

                |   РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей.СрезПоследних(&ДатаРегистраСведений, Контрагент = (&Контрагент).Родитель) КАК ТипИЗГрупп

                |ГДЕ

                |   НЕ ТипИЗГрупп.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.ПустаяСсылка)

                |ИНДЕКСИРОВАТЬ ПО НоменклатурнаяЦеноваяГруппа

                |"
;

4)      Корректировка (а лучше добавление во внешние) обработки ПечатьПрайсЛиста

 

Этот пункт не обязателен, т.к. на работоспособность механизма ценообразования не влияет, да и прайсы печатают не все. Изменения в обработке минимальны: необходимо добавить  группировку колонок по группам контрагентов и подправить запрос. Для примера прикрепляю один из вариантов этой обработки.

 

Использование:

1)      Создаём типы цен соответствующие наценкам (или скидкам) от базовой цены (например закупочной)  

 

Да, в реальной жизни таких типов цен будет достаточно много, но ведь это не так важно т.к. пользователь больше почти не имеет дела с  этим справочником,  ведь цена для контрагента определяется теперь принадлежностью его к определённой группе (Опт, Розница,VIP).

2)      Для каждой «нужной» группы контрагентов (Опт, Розница,VIP) Создаём по одному документу "Установка типов цен по группам номенклатуры для покупателей" где для каждой ценовой или номенклатурной группы (в зависимости от «вида операции» документа) устанавливаем тип цены (а по сути, процент скидки или наценки на базовый тип). Естественно у позиций справочника номенклатуры должна быть указана номенклатурная или ценовая группа.

Всё, теперь при выборе или подборе товара в документах цена будет назначаться в соответствии с указанными нами правилами.

 

 

P.S.0 Механизм работоспособный (практически типовой)  и проверен годами, однако я мог упустить какие то моменты.

P.S.1 Конечно можно пойти другим путём.  Например, создав АРМ для генерации и изменения документов "Установка типов цен по группам номенклатуры для покупателей" для каждого контрагента в группе. Но тогда всё равно придётся вмешиваться в конфигурацию хотя бы для того, чтобы обрабатывать перенос контрагента между группами. В этой связи, добавить одну, и изменить три строки в конфигурации мне кажется меньшим из зол.

P.S.2 Возможно, есть более простой (или типовой) способ реализовать тоже самое. Буду рад о нём узнать.

 

См. также

Ценовая власть. Выносим из цикла схему СКД

Механизмы типовых конфигураций Ценообразование, анализ цен Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    472    tango    0    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    359    tango    5    

3

Ценовая власть. Второй сезон

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Бесплатно (free)

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    546    tango    0    

2

Ценовая власть (УТ 11.5) - 2

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

В прошлый раз специальной обработкой мы выбрали объекты УТ 1.5, группируя по подсистемам. Оказалось, что состав подсистем не вполне корректно отображает функциональную структуру, но зато мы нашли процедуру, которая, вроде бы, должна содержать в себе всё, что нас интересует. Обновление цен должно ведь следовать выбранной стратегии ценообразования, верно? Иначе что она обновляет...

06.04.2024    438    tango    1    

1

Ценовая власть или Управление ценообразованием (УТ 11.5)

Ценообразование, анализ цен Механизмы типовых конфигураций Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    519    tango    12    

2

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2562    YA_418728146    11    

42

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1117    7    2ncom    3    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4942    mrXoxot    11    

100
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. shatt 38 04.02.13 11:48 Сейчас в теме
Огромное спасибо за идею!
Чуть ли только из-за этого пункта УТ11 хотели выбрать клиенты, там в ТЧ реализации разные виды цен можно выбирать. Ручками конечно, ручками:)
а так, здорово! Можно и на родной УТ10!
2. shatt 38 04.02.13 12:04 Сейчас в теме
Только вот появился вопрос "А можно ли ценовую или номенклатурную группу тоже автоматически назначать?"
Ведь приходится постоянно их выбирать!
3. Ibrogim 1313 04.02.13 12:10 Сейчас в теме
(2) shatt,
"А можно ли ценовую или номенклатурную группу тоже автоматически назначать?

Не совсем понял куда назначать? Если вы имеете ввиду назначать автоматически новой номенклатуре... а кто кроме вас знает к какой конкретно ном. группе будет принадлежать вновь созданный товар?

Или я не правильно вас понял ?
4. shatt 38 04.02.13 12:47 Сейчас в теме
да, поняли правильно.
Хотелось бы что-то вроде "Эта группа номенклатуры относится к данной ценовой группе". Чтобы каждый раз при введении новой номенклатуры не надо было б помнить, что еще ценовую группу надо указать.

Просто имею ввиду цепочка Группа Контрагентов -- Группа Номенклатуры (Родитель) --- тип цены
была бы удобнее
Думаю, может так переделать механизм
5. Ibrogim 1313 04.02.13 13:07 Сейчас в теме
(4) shatt, Тогда проще (меньше изменений) будет например так:
1) У реквизита НоменклатурнаяГруппа справочника номенклатуры сделать использование "Для группы и элемента"
2) Вывести этот реквизит на форму группы номенклатуры.
3) При записи номенклатуры присваивать ей номенклатурную группу родителя (или корня)
6. shatt 38 04.02.13 13:13 Сейчас в теме
Да, да. Я так и подумал примерно. Только думаю подпиской сделать, хотя разницы никакой.
Вот момент когда номенклатура из одной в другую группу перекидывается надо только отловить :)
Вдруг, нечаянно завели в корне, а потом перенесут туда куда надо
7. shatt 38 04.02.13 13:26 Сейчас в теме
Может лучше даже поменять алгоритм:
в ТЧ документа "Установка типов цен по группам номенклатуры для покупателей" поменять тип поля "НоменклатурнаяЦеноваяГруппа", и добавить туда "Справочникссылка.Номенклатура"

аналогично Тип измерения регистра сведений "ТипыЦенПоГруппамНоменклатурыДляПокупателей"

+ поиском прошел запросы к этому регистру в конфигураторе, и только в 5-6 местах он встречается в УТ10
основные места это Обработка подбора,
общ.модуль "Ценообразование"
и модуль документа "Установка типов цен по группам номенклатуры для покупателей"
Там в запросах вместо ценовых или номенклатурных групп подставить группы справочника номенклатуры ( родителей)
и всё.
Изменений конечно поболее станет, но что же не сделаешь ради клиентов :)
8. Ibrogim 1313 04.02.13 13:46 Сейчас в теме
(7) shatt, Можно и так, но это на мой взгляд "перепахивание" конфигурации.
Часто использование ценовых(или номенклатурных) групп удобно и даже необходимо. Например товар из групп тонеры, чернила, термоплёнки относится к одной номенклатурной (ценовой) группе "расходные материалы" и для всех этих товаров достаточно установить одно правило...
9. shatt 38 04.02.13 13:56 Сейчас в теме
Да, просто в таком случае это доп. нагрузка на пользователя - и это потенциальные ошибки.
Ну и просто охота облегчить жизнь пользователя.
Всё для них дорогих :)
10. maxmg@mail.ru 17.05.13 10:34 Сейчас в теме
А можно дописать чтобы присваивать тип цен ценовой группе по ее(ценовой группе) родителю.
11. Ibrogim 1313 17.05.13 11:10 Сейчас в теме
(10) maxmg@mail.ru, Не понял, это вопрос или утверждение?
Если имеется ввиду возможность указывать в документе "Установка типов цен по группам номенклатуры для покупателей" вместо ценовых групп их группы (папки), то тут как минимум 2 варианта решения:
1)Изменить документ "Установка типов цен по группам номенклатуры для покупателей"
а именно :
a)Для реквизита табличной части "ценовая группа" установить возможность выбора (только)групп
б)Немного изменить алгоритм проведения этого документа, чтобы типы цен устанавливались для всех подчинённых элементов группы.
2)Изменить справочник "Ценовые группы" и написать внешнюю обработку заполнения табличных частей для документа "Установка типов цен по группам номенклатуры для покупателей"
а именно :
a) Добавить реквизит "тип цены" для групп справочника "Ценовые группы"
б) Во внешней обработке заполнения табличных частей реализовать заполнения типов цен у выбранных ценовых групп в ТЧ документа "Установка типов цен по группам номенклатуры для покупателей" значением реквизита "тип цены" их родителей.

Вариант 2) более гибкий, т.к. поваляет устанавливать типы цен не для всех (а только для выбранных) элементов справочника "Ценовые группы" принадлежащих к конкретной группе (или группам).

Обращаю внимание на то, можно обойтись вообще без изменения конфигурации (с некоторой потерей юзабилити). Для этого достаточно:
а)Добавить новое свойство "Тип цены" в План видов характеристик "Свойства объектов"
б)Во внешней обработке заполнения табличных частей реализовать заполнения типов цен у выбранных ценовых групп в ТЧ документа "Установка типов цен по группам номенклатуры для покупателей" значением из регистра сведений "Значения свойств объектов".(скорее всего типы цен придётся искать по коду или наименованию записанному в свойства)
и возможно:
в)Реализовать внешнюю обработку для удобного назначения свойств для групп справочник "ценовые группы"
12. Pawlick 10 30.03.14 14:24 Сейчас в теме
Очень полезная информация.
Как показывает практика очень востребовано...
Плюс однозначно.
Оставьте свое сообщение