Имя: Пароль:
1C
1С v8
Как подружить документ Комплектация номенклатуры и сканер штрихкодов, БП 3.0?
0 Oblako486
 
29.10.20
18:27
Бухгалтерия предприятия, редакция 3.0 (3.0.79.11)
В табличной части не работает, выдает цифры вместо номенклатуры.
В подборе в поиске не ищет по штрихкоду.
1 kubik_live
 
29.10.20
18:42
Нвстроить сканер
2 Oblako486
 
29.10.20
18:44
(1) В поступлении товаров и инвентаризации товаров, работает в табличной части как надо. Получается сканер настроен?
3 Oblako486
 
30.10.20
11:03
Сделал расширением. Добавил реквизиты на форму

ИспользоватьПодключаемоеОборудование Булево
ПоддерживаемыеТипыПодключаемогоОборудования Строка

Добавил код в модуль формы.

&НаКлиенте
&ИзменениеИКонтроль("ОбработкаОповещения")
Процедура Р_ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    
    Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
        Если ИмяСобытия = "ScanData" Тогда
            Если Параметр[1] = Неопределено Тогда
                ТекущийКод = Параметр[0];
            Иначе
                ТекущийКод = Параметр[1][1];
            КонецЕсли;
            ДобавитьПоШтрихкодуНаСервере(ТекущийКод);
        КонецЕсли;
    ИначеЕсли ИмяСобытия = "ДанныеСкопированыВБуферОбмена" Тогда
        УстановитьДоступностьКомандыВставки(ЭтотОбъект, Истина);
    Иначе
        ОбщегоНазначенияБПКлиент.ОбработкаОповещенияФормыДокумента(ЭтотОбъект, Объект.Ссылка, ИмяСобытия, Параметр, Источник);
    КонецЕсли;

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

&НаСервере
Функция ДобавитьПоШтрихкодуНаСервере(Штрихкод)
    ТаблицаНоменклатурыПоШтрихкоду = РегистрыСведений.ШтрихкодыНоменклатуры.НоменклатураПоШтрихкоду(Штрихкод);
    
    Если ТаблицаНоменклатурыПоШтрихкоду.Количество() = 1 Тогда
        ДобавитьНоменклатуруНаСервере(ТаблицаНоменклатурыПоШтрихкоду[0].Номенклатура);
    Иначе
        ДобавитьНоменклатуруНаСервере(Справочники.Номенклатура.ПустаяСсылка());
    КонецЕсли;
КонецФункции

&НаСервере
Процедура ДобавитьНоменклатуруНаСервере(Номенклатура)

    ТаблицаТовары = Новый ТаблицаЗначений;
    ТаблицаТовары.Колонки.Добавить("Номенклатура");
    ТаблицаТовары.Колонки.Добавить("Количество");
    ТаблицаТовары.Колонки.Добавить("Цена");
    
    ДанныеОбъекта = Новый Структура("Дата, Организация, СуммаВключаетНДС");
    
    ЗаполнитьЗначенияСвойств(ДанныеОбъекта, Объект);
    
    Если ЗначениеЗаполнено(Номенклатура) Тогда
        СведенияОНоменклатуре = БухгалтерскийУчетПереопределяемый.ПолучитьСведенияОНоменклатуре(Номенклатура, ДанныеОбъекта, Ложь, Истина);
    Иначе
        СведенияОНоменклатуре = Неопределено;
    КонецЕсли;
    
    СтрокаТаблицаТовары = ТаблицаТовары.Добавить();
    
    СтрокаТаблицаТовары.Номенклатура = Номенклатура;
    СтрокаТаблицаТовары.Количество = 1;
    СтрокаТаблицаТовары.Цена = ?(СведенияОНоменклатуре = Неопределено, 0, СведенияОНоменклатуре.Цена);
    
    Значение = Новый Структура("АдресПодобраннойНоменклатурыВХранилище, КоличествоДобавленныхСтрок", ПоместитьВоВременноеХранилище(ТаблицаТовары, УникальныйИдентификатор));
    
    ОбработкаВыбораПодборВставкаИзБуфераНаСервере(Значение, "Комплектующие");

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

&НаКлиенте
Процедура Р_ПриЗакрытииПосле(ЗавершениеРаботы)
        // ПодключаемоеОборудование
    МенеджерОборудованияКлиентПереопределяемый.НачатьОтключениеОборудованиеПриЗакрытииФормы(ЭтаФорма);
    // Конец ПодключаемоеОборудование

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

&НаКлиенте
&После("ПриОткрытии")
Процедура Р_ПриОткрытии(Отказ)
    ИспользоватьПодключаемоеОборудование = истина;    
    Если НЕ ТолькоПросмотр и ИспользоватьПодключаемоеОборудование Тогда
        // Попробуем подключить сканер штрихкода
        МенеджерОборудованияКлиентПереопределяемый.НачатьПодключениеОборудованиеПриОткрытииФормы(ЭтотОбъект, "СканерШтрихкода");
    КонецЕсли;
КонецПроцедуры