1С бухгалтерия

До сегодняшнего дня много раз подключал и сканеры штрих кодов и фискальные регистраторы. Но все это были подключения к "1С Управление торговлей", где данные торговые оборудования предусмотрены типовой конфигурацией. В бухгалтерии же предполагается подключение только фискального регистратора. Ну не покупать же из-за сканера штрих кода новую конфигурацию, поэтому пришлось делать подключение сканера к бухгалтерии.

Решил сначала на компьютере установить сканер для УТ, а потом уже пробовать подключение к БП. Как я уже сказал, много раз подключал торговое оборудование: и к 7-ке и к 8-ке, и к Торговле и к Бухгалтерии, но было это довольно давно. Поэтому, когда после установки АТОЛовского драйвера, сканер считывал коды с большой задержкой, то для меня это было неожиданностью. Только потом выяснил, что оказывается драйвера от АТОЛа стали платными. И в демоверсии сканер будет работать с 10-ти секундной задержкой.

Вторая проблема, к которой я был не готов - это то, что в процедуру ВнешнееСобытие(Источник, Событие, Данные) в качестве параметра передавались порядковые номера считываний. Мне в свое время попадались только Metrologic-ки и я привык к тому, что в параметре Данные передается уже готовый штрих-код. А тут, то ли из-за того, что был сканер Zebex, то ли из-за того, что драйвер не тот что был раньше, но в параметре Данные действительно передается номер события.

Нарыл я не демовские дрова АТОЛа, установил, скопировал Scaner1C.dll в 1С-кую папку bin и стал подключать сканер. Попробовал сначала сделать подключение с помощью обработки ATOLBarcodeScan_v2.epf, т.к. думал делать по аналогии с УТ. И даже подключил, предварительно немножко подправив обработку ТОНастройка(т.к. там фильтрация по фискальникам стоит). Но потом понял, что замучаюсь с обработкой данных, поэтому взял за основку код, который идет в качестве примера с драйверами АТОЛа. А именно пришлось немного подправить модуль приложения:

Перем Scaner Экспорт;  // ХА
 
...
 
Процедура ПриЗавершенииРаботыСистемы()
 
	// Показ финальной дополнительной информации
	Форма = Обработки.ДополнительнаяИнформация.Создать();
	Форма.ВыполнитьДействие();
	//
 
	Scaner = 0; // ХА
 
КонецПроцедуры
 
...
 
Процедура ПриНачалеРаботыСистемы()
...
	// ХА
	Попытка
		ЗагрузитьВнешнююКомпоненту("Scaner1C.DLL");
		//Сообщить("Внешняя компонента сканера штрих-кода успешно загружена");
        Попытка
			Scaner = Новый("AddIn.Scaner45");
			Scaner.OldVersion = 0;
			Scaner.AutoDisable = 1;
			Scaner.DataEventEnabled = 1;
		Исключение
			Сообщить("Объект не найден");
		КонецПопытки;
	Исключение
		Сообщить("Внешняя компонента сканера штрих-кода - Scaner1C.DLL не найдена");
	КонецПопытки;
	// 		ХА
 
КонецПроцедуры // ПриНачалеРаботыСистемы()
 
...
 
// ХА
Функция ОбработкаДанныхСканера(Источник,Событие,Данные) Экспорт
	Результат = "";
	Если Scaner.OldVersion <> 0 Тогда
		Результат = Данные;
	Иначе
		Результат = Scaner.ScanData;
	КонецЕсли;
	Scaner.DataEventEnabled = 1;
	Возврат СокрЛП(Результат);
КонецФункции
// 		ХА

Ну а в документе, для которого это собсвенно все и нужно пишем что-то подобное этому:

// ХА
Процедура ВнешнееСобытие(Источник, Событие, Данные)
 
	Если Источник = "BarCodeScaner" Тогда
		ШК = ОбработкаДанныхСканера(Источник,Событие,Данные);
		НайденаНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("ХА_ШтрихКод",ШК);
		Если НайденаНоменклатура.Пустая() Тогда
			Возврат;
		КонецЕсли;
		ЭлементыФормы.Продукция.ДобавитьСтроку();
		ЭлементыФормы.Продукция.ТекущиеДанные.Номенклатура = НайденаНоменклатура;
		ЭлементыФормы.Продукция.ТекущиеДанные.Количество = 1;
		ПродукцияПродукцияПриИзменении("");
	КонецЕсли;
 
КонецПроцедуры // ВнешнееСобытие()
// 		ХА

Да. Забыл сказать, что для настройки сканера я просто скопировал и вставил обработку СвойстваСканера из все того же примера, который идет с драйверами АТОЛа. В этой настройке в качестве порта выбрал "Клавиатура", т.к. сканер USB.

Приведенные выше коды - для версии "Бухгалтерия предприятия 2.0", релиз 2.0.17.6.

Как подключить сканер штрих кода к 1С Бухгалтерия предприятия 3.0

Комментарии

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Спасибо автору за статью.
Столкнулся с той же проблемой. Сразу оговорюсь, что ранее продуктами 1С я не пользовался. Поэтому могу заблуждаться на счет намерений использовать сканер в 1С:Бухгалтерия (редакция 2.0).
В двух словах ситуация следующая:
Хотелось бы оприходовать товар и присваивать ему штрих-код в 1С:Бухгалтерия при формировании номенклатуры, чтобы затем сделать выгрузку в 1C:Розница (установлена на кассе) для дальнейшей продажи товара (также посредством штрих-кода). Во всяком случае, продавцы в фирме-франчайзи 1С заверили меня, что такая схема позволит мне организовать автоматизацию торговли. В результате я купил у них и программы и оборудование (в том числе два сканера).
В Рознице мне удалось подключить все оборудование, а вот в Бухгалтерии возникла проблема. Дело в том, что в окне Подключения и настройки торгового оборудования значатся только фискальные регистраторы. При попытке импортировать Обработки обслуживания для другого оборудования, они не загружается.
Разумеется, я обращался с этой проблемой в службу технической поддержки 1С, но вместо разъяснений получил встречный вопрос "А зачем Вам сканер в Бухгалтерии?". Объяснил, ответа пока нет.
Статья дельная и изложена наглядно, но предназначена скорее для специалистов. Мне как пользователю нужно последовательное описание действий, которые надлежит выполнить. С этой просьбой я и обращаюсь к автору статьи, чтобы на моем примере разобрать эту проблему, и возможно, помочь другим не очень продвинутым пользователям.
Заранее спасибо!

Пример подключения сканера в бух. 7.7

Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные) Экспорт;
Если Scaner.OldVersion<>0 Тогда
//Работа драйвера совместима с предыдущей версиией
// Источник="BarCodeScaner" (для других устройств свои названия)
//Событие="BarCodeValue", Данные=ПолученныеДанные
Сообщить("Old Version <> 0");
Сообщить("Источник: "+Строка( Источник ));
Сообщить("Событие: "+Строка( Событие ));
Сообщить(Строка("Данные от устройства: "+ Данные));
Иначе
//Работа драйвера не совместима с предыдущей версиией
// Источник="BarCodeScaner" (для других устройств свои названия)
//Событие="BarCodeValue", Данные=НомерСобытия
Сообщить("Old Version = 0");
Scaner.EventNumber=Число(Данные);
Сообщить("Данные от устройства: "+Scaner.ScanData);
Сообщить("Порт: "+Строка(Scaner.PortNumber));
Сообщить("Устройство: "+Scaner.DeviceDescription);
Scaner.DeleteEvent();
КонецЕсли;
Scaner.DataEventEnabled = 1;

глОбработкаШтрихкода(Данные, 0);
КонецПроцедуры

admin аватар

Т.к. я делал все на основе драйверов от АТОЛа, то начать следует с него. www.atol.ru Сейчас эти драйвера платные. Вместе с их ПО идут простенькие демонстрационные конфигурации для 7-й и 8-й версий. В этих конфигурациях показано, как можно программно подключить сканер. За основу я брал именно эти демки.

Про окно Подключения и настройки торгового оборудования можно забыть. Там вам со сканером делать нечего. Открываете вашу 1С бухгалтерию в режиме конфигуратора, меню Конфигуратор-Открыть конфигурацию и правой кнопкой мыши жмем на корне открывшегося слева дерева. Там выбираем "Открыть модуль приложения" и дописываем тот код, который я привел в статье.
В справочнке Номенклатура еще, конечно, необходимо добавить реквизит для штрих-кода. В моем случае этот реквизит называется "ХА_ШтрихКод". Естественно, выводим этот реквизит куда-нибудь на форму справочника. Тут можно поступить по-разному. Можно сделать чтобы на любом элементе формы справочника Номенклатура при штрих-кодировании заполнялось значение штрих-кода(и тогда надо немножко дописать модуль), а можно без дописывания, но тогда прежде чем проводить сканером по штрих-коду, надо установить курсор на поле с штрих-кодом на форме.

Это что касается общей для всех части. А вот дальше возможны варианты в зависимости от того, что именно вы хотите автоматизировать с помощью сканера штрих-кодов. Если поступление товаров, то тогда процедуру ВнешнееСобытие() вам надо будет размещать в модуле формы документа "Поступление товаров" и обработчик внешнего события будет немного отличаться от того, который я привел для образца. Если реализацию захотите автоматизировать, то там обработка внешнего события тоже будет уже своя.

Для того чтобы сканер передавал штрихкод в параметре "Данные" необходимо при подключении установить

Scaner.OldVersion = 1;

Спасибо получилось как только дописал и в сервис параметры появилась настройка сканера как только в каталог Bin поместил dll !
Scaner.DeleteEvent();
Scaner.DataEventEnabled = 1;

Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если (Источник = "BarCodeScaner") тогда
Если Scaner.OldVersion<>0 Тогда
Если Событие = "BarCodeValue" тогда
ШтрихКод = Число(Данные);
//ПриВводеШтрихКода();
КонецЕсли;
Иначе
Если Событие = "BarCodeValue" тогда
Scaner.EventNumber=Число(Данные);
ШтрихКод = Число(Scaner.ScanData);
//ПриВводеШтрихКода();
КонецЕсли;

Scaner.DeleteEvent();
КонецЕсли;
Scaner.DataEventEnabled = 1;
КонецЕсли;

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

Добрый день. Сломал всю голову, но никак не разберусь: Зачем к "1С:Бухгалтерия" подключать фискальник?
По умолчанию сканер штрих кодов не подключается. Розничную торговлю без доработок организовать не выйдет.
Только как учётная система импортирующая в себя данные из, скажем, 1С:Розница.

В чём прикол? Просветите пожалуйста.

admin аватар

По правде сказать не знаю. Никогда не использовал типовые возможности бухгалтерии в плане фискальника. Хотя возможность подключения фискальника тянется еще из 7-ки. Точно помню что фискальник нужен для приходника, по крайней мере в 7-ке так было. Почему помню, потому что когда-то подключал фискальник к 7-й бухгалтерии УСН. Делал там документ Реализацию с возможностью пробития чеков на фискальнике и подсматривал код по работе с фискальником в приходнике. Так что ответы на ваши вопросы ищите в модуле ПКО.

Привет
Наконец встретил то что искал
Наберусь наглости и спрошу
Вы случайно ККМ в Off-Line к Бухгалтерии не собераетесь подключать ?
Просто уже 5 дней сижу ищу и сам пробую потихоньку
я пробую переносить прям из УТ и из УПП
но чето не идет
очень был бы благодарен за подсказку

admin аватар

Пока вроде не было необходимости к бухгалтерии подключать. И не совсем понял в чем именно проблема. На сколько я помню там же подключение ККМ идет по умолчанию. Просто к документам реализации нет подвязки. В этом проблема?

Здравствуй.
Не в Бухгалтерии по умолчанию нету , покрайней мере те версии которые под 8.1 и темболее 8.2 смотрел нету.
А смысл вот в чем стоит ККМ "Штрих-М miniPOS" он соединен всего с одним компом бухгалтера, у которого стоит
1С Предприятие 8.2 Бухгалтерия 1.6 и сканер штрих кода ,
вот я и хочу не устанавливая Розницу или Управление Торговлей , заносить сканером товар в бухгалтерию и Off-Line
передавать в ККМ , а вечером когда смена закрывается заносить отчет из кассы в бухгалтерию.
Такая связка вопервых исключает всякие там дополнительные Розницы УТ и тд дополнительное оборудование
ну так как магазинчик маленький скорей ларек то на бухгалтерском компе утром товар принимает товаровед
а с обеда сидит уже бухгалтерша.
Вот над этой схемой я сейчас и работаю

admin аватар

А-а-а. Теперь ясно. А я еще думаю что за Off-Line. Щас глянул в нете, понял что это такое. Честно говоря с Off-Line ККМ никогда и не работал. Все время если и попадались ККМ, то только которые напрямую с БД работали. Так что ничем помочь не смогу.

Ну нече спасибо за подключение сканера и то большое дело
еще раз спасибо
побольшебы таких людей может быть и 1С стала бесплатной

Помогите пож-та разобраться как подключить сканер штрих кодов к 1с бухгалтерии 7.
Не могу понять как подцепить драйвер. Как подцепить библиотеку? Что и где необходимо прописать.
Спасибо большое за понимание.

admin аватар

Подключал очень давно, поэтому из того, что помню:
Устанавливае Атоловский драйвер.
В папке ExtForms\Equip должны лежать стандартные обработки.
Сервис - Настройка торгового оборудования.
Ставите устройство включено и выбираете свою модель. По крайней мере мой феликс там был.
Потом донастраиваете в Сервис - Параметры. Там появляется новая закладка для фискальника.
Ну а потом уже кодите то, что вам нужно.

Здравствуйте, подскажите пожалуйста как навести порядок в 1С, до этого с программой не сталкивался в БД полный беспорядок, с проходящими операциями ни чего не ясно, всю бьется в ручную. Короче говоря работаю в слепую. Хотелось бы наладить систему и отредактировать все данные а так же подключить штрих-кодеры на машинах "торгового зала" по продаже, и "склада" по приходу. Дайте пожалуйста ссылки на сайты или прямые ссылки на загрузки видеокурсов если не сложно .... Ну и прошу направить на путь истинный с чего начать и чем закончить...
Или может лучше снести всю систему и создавать все заново ???
Заранее спасибо ...
Версия 1С : 1С:Предприятие версия 7.7 конфигурация торговля склад редакция 9.2

admin аватар

Начну с того, что в ТиС-е не слишком большой специалист. Крупных организаций на этой конфигурации у меня нет. Так, мелочевка всякая. В вашем случае конечно надо смотреть на сколько все запущено. Но, думаю, что бардак на складах решается инвентаризацией. Проводите ее и заносите в соответствующий документ. Потом на основании инвентаризации делаете списание или опреходвание товаров.

Спасибо и на этом...

здраствуй.
есть проблема возможно попадалась, 1с 8.2 розница, после подключения сканера USb ZEBEX в разрыв клавиатуры и настройки его в 1с (чтоб видился как сканер) возникает проблема с клавиатурой в режиме РМК именно при вводе количества и суммуы полученой от клиента ставит по 2 цыфри или всякую белеберду.

Здравствуйте.
Очень интересная и полезная статья. Пробовала все сделать согласно рекомендациям, но возникают проблемы. В 7.7 БП с подобным заданием сталкиваюсь впервые. При исполнении модуля выдает ошибку: "Переменная Источник не определена". То же и для переменных Событие и Данные. Подскажите пожалуйста, что может быть не так. Ведь их не надо нигде предварительно объявлять? Заранее очень благодарна.

admin аватар

Не видя вашего кода сложно что-то сказать. Тем более не совсем понятно на какой же все таки версии вы делаете. На 7-й или 8-й. Статья про восьмую версию.

Код я переделала под 7.7. Процедуру ВнешнееСобытие(Источник, Событие, Данные) заменила предопределенной ОбработкаВнешнегоСоединения(Источник, Событие, Данные).
Скажите, нужно ли делать эмуляцию com порта или же в режиме разрыва клавиатуры все должно заработать?

Код выглядит так

Глобальный модуль:
Процедура ПриНачалеРаботыСистемы()
...
Попытка
ЗагрузитьВнешнююКомпоненту("scaner1C.dll");
Сообщить("Внешняя компонента сканера штрих-кода успешно загружена");
Попытка
Scaner = СоздатьОбъект("AddIn.Scaner45");
Scaner.OldVersion = 0;
Scaner.AutoDisable = 1;
Scaner.DataEventEnabled = 1;
Исключение
Сообщить("Объект не найден");
КонецПопытки;
Исключение
Сообщить("Внешняя компонента сканера штрих-кода - scaner1C.DLL не найдена");
КонецПопытки;

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

Функция ОбработкаДанныхСканера(Источник,Событие,Данные) Экспорт
Результат = "";
Если Scaner.OldVersion <> 0 Тогда
Результат = Данные;
Иначе
Результат = Scaner.ScanData;
КонецЕсли;
Scaner.DataEventEnabled = 1;
Возврат СокрЛП(Результат);
КонецФункции

модуль "Расходной накладной"
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
ШК = ОбработкаДанныхСканера(Источник,Событие,Данные);
спрТМЦ=СоздатьОбъект("Справочник.ТМЦ");
НайденаНоменклатура =спрТМЦ.НайтиПоРеквизиту("Артикул",ШК);
Если НайденаНоменклатура=0 Тогда
Возврат;
КонецЕсли;
НоваяСтрока();
спрТМЦ.ТМЦ = НайденаНоменклатура;
спрТМЦ.кво = 1;
КонецПроцедуры

admin аватар

У вас ошибка выскакивает уже в ОбработкаВнешнегоСобытия() ? Т.е. сканер запускает эту процедуру? Или же ошибка на каком-то другом этапе? А в Сервис-Параметры у вас сканер нормально тесты проходит?

Огромное спасибо. Все заработало. Вы Очень мне помогли. Но это пока первый этап. Я работаю windows, а на фирме стоит linux, да еще и терминальный доступ. Скажите, а атоловские драйвера с linux "дружат"?

admin аватар

А вот тут я вам точно не помощник. С linux никогда дел не имел :(.

Подскажите пожалуйста где можно скачать Scaner1C.dll?

Я сделал все как у вас написано, вылетает ошибка - {МодульОбычногоПриложения(364)}: Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты. Что делать? Как решить?

admin аватар

По идее он должен был сработать по Попытке и выдать обычное сообщение "Внешняя компонента сканера штрих-кода - Scaner1C.DLL не найдена". Если у вас ошибка при вызове метода..., то фиг знает. Может библиотека левая.

То о чем говоришь ты - это просто сообщение которое ты прописываешь в исключении, а я добавил в это сообщение еще и ОписаниеОшибки()

Все получилось. Проблема была в библиотеке, и еще надо было скопировать в папку C:\Program Files\1cv82\8.2.15.301\bin два файла - это Scaner_t и pr08.dll.

Сейчас проблема в том что не срабатывает Внешнее событие формы в толстом клиенте, т.е. в режиме 1с предприятие я сканирую а форма вообще не реагирует, такое ощущение что еще чего то не хватает, может надо что то прописывать при открытии формы. Подскажите пожалуйста как решить проблему?

admin аватар

Может быть в свойствах самой формы не прописано ВнешнееСобытие ?

Причина не в этом. В свойствах формы все прописано

Та же проблема, не откликается ВнешнееСобытие, да и сканер продолжает работать как клавиатура. Получается драйвер не работает? Хотя ошибок не показывает при подключении компоненты... Подскажите, что может быть?...

admin аватар

А в Сервис-Параметры у вас сканер нормально тесты проходит?

Добрый день, подскажите при обновлении конфигурации внесенные изменения теряются (можно без доп. гомор.. сопровождать измененную конфигурацию)?

admin аватар

Я думаю вряд ли удастся полностью без гемороя. Так или иначе придется вставлять свой код в чужой, а это означает, что возможно затирание при обновлении. Но 8-ка в этом плане все таки лучше 7-ки и не при всех обновлениях происходит затирание.

Добрый день, Спасибо большое за статью! У меня конфигурация Общепит 8. построенная на Бухгалтерии и к нему необходимо подключить сканер ШК. И так же установлены старые драйвера АТОЛ. В статье вы пишите:
"Да. Забыл сказать, что для настройки сканера я просто скопировал и вставил обработку СвойстваСканера из все того же примера, который идет с драйверами АТОЛа."
Где в примере найти эту обработку? Не могу ее найти. Или, пожалуйста, напишите ее в ответе. Мне это действительно необходимо. Заранее благодарю за ответ!

admin аватар

На сколько я помню, при установке драйверов из дирстибутива надо поставить галку, чтобы установились демонстарционные базы для 1С. Вот из этих демонстрационных баз (одна для 7.7 другая для 8.0) можно взять образцы обработок.

Спасибо большое! все заработало ;)
однако надо будет вскорости и для Бух 3.0 делать

Добрый день! Год 2014 5 ноября. Статья актуальна для меня. Делаю внешнюю обработку. И вот получил такие ошибки. Вопрос - как преодолеть эти ошибки.
{Форма.Форма.Форма(59,7)}: Переменная не определена (Scaner)
Если <<?>>Scaner.OldVersion <> 0 Тогда
{Форма.Форма.Форма(62,15)}: Переменная не определена (Scaner)
Результат = <<?>>Scaner.ScanData;
{Форма.Форма.Форма(64,2)}: Переменная не определена (Scaner)
<<?>>Scaner.DataEventEnabled = 1;

Спасибо.

admin аватар

Скорее всего забыли вставить в модуль приложения эту строку:

Перем Scaner Экспорт;

у меня такой интересный вопрос: открываю формуэлемента в справочник.номенклатура в ней подключаю сканер (ЗагрузитьВнешнююКомпоненту...Объект = Новый("AddIn." + ПрогИд);) - все работает.Объект - переменная модуля объекта. закрыл форму, открыл форму другого элемента - нет внешнего события, заново нужно подключать.получается ЗагрузитьВнешнююКомпоненту "привязана" ко времени жизни формы?

уточнения : формаэлемента открывается из формысписка, которая не закрывается

admin аватар

Мне интересно, а в какой процедуре у вас происходит подключение? При открытии формы я полагаю. А при открытии нового экземпляра формы у вас код будет отрабатывать как-то по иному, нежели в первый раз? Или все таки тем же переменным будет присвоено тоже самое, а неопределенные переменные так и останутся неопределенными... Думаю логика понятна.

в общем не стал замарачиваться - поставил подключение сканера из формы списка.а если в форме элемента, то после ее закрытия глоб переменная - неопределено.

спасибо

Добрый день. Сделал все по инструкции. При старте 1с ошибок не выдает. (т.е Scaner1C.DLL грузится нормально) сканер штрих кодов подключен к com 7 когда пикаю в процедуру ВнешнееСобытие 1с не попадает. Подскажите пожалуйста в чем может быть проблема.

admin аватар

- Посмотреть что там в форме настроек сканера. Включено там устройство или нет или еще какие там может проблемы.
- Может в свойствах формы нет ссылки на процедуру ВнешнееСобытие

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

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".