Имя: Пароль:
1C
1С v8
Штрихкод складской ячейки в КА 2.4
, , ,
0 user997283
 
15.06.18
15:39
Доброго дня.

За правильный и полезный ответ готовы предложить финансовое вознаграждение.

Внедряем в фирме конфигурацию 1С:Комплексная автоматизация 2, стоит последний релиз 2.4.3.170, база типовая. Используем адресный склад и ордерную схему. Столкнулись со следующей проблемой.

У нас есть складская ячейка. (см. вложение «Складская ячейка»)
Мы распечатали ее штрихкод встроенной типовой обработкой «Печать этикеток», которая открывается непосредственно с формы ячейки по кнопке «печать». (см вложение «Штрихкод ячейки»).

В процессе работы в обработке "Рабочее место работника склада" система просит отсканировать штрихкод ячейки. И она ожидает увидеть номер Л02-03-Я1-1. (См.вложение «Сканирование ШК ячейки») Если с клавиатуры ввести строку «Л02-03-Я1-1», программа ее принимает, находит ячейку и предлагает перейти к следующему шагу (сканировать товар), то есть все ок.

А распечатанный штрихкод содержит нечто совсем иное, а именно строку "9507420177192455137943445267655225560". Судя по коду программы, при распечатке в штрихкод кодируется ссылка на объект ячейки, а вовсе не код элемента справочника.

В форме обработки ПечатьЭтикетокИЦенников:

&НаСервереБезКонтекста
   Функция ЧисловойКодПоСсылке(Ячейка)
   Возврат ШтрихкодированиеПечатныхФорм.ЧисловойКодПоСсылке(Ячейка);
КонецФункции

В общем модуле ШтрихкодированиеПечатныхФорм:

Функция ЧисловойКодПоСсылке(Ссылка) Экспорт
   ШестнадчатиричноеЧисло = СтрЗаменить(Строка(Ссылка.УникальныйИдентификатор()),"-","");
   Возврат ПреобразоватьИзШестнадцатиричнойСистемыСчисленияВДесятичноеЧ­исло(ШестнадчатиричноеЧисло);
КонецФункции

При сканировании этого штрихкода (как и при вводе с клавиатуры любого заведомо неверного набора символов) обработка пишет "ошибка", см вложение ("считан неверный штрихкод").

Штрихкоды ячеек уже распечатаны и расклеены на складе, переделывать обработку печати (чтобы в штрихкод писала код, а не ссылку) и переклеивать этикетки желания ни у кого нет. Нужно переписать обработку "Рабочее место работника склада", чтобы она считываемый штрихкод (длинный набор цифр) научилась связывать с ячейкой. Этот набор цифр надо где-то хранить, то есть, видимо, придется создать новый реквизит в спр. "Складские ячейки".

Если кто сталкивался с подобной проблемой, можете ли указать что именно и в каком месте (в какой функции/строке кода) нужно изменить в этой обработке?

Картинки кликабельны

[url=http://pixs.ru/showimage/Skladskaya_5498884_30387190.png][img]http://i6.pixs.ru/thumbs/1/9/0/Skladskaya_5498884_30387190.jpg[/img][/url]

[url=http://pixs.ru/showimage/SHtrihkody_8846794_30387193.jpg][img]http://i6.pixs.ru/thumbs/1/9/3/SHtrihkody_8846794_30387193.jpg[/img][/url]

[url=http://pixs.ru/showimage/Skanirovan_7342692_30387195.png][img]http://i6.pixs.ru/thumbs/1/9/5/Skanirovan_7342692_30387195.jpg[/img][/url]

[url=http://pixs.ru/showimage/schitannev_3586975_30387197.png][img]http://i6.pixs.ru/thumbs/1/9/7/schitannev_3586975_30387197.jpg[/img][/url]
1 user997283
 
15.06.18
15:42
2 user997283
 
15.06.18
15:42
3 Cyberhawk
 
15.06.18
15:46
"указать что именно и в каком месте (в какой функции/строке кода) нужно изменить в этой обработке?" // Смех да и только
4 anatoly
 
15.06.18
15:47
(0) "Нужно переписать обработку "Рабочее место работника склада", чтобы она считываемый штрихкод (длинный набор цифр) научилась связывать с ячейкой. Этот набор цифр надо где-то хранить, то есть, видимо, придется создать новый реквизит в спр. "Складские ячейки"."

необязательно. работы на пару часов - неужели своих прогов нет?

но совсем непонятно, зачем вы распечатали этикетки ячеек на ВЕСЬ склад, до того как проверили как они сканируются??..
5 user997283
 
15.06.18
16:02
работы на пару часов - а можно уточнить, что именно вы предполагаете делать?

"зачем вы распечатали этикетки ячеек на ВЕСЬ склад, до того как проверили как они сканируются?" - то, что они в принципе сканируются, то есть штрихкод распечатан нормально, проверили. Не ожидали того, что программа распечатает не то, что сама потом попросит считать.
6 Genayo
 
15.06.18
16:16
(0) А вы уверены, что у вас сканер считывает именно то, что напечатано на этикетке? В УТ вообще-то есть функция, которая по этому представлению ссылки ищет элемент.
7 user997283
 
15.06.18
16:38
"А вы уверены, что у вас сканер считывает именно то, что напечатано на этикетке?" - да, совершенно точно

"В УТ вообще-то есть функция, которая по этому представлению ссылки ищет элемент." - а не затруднит ли скинуть сюда эту функцию, если вдруг есть под рукой?

Все равно остается вопрос где именно в рабочем месте склада надо переписать алгоритм, чтобы он не по коду искал, а  искал по гуиду.
8 Злопчинский
 
15.06.18
16:49
впендюрь в код элемента его гуид.
9 user997283
 
15.06.18
17:06
"впендюрь в код элемента его гуид" - первое, что пришло в голову. И сразу всплыли нюансы:

У кода ограничение длины 19 символов, количество цифр в строке-штрихкоде колеблется 37-38 символов. Значит в коде в конце у некоторых будет пробел. Его надо программно добавлять к считываемому шк - где-то в коде обработки в момент считывания шк - вопрос где это самое место?

У справочника задано "основное представление в виде кода", из-за этого вов всех документах вместо читаемого адреса ячейки начинает выводиться эта длинная строка цифр. В том числе в самом рабочем месте склада, то есть кладовщик будет видеть "просканируйте ячейку 9456431234576746...". Нужно тогда править это место, чтобы оно выводило "наименование", а не "код" - и опять вопрос - где это место в коде?
10 lodger
 
15.06.18
18:21
откройте форму которую показали в 1 скрине (2)
и посмотрите получает ли он обработку оповещения и что в ней приходит (9456431234576746 или еще какой отлуп)?
11 user997283
 
15.06.18
18:52
В обработку оповещения не заходит вообще
12 yzimin
 
15.06.18
20:55
Вариант 1.
Самое простое решение без доработок будет сгенерировать где-то в стороннем софте (или он-лайн генераторе ШК) нужные ШК. Вы же всё равно один раз их сгенерировали, сохранили в архив на случай повреждений и забыли.

Вариант 2.
Возможно такое поведение системы связано в тем, что ШК не умеет генерироваться по русским символам
Замените Л02-03-Я1 на Z02-03-1
13 yzimin
 
15.06.18
21:07
Вариант 3.

Встроить код в обработку

&НаКлиенте
Функция СсылкаНаЭлементСпискаПоШтрихкоду(Штрихкод)
    
    Менеджеры = Новый Массив();
    Менеджеры.Добавить(ПредопределенноеЗначение("Справочник.СкладскиеЯчейки.ПустаяСсылка"));
    Возврат ШтрихкодированиеПечатныхФормКлиент.ПолучитьСсылкуПоШтрихкодуТабличногоДокумента(Штрихкод, Менеджеры);
    
КонецФункции
14 user997283
 
11.07.18
18:11
Всем большое спасибо за ответы!

Из ситуации в итоге вышли следующим образом (без переклейки шк на складе).

В общем модуле РабочееМестоРаботникаСкладаСервер в процедуре ПриСканированииЯчейки изменили:

Для Каждого СтрокаТоваров Из ТоварыДляСканирования Цикл
   //Если ВРег(СтрокаТоваров.КодЯчейки) = ВРег(ШтрихкодЯчейки) Тогда //это закомментировали
   Если ВРег(СтрокаТоваров.ШтрихкодЯчейки) = ВРег(ШтрихкодЯчейки) Тогда //а это добавили
      Ячейка = СтрокаТоваров.Ячейка;
      Прервать;
   КонецЕсли;
КонецЦикла;


А в обработке РабочееМестоРаботникаСклада на всех формах у реквизита формы ШтрихкодПараметраСканирования изменили длину на 45 символов.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn