Простое штрихкодирование документов

1С Простое штрихкодирование документовБыла поставлена задача на предприятии, где ежедневно выписывается по 300-500 накладных организовать штрихкодирование документов, для более удобной работы с бумажным носителем в дальнейшем. И вот результат…

Конфигурация «Торговля и склад». Хотелось сделать как можно проще и быстрее, и в тоже время надежно. На решение задачи ушло 1,5 часа. И так приступим….

У нас будет использоваться штрихкод EAN13. Создаем общий реквизит документов

Общий реквизит документов "EAN13"

Тип — «Строка», длина — 13, отбор по реквизиту

Добавляем в глобальный модуль процедуру

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//******************************************************************************
// глСформироватьШтрихкодДокумента(Конт)
//
// Параметры:
//  Конт - контекст документа для которого необходимо сформировать штрихкод
//    EAN13- реквизит документа содержащий штрихкод
// Возвращаемое значение:
//  Нет                
//
// Описание:
//  На основании номера документа и вида документа формирует штрихкод в формате
//  EAN
//
Процедура глСформироватьШтрихкодДокумента(Конт, EAN13) Экспорт
 
   Если ПустаяСтрока(EAN13) = 1 Тогда
   
      ПрефиксыДокументов = СоздатьОбъект("СписокЗначений");
      ПрефиксыДокументов.ДобавитьЗначение("001", "Реализация");
      ПрефиксыДокументов.ДобавитьЗначение("002", "СчетФактураВыданный");               
      // и т.д
      КодДокумента        = СокрЛП(Прав(Конт.НомерДок,7));
      КодВидаДокумента    = ПрефиксыДокументов.Получить(Конт.Вид());
 
      Префикс = Прав(ДатаГод(Конт.ДатаДок), 2);
 
      ИспКолво = 10;
      Штрихкод = СимволыВЦифры(Прав(СокрЛП(КодДокумента+КодВидаДокумента), ИспКолво));
      Штрихкод = Префикс + глДополнитьСтрокуЛ(Штрихкод, "0", ИспКолво);
      EAN13 = Штрихкод + глКонтрольныйСимволEAN(Штрихкод, 13);
 
   КонецЕсли;
 
КонецПроцедуры // глСформироватьШтрихкодДокумента()

После этого в документы, которым будут присваиваться штрихкоды добавляем вызов
вышеописанного в процедуру «ПриЗаписи()»

1
2
3
Процедура ПриЗаписи()
   глСформироватьШтрихкодДокумента(Контекст, EAN13);
КонецПроцедуры

В результате при первой записи документа ему будет присвоен штрихкод состоящий
из следующих блоков:

  1. год документа (2 символа);
  2. семь цифр справа от номера документа;
  3. код вида документа (3 символа);
  4. контрольный символ;

Осталось только вставить в печатную форму объект ActiveBarcode и настроить необходимые свойства у него.

А вот и результат ;-)

Штрихкод на печатной форме

12 комментариев к записи «Простое штрихкодирование документов»

  1. Делал подобное. У Вас не учтен многофирменный учет. При таком алгоритме будут получаться одинаковые штрих-коды для документов одного вида у которых различается только префикс номера.

  2. Sk0rp, да действительно, поэтому и простое, хотя учесть многофирменность здесь тоже достаточно легко

  3. чей то и не завтра и уже послезавтра, наверное нехватка времени? 🙁

  4. Жду, у самого пока не получается, документ выглядит солидно со штрихом, не бросили ли вы свое дело?.

  5. Как идея :

    Вместо кода «ПрефиксыДокументов = СоздатьОбъект(«СписокЗначений»);

    ПрефиксыДокументов.ДобавитьЗначение(«001», «Реализация»);

    ПрефиксыДокументов.ДобавитьЗначение(«002», «СчетФактураВыданный»);
    // и т.д»

    можно использовать порядок вида документа в метаданных

    • А почему бы и нет. Плюс вид документа будет из двух символов, а высвободившийся отдать под префикс собственному юр.лицу — чтобы учесть многофирменность

  6. Пингбэк: Простое штрихкодирование документов. Продолжение… | Александр Шкураев

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *