Редактирование цены в РМК. 1С: УТ 11

Публикация № 966295

Программирование - Практика программирования

1С УТ 11 РМК Изменение цены

3
В типовой конфигурации УТ 11 нет возможности в режиме РМК изменить цену на товар, хотя такая необходимость появляется довольно часто. Внеся небольшие изменения в конфигурацию, можно добиться нужной функциональности. Использовался релиз 1С УТ 11.4.5.135 на платформе 1С:Предприятие 8.3 (8.3.13.1513).

      Кто прежде работал с конфигурациями 1С Розница 2.2 и 1С УТ 10.3, столкнувшись с УТ 11 могут быть неприятно удивлены, обнаружив, что в режиме РМК нельзя изменять цену за продаваемый товар (услугу). В обозначенных выше конфигурациях есть дополнительные настройки  пользователей, которые и отвечают за право менять цену в РМК. В УТ 11 такого нет. Все цены необходимо назначать через документ "Установка цен номенклатуры", откуда они и будут подставляться в РМК при продаже. На практике, по разным причинам, часто возникает необходимость оперативно в РМК изменить цену. 

      Для получения нужного результата, надо внести небольшие изменения в конфигурацию УТ 11. За РМК отвечает документ чекККМ и форма ФормаДокументаРМК.

        Первым делом в свойствах колонки "Цена" убираем галочку с пункта "Только просмотр"

         После этого надо внести изменения в код модуля: находим там процедуру 

 

 

&НаКлиенте
Процедура ДобавитьВКорзину(ПараметрыТовара)
	
	Если ТолькоПросмотр Тогда
		Возврат;
	КонецЕсли;
	
	НовыеСтроки = Новый Массив;
	
	Если ЗапрашиватьКоличество Тогда
		
		ПараметрыФормы = Новый Структура("Склад, Номенклатура, Характеристика, ВидЦены, Упаковка, Цена, 
		|Дата, Валюта, РедактироватьЦену, РедактироватьВидЦены");
		
		ЗаполнитьЗначенияСвойств(ПараметрыФормы, ПараметрыТовара);
		
		ПараметрыФормы.Склад = Объект.Склад;
		ПараметрыФормы.Дата = Объект.Дата;
		ПараметрыФормы.Валюта = Объект.Валюта;
//{{MRG[ <-> ]
		ПараметрыФормы.РедактироватьЦену = Ложь;
//}}MRG[ <-> ]
//{{MRG[ <-> ]
//}}MRG[ <-> ]
		ПараметрыФормы.РедактироватьВидЦены = Ложь;
		ПараметрыФормы.ВидЦены = Объект.ВидЦены;
		
		Если ПараметрыТовара.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор") Тогда
			ИмяФормыЗапросаКоличества = "Документ.ЧекККМ.Форма.ЗапросКоличестваНабор";
		Иначе
			ИмяФормыЗапросаКоличества = "Документ.ЧекККМ.Форма.ЗапросКоличества";
		КонецЕсли;
		
		ДополнительныеПараметры = Новый Структура;
		ДополнительныеПараметры.Вставить("НовыеСтроки", НовыеСтроки);
		ДополнительныеПараметры.Вставить("ПараметрыТовара", ПараметрыТовара);
		ОткрытьФорму(
			ИмяФормыЗапросаКоличества,
			ПараметрыФормы,
			ЭтотОбъект,
			УникальныйИдентификатор,,,
			Новый ОписаниеОповещения("ЗапросКоличестваЗавершение", ЭтотОбъект, ДополнительныеПараметры));
		
	Иначе
		
		Если ПараметрыТовара.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор") Тогда
			
			ПараметрыКомплектующих = ПодборТоваровКлиентСервер.ПараметрыТовара();
			ЗаполнитьЗначенияСвойств(ПараметрыКомплектующих, ПараметрыТовара);
			ПараметрыКомплектующих.НоменклатураНабора   = ПараметрыТовара.Номенклатура;
			ПараметрыКомплектующих.ХарактеристикаНабора = ПараметрыТовара.Характеристика;
			ПараметрыКомплектующих.Вставить("ВариантКомплектацииНоменклатуры", Неопределено);
			
			ДополнительныеПараметры = Новый Структура;
			ДополнительныеПараметры.Вставить("Дата",    Объект.Дата);
			ДополнительныеПараметры.Вставить("Валюта",  Объект.Валюта);
			ДополнительныеПараметры.Вставить("ВидЦены", Объект.ВидЦены);
			ДополнительныеПараметры.Вставить("Цена",    ПараметрыТовара.Цена);
			ПодобранныеТовары = НаборыВызовСервера.Комплектующие(ПараметрыКомплектующих, ДополнительныеПараметры);
			
			Для Каждого ПодобранныйТовар Из ПодобранныеТовары Цикл
				НовыеСтроки.Добавить(ПодобранныйТовар);
			КонецЦикла;
			
		Иначе
			
			Если Не ЗначениеЗаполнено(ПараметрыТовара.Упаковка) Тогда
				ПараметрыТовара.Упаковка = ПодборТоваровВызовСервера.ПолучитьУпаковкуХранения(ПараметрыТовара.Номенклатура);	
			КонецЕсли;
			
			НовыеСтроки.Добавить(ПараметрыТовара);
			
		КонецЕсли;
		
		ПараметрыДанных = Новый Структура;
		ПараметрыДанных.Вставить("НовыеСтроки", НовыеСтроки);
		ПараметрыДанных.Вставить("ПараметрыТовара", ПараметрыТовара);
		
		ДобавитьВКорзинуФрагмент(ПараметрыДанных);
		
	КонецЕсли;
	
КонецПроцедуры

 

и меняем строку 

ПараметрыФормы.РедактироватьЦену = Ложь;

на 

ПараметрыФормы.РедактироватьЦену = Истина;

          Чтобы сумма чека автоматически пересчитывалась при изменении цены необходимо в свойство "События" "При изменении" добавить процедуру:

 

 

&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;	
	СтруктураДействий = Новый Структура;
	ДобавитьВСтруктуруДействияПриИзмененииЦены(СтруктураДействий,Объект);
	ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
	ПересчитатьДокументНаКлиенте();
	
КонецПроцедуры

 

  А в область 

#Область ПриИзмененииРеквизитов

Функцию 

 

 


&НаКлиентеНаСервереБезКонтекста
Функция ДобавитьВСтруктуруДействияПриИзмененииЦены(СтруктураДействий,Объект)

	СтруктураДействий.Вставить("ПересчитатьСумму");	

КонецФункции

 

         

         После проделанных манипуляций, поле "цена" в РМК УТ 11 становится доступной для изменения:

3

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Tarlich 76 26.12.18 12:17 Сейчас в теме
2. user743102 26.01.19 11:43 Сейчас в теме
Нельзя позволять продавцам самим изменять цену, мало ли что
3. Stæg 3 26.01.19 17:33 Сейчас в теме
(2) Есть много магазинов, где продавец и хозяин - это одно лицо, или семейный бизнес
4. user743102 26.01.19 17:58 Сейчас в теме
(3)Согласен, в этом случае да
Оставьте свое сообщение