Подбор товаров по цене в РМК Розница 1

Реализовал поиск товаров по цене в РМК Розница 1.

Доброго всем дня! Ранее в магазине использовали ККМ Атол, там по умолчанию есть поиск товаров по цене. После перехода на РМК 1С Розница, продавцы требовали чтобы я вернул им эту функцию=) Вот как реализовал ее я.

Для начала откроем конфигуратор.

1. Откроем конфигурацию : Конфигурация-Открыть Конфигурацию

2. Открываем Общие модули-УправлениеНоменклатурой Ищем функции Функция НайтиПоАртикулу, НайтиПоКоду и т.д.

Добавляем ниже

Функция НайтиПоЦене(Цена, ТекДата, ТекМагазин, Список = Неопределено) Экспорт

Если Не ТипЗнч(Список) = Тип("СписокЗначений") Тогда
Результат = Новый СписокЗначений;
Иначе
Результат = Список;
КонецЕсли;

Запрос = Новый Запрос;

Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Магазин", ТекМагазин);
Запрос.УстановитьПараметр("Период", ТекДата);
Запрос.УстановитьПараметр("Цена", Цена);
Запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура.Ссылка КАК Ссылка
|ИЗ
| РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(&Период, Цена = &Цена И ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ (Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) И Магазин В (&Магазин)) КАК ЦеныНоменклатурыМагазиновСрезПоследних
|";

РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузить();

Результат.ЗагрузитьЗначения(ТЗ.ВыгрузитьКолонку("Ссылка"));

Возврат Результат;

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

3. Откроем Справочники-Номенклатура-Формы-ФормаСписка, копируем поле поиска и кнопки поиск и очистить.

4. Сама форма РМК Кассира находится  в Документы-ЧекККМ-Формы-ФормаРегистрацииПродаж, заходим туда, вставляем куда нужно скопированные поле поиска и кнопки.

Переименовываем вставленные элемент, для этого правой кнопкой по любому элементу и выбираем свойства:

После поиска — ПолеПоискаТовары
Кнопка Искать — КнопкаПоиск
Кнопка Очистить — КнопкаОчиститьПоиск

5. У каждого элемента в свойствах в самом низу списка есть События. Для кнопок на нажитие пишем следующиее:

Кнопка поиска:

Процедура КнопкаПоискНажатие(Элемент)


ТекущаяНадпись = СокрЛП(ЭлементыФормы.ПолеПоискаТовары.Значение);
Если ТекущаяНадпись = "" Тогда
ТаблицаПодборКлавиши.Отбор.Сбросить();
ЭлементыФормы.ТаблицаПодборКлавиши.Свернуть(Справочники.Номенклатура.ПустаяСсылка());
ЭлементыФормы.ТаблицаПодборКлавиши.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
Возврат;
КонецЕсли;

СписокЗначений = Новый СписокЗначений();

СписокОтбора = УправлениеНоменклатурой.НайтиПоЦене(ОбщегоНазначения.ПривестиСтрокуКЧислу(ТекущаяНадпись, Истина), ТекущаяДата(), Магазин);


Если СписокОтбора.Количество() <> 0 Тогда
Для Каждого текЭлементСпискаОтбора Из СписокОтбора Цикл
НовыйЭлемент = СписокЗначений.Добавить(текЭлементСпискаОтбора.Значение);
КонецЦикла;

ТаблицаПодборКлавиши.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
ТаблицаПодборКлавиши.Отбор.Ссылка.Значение = СписокЗначений;
ТаблицаПодборКлавиши.Отбор.Ссылка.Использование = Истина;
ЭлементыФормы.ТаблицаПодборКлавиши.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
КонецЕсли;

КонецПроцедуры

На кнопку очистить:

Процедура КнопкаОчиститьПоискНажатие(Элемент)

ПолеПоискаТовары = "";
ТаблицаПодборКлавиши.Отбор.Сбросить();
ЭлементыФормы.ТаблицаПодборКлавиши.Свернуть(Справочники.Номенклатура.ПустаяСсылка());
ЭлементыФормы.ТаблицаПодборКлавиши.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;

КонецПроцедуры

Собственно вот и все, компилируем (F5)  и в интерфейса кассира не забудьте открыть поле с подбором (Правда панель-Подбор либо F) 

Если будет необходимо сделать поиск по Артикулу то нужно вместо

СписокОтбора = УправлениеНоменклатурой.НайтиПоЦене(ОбщегоНазначения.ПривестиСтрокуКЧислу(ТекущаяНадпись, Истина), ТекущаяДата(), Магазин);

написать

СписокОтбора = УправлениеНоменклатурой.НайтиПоАртикулу(ТекущаяНадпись);

Для поиска по всем полям:

СписокОтбора = УправлениеНоменклатурой.НайтиВезде(ТекущаяНадпись);

Спасибо большое: Dos_1985,CnupT,dmt,

Sherdrada,copybases

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *