Управление нашей фирмой 1.6. Платформа 19.1264. Создал обработку с табличной частью на форме "СписокНоменклатуры" с колонками Номенклатура, Количество, Продукция. Как сканированием штрихкодов заполнять таблицу номенклатурой?
В форме есть реквизиты "ИспользоватьПодключаемоеОборудование"(булево) И "ПоддерживаемыеТипыПодключаемогоОборудования"(строка). Взял все процедуры и функции с документа перемещения касаемые штрих-кодов + ОбработкаОповещение. Буду так же рад ответу на вопрос: "Почему при сканировании первой отрабатывает процедура ПолучитьДанныеПоШтрихКодам, которая &НаСервереБезКонтекста?
В форме есть реквизиты "ИспользоватьПодключаемоеОборудование"(булево) И "ПоддерживаемыеТипыПодключаемогоОборудования"(строка). Взял все процедуры и функции с документа перемещения касаемые штрих-кодов + ОбработкаОповещение. Буду так же рад ответу на вопрос: "Почему при сканировании первой отрабатывает процедура ПолучитьДанныеПоШтрихКодам, которая &НаСервереБезКонтекста?
По теме из базы знаний
- Многократное сканирование сканером в разрыв клавиатуры УТ10
- Создание и печать этикеток (ценников). Со штрих-кодами и без. Универсальная обработка
- РМК (рабочее место кассира) 1С8: Розница 2.3 как Фронт-офис с быстрым поиском и автоподбором товаров
- Подбор товара с подключением к базе товаров
- Интеграция 1С с ГИИС ДМДК
Найденные решения
&НаКлиенте
Процедура ШтрихкодПриИзменении(Элемент)
Штрихкод = Элементы.Штрихкод.ТекстРедактирования;
ТекШтрихкод = Новый Структура;
ТекШтрихкод.Вставить("Штрихкод", Штрихкод);
ТекШтрихкод.Вставить("Количество", 1);
РазвернутьМассив(ТекШтрихкод);
Штрихкод = "";
Элементы.Штрихкод.ОбновитьТекстРедактирования();
Штрихкод = "";
ПодключитьОбработчикОжидания("ВернутьКурсорНаПолеВвода", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВернутьКурсорНаПолеВвода()
ЭтаФорма.ТекущийЭлемент = Элементы.Штрихкод;
КонецПроцедуры
&НаСервере
Процедура РазвернутьМассив(ТекШтрихкод)
РегистрыСведений.ШтрихкодыНоменклатуры.ПреобразоватьВесовойШтрихкод(ТекШтрихкод);
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить(ТекШтрихкод);
ДанныеПоШтрихКодам = РегистрыСведений.ШтрихкодыНоменклатуры.ПолучитьДанныеПоШтрихкодам(МассивШтрихкодов);
ДанныеШтрихкода = ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
Если НЕ ЗначениеЗаполнено(ДанныеШтрихкода) Тогда
Сообщить("Такого штрих-кода не существует в базе!");
Возврат;
КонецЕсли;
Ном = ДанныеШтрихкода.Номенклатура;
Кол = ТекШтрихкод.Количество;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)
Одна строка в стеке вызовов
Серверная процедура вызывается событием на клиенте БЕЗ участия клиентской процедуры? Первый раз о такой возможности слышу... Клиентское событие в первую очередь обрабатывается на клиенте всегда. Может быть, асинхроника виновата? Попробуйте еще раз, с подключением фоновых заданий.
(2)
Если УФ, тогда, лучше "ОкончаниеВводаТекста", более универсально получается:
Если УФ, тогда, лучше "ОкончаниеВводаТекста", более универсально получается:
//Сканер в режиме "разрыв клавиатуры"
//Обработчик события окончания ввода текста ШК
//Смена "ТекущийЭлемент" в этом событии приводит к краху платформы, поэтому, режим непрерывного чтения ШК, активируем асинхронным вызовом с минимально возможной задержкой
&НаКлиенте
Процедура СтрокаШКОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
//................
ОбработатьСчитанныйШК(Текст);
ПодключитьОбработчикОжидания("ПозиционированиеВводНовыйШК", 0.1, Истина);
//................
КонецПроцедуры
//Активировать режим непрерывного считывания ШК, на мобильной платформе дополнительно необходимо вызовом "НачатьРедактированиеЭлемента"
&НаКлиенте
Процедура ПозиционированиеВводНовыйШК()
// Вставить содержимое обработчика.
СтрокаШК = "";
ЭтаФорма.ТекущийЭлемент = Элементы.СтрокаШК;
#Если МобильноеПриложениеКлиент Тогда
ЭтаФорма.НачатьРедактированиеЭлемента();
#КонецЕсли
КонецПроцедуры
&НаСервере
Процедура ОбработатьСчитанныйШК(Текст)
//................
КонецПроцедуры
Показать
Там все просто - добавляете два реквизита на форму, при открытии дергаете менеджер оборудования на тему подключения сканера, при закрытии формы (тоже на клиенте) дергаете отключение.
Дальше к вам в обработку оповещения (не во внешнее событие) будут прилетать события подоткнутого таким образом оборудования. Но нужно убедиться, что в форме обработка оповещения приаттачена к соответствующему событию, а не просто скопипащена извне...
Дальше к вам в обработку оповещения (не во внешнее событие) будут прилетать события подоткнутого таким образом оборудования. Но нужно убедиться, что в форме обработка оповещения приаттачена к соответствующему событию, а не просто скопипащена извне...
&НаКлиенте
Процедура ШтрихкодПриИзменении(Элемент)
Штрихкод = Элементы.Штрихкод.ТекстРедактирования;
ТекШтрихкод = Новый Структура;
ТекШтрихкод.Вставить("Штрихкод", Штрихкод);
ТекШтрихкод.Вставить("Количество", 1);
РазвернутьМассив(ТекШтрихкод);
Штрихкод = "";
Элементы.Штрихкод.ОбновитьТекстРедактирования();
Штрихкод = "";
ПодключитьОбработчикОжидания("ВернутьКурсорНаПолеВвода", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВернутьКурсорНаПолеВвода()
ЭтаФорма.ТекущийЭлемент = Элементы.Штрихкод;
КонецПроцедуры
&НаСервере
Процедура РазвернутьМассив(ТекШтрихкод)
РегистрыСведений.ШтрихкодыНоменклатуры.ПреобразоватьВесовойШтрихкод(ТекШтрихкод);
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить(ТекШтрихкод);
ДанныеПоШтрихКодам = РегистрыСведений.ШтрихкодыНоменклатуры.ПолучитьДанныеПоШтрихкодам(МассивШтрихкодов);
ДанныеШтрихкода = ДанныеПоШтрихкодам[ТекШтрихкод.Штрихкод];
Если НЕ ЗначениеЗаполнено(ДанныеШтрихкода) Тогда
Сообщить("Такого штрих-кода не существует в базе!");
Возврат;
КонецЕсли;
Ном = ДанныеШтрихкода.Номенклатура;
Кол = ТекШтрихкод.Количество;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот