|
Штрих кодирование документов | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
13.08.16
✎
08:50
|
При формировании штрих-кода документа в 1С используется ли какой-то стандарт (содержащий тип, номер, дату), или каждый свое лепит? Если да, подскажите функцию из БСП
|
|||
1
Mikhail Volkov
13.08.16
✎
20:28
|
Значит каждый свое лепит...
|
|||
2
Звездец
13.08.16
✎
20:30
|
Самому в бсп посмотреть слабо? Или в типовых
|
|||
3
Garykom
гуру
13.08.16
✎
20:31
|
Есть разные виды документов и разные системы штрих-кодирования доков.
Для начала какая задача то изначальная, для чего хотим ШКить? |
|||
4
Звездец
13.08.16
✎
20:34
|
Наверноехочет поиск дока по шк. Так тут смотря куда внедрять, иногда проще свою написать чем с бсп разбираться( если конфа не на ней). В этом случае всего то паруфункций понадобится для минимального функционала(3)
|
|||
5
Звездец
13.08.16
✎
20:35
|
Сори, кажется пробел приболел(4)
|
|||
6
Armando
13.08.16
✎
22:04
|
(0) На прошлой работе УникальныйИдентификатор() сжимал до 20 символов, из полученного набора символов делал ШК Code 128
|
|||
7
Mikhail Volkov
14.08.16
✎
04:30
|
(4) УПП, точнее Рарус Управление птицефабрикой, с встроенной БИТ Финанс, и чего-то еще. В ней нашел только РаботаСТорговымОборудованием.СформироватьШтрихКод(); но мне это похоже не пригодится...
Во внешней печатной форме ("Данная форма печатается только из документов Реализация товаров и услуг; Перемещение товаров; Передача в производство") нашел такой фрагмент: строкадаты = формат(день(СсылкаНаОбъект.дата), "ЧЦ=2; ЧН=; ЧВН=") + формат(Месяц(СсылкаНаОбъект.дата), "ЧЦ=2; ЧН=; ЧВН=") + прав(строка(год(СсылкаНаОбъект.дата)),2); строканомера = ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект); штрихкод = прав("0000000000" + "RR" + строкадаты + прав("0000000" + строканомера, 9), 22); // 22 символа Это только для ПеремещениеТоваров. Структура этого штрих-кода понятна: 6 цифр отвели на дату, 9 - на сам номер (префикс номера 2 символа отбросили за ненадобностью - одна организация). Полагаю "RR" означает "Перемещение товаров". Итого задействовано 17 символов из 22. По поводу "RR" - это какой-то стандарт, или так кому-то вздумалось? Если да, то какие символами кодируют: Поступление/Реализация товаров и услуг, Акт взвешивания (возможно понадобится Заказ покупателя)? |
|||
8
Лодырь
14.08.16
✎
05:43
|
(7) Кому то вздумалось.
|
|||
9
В тылу врага
14.08.16
✎
07:13
|
(7) каждый сам лепит
СообщениеШК = "01/"+ОбщегоНазначения.КраткийНомер(Реализация.Организация.Код)+"/"+?(ЗначениеЗаполнено(Филиал),ОбщегоНазначения.КраткийНомер(Филиал.Код),"0") +"/"+ОбщегоНазначения.КраткийНомер(Реализация.Номер)+"/"+Формат(Год(Реализация.Дата)%100,"ЧЦ=2; ЧВН="); Функция КраткийНомер(ИсходныйНомер) Экспорт Номер = СокрЛП(ИсходныйНомер); ЗначащиеЦифры = "123456789"; Пока Найти(ЗначащиеЦифры,Лев(Номер,1))=0 Цикл Номер = Сред(Номер,2); КонецЦикла; Возврат Номер; КонецФункции // () |
|||
10
Mikhail Volkov
14.08.16
✎
09:34
|
(8) Похоже на то, что никаких стандартов нет по штриховке документов.
(3) Есть так называемая весовая, через которую въезжаю/выезжают машины с грузом, и не только, внутренние перевозки так же через нее. Ее задача взвесить машину до и после погрузки/разгрузки. В этой весовой сидит бабулька, аккуратно заполняет свой журнал, и ставит штампики в бумажки, которые ей суют водители. К сожалению, с компьютером не дружит. Хотя почти во всех документах с товарной частью УПП/ПФ есть ссылка на Акт взвешивания, печатная форма которого является пропуском на въезд/выезд. Вот решили штриховать документы, чтобы бабушка делала только "пик" сканером. Обработка находила нужный товарный документ, смотрела ссылку на Акт взвешивания. Если пустая - создавала новый Акт взвешивания, с "Микросима" вписывала туда 1-й замер веса, если не пустая, то - 2-й замер. Задача простая, но хотелось по максимуму задействовать имеющийся функционал УПП. На "пик" должна реагировать обработчик внешнего события ВнешнееСобытие(Источник, Событие, Данные). Куда лучше вставить свою функцию поиска документа по считанному штрих-коду? |
|||
11
Vaflya
14.08.16
✎
10:31
|
(10) если база одна, то РаботаСТорговымОборудованием.СформироватьШтрихКод() как раз пригодится, там формируется штрих-код-счетчик (сквозной по регистру, если не ошибаюсь) и записывается в регистр со ссылкой на источник, ничего изобретать не надо - в шк документа этот счетчик, при считывании запрос к регистру и получаем ссылку. Что значит где разместить процедуру поиска? где по-кайфу там и назначить.
с 10 надо было начинать, хотя тут что то не так "отя почти во всех документах с товарной частью УПП/ПФ есть ссылка на Акт взвешивания, печатная форма которого является пропуском на въезд/выезд. Вот решили штриховать документы, чтобы бабушка делала только "пик" сканером. Обработка находила нужный товарный документ, смотрела ссылку на Акт взвешивания. Если пустая - создавала новый Акт взвешивания" печатная форма акта взвешивания - пропуск, но при сканировании документ, из которого напечатана эта форма, может оказаться несуществующим, не сходится как то |
|||
12
Web00001
14.08.16
✎
10:53
|
(10)В ту форму, где она будет "пикать" сканером.
(11)Зачем хранить информацию в базе, если необходимости в ней нет? Штрихкод 13цифр - 12 цифр полезной нагрузки. 4цифры под дату, 8 под номер(или 7 если нужно использовать префиксы, например если у имеется РИБ) Из комбинации номер+дата получаем уникальный штрихкод, который и печатаем на накладной. Из даты по существу нужен только год, но в целом мне так кажется надежнее. |
|||
13
Vaflya
14.08.16
✎
11:11
|
(12) еще нужен тип документа + хочется по максимуму задействовать имеющийся функционал УПП, это "типовой" вариант штрихкодирования
можно и в код зашить все что надо, код128 30 или 40 символов принимает, но с регистром относительно меньше мороки, объем будет сравнительно мизерным (если взять например документы производства, то записи по шк - капля в море) |
|||
14
Mikhail Volkov
14.08.16
✎
12:40
|
(11) Да, может оказаться несуществующим. Простейший вариант - внутреннее перемещение: на птичнике понасажали птичек в клетки, посчитали их по головам, создали Перемещение товара без веса, повезли в забой. Приехали на весовую, "пикнули", нашли это перемещение, в нем пустая ссылка на Акт взвешивания. Создали новый, в нем зафиксировали вес брутто (с ТС). Возвращаемся из забоя с пустыми клетками, снова заезжаем на весовую, "пикаем" - находим наше перемещение, по нему наш Акт взвешивания. В него фиксируем 2-й вес пустого ТС, а в перемещение вес нетто: разницу замеров.
По поводу (10) автор статьи http://expert.chistov.pro/public/79415/ советует: В обработку ТОСервер в модуль объекта в тело функции ОбработатьСобытиеСШК вставляете следующий код: Если Лев(ШК,3)="RTU" Тогда ТипДокумента="РеализацияТоваровУслуг"; ИначеЕсли Лев(ШК,3)="PTU" Тогда ТипДокумента="ПоступлениеТоваровУслуг"; ИначеЕсли Лев(ШК,3)="PER" Тогда ТипДокумента="ПеремещениеТоваров"; Иначе Обработка.СобытиеОбработано(Объект); Возврат Результат; КонецЕсли; Дата=Дата(2000+Число(Сред(ШК,8,2)), //Год Число(Сред(ШК,6,2)), //Месяц Число(Сред(ШК,4,2))); //День НомерДок=Сред(ШК,10); Результат = Документы[ТипДокумента].НайтиПоНомеру(НомерДок, Дата); Кстати, эти RTU, PTU, PER - тоже придуманы автором, или из какого-то стандарта? |
|||
15
Web00001
14.08.16
✎
13:41
|
(13)Да тут вроде тип документа известен. Если использовать ean128 тот тут действительно ограничений нет и смысла хранить штрихкод тем более нет, можно в штрихкод запихать ход уид как в (6) хоть вариант из (14)
|
|||
16
Джинн
14.08.16
✎
13:56
|
Запихайте в строку чемодан информации - идентификаторы контрагентов, документа, количество строк, сумму и т.п. и натравите на нее хэш-функцию. Получившийся хэш используйте в качестве штрихкода. Это обезопасит от подмены документов особо умными.
|
|||
17
Злопчинский
14.08.16
✎
13:59
|
(16) +100!
в том случае если нужна именно ИДЕНТИФИКАЦИЯ документов (идентифкация - установление факта соответствия штрихкодированного печатного дока с доком в базе). В ином случае - давайте это называть не "штрихкодированием документов", а как-то иначе... |
|||
18
Злопчинский
14.08.16
✎
14:01
|
(16) сумму и колво строк - плохо, разные множества дадут одинаковый результат. по сути надо штрихкодировать весь объем информации, влияющий на "проведение" (то есть отражение в учете) документа - а это уже посложнее...
|
|||
19
Зая Бусечка
14.08.16
✎
14:07
|
Я делала двумя способами.
Или внутренний GUID в code128, либо внутренний ИД из внешней базы. |
|||
20
Vaflya
14.08.16
✎
14:45
|
(15) так в (14) и написано, что тип документа - хз, один из трех. Пропуск - не акт взвешивания, как раньше писали, а накладная, ее и сканируют. Если нет описания типа документа, где искать? С ГУИДом та же проблема (хотя в одной из групп символов вроде описание типа, но это того не стоит). Или я с пятницы в сегодня не той ногой перешел?
|
|||
21
Vaflya
14.08.16
✎
14:57
|
+20 По поводу "RR" - это какой-то стандарт, или так кому-то вздумалось? Если да, то какие символами кодируют: Поступление/Реализация товаров и услуг, Акт взвешивания (возможно понадобится Заказ покупателя)?
Кстати, эти RTU, PTU, PER - тоже придуманы автором, или из какого-то стандарта? Это разве не о том, что кодировать ТС хочет накладные трех-четырех видов? Хотя это ничего не меняет, можно и в шк засунуть, только с типом дока, потом разбирать строку посимвольно |
|||
22
ГеннадийУО
14.08.16
✎
14:59
|
(0) Делайте двумерный штрихкод, туда хоть черта лысого запихать можно :)
|
|||
23
Vaflya
14.08.16
✎
15:04
|
(22) этаж и считыватели надо, проблема то на час с двумя перекурами
|
|||
24
Mikhail Volkov
14.08.16
✎
17:03
|
(22) Длину ШК наверное выбирают в разумных пределах. В (7) выбрали 22, хотя используют 17. В (14) - 20.
Кстати, контрольный символ добавляется автоматически, или самому надо заботиться? В функции ОбработатьСобытиеСШК() ШК читается ШК без него? |
|||
25
Остап Сулейманович
14.08.16
✎
17:11
|
(24) "ШК читается ШК без него?"
1. Контрольное число используется не во всех типах ШК. Некоторые используют страт/стоп символы. Например Code 39. 2. Если используется контрольное число - сканер его на хост обычно не передает. Он его сам вычисляет и сравнивает с принятым. Если совпало - данные (без контрольного числа) передаются хосту. |
|||
26
Злопчинский
14.08.16
✎
17:15
|
(25) ну нещнаю
Еан13 почему то в егда приходит не 12 а 13 символов |
|||
27
Злопчинский
14.08.16
✎
17:16
|
(25) кстати
Вот в code39 стартстопы надо самом добавлять и уже такую строку подсовывать для печати или достаточно только чистый шк передавать в компоненту печати ? |
|||
28
Остап Сулейманович
14.08.16
✎
17:33
|
(27) Фиг его знает. Нужно пробовать. И нужно проверить установку типа ШК. А то как бы не иметь ввиду code39, а из-за автоопределея типа получить EAN.
|
|||
29
Злопчинский
14.08.16
✎
18:11
|
(28) фиг его знает
Я коде39 пользую Формирую простой шк и подсовываю в баркодеоцикс Вроде нормально работает |
|||
30
Mikhail Volkov
14.08.16
✎
18:31
|
(25) Вроде code128 используется, тогда "данные (без контрольного числа) передаются хосту"?
Еще в (7) фрагменте отбросили префикс номера документа. Может code128 кириллицу не понимает? Если да, заменю префикс последними цифрами кода организации. |
|||
31
Это_mike
14.08.16
✎
18:39
|
(26) это зависит от настроек сканера - "керкдавать КЦ в составе ШК"
|
|||
32
Vaflya
14.08.16
✎
18:39
|
(27) зачем это все, написал что надо, типа вид документа, дата, номер, может еще чего надо и передал, напечатал, потом считал, разобрал строку и рад. При внутреннем использовании ваще без разницы на кс и прочее, сам себе молодец
|
|||
33
Mikhail Volkov
14.08.16
✎
18:50
|
> Для вывода ШК на печатную форму достаточно в макет печатной формы добавить картинку СОМ-объектом ШК
Это как? Если придется свою рисовать... |
|||
34
Лодырь
14.08.16
✎
19:24
|
(16) Я номер версии документа в ШК запихиваю. Имхо нет смысла особо заморачиваться с хорошей хешфункцией.
А для формирования одномерного кода проще всего юзать шрифт. |
|||
35
hhhh
14.08.16
✎
21:24
|
(33) зачем рисовать? скопировать готовую можно, в типовых много этих форм.
|
|||
36
Mikhail Volkov
15.08.16
✎
03:35
|
(35) Смотрю макет готовой рабочей внешней формы, но картинку не вижу!?
|
|||
37
IlyaSR
15.08.16
✎
10:40
|
стандартом считается УникальныйИдентификатор документа
|
|||
38
Mikhail Volkov
18.08.16
✎
04:16
|
+ (36) Ну все же, возникла необходимость вставить штрих-код в другие печатные формы документов. Как? Или его картинка не в макет вставляется, а чисто программно?
|
|||
39
Злопчинский
18.08.16
✎
04:20
|
(38) скопируй из одного макета объект штрихкода в другой макет...?
|
|||
40
Mikhail Volkov
18.08.16
✎
16:51
|
(39) В том то и дело, что в макете рабочей формы его нет!? Чисто программно эта картинка может прописана?
|
|||
41
trooba
18.08.16
✎
16:59
|
(40) Открой для себя 1CBarCode.exe или шрифт от гнивц
|
|||
42
Злопчинский
18.08.16
✎
19:37
|
(40) ШК можно вообще рисовать без всего. одним макетом - чередуя закрашенные/незакрашенные ячейки - посмотреть можно на ИС
|
|||
43
Джинн
18.08.16
✎
19:40
|
(37) У кого считается?
|
|||
44
Mikhail Volkov
20.08.16
✎
18:28
|
(41) О чудо! Скачал 1CBarCode.exe, установил на свой комп, теперь рисунок штрих-кода виден в макете.
|
|||
45
Torquader
20.08.16
✎
18:35
|
(37) Если бы уникальный идентификатор где-то присутствовал на печатной форме документа, то его можно было бы считать стандартом, а так - это внутренний идентификатор документа в конкретной базе. При создании документа в другой базе (не переносе, а именно создании оператором) мы получаем другой внутренний идентификатор.
Если мы делаем штрих-кодирование для себя, то регистр с числовым номером и ссылкой на документ позволит использовать более короткие штрих-коды, а если мы хотим обмениваться с кем-то данными, то в штрих-код нужно включать идентификатор организации, а также номер и выходные данные (дата и т.п.) для документа. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |