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