Когда-нибудь здесь будет несколько заметок, пока - только одна.
В РМК Розницы 1 есть одна удобная штука - быстрые товары. Неудобство в том, что товаров всего 21. Как превратить их в полноценное РМК - особенно для тач-скринов?
Для этого нужно сделать следующее. В форме Документа "Чек" - Регистрация продаж дописываем:
1. в разделе определния переменных
Перем ТекущийРодитель;
2. Командная панель Быстрые товары
// Процедура - обработчик события "Нажатие" кнопки коммандной панели "Быстрые товары"
//
Процедура КоманднаяПанельБыстрыеТоварыТовар(Кнопка)
ИмяКнопки = Кнопка.Имя;
Если Не мИспользоватьНастройкуРМК Тогда
Возврат;
КонецЕсли;
СтрокиКнопки = мНастройкаРМК.БыстрыеТовары.НайтиСтроки(Новый Структура("ИмяКнопки", ИмяКнопки));
Если СтрокиКнопки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
//Добавляем Перемещения по группировкам и выбор номенклатуры по заголовку кнопки быстрых товаров
Если Кнопка.Заголовок = "Возврат" Тогда
ТекущийРодитель = ТекущийРодитель.Родитель;
ПолучитьГруппировкиВерхнегоУровня(ТекущийРодитель);
ИначеЕсли Кнопка.Заголовок = "В начало" тогда
ПолучитьГруппировкиВерхнегоУровня(NULL);
Иначе
Если Кнопка.Заголовок="" Тогда
Возврат;
Иначе
ТекНоменклатура=Справочники.Номенклатура.НайтиПоНаименованию(Кнопка.Заголовок);
ТекущийРодитель= ТекНоменклатура;
Если ТекНоменклатура.ЭтоГруппа Тогда
ПолучитьГруппировкиВерхнегоУровня(ТекущийРодитель);
Иначе
ВыбратьНоменклатуру(Справочники.Номенклатура.НайтиПоНаименованию(Кнопка.Заголовок), СтрокиКнопки[0].ХарактеристикаНоменклатуры);
ТекущийРодитель = ТекущийРодитель.Родитель;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//конец
Если мНастройкаРМК.ЗакрыватьБыстрыеТоварыПриВыбореТовара Тогда
ЗакрытьПанельПодборБыстрыеТовары();
КонецЕсли;
КонецПроцедуры
3.Добавляем в модуль процедуру
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ КОММАНДНОЙ ПАНЕЛИ "Быстрые товары"
// Заполняем заголовки кнопок быстрых товаров
Процедура ПолучитьГруппировкиВерхнегоУровня(Родитель)
Если Родитель = NULL Тогда
Запрос=Новый Запрос();
Запрос.Текст="ВЫБРАТЬ
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа = ИСТИНА
| И Номенклатура.Родитель.Ссылка ЕСТЬ NULL";
выборка=запрос.Выполнить().Выбрать();
массив = Новый Массив();
пока выборка.Следующий() Цикл
массив.Добавить(выборка.Наименование)
КонецЦикла;
парам=0;
Для Каждого СтрокаКнопки Из мНастройкаРМК.БыстрыеТовары Цикл
Если парам < массив.Количество() Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок=массив[парам];
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
парам=парам+1;
Иначе
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="";
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=ЛОЖЬ;
КонецЕсли;
КонецЦикла;
Иначе
Запрос=Новый Запрос();
Запрос.Текст="ВЫБРАТЬ
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Родитель= &Родитель";
Запрос.УстановитьПараметр("Родитель",Родитель);
выборка=запрос.Выполнить().Выбрать();
массив = Новый Массив();
пока выборка.Следующий() Цикл
массив.Добавить(выборка.Наименование)
КонецЦикла;
парам=0;
Для Каждого СтрокаКнопки Из мНастройкаРМК.БыстрыеТовары Цикл
Если СтрокаКнопки.ИмяКнопки = "Товар1" Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="В начало";
//ШрифтГруппы=новый Шрифт(,,Истина);
//ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Шрифт=ШрифтГруппы;
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
ИначеЕсли СтрокаКнопки.ИмяКнопки = "Товар2" Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="Возврат";
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
Иначе
Если парам < массив.Количество() Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок=массив[парам];
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
парам=парам+1;
Иначе
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="";
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=ЛОЖЬ;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
4. Процедура УстановитьвидКнопкиБыстрыеТовары
// Процедура устанавливает доступность кнопок панеи "ПанельПодборБыстрыеТовары"
//
Процедура УстановитьВидКнопокБыстрыеТовары()
Если Не мИспользоватьНастройкуРМК Тогда
ЭлементыФормы.ПанельПодборБыстрыеТовары.Доступность = Ложь;
Возврат;
КонецЕсли;
ПолучитьГруппировкиВерхнегоУровня(NULL);
КонецПроцедуры
В РМК Розницы 1 есть одна удобная штука - быстрые товары. Неудобство в том, что товаров всего 21. Как превратить их в полноценное РМК - особенно для тач-скринов?
Для этого нужно сделать следующее. В форме Документа "Чек" - Регистрация продаж дописываем:
1. в разделе определния переменных
Перем ТекущийРодитель;
2. Командная панель Быстрые товары
// Процедура - обработчик события "Нажатие" кнопки коммандной панели "Быстрые товары"
//
Процедура КоманднаяПанельБыстрыеТоварыТовар(Кнопка)
ИмяКнопки = Кнопка.Имя;
Если Не мИспользоватьНастройкуРМК Тогда
Возврат;
КонецЕсли;
СтрокиКнопки = мНастройкаРМК.БыстрыеТовары.НайтиСтроки(Новый Структура("ИмяКнопки", ИмяКнопки));
Если СтрокиКнопки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
//Добавляем Перемещения по группировкам и выбор номенклатуры по заголовку кнопки быстрых товаров
Если Кнопка.Заголовок = "Возврат" Тогда
ТекущийРодитель = ТекущийРодитель.Родитель;
ПолучитьГруппировкиВерхнегоУровня(ТекущийРодитель);
ИначеЕсли Кнопка.Заголовок = "В начало" тогда
ПолучитьГруппировкиВерхнегоУровня(NULL);
Иначе
Если Кнопка.Заголовок="" Тогда
Возврат;
Иначе
ТекНоменклатура=Справочники.Номенклатура.НайтиПоНаименованию(Кнопка.Заголовок);
ТекущийРодитель= ТекНоменклатура;
Если ТекНоменклатура.ЭтоГруппа Тогда
ПолучитьГруппировкиВерхнегоУровня(ТекущийРодитель);
Иначе
ВыбратьНоменклатуру(Справочники.Номенклатура.НайтиПоНаименованию(Кнопка.Заголовок), СтрокиКнопки[0].ХарактеристикаНоменклатуры);
ТекущийРодитель = ТекущийРодитель.Родитель;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//конец
Если мНастройкаРМК.ЗакрыватьБыстрыеТоварыПриВыбореТовара Тогда
ЗакрытьПанельПодборБыстрыеТовары();
КонецЕсли;
КонецПроцедуры
3.Добавляем в модуль процедуру
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ КОММАНДНОЙ ПАНЕЛИ "Быстрые товары"
// Заполняем заголовки кнопок быстрых товаров
Процедура ПолучитьГруппировкиВерхнегоУровня(Родитель)
Если Родитель = NULL Тогда
Запрос=Новый Запрос();
Запрос.Текст="ВЫБРАТЬ
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа = ИСТИНА
| И Номенклатура.Родитель.Ссылка ЕСТЬ NULL";
выборка=запрос.Выполнить().Выбрать();
массив = Новый Массив();
пока выборка.Следующий() Цикл
массив.Добавить(выборка.Наименование)
КонецЦикла;
парам=0;
Для Каждого СтрокаКнопки Из мНастройкаРМК.БыстрыеТовары Цикл
Если парам < массив.Количество() Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок=массив[парам];
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
парам=парам+1;
Иначе
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="";
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=ЛОЖЬ;
КонецЕсли;
КонецЦикла;
Иначе
Запрос=Новый Запрос();
Запрос.Текст="ВЫБРАТЬ
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Родитель= &Родитель";
Запрос.УстановитьПараметр("Родитель",Родитель);
выборка=запрос.Выполнить().Выбрать();
массив = Новый Массив();
пока выборка.Следующий() Цикл
массив.Добавить(выборка.Наименование)
КонецЦикла;
парам=0;
Для Каждого СтрокаКнопки Из мНастройкаРМК.БыстрыеТовары Цикл
Если СтрокаКнопки.ИмяКнопки = "Товар1" Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="В начало";
//ШрифтГруппы=новый Шрифт(,,Истина);
//ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Шрифт=ШрифтГруппы;
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
ИначеЕсли СтрокаКнопки.ИмяКнопки = "Товар2" Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="Возврат";
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
Иначе
Если парам < массив.Количество() Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок=массив[парам];
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
парам=парам+1;
Иначе
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="";
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=ЛОЖЬ;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
4. Процедура УстановитьвидКнопкиБыстрыеТовары
// Процедура устанавливает доступность кнопок панеи "ПанельПодборБыстрыеТовары"
//
Процедура УстановитьВидКнопокБыстрыеТовары()
Если Не мИспользоватьНастройкуРМК Тогда
ЭлементыФормы.ПанельПодборБыстрыеТовары.Доступность = Ложь;
Возврат;
КонецЕсли;
ПолучитьГруппировкиВерхнегоУровня(NULL);
КонецПроцедуры
Комментариев нет:
Отправить комментарий