Была поставлена задача на предприятии, где ежедневно выписывается по 300-500 накладных организовать штрихкодирование документов, для более удобной работы с бумажным носителем в дальнейшем. И вот результат…
Конфигурация «Торговля и склад». Хотелось сделать как можно проще и быстрее, и в тоже время надежно. На решение задачи ушло 1,5 часа. И так приступим….
У нас будет использоваться штрихкод EAN13. Создаем общий реквизит документов
Тип — «Строка», длина — 13, отбор по реквизиту
Добавляем в глобальный модуль процедуру
//******************************************************************************
// глСформироватьШтрихкодДокумента(Конт)
//
// Параметры:
// Конт - контекст документа для которого необходимо сформировать штрихкод
// EAN13- реквизит документа содержащий штрихкод
// Возвращаемое значение:
// Нет
//
// Описание:
// На основании номера документа и вида документа формирует штрихкод в формате
// EAN
//
Процедура глСформироватьШтрихкодДокумента(Конт, EAN13) Экспорт
Если ПустаяСтрока(EAN13) = 1 Тогда
ПрефиксыДокументов = СоздатьОбъект("СписокЗначений");
ПрефиксыДокументов.ДобавитьЗначение("001", "Реализация");
ПрефиксыДокументов.ДобавитьЗначение("002", "СчетФактураВыданный");
// и т.д
КодДокумента = СокрЛП(Прав(Конт.НомерДок,7));
КодВидаДокумента = ПрефиксыДокументов.Получить(Конт.Вид());
Префикс = Прав(ДатаГод(Конт.ДатаДок), 2);
ИспКолво = 10;
Штрихкод = СимволыВЦифры(Прав(СокрЛП(КодДокумента+КодВидаДокумента), ИспКолво));
Штрихкод = Префикс + глДополнитьСтрокуЛ(Штрихкод, "0", ИспКолво);
EAN13 = Штрихкод + глКонтрольныйСимволEAN(Штрихкод, 13);
КонецЕсли;
КонецПроцедуры // глСформироватьШтрихкодДокумента()
После этого в документы, которым будут присваиваться штрихкоды добавляем вызов
вышеописанного в процедуру «ПриЗаписи()»
Процедура ПриЗаписи()
глСформироватьШтрихкодДокумента(Контекст, EAN13);
КонецПроцедуры
В результате при первой записи документа ему будет присвоен штрихкод состоящий
из следующих блоков:
- год документа (2 символа);
- семь цифр справа от номера документа;
- код вида документа (3 символа);
- контрольный символ;
Осталось только вставить в печатную форму объект ActiveBarcode и настроить необходимые свойства у него.
А вот и результат
Делал подобное. У Вас не учтен многофирменный учет. При таком алгоритме будут получаться одинаковые штрих-коды для документов одного вида у которых различается только префикс номера.
Ничего нового…
Sk0rp, да действительно, поэтому и простое, хотя учесть многофирменность здесь тоже достаточно легко
ИМХО, а как поиск документов организовать? 🙁
Завтра допишу про этот момент, если интересно
интересно и в 7ке и в 8ке интересно
чей то и не завтра и уже послезавтра, наверное нехватка времени? 🙁
Жду, у самого пока не получается, документ выглядит солидно со штрихом, не бросили ли вы свое дело?.
Нет, не бросил, просто как правильно заметили, банальная нехватка времени. Поиск документов опубликовал (см. статью «Простое штрихкодирование документов. Продолжение…»)
Как идея :
Вместо кода «ПрефиксыДокументов = СоздатьОбъект(«СписокЗначений»);
ПрефиксыДокументов.ДобавитьЗначение(«001», «Реализация»);
ПрефиксыДокументов.ДобавитьЗначение(«002», «СчетФактураВыданный»);
// и т.д»
можно использовать порядок вида документа в метаданных
А почему бы и нет. Плюс вид документа будет из двух символов, а высвободившийся отдать под префикс собственному юр.лицу — чтобы учесть многофирменность
Пингбэк: Простое штрихкодирование документов. Продолжение… | Александр Шкураев