7.7 Нажатие клавиши, получить Строку Номенклатуры

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем SerzhM, 9 дек 2011.

  1. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Здравствуйте.
    Через Formx перехватываю клавиши
    Код:
    Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Алт,Шифт,Контрол)
    Если КодКлавиши=116 тогда // F5 - вводим сумму от покупателя!   
    НекЧ =0;
    Если ВвестиЧисло(НекЧ ,"Введите сумму покупателя",10,2)=1 Тогда
    Получено = НекЧ;
    Иначе
    КонецЕсли;	
    Форма.Обновить();
    КонецЕсли; 
    Если КодКлавиши=120 тогда // F9 - подбор товра!   
    ПоКнопкеПодбор();
    КонецЕсли;
    КонецПроцедуры;
    
    1)Нужно что бы нажатии F4 или др клавиши задать точную строку номенклатуры допустим 1234(это код)
    2)Что бы строку четко не фиксировать в конфигураторе, хочу добавить константы F2,F3...F9 в поле значинеия прописать либо код либо штрихкод того что нужно вызвать нажатием определенной клавиши.
    Подскажите пожалуйста.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Просто
    Код:
    Если СокрЛп(Константа.КонстантаУправленияФ4)="Формат" Тогда
    ПроизвестиФорматированиеДискаС();
    ИначеЕсли ......
    ...
    КонецЕсли;
    
    
  3. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Подскажите как с позиционироваться на строке номенклатуры зная ее код или штрихкод
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    НайтиПоКоду или НайтиПоРеквизиту
    подробнее см. СП
  5. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    В док чекккм есть обработка внешнего события в этомже документе идет перехват кнопок
    Код:
    Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Алт,Шифт,Контрол)
    Если КодКлавиши=113 тогда /////Ф2
    КонстантаКод=СокрЛп(Константа.КонстантаУправленияF2);
    Сообщить (КонстантаКод,);
    
    КонецЕсли;
    КонецПроцедуры;
    
    //////////////////////////////////////////////////////////////////////////
    ///Как данные КонстантыКод передать в нижеследующую обработку для поиска по штрихкоду?
    /////////////////////////////////////////////////////////////////////////
    
    Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
    // Процедура разбирает штрих-код, считанный сканером
    // и заполняет строки накладной
    Перем Упаковка,ТекКоличество, Спецификация;
    Перем ВремТовар, ВремЕдиница, ВремКоличество, ВремЦена;
    
    Перем СтрокаВозврЦена;
    
    Если Событие = "BarCodeValue" Тогда
    Если Форма.ТолькоПросмотр() = 0 Тогда
    Если ПустоеЗначение(Номенклатура) = 1 Тогда
    Если НомерСтроки > 0 Тогда
    УдалитьСтроку();    
    КонецЕсли;
    КонецЕсли;
    
    Если глПолучитьТоварПоШтрихкоду(Данные, ВремТовар, ВремЕдиница, ВремКоличество) <> 0 Тогда
    ТаблицаПодбора = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаПодбора.НоваяКолонка("Номенклатура");
    ТаблицаПодбора.НоваяКолонка("Единица");
    ТаблицаПодбора.НоваяКолонка("Количество", "Число");
    ТаблицаПодбора.НоваяКолонка("Цена", "Число");
    
    ТаблицаПодбора.НоваяСтрока();
    ТаблицаПодбора.Номенклатура = ВремТовар;
    ТаблицаПодбора.Единица      = ВремЕдиница;
    ТаблицаПодбора.Количество   = ВремКоличество;
    
    ПараметрыПодбора = СоздатьОбъект("СписокЗначений");
    ПараметрыПодбора.ДобавитьЗначение(0, "ЕстьВидТМЦ");
    
    Если (ВремТовар.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
    или (ВремТовар.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
    
    ТаблицаПодбора.Цена	= глПолучитьЦену(ВремТовар,  Константа.РозничныйТипЦен, ДатаДок, ВремЕдиница, Валюта, Курс, Кратность);
    
    ПараметрыПодбора.ДобавитьЗначение("ИзСправочника"          , "ЦенаВподборе");
    ПараметрыПодбора.ДобавитьЗначение(Константа.РозничныйТипЦен, "ТипЦен");
    
    
    ИначеЕсли Склад.РозничныйСклад = 0 Тогда
    
    ТаблицаПодбора.Цена	= глПолучитьЦену(ВремТовар, глЗначениеПоУмолчанию("ОсновнойТипЦенПродажи"), ДатаДок, ВремЕдиница, Валюта, Курс, Кратность);
    
    ПараметрыПодбора.ДобавитьЗначение("ИзСправочника", "ЦенаВподборе");
    ПараметрыПодбора.ДобавитьЗначение(глЗначениеПоУмолчанию("ОсновнойТипЦенПродажи"), "ТипЦен");
    
    Иначе	// цена из остатков регистра
    ТовОстатки = СоздатьОбъект("Регистр.ОстаткиТМЦ");
    ФирмаДляОстатковТМЦ = глФирмаДляОстатковТМЦ(Фирма);
    ТовОстатки.УстановитьЗначениеФильтра("Фирма", ФирмаДляОстатковТМЦ, 2);
    ТовОстатки.УстановитьЗначениеФильтра("Склад", Склад, 1);
    
    глПолучитьРозничныйОстатокЦену(ВремТовар, ВремЕдиница, ТовОстатки, , СтрокаВозврЦена);
    
    СписВозврЦен = ЗначениеИзстроки(СтрокаВозврЦена);
    Если СписВозврЦен.РазмерСписка() = 1 Тогда
    ТаблицаПодбора.Цена  = глПересчет(СписВозврЦен.ПолучитьЗначение(1), глРубли, ДатаДок, Валюта, Курс,, Кратность);
    
    ИначеЕсли СписВозврЦен.РазмерСписка() > 1 Тогда
    
    Если СписВозврЦен.ВыбратьЗначение(ВремЦена,"Выберите цену для товара " + ВремТовар.Наименование, , 60) = 1 Тогда
    ТаблицаПодбора.Цена  = глПересчет(ВремЦена, глРубли, ДатаДок, Валюта, Курс,, Кратность);
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">						Иначе	</span>
    ТаблицаПодбора.Цена  = 0;
    КонецЕсли;
    Иначе
    ТаблицаПодбора.Цена  = 0;
    КонецЕсли;
    
    ПараметрыПодбора.ДобавитьЗначение("Розница", "ЦенаВподборе");
    КонецЕсли;
    
    ПараметрыПодбора.ДобавитьЗначение(ТаблицаПодбора , "ТаблицаПодбора");
    
    глОбработкаПодбора(Контекст, ПараметрыПодбора, 0, 0, 1);
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    ШтрихКод = Единица.ШтрихКод; // прописываем штрих - код
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;
    
    // Обработка закончена. Готовы к получению нового штрихкода.
    глСканерПосылкаДанных(1);
    Иначе
    глОбработкаВнешнегоСобытия(Источник, Событие, Данные);	
    КонецЕсли;
    
    КонецПроцедуры // ОбработкаВнешнегоСобытия()
    
    Как данные КонстантыКод(тип число 13 знаков) передать в нижеследующую обработку для поиска по штрихкоду?
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Просто вызовите ОбработкаВнешнегоСобытия с соответствующими параметрами...
    Вызывающая процедура д.б. ниже вызываемой или вызываемая должна быть описана в начале модуля
  7. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Как смоделировать событие бнз сканера штрих кода
    Если Событие = "BarCodeValue" Тогда
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Это же в данном случае не событие как таковое, а строковый параметр.....

    Код:
    ОбработкаВнешнегоСобытия(Источник,"BarCodeValue",Данные)
    
    
  9. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Код:
    Если КодКлавиши=113 Тогда  // F2
    ШтрихкодОсн=Константа.КнопкаФ2;
    ОбработкаСобытия();
    КонецЕсли;
    
    пишет ошибку
    ОбработкаСобытия(<<?>>);
    {Документ.ЧекККМ.Форма.Модуль(1357)}: Недостаточно фактических параметров
    При проверке модуля обнаружены синтаксические ошибки!

    Сама процедура начинается так
    Код:
    Процедура ОбработкаСобытия(Источник,Событие,Данные)
    
    что ему не хватает что бы запустить процедуру?
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вы не указали параметры при вызове процедуры ОбработкаСобытия()
  11. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Спасибо ) а поточнее можно что это за параметры? Источник,Событие,Данные ?
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    ОбработкаСобытия(,"BarCodeValue",ШтрихкодОсн);
    //ШтрихкодОсн - ШК вашего товара
    
    
  13. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Вопрос в след
    Штрихкод = СокрЛП(пШтрихкод); //пШтрихкод=значения из константы(тип число и тип строка ставил знаков 13)
    Получается след в отладчике
    штрихкод=" " при этом СкорЛП(пШтрихкод)=123456789123
    Подскажите почему значение штрихкод не присваивается?
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Скорее всего Штрихкод - реквизит формы который имеет не строковый тип. Попробуйте заменить скажем на Штрихкод1
  15. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Еще раз Спасибо помогло изменил на шк1. Тема решена.

Поделиться этой страницей