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

06.04.24

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

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

В первой статье приведен полный листинг процедуры, в которой мы ожидаем найти реализацию стратегии ценообразования.

Для обозримости, исключим из нее все, что (на наш взгляд) прямо не относится к предмету нашего интереса.

Получилось так: ... нет, не получилось. Уважаемый читатель. Разобрать эту процедуру - не два байта. В следующих строках моего письма пойдут логи моего первого прохода по представленному коду. Не ждите здесь чего-то на пальцах разжеванного. Подключайтесь к чтению кода, пожалуйста.

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

Если ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.ЗагружаетсяИзЯндексМаркет Тогда
Если ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.ЗагружаетсяСOzon Тогда

... для означенных видов цен загружаем с сайта, Яндекс или Озон

Ну, что же, тоже стратегия. Назовем ее "По рынку".

С остальными видами начинается гранд-конструирование какой-то структуры, явно с какими-то очень сериозными намерениями

	СтруктураФормы = Новый Структура();
	СтруктураФормы.Вставить("Дата",				КонецДня(ТекущаяДатаСеанса()));
	СтруктураФормы.Вставить("Модифицированность",			Ложь);
	СтруктураФормы.Вставить("Объект",			ИнициализироватьОбъект());
	СтруктураФормы.Вставить("КодФормы",			"ОбработкаЗаполненияЦен_тест");
	СтруктураФормы.Вставить("ВыбранныеЦены",	ИнициализироватьТаблицуВыбранныеЦены());
	СтруктураФормы.Вставить("ДеревоЦен",		Новый ДеревоЗначений());
	СтруктураФормы.Вставить("ИспользоватьЦеновыеГруппы", 				ПолучитьФункциональнуюОпцию("ИспользоватьЦеновыеГруппы"));
	СтруктураФормы.Вставить("ИспользоватьХарактеристикиНоменклатуры", 	ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры"));
	СтруктураФормы.Вставить("ИспользоватьУпаковкиНоменклатуры", 		ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры"));
	СтруктураФормы.Вставить("ИспользоватьСерииНоменклатуры", 			ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатуры"));
	СтруктураФормы.Вставить("ИспользоватьНесколькоВидовЦен", 			ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен"));
	СтруктураФормы.Вставить("ИспользуетсяЦенообразование25", 			ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25(КонецДня(ТекущаяДатаСеанса())));
	СтруктураФормы.Вставить("АдресХранилищаКэшаДанных", 				"");
	СтруктураФормы.Вставить("ВариантГруппировки",			Неопределено);
	СтруктураФормы.Вставить("ВыбранныеЦеныИзменены",		Ложь);
	СтруктураФормы.Вставить("РассчитыватьАвтоматически",	Истина);
	СтруктураФормы.Вставить("УникальныйИдентификатор", 		Новый УникальныйИдентификатор());
	СтруктураФормы.Вставить("АдресХранилищаПараметровСхемКомпоновкиПоВидамЦен",	"");
	СтруктураФормы.Вставить("АдресХранилищаНастройкиКомпоновкиДанных",	"");
	СтруктураФормы.Вставить("ТаблицаНастройкиКомпоновкиДанных");

... вот и опции подошли.

Белый и пушистый, говоришь? Надолго тебя не хватит. Что там было с ФО_20 и ФО_25? А не важно, грузим обе. Сюпри-из :)

Автор, будь осторожен и внимателен! Их тошнит от тебя, а не от их собственного кода, помни об этом!

	ДокументУстановкиЦен = Документы.УстановкаЦенНоменклатуры.ПустаяСсылка();
	СтруктураФормы.Объект.Вставить("Товары", ДокументУстановкиЦен.Товары);
	СтруктураФормы.Объект.Вставить("Товары2_5", ДокументУстановкиЦен.Товары2_5);

Процедура ИнициализироватьВыбранныеЦеныНоменклатуры(Форма, МассивВидоВЦен = Неопределено,ТаблицаВидовЦен = Неопределено)

... в цикле по справочнику ВидыЦен заполняет СтруктураФормы - много букв, пока пропустим.

Отдельно (следом) получаем СтрокаВидЦен.СхемаКомпоновкиДанных

	// 	заполнить товары по отборам номенклатуры
	УстановкаЦенСервер.ПостроитьДеревоЦен(СтруктураФормы);

И дальше:

УстановитьЦены(МассивВидовЦен, СтруктураФормы, ?(Индекс = 1, "Обновление", "Обнуление"))

Итак, мы получили для исследования еще две процедуры. Ну, мы ведь не ждали, что будет легко, верно?

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

Может оказаться, что они работают в уже загруженных в структуру формы СКД и формулах.

Далее мы скопипастим сюда две найденные процедуры, ПостроитьДеревоЦен и УстановитьЦены. Во второй из них, небольшой самой по себе (мы ее и не станем копипастить), нас ждет еще одна:

УстановкаЦенСервер.РассчитатьЦены(СтруктураФормы, ПараметрыРасчета)

... после чего уже имеем результат:

Документы.УстановкаЦенНоменклатуры.ЗаписатьИзмененияЦенНаСервере(СтруктураФормы, ТекстКомментария, 1);

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

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

А теперь построим дерево цен и спрячем строительство под катом. Разбирать будем в следующий раз. Там действительно много букв, не раскрывайте кат, если у вас в этом нет реальной необходимости. В конфигураторе это выглядит не настолько пугающе.
 

 
спойлер

Вступайте в нашу телеграмм-группу Инфостарт

ценообразование

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

После перехода с БП 2.0 на БП 3.0 я столкнулся с весьма неприятной проблемой. Программа перестала сообщать о незаполненных номерах ГТД в Реализации товаров и услуг. Проводка просто не формировалась по счёту ГТД без какого-либо сообщения. О методике решения я расскажу в этой публикации.

18.01.2016    14090    dkonakov    11    

12

Зарплата Механизмы типовых конфигураций Программист 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Управленческий учет Абонемент ($m)

В ЗУП принята методика расчета аванса за первую половину месяца, при которой используется норма рабочего времени за месяц, которая делится пополам. Но это ведет к неправильному расчету аванса, т.к. не всегда первая половина месяца равна второй по количеству рабочих часов. Иногда это критично для клиента, поэтому требуются доработки.

1 стартмани

28.12.2015    18851    2    fixin    3    

5

Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 2.5 Россия Управленческий учет Абонемент ($m)

Как получить кадровую историю сотрудника? Как работать с регистрами сведений, имеющими ресурс "Период завершения"? Об этом данная статья.

1 стартмани

24.12.2015    42411    35    HEKPOH    11    

30

Оптовая торговля Универсальные функции Механизмы типовых конфигураций Программист 1С:Предприятие 8 1С:Управление торговлей 10 Управленческий учет Абонемент ($m)

Статья для начинающих о том, как сделать внешнюю печатную форму для управляемого приложения на примере 1С: Управление торговлей 11.2.

1 стартмани

11.12.2015    62216    110    AlexeyPapanov    14    

26

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1C:Бухгалтерия Бухгалтерский учет Налоговый учет Бесплатно (free)

Публикация по мотивам статьи http://infostart.ru/public/418967/. В комментариях задавали вопросы о внутренней структуре, что, собственно, и сподвигло оформить наработки в виде отдельной статьи.

09.12.2015    41810    defender    29    

148

Оборотно-сальдовая ведомость, Анализ счета Механизмы типовых конфигураций Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Абонемент ($m)

Расшифровка данных с помощью стандартных бухгалтерских отчетов (ОСВ, Карточка счета, Отчет по проводкам) - очень полезный и нужный механизм. Как это сделано? Как легко и просто реализовать сие действо? Ниже приводится ряд примеров вызова таких расшифровок.

2 стартмани

19.08.2015    26212    44    director04    12    

46

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1С:Бухгалтерия 2.0 Абонемент ($m)

В 1С Бухгалтерия 3.0, возникла проблема, может мелочь но дико мешает. При заполнении табличных частей постоянно просит записать документ.

1 стартмани

05.08.2015    17208    8    mrBart    3    

10
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. o.nikolaev 217 07.04.24 21:26 Сейчас в теме
1) Глядя на такой код вспоминается старый фильм "Казино".
...
- Какой рукой ты подавал ему сигналы?!!
- Правой :(
(удар молотком по правой руке)
...
2) Не стреляйте в разрабов. У них СРОКИ и РАСПИСАНИЕ ВЫПУСКА РЕЛИЗОВ.
3) Так понимаю что код будет скоро как код Oracle. Куча флагов которые надо править пока тесты не перестанут падать.
Для отправки сообщения требуется регистрация/авторизация