Борьба с авто-ценами в Розница 3.0

Опять случилось неприятное с 1С, причем на внедрении.

Клиент создал динамический тип цен «процент», расписал ценовые группы:

Все работало хорошо. Но чуть позже выяснилось страшное — если зайти в документ установки цен повторно, то при смене страницы он заново пересчитывает цены по формулам ценовых категорий.

Происходит это незаметно для пользователя.

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

Не зря говорят, что УНФ писали инопланетяне.

Пришлось отключать автоматику по пересчету цен. И добавлять свою команду по пересчету. Расширяем модуль формы документа установки цен:

&НаКлиенте              
Перем дрцр_ЗаполнитьНовыеВидыЦенВТабличныхЧастях_Семафор;

&НаКлиенте
&Вместо("ЗаполнитьНовыеВидыЦенВТабличныхЧастях")
Процедура дрцр_ЗаполнитьНовыеВидыЦенВТабличныхЧастях()                                   
	
	Если дрцр_ЗаполнитьНовыеВидыЦенВТабличныхЧастях_Семафор = Неопределено Тогда
		Возврат;
	КонецЕсли;                                                                           
	
	дрцр_ЗаполнитьНовыеВидыЦенВТабличныхЧастях_Семафор = Неопределено; //Сразу сбрасываем
	
	ПродолжитьВызов();                                                                   
	
КонецПроцедуры

&НаСервере
Процедура дрцр_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	ИмяКоманды = "Расчитать";
	Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды);
	Команда.Заголовок = "Расчитать";
	Команда.Действие  = ИмяКоманды;                
	//Команда.Картинка = БиблиотекаКартинок.ИмяКартинки;
	Команда.Отображение = ОтображениеКнопки.Текст;   
	
	Привязка = Элементы.Подборать;
	
	КнопкаФормы = ЭтаФорма.Элементы.Вставить(ИмяКоманды, Тип("КнопкаФормы"),Привязка.Родитель, Привязка);
	КнопкаФормы.ИмяКоманды = ИмяКоманды;           
	
КонецПроцедуры

&НаКлиенте
Процедура Расчитать(Команда) Экспорт       
	дрцр_ЗаполнитьНовыеВидыЦенВТабличныхЧастях_Семафор = истина;
	ЗаполнитьНовыеВидыЦенВТабличныхЧастях();	
КонецПроцедуры

При этом обратите внимание, каким образом можно отключить типовую функцию и вызвать ее при необходимости — через переменную-семафор.

Пользователю нужно нажимать кнопку «Расчитать» для пересчета цен:

Среда: Розница 3.0.11.103 Объем: 0.8 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментариев 8

  1. rzd:

    Выключи авторасчет

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

      • rzd:

        Разверни ответ. Абсолютно непоняино почему и вообще что имел ввиду

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

      • rzd:

        Так это еще непонятно кому «или трусы или крестик» — у вас цены все равно перетрутся, несмотря на примененный костыль

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *