УТ 10.3 Можно ли номенклатуре присваивать Штрих-код отличный от EAN13?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В РС Штрихкоды номенклатуры штрих код хранится в строке. В 11 УТ (судя по сестре ее КА) длина ШК 200 символов. Если в 10 торговле длины для записи Code39 хватит, то почему бы и нет?
Все средства читающие ШК передают его в 1С уже как строку. Поэтому будет ли работать зависит от настроек сканера а не 1С. А вот если вы его печатать собрались то надо смотреть что в МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) (это для УТ 11 но в 10 должно быть подобное посмотрите как, например отрисовывается ШК документа в печатной форме)
В 11 там написано:
Если ПараметрыШтрихкода.ТипКода = 99 Тогда
ТипШтрихкодаВрем = ОпределитьТипШтрихкода(ПараметрыШтрихкода.Штрихкод);
Если ТипШтрихкодаВрем = "EAN8" Тогда
ВнешняяКомпонента.ТипКода = 0;
ИначеЕсли ТипШтрихкодаВрем = "EAN13" Тогда
ВнешняяКомпонента.ТипКода = 1;
// Если код содержит контрольный символ, обязательно указываем.
ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13;
ИначеЕсли ТипШтрихкодаВрем = "EAN128" Тогда
ВнешняяКомпонента.ТипКода = 2;
ИначеЕсли ТипШтрихкодаВрем = "CODE39" Тогда
ВнешняяКомпонента.ТипКода = 3;
ИначеЕсли ТипШтрихкодаВрем = "CODE128" Тогда
ВнешняяКомпонента.ТипКода = 4;
ИначеЕсли ТипШтрихкодаВрем = "ITF14" Тогда
ВнешняяКомпонента.ТипКода = 11;
ИначеЕсли ТипШтрихкодаВрем = "QR" Тогда
ВнешняяКомпонента.ТипКода = 16;
ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon2" Тогда
ВнешняяКомпонента.ТипКода = 14;
ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon5" Тогда
ВнешняяКомпонента.ТипКода = 15;
Иначе
ВнешняяКомпонента.АвтоТип = Истина;
КонецЕсли;
Иначе
ВнешняяКомпонента.АвтоТип = Ложь;
ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода;
КонецЕсли;
Можно сделать вывод о том какие типы в состоянии напечатать ВК - определенно.
Все средства читающие ШК передают его в 1С уже как строку. Поэтому будет ли работать зависит от настроек сканера а не 1С. А вот если вы его печатать собрались то надо смотреть что в МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) (это для УТ 11 но в 10 должно быть подобное посмотрите как, например отрисовывается ШК документа в печатной форме)
В 11 там написано:
Если ПараметрыШтрихкода.ТипКода = 99 Тогда
ТипШтрихкодаВрем = ОпределитьТипШтрихкода(ПараметрыШтрихкода.Штрихкод);
Если ТипШтрихкодаВрем = "EAN8" Тогда
ВнешняяКомпонента.ТипКода = 0;
ИначеЕсли ТипШтрихкодаВрем = "EAN13" Тогда
ВнешняяКомпонента.ТипКода = 1;
// Если код содержит контрольный символ, обязательно указываем.
ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13;
ИначеЕсли ТипШтрихкодаВрем = "EAN128" Тогда
ВнешняяКомпонента.ТипКода = 2;
ИначеЕсли ТипШтрихкодаВрем = "CODE39" Тогда
ВнешняяКомпонента.ТипКода = 3;
ИначеЕсли ТипШтрихкодаВрем = "CODE128" Тогда
ВнешняяКомпонента.ТипКода = 4;
ИначеЕсли ТипШтрихкодаВрем = "ITF14" Тогда
ВнешняяКомпонента.ТипКода = 11;
ИначеЕсли ТипШтрихкодаВрем = "QR" Тогда
ВнешняяКомпонента.ТипКода = 16;
ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon2" Тогда
ВнешняяКомпонента.ТипКода = 14;
ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon5" Тогда
ВнешняяКомпонента.ТипКода = 15;
Иначе
ВнешняяКомпонента.АвтоТип = Истина;
КонецЕсли;
Иначе
ВнешняяКомпонента.АвтоТип = Ложь;
ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода;
КонецЕсли;
Можно сделать вывод о том какие типы в состоянии напечатать ВК - определенно.
(2)С печатью штрих-кодов все нормально. Code39 я не могу считать в карточке номенклатуры. EAN13 считывается без проблем, а потом и номенклатура находится при считывание в какой-нибудь документ. Могу записать Code39 в номенклатуру вручную, но он не находится в базе - выдается сообщение "Считанный штрихкод не может быть обработан ....". Т.е. я предполагаю, что где-то установлено какое-то ограничение.
(4)Остановится отладчиком и посмотреть что происходит модуле объекта или в 11 УТ - менеджера РС Штрихкоды номенклатуры. Скорее всего именно там расположен код получения номенклатуры по ШК. в 11 УТ это ПолучитьДанныеПоШтрихкодам.
Второй вариант проверить настройки сканера - встать в блокноте и просканировать ШК. Большинство сканеров эмулируют клавиатурный набор - вам должно быть видно, что прочитал сканер.
Второй вариант проверить настройки сканера - встать в блокноте и просканировать ШК. Большинство сканеров эмулируют клавиатурный набор - вам должно быть видно, что прочитал сканер.
(6)
(6)
Остановится отладчиком и посмотреть что происходит модуле объекта
Я затрудняюсь найти это место в УТ 10.3 :(
(6)
Второй вариант проверить настройки сканера - встать в блокноте и просканировать ШК. Большинство сканеров эмулируют клавиатурный набор - вам должно быть видно, что прочитал сканер.
Сканер в тесте и в текстовый файл читает все правильно.
(9)руками не даст т.к по умолчанию в Процедура НовыйШтрихкод(Кнопка)
создается ЕАН13 (жестко задано в коде) :
ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
ТекЗапись.Владелец = Ссылка;
ТекЗапись.ЕдиницаИзмерения = ЕдиницаХраненияОстатков;
ТекЗапись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
ТекЗапись.Качество = Справочники.Качество.Новый;
можно дописать что если
ТекЗапись.Штрихкод = РаботаСТорговымОборудованием.СформироватьШтрихКод....
Если стрДлина(ТекЗапись.Штрихкод) <> 13 тогда
ТекЗапись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 ;
(Рассматривать как наброкок!!!!)
создается ЕАН13 (жестко задано в коде) :
ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
ТекЗапись.Владелец = Ссылка;
ТекЗапись.ЕдиницаИзмерения = ЕдиницаХраненияОстатков;
ТекЗапись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
ТекЗапись.Качество = Справочники.Качество.Новый;
можно дописать что если
ТекЗапись.Штрихкод = РаботаСТорговымОборудованием.СформироватьШтрихКод....
Если стрДлина(ТекЗапись.Штрихкод) <> 13 тогда
ТекЗапись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 ;
(Рассматривать как наброкок!!!!)
см
// Обработчик события ПриНачалеРедактирования ТЧ "Штрихкоды".
//
Процедура ШтрихкодыПриНачалеРедактирования(Элемент, НоваяСтрока)
ТекущаяСтрока = Элемент.ТекущиеДанные;
Если НоваяСтрока Тогда
ТекущаяСтрока.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
ТекущаяСтрока.Владелец = Ссылка;
ТекущаяСтрока.ЕдиницаИзмерения = ЕдиницаХраненияОстатков;
ТекущаяСтрока.Качество = Справочники.Качество.Новый;
КонецЕсли;
КонецПроцедуры // ШтрихкодыПриНачалеРедактирования()
// Обработчик события ПриНачалеРедактирования ТЧ "Штрихкоды".
//
Процедура ШтрихкодыПриНачалеРедактирования(Элемент, НоваяСтрока)
ТекущаяСтрока = Элемент.ТекущиеДанные;
Если НоваяСтрока Тогда
ТекущаяСтрока.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
ТекущаяСтрока.Владелец = Ссылка;
ТекущаяСтрока.ЕдиницаИзмерения = ЕдиницаХраненияОстатков;
ТекущаяСтрока.Качество = Справочники.Качество.Новый;
КонецЕсли;
КонецПроцедуры // ШтрихкодыПриНачалеРедактирования()
(15)Действительно, при начале редактирования устанавливается тип EAN13 и даже не дает внести больше 13 символов. Но дальше я изменяю тип на Code39 и прекрасно заполняю 36 символов вручную. Но мне хотелось с помощью сканера.
А пытаюсь заполнить так: встаю на соответствующее поле и сканирую штрихкод. С EAN13 так срабатывает.
А пытаюсь заполнить так: встаю на соответствующее поле и сканирую штрихкод. С EAN13 так срабатывает.
см
// Функция осуществляет обработку считывания штрихового кода, который не был
// зарегистрирован.
//
// Параметры:
// Штрихкод - <Строка>
// - Считанный код.
//
// ТипКода - <ПланыВидовХарактеристикСсылка.ТипыШтрихкодов>
// - Тип штрихкода. Пустая ссылка в случае, если тип определить не
// представляется возможным.
//
// СШК - <Строка>
// - Идентификатор сканера штрихкода, с которым связано данное
// событие.
//
// Возвращаемое значение:
// <Булево> - Данная ситуация обработана.
//
Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК) Экспорт
Если ЭтоНовый() И РаботаСДиалогами.ЗаписатьНовыйОбъектВФорме(ЭтаФорма) Тогда
ЭлементыФормы.Штрихкоды.ДобавитьСтроку();
КонецЕсли;
ТекущиеДанные = ЭлементыФормы.Штрихкоды.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Предупреждение("Не выбрана строка таблицы штрихкодов, для которой регистрируется штрихкод.");
Возврат Истина;
КонецЕсли;
ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(ТекЗапись, ТекущиеДанные);
ТекЗапись.Прочитать();
ТекЗапись.ТипШтрихкода = ТипКода;
ТекЗапись.Штрихкод = ШтрихКод;
Попытка
ТекЗапись.Записать();
Исключение
КонецПопытки;
Возврат Истина;
КонецФункции // СШКНеизвестныйКод()
надо дописать в начале
если стрдлина(Штрих Код) = 36 тогда
ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 ;
конецесли;
// Функция осуществляет обработку считывания штрихового кода, который не был
// зарегистрирован.
//
// Параметры:
// Штрихкод - <Строка>
// - Считанный код.
//
// ТипКода - <ПланыВидовХарактеристикСсылка.ТипыШтрихкодов>
// - Тип штрихкода. Пустая ссылка в случае, если тип определить не
// представляется возможным.
//
// СШК - <Строка>
// - Идентификатор сканера штрихкода, с которым связано данное
// событие.
//
// Возвращаемое значение:
// <Булево> - Данная ситуация обработана.
//
Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК) Экспорт
Если ЭтоНовый() И РаботаСДиалогами.ЗаписатьНовыйОбъектВФорме(ЭтаФорма) Тогда
ЭлементыФормы.Штрихкоды.ДобавитьСтроку();
КонецЕсли;
ТекущиеДанные = ЭлементыФормы.Штрихкоды.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Предупреждение("Не выбрана строка таблицы штрихкодов, для которой регистрируется штрихкод.");
Возврат Истина;
КонецЕсли;
ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(ТекЗапись, ТекущиеДанные);
ТекЗапись.Прочитать();
ТекЗапись.ТипШтрихкода = ТипКода;
ТекЗапись.Штрихкод = ШтрихКод;
Попытка
ТекЗапись.Записать();
Исключение
КонецПопытки;
Возврат Истина;
КонецФункции // СШКНеизвестныйКод()
надо дописать в начале
если стрдлина(Штрих Код) = 36 тогда
ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 ;
конецесли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот