Несколько касс ККМ на одну организацию УНФ3
При переходе на новое РМК УНФ «порадовала» сообщением: «на организацию подключено несколько касс ккм допустима одна«.
Касса ККМ физически одна, но несколько касс использовалось для аналитики и отделения продаж магазина от продаж с сайта, пробиваемых в магазине. В старом РМК можно было выбирать кассу.
Проблема возникает в форме РМК обработки РабочееМестоКассира в процедуре ПроверитьОбщуюВозможностьРаботы:

Поправил, чтобы касса бралась из константы — в модуле ОбщегоНазначенияРМКУНФ:
&После("СформироватьЗапросДанныеКассыККМ") Процедура нкноо_СформироватьЗапросДанныеКассыККМ(Запрос, Форма, ДополнительныеПараметры) УстановитьПривилегированныйРежим(Истина); Маркер = "НЕ КассыККМ.ПометкаУдаления"; //Запрос.Текст = СтрЗаменить(Запрос.Текст, Маркер, Маркер + " И " + //"(ВЫБОР КОГДА Константа.нкноо_ОсновнаяКассаККМ.Значение = ЗНАЧЕНИЕ(Справочник.КассыККМ.ПустаяСсылка) Тогда ИСТИНА ИНАЧЕ КассыККМ.Ссылка = Константа.нкноо_ОсновнаяКассаККМ.Значение КОНЕЦ)" //" " ); Запрос.Текст = СтрЗаменить(Запрос.Текст, Маркер, Маркер + " И " + "(ВЫБОР КОГДА &нкноо_ОсновнаяКассаККМ = ЗНАЧЕНИЕ(Справочник.КассыККМ.ПустаяСсылка) Тогда ИСТИНА ИНАЧЕ КассыККМ.Ссылка = &нкноо_ОсновнаяКассаККМ КОНЕЦ)" " " ); Запрос.УстановитьПараметр("нкноо_ОсновнаяКассаККМ", Константы.нкноо_ОсновнаяКассаККМ.Получить()); //Сообщить(Запрос.Текст); КонецПроцедуры
Создал расширение, добавил туда константу нкноо_ОсновнаяКассаККМ.
Сделал возможность ее выбора в интерфейсе пользователем, добавив в подсистему.
Отлаживал еще на старом РМК, хотел не мешать пользователям, и не менять постоянно константу «Использовать новое РМК»:

Поэтому сделал вот такое расширение модуля ОбщегоНазначенияРМКПереопределяемый:
&Вместо("ОпределитьВозможностьЗапускаРМК") Процедура нкноо_ОпределитьВозможностьЗапускаРМК(МожноОткрыватьРМК) ПродолжитьВызов(МожноОткрыватьРМК); МожноОткрыватьРМК = истина; //Всегда, чтобы можно было отлаживаться КонецПроцедуры
Это позволяет открывать обработку «Рабочее место кассира» через все функции.
Ну и еще дополнительно сделал в форме РМК отображение и выбор кассы, при ее выборе РМК просто закрывается и открывается по новой:

&НаКлиенте Процедура нкноо_нкноо_КассаПриИзмененииПосле(Элемент) //Меняем основную кассу Если Объект.Товары.Количество() = 0 Или ФормаЗамороженаПослеПробитияЧека() Тогда нкноо_УстановитьОсновнуюКассу(); Иначе //Если чек открыт нкноо_ПолучитьОсновнуюКассу(); ПоказатьПредупреждение(, "Кассу можно менять только при пустом чеке!"); Конецесли; //Если РМК стартовало, тогда можем менять кассу Если ЗначениеЗаполнено(Объект.КассаККМ) Тогда ЭтаФорма.Закрыть(); ОткрытьФорму("Обработка.РабочееМестоКассира.Форма.ФормаРМК"); //Объект.КассаККМ = нкноо_Касса; //ПриПереключенииКассыККМ(); //Вызываем типовую логику 1С КонецЕсли; КонецПроцедуры &НаКлиенте Процедура нкноо_ПриОткрытииПосле(Отказ) нкноо_ПолучитьОсновнуюКассу(); //Прячем вначале кассу //Элементы.нкноо_Касса.Видимость = ложь; КонецПроцедуры //=== РАБОТА С КОНСТАНТАМИ === Процедура нкноо_УстановитьОсновнуюКассу() УстановитьПривилегированныйРежим(Истина); Константы.нкноо_ОсновнаяКассаККМ.Установить(нкноо_Касса); КонецПроцедуры Процедура нкноо_ПолучитьОсновнуюКассу() УстановитьПривилегированныйРежим(Истина); нкноо_Касса = Константы.нкноо_ОсновнаяКассаККМ.Получить(); КонецПроцедуры
Пробовал вызывать смену кассы, но не работает, там все продажи сваливаются все равно в одну кассовую смену, лучше программно переключать форму РМК.
Также сделал контроль, если товары подобраны, чтобы касса не переключалась. И еще добавил колонку продавец, просто перетащив ПродавецПредставление в список товаров, потому что в новом РМК возможно несколько продавцов на чек:

Внимание: у меня реализация только для одного рабочего места. Если рабочих мест несколько, надо использовать регистр, а не константу. Делалось на скорую руку.
Среда: УНФ 3.0.6.200 Объем: 1.5 час.




Здравствуйте, как с вами связаться?
В разделе «Контакты» на сайте все контакты.