вторник, 22 января 2013 г.

1C Розница - совершенствуем Рабочее место кассира

Когда-нибудь здесь будет несколько заметок, пока - только одна.
В РМК Розницы 1 есть одна удобная штука - быстрые товары. Неудобство в том, что товаров всего 21. Как превратить их в полноценное РМК - особенно для тач-скринов?

Для этого нужно сделать следующее. В форме Документа "Чек" - Регистрация продаж дописываем:
1. в разделе определния переменных
Перем ТекущийРодитель;
2. Командная панель Быстрые товары

// Процедура - обработчик события "Нажатие" кнопки коммандной панели "Быстрые товары"
//
Процедура КоманднаяПанельБыстрыеТоварыТовар(Кнопка)

ИмяКнопки = Кнопка.Имя;

Если Не мИспользоватьНастройкуРМК Тогда
Возврат;
КонецЕсли;

СтрокиКнопки = мНастройкаРМК.БыстрыеТовары.НайтиСтроки(Новый Структура("ИмяКнопки", ИмяКнопки));

Если СтрокиКнопки.Количество() = 0 Тогда
Возврат;
КонецЕсли;

//Добавляем Перемещения по группировкам и выбор номенклатуры по заголовку кнопки быстрых товаров
Если Кнопка.Заголовок =  "Возврат" Тогда
ТекущийРодитель = ТекущийРодитель.Родитель;
ПолучитьГруппировкиВерхнегоУровня(ТекущийРодитель);
ИначеЕсли Кнопка.Заголовок =  "В начало" тогда
ПолучитьГруппировкиВерхнегоУровня(NULL);
Иначе
Если Кнопка.Заголовок="" Тогда
Возврат;
Иначе
ТекНоменклатура=Справочники.Номенклатура.НайтиПоНаименованию(Кнопка.Заголовок);
ТекущийРодитель= ТекНоменклатура;
Если ТекНоменклатура.ЭтоГруппа Тогда
ПолучитьГруппировкиВерхнегоУровня(ТекущийРодитель);
Иначе
ВыбратьНоменклатуру(Справочники.Номенклатура.НайтиПоНаименованию(Кнопка.Заголовок), СтрокиКнопки[0].ХарактеристикаНоменклатуры);
ТекущийРодитель = ТекущийРодитель.Родитель;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//конец

Если мНастройкаРМК.ЗакрыватьБыстрыеТоварыПриВыбореТовара Тогда
ЗакрытьПанельПодборБыстрыеТовары();
КонецЕсли;

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

3.Добавляем в модуль процедуру


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ КОММАНДНОЙ ПАНЕЛИ "Быстрые товары"

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

парам=0;
Для Каждого СтрокаКнопки Из мНастройкаРМК.БыстрыеТовары Цикл
Если СтрокаКнопки.ИмяКнопки = "Товар1" Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="В начало";
//ШрифтГруппы=новый Шрифт(,,Истина);
//ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Шрифт=ШрифтГруппы;
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
ИначеЕсли  СтрокаКнопки.ИмяКнопки = "Товар2" Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="Возврат";
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;

Иначе
Если парам < массив.Количество() Тогда
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок=массив[парам];
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=Истина;
парам=парам+1;
Иначе
  ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Заголовок="";
ЭлементыФормы[СтрокаКнопки.ИмяКнопки].Видимость=ЛОЖЬ;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры

4. Процедура УстановитьвидКнопкиБыстрыеТовары

// Процедура устанавливает доступность кнопок панеи "ПанельПодборБыстрыеТовары"
//
Процедура УстановитьВидКнопокБыстрыеТовары()

Если Не мИспользоватьНастройкуРМК Тогда
ЭлементыФормы.ПанельПодборБыстрыеТовары.Доступность = Ложь;
Возврат;
КонецЕсли;

ПолучитьГруппировкиВерхнегоУровня(NULL);


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




Комментариев нет:

Отправить комментарий