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

в 14:59, , рубрики: , 1С-Битрикс, Программирование, РМК, розничная торговля, Управление торговлей 11

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

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

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

image

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

image

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

Процедура ДобавитьВКорзину

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

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

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

на

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

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

image

Процедура ТоварыЦенаПриИзменеии

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

А в область

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

Функцию

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

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

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

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

image

Автор: DaTig

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js