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

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

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

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

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




Здравствуйте, как с вами связаться?
В разделе «Контакты» на сайте все контакты.
че вы бред несете, можно использовать несколько касс ккм на одну организацию просто главное иметь разные рабочие места
да, имеется ввиду на одном рабочем месте нельзя.