Скидка за комплект

04.11.14

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

Программная организация продажи группы товаров с подсказкой продавцу, чего не хватает для счастья. В данной реализации собственно скидка не предоставляется, т.к. суть акции - купи 10 разноцветных товаров и получи 11-й цвет в подарок.

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

Наименование Файл Версия Размер
Вся процедура из Рассчитывать скидки припродаже
.txt 29,36Kb
2
.txt 29,36Kb 2 Скачать

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

Суть реализации.

1. Добавляем Перечисления.УсловияСкидкиНаценки.ПоКоличествуВариантовВгруппе

2. Документ.УстановкаСкидокНоменклатуры
   - МодульОбъекта
         Функция РассчитыватьАвтоматическиеСкидки(ТекВид)
       Дополняем  условие проверкой

ИначеЕсли ТекВид = Перечисления.УсловияСкидкиНаценки.ПоКоличествуВариантовВгруппе Тогда
        Результат = ИспользованиеСкидок.ИспользоватьСкидкиПоКоличествуТовара;

   - ФормаДокумента

     Процедура ПередОткрытием() ,
      Добавить строку

ЭлементыФормы.Условие.СписокВыбора.Добавить(Перечисления.УсловияСкидкиНаценки.ПоКоличествуВариантовВгруппе);  

3. Общий модуль.ОбработкаТабличныхЧастей
   Процедура РассчитатьСкидкиПриПродаже

Здесь самое интересное. Сначала поясню алгоритм.

У нас есть документ установки скидок-наценок. И обычно из регистра сведений выбирается информация о сроках действия скидки и ее условиях (тип покупателей- опт/все, кол-во/сумма товара, сам товар или ценовые группы).

В нашем случае все сложнее. Скидка действует тогда, когда куплены ВСЕ позиции, определнные в ОДНОМ документе установки скидок/наценок.

Для проверки этого соответствия я выбираю в запросе ДОКУМЕНТ-РЕГИСТРАТОР и создаю таблицу его позиций. Дополняю колонкой количества товара (из документа, естественно). Процент скидки=0 (чтобы не пересекалось с другими).

Затем обхожу табличную часть товаров текущего документа, для которго может быть применена скидка, и, если номенклатура и ее характеристика есть в моей таблице, созданной из РЕГИСТРАТОРА, уменьшаю в ней кол-во товара на указанное в документе продажи.

По окончанию обхода вывожу в окно сообщений все позиции с положительным количеством (их не хватает для применения скидки).

Собсвенно этот участок кода.

Во вложении полный текст процедуры и запроса. Внимание - там есть и другие изменения (например, описанные в //infostart.ru/public/155509/)

    УсловиеВгруппе = Перечисления.УсловияСкидкиНаценки.ПоКоличествуВариантовВгруппе;
	
	ТаблицаСкидокВгруппе = ТаблицаСкидок.Скопировать(,"НРегистратор, НУсловие");
	ТаблицаСкидокВгруппе.Свернуть("НРегистратор, НУсловие",);

	Для Каждого СтрокаГруппы Из ТаблицаСкидокВгруппе Цикл
		Если СтрокаГруппы.НУсловие = УсловиеВгруппе Тогда
			
	Если ТипЗнч (СтрокаГруппы.НРегистратор.Товары) = Тип("ТаблицаЗначений") Тогда
		ТаблицаНеДостаточно = СтрокаГруппы.НРегистратор.Товары.Скопировать(,"Номенклатура, ХарактеристикаНоменклатуры");
	Иначе
		ТаблицаНеДостаточно = СтрокаГруппы.НРегистратор.Товары.Выгрузить(,"Номенклатура, ХарактеристикаНоменклатуры");
	КонецЕсли;

             ТаблицаНеДостаточно.Колонки.Добавить("Количество");
			 Для Каждого СтрокаСкидокТоваров ИЗ ТаблицаНеДостаточно Цикл
					СтрокаСкидокТоваров.Количество = СтрокаГруппы.НРегистратор.ЗначениеУсловия
			 КонецЦикла;

			 
             Для Каждого СтрокаСкидокТоваров ИЗ ТаблицаНеДостаточно Цикл
			     Для Каждого СтрокаТоваров ИЗ ТаблицаТоваров Цикл
					 Если (СтрокаТоваров.Номенклатура = СтрокаСкидокТоваров.Номенклатура) И 
						  (СтрокаТоваров.ХарактеристикаНоменклатуры = СтрокаСкидокТоваров.ХарактеристикаНоменклатуры)
					 Тогда
						  СтрокаСкидокТоваров.Количество = СтрокаГруппы.НРегистратор.ЗначениеУсловия - СтрокаТоваров.Количество * СтрокаТоваров.Коэффициент;
					 КонецЕсли;		  
	        	 КонецЦикла;
        	 КонецЦикла;
			 
			ОбработкаКомментариев = глЗначениеПеременной("глОбработкаСообщений");
			ФормаКом=ОбработкаКомментариев.ПолучитьФорму();
			Если ФормаКом.Открыта() Тогда
				 ОчиститьСообщения();
			Иначе	
				 ФормаКом.Открыть();
			КонецЕсли;
			
			 Сообщить("Скидка " + СтрокаГруппы.НРегистратор );
			 Сообщить("=====================================");
			 Для Каждого СтрокаСкидокТоваров ИЗ ТаблицаНеДостаточно Цикл
				 Если (СтрокаСкидокТоваров.Количество>0) Тогда
//					 Сообщить("Для скидки по документу " + СтрокаГруппы.НРегистратор + " недостаточно товаров: " + СтрокаСкидокТоваров.Номенклатура +"/"+СтрокаСкидокТоваров.Количество+" шт");
					 Сообщить("Для скидки " + СтрокаГруппы.НРегистратор.Комментарий + " недостаточно товаров: " + СтрокаСкидокТоваров.Номенклатура +"\"+СтрокаСкидокТоваров.Количество+" шт");
				 КонецЕсли;	 
	         КонецЦикла;

		КонецЕсли;
	КонецЦикла;	

скидка на комплект

См. также

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

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

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

1 стартмани

11.04.2024    537    tango    0    

3

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

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

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

10 стартмани

11.04.2024    418    tango    5    

4

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

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

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

08.04.2024    787    tango    0    

2

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

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

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

06.04.2024    480    tango    1    

1

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

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

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

1 стартмани

05.04.2024    587    tango    12    

2

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

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

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

07.02.2024    2672    YA_418728146    11    

45

Регистры накопления в 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    1203    8    2ncom    6    

8

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

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

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

28.12.2023    5031    mrXoxot    11    

100
Оставьте свое сообщение