Имя: Пароль:
1C
1С v8
Штрих кодирование документов
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) Если бы уникальный идентификатор где-то присутствовал на печатной форме документа, то его можно было бы считать стандартом, а так - это внутренний идентификатор документа в конкретной базе. При создании документа в другой базе (не переносе, а именно создании оператором) мы получаем другой внутренний идентификатор.
Если мы делаем штрих-кодирование для себя, то регистр с числовым номером и ссылкой на документ позволит использовать более короткие штрих-коды, а если мы хотим обмениваться с кем-то данными, то в штрих-код нужно включать идентификатор организации, а также номер и выходные данные (дата и т.п.) для документа.
Ошибка? Это не ошибка, это системная функция.