gifts2017

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

Опубликовал Dmitry Malygin (pawonex) в раздел Программирование - Работа с интерфейсом

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

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

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

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

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

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

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

	Возврат Результат;
	
КонецФункции
 

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

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

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

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

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

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

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


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

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

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

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

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

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

написать

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

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

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

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

Sherdrada,copybases

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа