Имя: Пароль:
1C
1С v8
Затык с ПоказатьВыборИзМеню
0 ivanich1789
 
25.06.15
17:46
Всем привет. Розница 2.1. Часто штрихкод не читается сканером и вбивается вручную. Поступление товара по накладным поставщиков также идет по штрихкоду. Чтобы упростить процесс решил сделать подбор по части штрихкода(точнее его последним символам). Добавил в тч колонку штрихкод. При вводе, по энтеру, запросом создаю списокзначений с нужной номенклатурой. Дальше ПоказатьВыборИзМеню(). На мгновенье появляется список, выбора не происходит, отрабатывает оповещение ПослеВыбораИзМеню и фокус перескакивает на поле Номенклатура. Как я понимаю дело в подтверждении ввода энтером и автоматическом переходе к следующему элементу ввода. Подскажите, люди добрые, что делаю не так. Опыта в восьмерке не густо. Спасибо.
1 Гёдза
 
25.06.15
18:14
стандартнаяобработка = ложь
2 ivanich1789
 
26.06.15
10:59
Делаю по событию ПриИзменении. Стандартной обработки, как понимаю, в нем нет.

&НаСервере
Функция ПоискШК(СтрокаШаблона)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   Штрихкоды.Владелец КАК Владелец,
        |   Штрихкоды.Штрихкод КАК Штрихкод,
        |   Штрихкоды.Характеристика,
        |   Штрихкоды.ТипШтрихкода,
        |   Штрихкоды.Упаковка
        |ИЗ
        |   РегистрСведений.Штрихкоды КАК Штрихкоды
        |ГДЕ
        |   Штрихкод ПОДОБНО ""%"+СтрокаШаблона+"""";
        
    
    Список = Новый СписокЗначений;

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

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Список.Добавить(ВыборкаДетальныеЗаписи.Владелец, Строка(ВыборкаДетальныеЗаписи.Владелец));
    КонецЦикла;
    Возврат(Список);
    
КонецФункции    

&НаКлиенте
Процедура ТоварыШтрихКодПриИзменении(Элемент)
    
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    ШК = ТекущаяСтрока.Штрихкод;
    
    Если СтрДлина(ШК) < 4 Тогда
        Сообщить("Код должен быть не меньше 4х символов");
        Возврат;
    КонецЕсли;    
    
    СтрокаШаблона = "[";
    Для Сч = 1 По СтрДлина(ШК) Цикл
        СтрокаШаблона = СтрокаШаблона + Сред(ШК, Сч, 1);
        Если Сч <> СтрДлина(ШК) Тогда
            СтрокаШаблона = СтрокаШаблона + "][";
        КонецЕсли;
    КонецЦикла;
    СтрокаШаблона = СтрокаШаблона + "]";
    РезультатПоиска = Новый СписокЗначений;
    РезультатПоиска = ПоискШК(СтрокаШаблона);
    
    Оповещение = Новый ОписаниеОповещения("ПослеВыбораИзМеню", ЭтотОбъект , Параметры);
    ПоказатьВыборИзМеню(Оповещение, РезультатПоиска);
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбораИзМеню(ВыбранныйЭлемент, Параметры) Экспорт
    Сообщить(ВыбранныйЭлемент);
КонецПроцедуры