Доброго всем дня! Ранее в магазине использовали ККМ Атол, там по умолчанию есть поиск товаров по цене. После перехода на РМК 1С Розница, продавцы требовали чтобы я вернул им эту функцию=) Вот как реализовал ее я.
Для начала откроем конфигуратор.
1. Откроем конфигурацию : Конфигурация-Открыть Конфигурацию
2. Открываем Общие модули-УправлениеНоменклатурой Ищем функции Функция НайтиПоАртикулу, НайтиПоКоду и т.д.
Добавляем ниже
Функция НайтиПоЦене(Цена, ТекДата, ТекМагазин, Список = Неопределено) Экспорт
Если Не ТипЗнч(Список) = Тип("СписокЗначений") Тогда
Результат = Новый СписокЗначений;
Иначе
Результат = Список;
КонецЕсли;
Запрос = Новый Запрос;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Магазин", ТекМагазин);
Запрос.УстановитьПараметр("Период", ТекДата);
Запрос.УстановитьПараметр("Цена", Цена);
Запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура.Ссылка КАК Ссылка
|ИЗ
| РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(&Период, Цена = &Цена И ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ (Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) И Магазин В (&Магазин)) КАК ЦеныНоменклатурыМагазиновСрезПоследних
|";
РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузить();
Результат.ЗагрузитьЗначения(ТЗ.ВыгрузитьКолонку("Ссылка"));
Возврат Результат;
КонецФункции
3. Откроем Справочники-Номенклатура-Формы-ФормаСписка, копируем поле поиска и кнопки поиск и очистить.
4. Сама форма РМК Кассира находится в Документы-ЧекККМ-Формы-ФормаРегистрацииПродаж, заходим туда, вставляем куда нужно скопированные поле поиска и кнопки.
Переименовываем вставленные элемент, для этого правой кнопкой по любому элементу и выбираем свойства:
После поиска — ПолеПоискаТовары
Кнопка Искать — КнопкаПоиск
Кнопка Очистить — КнопкаОчиститьПоиск
5. У каждого элемента в свойствах в самом низу списка есть События. Для кнопок на нажитие пишем следующиее:
Кнопка поиска:
Процедура КнопкаПоискНажатие(Элемент)
ТекущаяНадпись = СокрЛП(ЭлементыФормы.ПолеПоискаТовары.Значение);
Если ТекущаяНадпись = "" Тогда
ТаблицаПодборКлавиши.Отбор.Сбросить();
ЭлементыФормы.ТаблицаПодборКлавиши.Свернуть(Справочники.Номенклатура.ПустаяСсылка());
ЭлементыФормы.ТаблицаПодборКлавиши.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
Возврат;
КонецЕсли;
СписокЗначений = Новый СписокЗначений();
СписокОтбора = УправлениеНоменклатурой.НайтиПоЦене(ОбщегоНазначения.ПривестиСтрокуКЧислу(ТекущаяНадпись, Истина), ТекущаяДата(), Магазин);
Если СписокОтбора.Количество() <> 0 Тогда
Для Каждого текЭлементСпискаОтбора Из СписокОтбора Цикл
НовыйЭлемент = СписокЗначений.Добавить(текЭлементСпискаОтбора.Значение);
КонецЦикла;
ТаблицаПодборКлавиши.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
ТаблицаПодборКлавиши.Отбор.Ссылка.Значение = СписокЗначений;
ТаблицаПодборКлавиши.Отбор.Ссылка.Использование = Истина;
ЭлементыФормы.ТаблицаПодборКлавиши.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
КонецЕсли;
КонецПроцедуры
На кнопку очистить:
Процедура КнопкаОчиститьПоискНажатие(Элемент)
ПолеПоискаТовары = "";
ТаблицаПодборКлавиши.Отбор.Сбросить();
ЭлементыФормы.ТаблицаПодборКлавиши.Свернуть(Справочники.Номенклатура.ПустаяСсылка());
ЭлементыФормы.ТаблицаПодборКлавиши.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
КонецПроцедуры
Собственно вот и все, компилируем (F5) и в интерфейса кассира не забудьте открыть поле с подбором (Правда панель-Подбор либо F)
Если будет необходимо сделать поиск по Артикулу то нужно вместо
СписокОтбора = УправлениеНоменклатурой.НайтиПоЦене(ОбщегоНазначения.ПривестиСтрокуКЧислу(ТекущаяНадпись, Истина), ТекущаяДата(), Магазин);
написать
СписокОтбора = УправлениеНоменклатурой.НайтиПоАртикулу(ТекущаяНадпись);
Для поиска по всем полям:
СписокОтбора = УправлениеНоменклатурой.НайтиВезде(ТекущаяНадпись);
Спасибо большое: Dos_1985,CnupT,dmt,