Штрих коды в 1С

Печать штрихкодов в 1С осуществляется через компоненту 1C:Печать штрихкодов. Если компонента не установлена, то вместо документа со штрихкодом программа выдает сообщение об ошибке «Компонента 1С: Печать штрихкодов не установлена на данном компьютере!». Рассмотрим порядок действий в данной ситуации.

Установка компоненты 1C:Печать штрихкодов

Установка компоненты может отличаться в зависимости от режима запуска 1С:

  • обычное приложение;
  • управляемое приложение.

Обычное приложение

Большинство современных конфигураций работают под управляемым режимом, но еще встречаются организации, которые работают в режиме обычного приложения, где используется интерфейс и формы, применявшиеся в программах 8.1 и 8.2. Примером работы в обычном приложении служит Бухгалтерия 2.0

Для обычного приложения компоненту печати штрихкодов нужно установить вручную. Данную компоненту можно скачать с сайта https://users.v8.1c.ru.

Если компонента не установлена, то вместо документа со штрихкодом программа 1С выдает сообщение об ошибке.

Рассмотрим, как установить компоненту 1С:Печать штрихкодов вручную.

Ручная установка компоненты 1С:Печать штрихкодов

Скачав файл с сайта https://users.v8.1c.ru, запускаем установку и, следуя шагам установщика, нажимаем кнопку Далее.

Если данная компонента отсутствует, то установщик сам предложит ее установить. В случае, если компонента установлена, будет предложено ее изменить, исправить (в случае некорректной работы) или удалить.

Для запуска установки необходимо установить переключатель в положение Я принимаю условия лицензионного соглашения.

Выбрав вариант Полная установка, нажимаем кнопку Далее.

В следующем окне подтверждаем установку, нажав кнопку Установить.

После установки компоненты сообщение: «Компонента 1С:Печать штрихкодов не установлена на данном компьютере!» больше появляться не будет.

Управляемое приложение

Основное отличие управляемого приложения от обычного — это использование управляемого командного интерфейса и управляемых форм. Практически все современные программы 1С сейчас работают в этом приложении.

Для управляемого приложения внешние компоненты работают по другой технологии и вручную загружать компоненту печати штрихкодов не нужно: она уже содержится в закодированном виде в общем макете программы и подключается с помощью функции ПодключитьВнешнююКомпонентуПечатиШтрихкода().

В случае сбоя программного использования компоненты 1С сообщит об ошибке подключения. В этом случае может помочь обновление конфигурации и чистка кэшей 1С. В нашей практике были случаи, когда печать двумерного штрихкода переставала работать сразу после обновления платформы. Если до обновления платформы штрихкод печатался нормально и у вас 32-разрядная платформа, попробуйте запуститься с более ранней версии платформы. Если все пройдет хорошо, то просто подождите следующей версии платформы и обновите ее.

Также могут помочь:

  • Ручная загрузка шрифта штрихкода EanGnivc. Дело в том, что 1С продолжает «видеть» установленный шрифт EanGnivc в операционной системе, поэтому иногда ручная загрузка шрифта может решить проблему.
  • Переустановка компоненты печати штрихкодов в 1С.

Переустановка компоненты печати штрихкодов в 1С

Переустановить компоненту печати можно в разделе Отчеты — Регламентированные отчеты — Настройки — Двумерный штрихкод — Шаблоны печати машиночитаемых форм.

При нажатии на кнопку Переустановить компоненту запустится процесс ее установки.

Следуя шагам мастера установки устанавливаем компоненту печати штрихкода.

Разрядность платформы для печати штрихкодов в 1С

Обратите внимание, что модули печати штрихкодов 32-битные. Т.е. при установленной 64-битной версии платформы 1С: Предприятие могут возникнуть проблемы с печатью.

Разработчиком предлагаются версии 1С: Предприятия для 32-битной операционной системы и для 64-битной. PDF Если у пользователя установлена 64-битная платформа для Windows, то печать штрихкодов не выполняется, о чем программа 1С сообщит. При этом, для операционной системы 64-битной Windows, подойдет и платформа 32-битная.

Как пользователю определить, какая платформа установлена: 32-битная или 64-битная?

Откроем диск С. Там увидим папку, куда устанавливается программы. Так, 64-битная платформа была бы установлена в папку Program Files, а 32-битная — Program Files (х86).

В нашем примере платформа установлена в папку Program Files (х86), то есть является 32-битной.

Разрядность операционной системы можно также посмотреть, нажав правой кнопкой мышки на иконку Этот компьютер на рабочем столе и выбрав пункт Свойства.

См. также:

  • Лицензия не обнаружена. Не обнаружен ключ защиты программы 1С: как исправить
  • Не обнаружена установленная версия 1С Предприятия
  • Значение поля номер не уникально 1С 8.3: как исправить
  • Нарушение целостности системы 1С
  • Конфигурация базы данных не соответствует сохраненной конфигурации 1С

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Ошибка при печати штрихкодов на х64-клиенте 1С: Компонента 1С:Печать штрихкодов не установлена на данном компьютере

Итак, буквально вчера я столкнулся с проблемой, что типовая 1С УТ 10.3 при печати формы с штрихкодом стала выдавать:

Компонента 1С:Печать штрихкодов не установлена на данном компьютере

Код, инициализирующий данную компоненту:

Попытка КомпонентШК = Новый COMОбъект(«V8.Barcod.1»); Исключение Сообщить(«Компонента 1С:Печать штрихкодов не установлена на данном компьютере!», СтатусСообщения.Важное); Возврат; КонецПопытки;

Как показал дальнейший поиск информации, проблема в том, что клиентское приложение, в котором штрихкоды не хотели печататься — 64-х разрядное (в 32-х разрядных клиентах печаталось всё как надо). Кстати, на сайте 1С так же лежит 32-х разрядная компонента, которая никак проблему не решает, а описание того, что делать в случае 64-х разрядных клиентов отсутствует.

Разумеется, самым очевидным видится решение — просто установить вместо х64 — клиента его 32-х разрядную версию. Но, мне что-то показалось это слишком простым вариантом (хотя и он полностью рабочий).

Следующее, что я решил попробовать это воспользоваться инструкцией по запуску x32 COM-объектов из x64 приложения, но ничего не заработало.

После этого, я решил посмотреть в сторону УТ11 и того как там решена эта проблема(и есть ли она там). Я развернул УТ11(11.4.5.143) и оказалось, что там такой проблемы просто нет.

В УТ11 в общем модуле «МенеджерОборудованияСерверПовтИсп» имеется функция, которая инициализирует соответствующую нативную компоненту, которая лежит в общем макете «КомпонентаПечатиШтрихкодов». Причем там лежит сразу несколько компонент — и под х32, и под х64 и под линукс (см. один из рисунков. Их все можно получить выгрузив данные из макета в каталог на диске).

Поскольку я не особенно хотел что-то кодировать, то я в свою конфигурацию просто скопировал общий макет «КомпонентаПечатиШтрихкодов», а так же несколько вспомогательных функций (я здесь приведу их полный текст, а то ведь вдруг у кого нет под рукой УТ11):

// Функция выполняет подключение внешней компоненты и ее первоначальную настройку. // Возвращаемое значение: НЕОПРЕДЕЛЕНО — компоненту не удалось загрузить. Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода() Экспорт ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодов», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native); // Создадим объект внешней компоненты. Если ПодключениеВыполнено Тогда ВнешняяКомпонента = Новый(«AddIn.КартинкаШтрихкода.Barcode»); Иначе Возврат Неопределено; КонецЕсли; // Если нет возможности рисовать. Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда // То картинку сформировать не сможем. Возврат Неопределено; Иначе // Установим основные параметры компоненты. // Если в системе установлен шрифт Tahoma. Если ВнешняяКомпонента.НайтиШрифт(«Tahoma») Тогда // Выбираем его как шрифт для формирования картинки. ВнешняяКомпонента.Шрифт = «Tahoma»; Иначе // Шрифт Tahoma в системе отсутствует. // Обойдем все доступные компоненте шрифты. Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл // Получим очередной шрифт, доступный компоненте. ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч); // Если шрифт доступен Если ТекущийШрифт <> Неопределено Тогда // Они и будет шрифтом для формирования штрихкода. ВнешняяКомпонента.Шрифт = ТекущийШрифт; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; // Установим размер шрифта ВнешняяКомпонента.РазмерШрифта = 12; Возврат ВнешняяКомпонента; КонецЕсли; КонецФункции Функция ОпределитьТипШтрихкода(Штрихкод) Экспорт ТипШтрихкодаЗнач = «»; ДлинаШтрихкода = СтрДлина(Штрихкод); Если ДлинаШтрихкода = 0 Тогда Возврат ТипШтрихкодаЗнач; КонецЕсли; Сумма = 0; Если ДлинаШтрихкода = 14 Тогда // ITF14 Коэффициент = 1; Для Сч = 1 По 13 Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда Прервать; КонецЕсли; Сумма = Сумма + Коэффициент * (ВремКодСимвола — 48); Коэффициент = 4 — Коэффициент; КонецЦикла; Сумма = (10 — Сумма % 10) % 10; Если КодСимвола(Штрихкод, 14) = Сумма + 48 Тогда ТипШтрихкодаЗнач = «ITF14»; КонецЕсли; ИначеЕсли ДлинаШтрихкода = 13 Тогда // EAN13 EAN13 = Истина; Коэффициент = 1; Для Сч = 1 По 12 Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда EAN13 = Ложь; Прервать; КонецЕсли; Сумма = Сумма + Коэффициент * (ВремКодСимвола — 48); Коэффициент = 4 — Коэффициент; КонецЦикла; Сумма = (10 — Сумма % 10) % 10; ПроверочныйСимвол = Символ(Сумма + 48); Если EAN13 И ПроверочныйСимвол = Прав(Штрихкод, 1) Тогда ТипШтрихкодаЗнач = «EAN13»; КонецЕсли; ИначеЕсли ДлинаШтрихкода = 8 Тогда // EAN8 EAN8 = Истина; Коэффициент = 3; Для Сч = 1 По 7 Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда EAN8 = Ложь; Прервать; КонецЕсли; Сумма = Сумма + Коэффициент * (ВремКодСимвола — 48); Коэффициент = 4 — Коэффициент; КонецЦикла; Сумма = (10 — Сумма % 10) % 10; Если EAN8 И (КодСимвола(Штрихкод, 8) = Сумма + 48) Тогда ТипШтрихкодаЗнач = «EAN8»; КонецЕсли; КонецЕсли; Если ТипШтрихкодаЗнач= «» Тогда // CODE39 CODE39 = Истина; Для Сч = 1 По ДлинаШтрихкода Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если (ВремКодСимвола <> 32) И (ВремКодСимвола < 36 Или ВремКодСимвола > 37) И (ВремКодСимвола <> 43) И (ВремКодСимвола < 45 Или ВремКодСимвола > 57) И (ВремКодСимвола < 65 Или ВремКодСимвола > 90) Тогда CODE39 = Ложь; Прервать; КонецЕсли; КонецЦикла; Если CODE39 Тогда ТипШтрихкодаЗнач = «CODE39»; КонецЕсли КонецЕсли; Если ТипШтрихкодаЗнач= «» Тогда // CODE128 // CODE128 символы ASCII от 0 до 127 (цифры от «0» до «9», буквы от «A» до «Z» и от «a» до «z») и специальные символы; CODE128 = Истина; Для Сч = 1 По ДлинаШтрихкода Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если (ВремКодСимвола > 127) Тогда CODE128 = Ложь; Прервать; КонецЕсли; КонецЦикла; Если CODE128 Тогда ТипШтрихкодаЗнач = «CODE128»; КонецЕсли КонецЕсли; Если ТипШтрихкодаЗнач = «CODE128» Тогда // EAN128 // В коде EAN128 регламентирован словарь CODE128 но регламентированы группы кодов. Если КодСимвола(Штрихкод, 1) = 40 Тогда ТипШтрихкодаЗнач = «EAN128»; КонецЕсли; КонецЕсли; Возврат ТипШтрихкодаЗнач; КонецФункции Функция ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) Экспорт //ВнешняяКомпонента = МенеджерОборудованияСерверПовтИсп.ПодключитьВнешнююКомпонентуПечатиШтрихкода(); ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода(); Если ВнешняяКомпонента = Неопределено Тогда ВызватьИсключение НСтр(«ru = ‘Ошибка подключения внешней компоненты печати штрихкода.'»); КонецЕсли; // Зададим размер формируемой картинки. ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина); ВнешняяКомпонента.Высота = Окр(ПараметрыШтрихкода.Высота); ВнешняяКомпонента.АвтоТип = Ложь; Если ПараметрыШтрихкода.ТипКода = 99 Тогда ТипШтрихкодаВрем = ОпределитьТипШтрихкода(ПараметрыШтрихкода.Штрихкод); Если ТипШтрихкодаВрем = «EAN8» Тогда ВнешняяКомпонента.ТипКода = 0; ИначеЕсли ТипШтрихкодаВрем = «EAN13» Тогда ВнешняяКомпонента.ТипКода = 1; // Если код содержит контрольный символ, обязательно указываем. ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13; ИначеЕсли ТипШтрихкодаВрем = «EAN128» Тогда ВнешняяКомпонента.ТипКода = 2; ИначеЕсли ТипШтрихкодаВрем = «CODE39» Тогда ВнешняяКомпонента.ТипКода = 3; ИначеЕсли ТипШтрихкодаВрем = «CODE128» Тогда ВнешняяКомпонента.ТипКода = 4; ИначеЕсли ТипШтрихкодаВрем = «ITF14» Тогда ВнешняяКомпонента.ТипКода = 11; ИначеЕсли ТипШтрихкодаВрем = «QR» Тогда ВнешняяКомпонента.ТипКода = 16; ИначеЕсли ТипШтрихкодаВрем = «EAN13Addon2» Тогда ВнешняяКомпонента.ТипКода = 14; ИначеЕсли ТипШтрихкодаВрем = «EAN13Addon5» Тогда ВнешняяКомпонента.ТипКода = 15; Иначе ВнешняяКомпонента.АвтоТип = Истина; КонецЕсли; Иначе ВнешняяКомпонента.АвтоТип = Ложь; ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода; КонецЕсли; Если ПараметрыШтрихкода.Свойство(«ПрозрачныйФон») Тогда ВнешняяКомпонента.ПрозрачныйФон = ПараметрыШтрихкода.ПрозрачныйФон; КонецЕсли; ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст; // Формируем картинку штрихкода. ВнешняяКомпонента.ЗначениеКода = ПараметрыШтрихкода.Штрихкод; // Угол поворота штрихкода. ВнешняяКомпонента.УголПоворота = ?(ПараметрыШтрихкода.Свойство(«УголПоворота»), ПараметрыШтрихкода.УголПоворота, 0); // Уровень коррекции QR кода (L=0, M=1, Q=2, H=3). ВнешняяКомпонента.УровеньКоррекцииQR = ?(ПараметрыШтрихкода.Свойство(«УровеньКоррекцииQR»), ПараметрыШтрихкода.УровеньКоррекцииQR, 1); // Если установленная нами ширина меньше минимально допустимой для этого штрихкода. Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода; КонецЕсли; // Если установленная нами высота меньше минимально допустимой для этого штрихкода. Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода; КонецЕсли; Если ПараметрыШтрихкода.Свойство(«РазмерШрифта») И (ПараметрыШтрихкода.РазмерШрифта > 0) И (ПараметрыШтрихкода.ОтображатьТекст) И (ВнешняяКомпонента.РазмерШрифта <> ПараметрыШтрихкода.РазмерШрифта) Тогда ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта; КонецЕсли; // Сформируем картинку ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод(); // Если картинка сформировалась. Если ДвоичныеДанныеКартинки <> Неопределено Тогда // Формируем из двоичных данных. Возврат Новый Картинка(ДвоичныеДанныеКартинки); КонецЕсли; Возврат Неопределено; КонецФункции

Таким образом, теперь имеется возможность получать картинку штрихкода и вставлять её (как и раньше) прямо в макет. Я делаю это таким образом:

ОбластьШапки.Рисунки.Штрихкод.Картинка = ОбработкаШтрихкодирования.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);

Правда перед самим вызовом необходимо задать параметры штрихкода:

ПараметрыШтрихкода = Новый Структура; ПараметрыШтрихкода.Вставить(«Ширина», Окр(РисунокШтрихкода.Ширина / 0.1)); ПараметрыШтрихкода.Вставить(«Высота», Окр(РисунокШтрихкода.Высота / 0.1)); ПараметрыШтрихкода.Вставить(«Штрихкод», Штрихкод); //здесь д.б. наша строка ШК ПараметрыШтрихкода.Вставить(«ТипКода», 4); //ПараметрыШтрихкода.Вставить(«GS1DatabarКоличествоСтрок», GS1DatabarКоличествоСтрок); ПараметрыШтрихкода.Вставить(«МонохромныйШрифт», Истина); //ПараметрыШтрихкода.Вставить(«УголПоворота», УголПоворота); ПараметрыШтрихкода.Вставить(«ОтображатьТекст», Истина); ПараметрыШтрихкода.Вставить(«РазмерШрифта», 15); ПараметрыШтрихкода.Вставить(«Масштабировать», Истина); //ПараметрыШтрихкода.Вставить(«СохранятьПропорции», СохранятьПропорции); //ПараметрыШтрихкода.Вставить(«ВертикальноеВыравнивание», ВертикальноеВыравнивание);

Подробный перечень параметров и то, как с ними работать, а также их описание можно посмотреть на сайте 1С (в т.ч. и по первой ссылке из статьи — там многие параметры повторяются), ну и в самой УТ11. Для моих же целей оказался вполне пригоден представленный код.

На этом всё, надеюсь статья была вам полезна.

В последние годы широкое распространение получили технологии автоматической идентификации с помощью компьютерной техники. Данные технологии направлены на повышение производительности и снижение затрат труда.

Штриховой код – информационный знак, предназначенный для автоматизированной идентификации и учета информации о товаре, закодированной в виде цифр и штрихов.

Функции штрихкода:*

  • Идентификация товаров с помощью специальных устройств;
  • Автоматизация учета и контроля товаров;
  • Оперативное управление движением товара;
  • Повышение скорости обслуживания покупателей;
  • Информационное обеспечение покупателей.

*Также в соответствии с требованиями проведения внешнеторговых сделок, наличие штрихового кода на упаковке товара является обязательным условием его экспорта.

Компонент 1С Печать штрихкодов

Часто пользователь сталкивается с ситуацией, когда на печатную форму 1С 8.3, документ или этикетку, необходимо вывести штрихкод. В программах 1С 8.3 используется система штрихкодов номенклатуры, которая позволяет производить быстрый подбор товаров и множество других действий. Для его вывода в печатную форму предназначен объект «1С:Печать штрихкодов». Данный элемент управления предназначен для формирования штрихкодов следующих форматов:

В нем поддерживается автоопределение формата штрихкода, есть возможность передавать символьное значение штрихкода как с контрольным символом, так и без него, а также возможность отключения показа контрольного символа штрихкода на результирующем изображении штрихкода.

Если данный элемент не установлен, при попытке сделать печать компьютер будет выдавать ошибку с текстом: «Компонента печать штрихкодов 1С не установлена на данном компьютере». Соответственно, необходимо произвести его установку.

Также при печати могут возникнуть и другие ошибки, например, «Ошибка внешней компоненты» – 1CBarCode: некорректное значение свойства «Шрифт». Ее исправление также «лечится» установкой компоненты «1С:Печать штрихкодов» – «1CBarCode.exe» последней версии.

Рис.1 Сообщение об ошибке

Таким образом, для того чтобы печать была доступна на компьютере необходимо установить компоненту «1CBarCode.exe». Скачать ее можно на сайте.

Рис.2 Окно скачивания компоненты для печати штрихкода

Данный драйвер используется в конфигурациях, не содержащих «1С:Библиотека подключаемого оборудования».

Рис.3 Окно скачивания компоненты для печати штрихкода

После скачивания файла произведем установку.

Рис.4 Первое окно установки компоненты для печати штрихкодаРис.5 Второе окноРис.6 Третье окно установки

После установки данной компоненты не должно возникать ошибки при попытке создать штрихкоды.

Печать ценников с штрихкодом

Рассмотрим печать штрихкода на примере «1С:Розница». Обратимся к пункту «Цены номенклатуры» и рассмотрим вывод на печать ценников товаров, на которые уже назначена цена.

Рис.7 Пункт меню «Цены номенклатуры»

Из документа «Установка цены номенклатуры» в кнопке «Печать» доступны печать ценников и этикеток.

Рис.8 Выпадающее меню программы «Печать ценников» и «Этикеток»

В обработке уже будут выбраны товары, поэтому нам нужно будет задать «Шаблон ценника». Если его нет, то его легко создать.

Рис.9 Создать шаблон этикетки Рис.10 Ценник со штрихкодом

Нажав кнопку «Редактировать макет», переходим в редактор шаблонов и выбираем «Загрузить шаблон по умолчанию».

Рис.11 Создание (редактирование) шаблона ценника со штрихкодом

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

Выбрав созданный шаблон, выделяем необходимые товары и нажимаем кнопку «Печать».

Рис.12 Печать ценника со штрихкодом

Мы вывели на печать штрихкод товара.

Рис.13 Печать документа «Ценник со штрихкодом»

Вставка штрихкода в макет печатной формы 1С

Кроме использования встроенных возможностей программы, можно самим разрабатывать макеты печатных форм с использованием штрихкода: в конфигураторе открыть макет печатной формы нужного документа и перейти в меню «Таблица — Рисунок — Вставить объект».

Рис.14 Окно конфигуратора. Вставка объекта

В появившемся окне переключить указатель в положение «Элемент управления» и мы увидим, что появился тип объекта «1С.V8. Печать штрих-кодов».

Рис.15 Окно конфигуратора. Вставка объекта «Элемент управления» — Объект печать штрихкода

Мы увидели, как можно при необходимости добавлять штрихкод в имеющиеся формы, а также создавать индивидуальные макеты печатных форм.

  1. ОБЩИЕ ПОЛОЖЕНИЯ

1.2. Сайт «РОСКОД» (далее – Сайт) является собственностью юридического лица ООО Агентство промышленной безопасности (ОГРН: 1177746892938, ИНН: 7726409452,адрес регистрации: 117570, г Москва, улица Чертановская, дом 36 КОРПУС 1, ЭТАЖ 1 ОФ. IV).

1.3. Настоящее Соглашение регулирует отношения между Администрацией сайта «РОСКОД» (далее – Администрация сайта) и Пользователем данного Сайта.

1.4. Администрация сайта оставляет за собой право в любое время изменять, добавлять или удалять пункты настоящего Соглашения без уведомления Пользователя.

1.5. Использование Сайта Пользователем означает принятие Соглашения и изменений, внесенных в настоящее Соглашение.

1.6. Пользователь несет персональную ответственность за проверку настоящего Соглашения на наличие изменений в нем.

  1. ОПРЕДЕЛЕНИЯ ТЕРМИНОВ

2.1. Перечисленные ниже термины имеют для целей настоящего Соглашения следующее значение:

2.1.2. «РОСКОД» – сайт, содержащий информацию о Товарах и/или Услугах и/или Иных ценностях для пользователя, Продавце и/или Исполнителе услуг, позволяющий осуществить выбор, заказ и (или) приобретение Товара, и/или получение услуги.

2.1.3. Администрация сайта – уполномоченные сотрудники на управление Сайтом, действующие от имени юридического лица ООО Агентство промышленной безопасности.

2.1.4. Пользователь сайта (далее – Пользователь) – лицо, имеющее доступ к Сайту, посредством сети Интернет и использующее Сайт.

2.1.5. Содержание сайта (далее – Содержание) – охраняемые результаты интеллектуальной деятельности, включая тексты литературных произведений, их названия, предисловия, аннотации, статьи, иллюстрации, обложки, музыкальные произведения с текстом или без текста, графические, текстовые, фотографические, производные, составные и иные произведения, пользовательские интерфейсы, визуальные интерфейсы, названия товарных знаков, логотипы, программы для ЭВМ, базы данных, а также дизайн, структура, выбор, координация, внешний вид, общий стиль и расположение данного Содержания, входящего в состав Сайта и другие объекты интеллектуальной собственности все вместе и/или по отдельности, содержащиеся на сайте https://roskod.ru/, https://roskod.info/.

  1. ПРЕДМЕТ СОГЛАШЕНИЯ

3.1. Предметом настоящего Соглашения является предоставление Пользователю доступа к содержащимся на Сайте Товарам и/или оказываемым услугам.

3.1.1. Сайт предоставляет Пользователю следующие виды услуг (сервисов):

  • доступ к информации о Товаре и/или услуге к информации о приобретении Товара на платной/бесплатной основе;

3.1.2. Под действие настоящего Соглашения подпадают все существующие (реально функционирующие) на данный момент услуги (сервисы) Сайта, а также любые их последующие модификации и появляющиеся в дальнейшем дополнительные услуги (сервисы).

3.2. Доступ к сайту предоставляется на бесплатной основе.

3.3. Настоящее Соглашение является публичной офертой. Получая доступ к Сайту, Пользователь считается присоединившимся к настоящему Соглашению.

3.4. Использование материалов и сервисов Сайта регулируется нормами действующего законодательства Российской Федерации.

  1. ПРАВА И ОБЯЗАННОСТИ СТОРОН

4.1. Администрация сайта вправе:

4.1.1. Изменять правила пользования Сайтом, а также изменять содержание данного Сайта. Изменения вступают в силу с момента публикации новой редакции Соглашения на Сайте.

4.2. Пользователь вправе:

4.2.1. Пользоваться всеми имеющимися на Сайте услугами, а также приобретать любые Товары и/или Услуги, предлагаемые на Сайте.

4.2.2. Задавать любые вопросы, относящиеся к услугам сайта:

  • по электронной почте: mail@roskod.ru

4.2.3. Пользоваться Сайтом исключительно в целях и порядке, предусмотренных Соглашением и не запрещенных законодательством Российской Федерации.

4.2.4. Копировать информацию с Сайта разрешается.

4.2.5. Требовать от администрации скрытия любой информации о пользователе.

4.2.6. Использовать информацию сайта
в коммерческих целях без специального разрешения.

4.3. Пользователь Сайта обязуется:

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

4.3.2. Соблюдать имущественные и неимущественные права авторов и иных правообладателей при использовании Сайта.

4.3.3. Не предпринимать действий, которые могут рассматриваться как нарушающие нормальную работу Сайта.

4.3.4. Не распространять с использованием Сайта любую конфиденциальную и охраняемую законодательством Российской Федерации информацию о физических либо юридических лицах.

4.3.5. Избегать любых действий, в результате которых может быть нарушена конфиденциальность охраняемой законодательством Российской Федерации информации.

4.3.6. Не использовать Сайт для распространения информации рекламного характера, иначе как с согласия Администрации сайта.

4.3.7. Не использовать сервисы с целью:

4.3.7.1. нарушения прав несовершеннолетних лиц и (или) причинение им вреда в любой форме.

4.3.7.2. ущемления прав меньшинств.

4.3.7.3. представления себя за другого человека или представителя организации и (или) сообщества без достаточных на то прав, в том числе за сотрудников данного сайта.

4.3.7.4. введения в заблуждение относительно свойств и характеристик какого-либо Товара и/или услуги, размещенных на Сайте.

4.3.7.5. некорректного сравнения Товара и/или Услуги, а также формирования негативного отношения к лицам, (не) пользующимся определенными Товарами и/или услугами, или осуждения таких лиц.

4.3.8. Обеспечить достоверность предоставляемой информации.

4.3.9. Обеспечивать сохранность личных данных от доступа третьих лиц.

4.4. Пользователю запрещается:

4.4.1. Использовать любые устройства, программы, процедуры, алгоритмы и методы, автоматические устройства или эквивалентные ручные процессы для доступа, приобретения, копирования или отслеживания содержания Сайта.

4.4.2. Нарушать надлежащее функционирование Сайта.

4.4.3. Любым способом обходить навигационную структуру Сайта для получения или попытки получения любой информации, документов или материалов любыми средствами, которые специально не представлены сервисами данного Сайта.

4.4.4. Несанкционированный доступ к функциям Сайта, любым другим системам или сетям, относящимся к данному Сайту, а также к любым услугам, предлагаемым на Сайте.

4.4.5. Нарушать систему безопасности или аутентификации на Сайте или в любой сети, относящейся к Сайту.

4.4.6. Выполнять обратный поиск, отслеживать или пытаться отслеживать любую информацию о любом другом Пользователе Сайта.

4.4.7. Использовать Сайт и его Содержание в любых целях, запрещенных законодательством Российской Федерации, а также подстрекать к любой незаконной деятельности или другой деятельности, нарушающей права Сайта или других лиц.

  1. ИСПОЛЬЗОВАНИЕ САЙТА

5.1. Сайт и Содержание, входящее в состав Сайта, принадлежит и управляется Администрацией сайта.

5.2. Содержание Сайта защищено авторским правом, законодательством о товарных знаках, а также другими правами, связанными с интеллектуальной собственностью, и законодательством о недобросовестной конкуренции.

5.3. Настоящее Соглашение распространяет свое действия на все дополнительные положения и условия о покупке Товара и/или оказанию услуг, предоставляемых на Сайте.

5.4. Информация, размещаемая на Сайте не должна истолковываться как изменение настоящего Соглашения.

5.5. Администрация сайта имеет право в любое время без уведомления Пользователя вносить изменения в перечень Товаров и услуг, предлагаемых на Сайте, и (или) их цен.

5.6. Документ указанный в пункте 5.7 настоящего Соглашения регулирует в соответствующей части и распространяют свое действие на использование Пользователем Сайта:

5.7. Политика конфиденциальности: https://152фз.рф/get_prv/1a63904574b2a169047d75f6cb145cc4;

5.8. Любой из документов, перечисленных в пункте 5.7 настоящего Соглашения может подлежать обновлению. Изменения вступают в силу с момента их опубликования на Сайте.

  1. ОТВЕТСТВЕННОСТЬ

6.1. Любые убытки, которые Пользователь может понести в случае умышленного или неосторожного нарушения любого положения настоящего Соглашения, а также вследствие несанкционированного доступа к коммуникациям другого Пользователя, Администрацией сайта не возмещаются.

6.2. Администрация сайта не несет ответственности за:

6.2.1. Задержки или сбои в процессе совершения операции, возникшие вследствие непреодолимой силы, а также любого случая неполадок в телекоммуникационных, компьютерных, электрических и иных смежных системах.

6.2.2. Действия систем переводов, банков, платежных систем и за задержки связанные с их работой.

6.2.3. Надлежащее функционирование Сайта, в случае, если Пользователь не имеет необходимых технических средств для его использования, а также не несет никаких обязательств по обеспечению пользователей такими средствами.

  1. НАРУШЕНИЕ УСЛОВИЙ ПОЛЬЗОВАТЕЛЬСКОГО СОГЛАШЕНИЯ

7.1. Администрация сайта имеет право раскрыть информацию о Пользователе, если действующее законодательство Российской Федерации требует или разрешает такое раскрытие.

7.2. Администрация сайта вправе без предварительного уведомления Пользователя прекратить и (или) заблокировать доступ к Сайту, если Пользователь нарушил настоящее Соглашение или содержащиеся в иных документах условия пользования Сайтом, а также в случае прекращения действия Сайта либо по причине технической неполадки или проблемы.

7.3. Администрация сайта не несет ответственности перед Пользователем или третьими лицами за прекращение доступа к Сайту в случае нарушения Пользователем любого положения настоящего Соглашения или иного документа, содержащего условия пользования Сайтом.

  1. РАЗРЕШЕНИЕ СПОРОВ

8.1. В случае возникновения любых разногласий или споров между Сторонами настоящего Соглашения обязательным условием до обращения в суд является предъявление претензии (письменного предложения о добровольном урегулировании спора).

8.2. Получатель претензии в течение 30 календарных дней со дня ее получения, письменно уведомляет заявителя претензии о результатах рассмотрения претензии.

8.3. При невозможности разрешить спор в добровольном порядке любая из Сторон вправе обратиться в суд за защитой своих прав, которые предоставлены им действующим законодательством Российской Федерации.

8.4. Любой иск в отношении условий использования Сайта должен быть предъявлен в течение 5 дней после возникновения оснований для иска, за исключением защиты авторских прав на охраняемые в соответствии с законодательством материалы Сайта. При нарушении условий данного пункта любой иск оставляется судом без рассмотрения.

  1. ДОПОЛНИТЕЛЬНЫЕ УСЛОВИЯ

9.1. Администрация сайта не принимает встречные предложения от Пользователя относительно изменений настоящего Пользовательского соглашения.

9.2. Отзывы Пользователя, размещенные на Сайте, не являются конфиденциальной информацией и могут быть использованы Администрацией сайта без ограничений.

Обновлено «05» марта 2018 г.

Штрихкодирование документов

Раз, два, три!.. Проверка связи. Это моя первая статья на Инфостарте, причём с материалом, который частично был разработан не мной.
Но эта наработка уже не раз помогала мне быстро и весело внедрять штрихкодирование документов в любую конфигурацию на обычных формах.

Также у этой публикации есть ещё одна цель: скорее всего, мои алгоритмы не оптимизированы, поэтому публикация может вызвать шквал объективной критики, которую можно будет взять на вооружение.
Итак, мы хотим, чтобы печатные формы документов содержали штрихкод-ссылку на документ.

1. Скачиваем шрифт Barcode.ttf, ставим его на все компы пользователей. Установить можно двумя способами: а) двойной клик на файле -> Установить; б) положить файл в директорию C:\Windows\Fonts.
2. В нужных макетах печатных форм документов завести ячейку под штрихкод, в качестве шрифта ячейки указать barcode. Размер я обычно ставлю 28, дело вкуса. Это будет наш параметр «ШтрихКод»
3. Простой регистр сведений «ШтрихкодыДокументов»: Измерение: Штрихкод — строка, 13 (я обычно использую EAN13, просто и сердито), ресурсы: Документ — составной тип, состоящий из штрихкодируемых документов (или просто ДокументСсылка), GUID — УникальныйИдентификатор.
4. Подписка на событие при записи документа. В подписке на событие проверяем есть ли у документа штрихкод запросом к регистру, если нет генерируем новый, не забываем проверять его уникальность.

Результат = Ложь; // первое: получим штрихкод из GUID-а, чтобы сразу в запросе проверить его уникальность, дабы убрать лишний запрос к БД GUID = СсылкаНаОбъект.УникальныйИдентификатор(); Штрихкод = ПодготовитьШтрихКодИзGIUDа(GUID); // второе: проверяем наличие штрихкода, а так же уникальность кода в пакетном запросе Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | ШтрихкодыДокументов.Штрихкод |ИЗ | РегистрСведений.ШтрихкодыДокументов КАК ШтрихкодыДокументов |ГДЕ | ШтрихкодыДокументов.Документ = &Документ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ШтрихкодыДокументов.Штрихкод |ИЗ | РегистрСведений.ШтрихкодыДокументов КАК ШтрихкодыДокументов |ГДЕ | ШтрихкодыДокументов.Штрихкод = &Штрихкод»; Запрос.УстановитьПараметр(«Документ», СсылкаНаОбъект); Запрос.УстановитьПараметр(«Штрихкод», Штрихкод); Результат = Запрос.ВыполнитьПакет(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Следующий() Тогда // штрихкод есть — возвращаем Истину Возврат Истина КонецЕсли; // третье: штрихкода нет — запишем // сначала проверим ШК на основе GUID на уникальность: ВыборкаУникальность = Результат.Выбрать(); Если ВыборкаУникальность.Следующий() Тогда // ШК не уникален. генерируем новый КодУникален = Ложь; Пока НЕ КодУникален Цикл Штрихкод = ПодготовитьШтрихКодИзGIUDа(Новый УникальныйИдентификатор); Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | ШтрихкодыДокументов.Штрихкод |ИЗ | РегистрСведений.ШтрихкодыДокументов КАК ШтрихкодыДокументов |ГДЕ | ШтрихкодыДокументов.Штрихкод = &Штрихкод»; Запрос.УстановитьПараметр(«Штрихкод», Штрихкод); Результат = Запрос.Выполнить(); КодУникален = Результат.Пустой(); КонецЦикла; КонецЕсли; ЗаписьРегистра = РегистрыСведений.ШтрихкодыДокументов.СоздатьМенеджерЗаписи(); ЗаписьРегистра.Документ = СсылкаНаОбъект; ЗаписьРегистра.Штрихкод = Штрихкод; ЗаписьРегистра.GUID = GUID; ЗаписьРегистра.Период = ТекущаяДата(); ЗаписьРегистра.Ответственный = ПараметрыСеанса.ТекущийПользователь; Попытка ЗаписьРегистра.Записать(); Результат = Истина; Исключение Сообщить(ОписаниеОшибки()); Результат = Ложь; КонецПопытки; Возврат Результат;

Процедура ПодготовитьШтрихкодИзGUID
Суть проста — убираем из Уникального идентификатора все дефисы и буквы, если цифр не хватает — дополняем нулями. Здесь использован типовой справочник ФорматыШтрихКодов, в котором определяются префиксы для документов. Если такого нет в конфигурации, то я обычно добавляю свой, чтобы по префиксам различать типы документов.

фШтрихКод = фGIUD; фШтрихКод = СтрЗаменить(фШтрихКод, «-«, «»); фШтрихКод = СтрЗаменить(фШтрихКод, «a», «»); фШтрихКод = СтрЗаменить(фШтрихКод, «b», «»); фШтрихКод = СтрЗаменить(фШтрихКод, «c», «»); фШтрихКод = СтрЗаменить(фШтрихКод, «d», «»); фШтрихКод = СтрЗаменить(фШтрихКод, «e», «»); фШтрихКод = СтрЗаменить(фШтрихКод, «f», «»); фШтрихКод = Лев(фШтрихКод, фДлина); // на случай, если штрихкод оказался меньше нужной длины, дополняем его ведущими нулями Пока СтрДлина(фШтрихКод) < фДлина Цикл фШтрихКод = «0» + фШтрихКод; КонецЦикла; //фШтрихКод = фШтрихКод + КонтрольныйСимволEAN(фШтрихКод,13); фШтрихКод = Лев((«»+Справочники.ФорматыШтрихКодов.ШКДокумента.Код + фШтрихКод), 12) + КонтрольныйСимволEAN(фШтрихКод,13); Возврат фШтрихКод;

На практике столкнулся с проблемой, что пометка удаления — это тоже запись, и алгоритм не работал, поэтому дописал удаление существующего штрихкода из регистра сведений при установке на документ пометки удаления.

5. У нас есть соответствие цифр и документов. Осталось превратить это в штрихкод на бумаге. Для этого в общий модуль добавляем следующие процедуры, на которые будем ссылаться при выводе на экран макета печатной формы. Здесь не нужно ничего менять и дописывать.

Функция Код128(A) Экспорт Перем BCode; Перем BInd; Перем CurMode; Перем Ch; Перем Ch2; Перем I; Перем LenA; Перем CCode; Перем S; Перем BarArray; СписокКБ = Новый Соответствие; СписокКБ.Вставить(«0″,»0082»); СписокКБ.Вставить(«1″,»00:0»); СписокКБ.Вставить(«2″,»0802»); СписокКБ.Вставить(«3″,»:000″); СписокКБ.Вставить(«4″,»0280»); СписокКБ.Вставить(«5″,»2080»); СписокКБ.Вставить(«6″,»8002»); СписокКБ.Вставить(«7″,»8020»); СписокКБ.Вставить(«8″,»8200»); СписокКБ.Вставить(«9″,»2800»); СписокКБ.Вставить(«-«,»0802»); СписокКБ.Вставить(«$»,»0:00″); СписокКБ.Вставить(«:»,»2022″); СписокКБ.Вставить(«/»,»2202″); СписокКБ.Вставить(«.»,»2220″); СписокКБ.Вставить(«+»,»0222″); СписокКБ.Вставить(«a»,»0:00″); СписокКБ.Вставить(«b»,»8802″); СписокКБ.Вставить(«c»,»0882″); СписокКБ.Вставить(«d»,»08:0″); СписокКБ.Вставить(«t»,»0:80″); СписокКБ.Вставить(«n»,»8802″); СписокКБ.Вставить(«*»,»0882″); СписокКБ.Вставить(«e»,»08:0″); Список128 = Новый СписокЗначений; Список128.Добавить(«212222»); Список128.Добавить(«222122»); Список128.Добавить(«222221»); Список128.Добавить(«121223»); Список128.Добавить(«121322»); Список128.Добавить(«131222»); Список128.Добавить(«122213»); Список128.Добавить(«122312»); Список128.Добавить(«132212»); Список128.Добавить(«221213»); Список128.Добавить(«221312»); Список128.Добавить(«231212»); Список128.Добавить(«112232»); Список128.Добавить(«122132»); Список128.Добавить(«122231»); Список128.Добавить(«113222»); Список128.Добавить(«123122»); Список128.Добавить(«123221»); Список128.Добавить(«223211»); Список128.Добавить(«221132»); Список128.Добавить(«221231»); Список128.Добавить(«213212»); Список128.Добавить(«223112»); Список128.Добавить(«312131»); Список128.Добавить(«311222»); Список128.Добавить(«321122»); Список128.Добавить(«321221»); Список128.Добавить(«312212»); Список128.Добавить(«322112»); Список128.Добавить(«322211»); Список128.Добавить(«212123»); Список128.Добавить(«212321»); Список128.Добавить(«232121»); Список128.Добавить(«111323»); Список128.Добавить(«131123»); Список128.Добавить(«131321»); Список128.Добавить(«112313»); Список128.Добавить(«132113»); Список128.Добавить(«132311»); Список128.Добавить(«211313»); Список128.Добавить(«231113»); Список128.Добавить(«231311»); Список128.Добавить(«112133»); Список128.Добавить(«112331»); Список128.Добавить(«132131»); Список128.Добавить(«113123»); Список128.Добавить(«113321»); Список128.Добавить(«133121»); Список128.Добавить(«313121»); Список128.Добавить(«211331»); Список128.Добавить(«231131»); Список128.Добавить(«213113»); Список128.Добавить(«213311»); Список128.Добавить(«213131»); Список128.Добавить(«311123»); Список128.Добавить(«311321»); Список128.Добавить(«331121»); Список128.Добавить(«312113»); Список128.Добавить(«312311»); Список128.Добавить(«332111»); Список128.Добавить(«314111»); Список128.Добавить(«221411»); Список128.Добавить(«431111»); Список128.Добавить(«111224»); Список128.Добавить(«111422»); Список128.Добавить(«121124»); Список128.Добавить(«121421»); Список128.Добавить(«141122»); Список128.Добавить(«141221»); Список128.Добавить(«112214»); Список128.Добавить(«112412»); Список128.Добавить(«122114»); Список128.Добавить(«122411»); Список128.Добавить(«142112»); Список128.Добавить(«142211»); Список128.Добавить(«241211»); Список128.Добавить(«221114»); Список128.Добавить(«413111»); Список128.Добавить(«241112»); Список128.Добавить(«134111»); Список128.Добавить(«111242»); Список128.Добавить(«121142»); Список128.Добавить(«121241»); Список128.Добавить(«114212»); Список128.Добавить(«124112»); Список128.Добавить(«124211»); Список128.Добавить(«411212»); Список128.Добавить(«421112»); Список128.Добавить(«421211»); Список128.Добавить(«212141»); Список128.Добавить(«214121»); Список128.Добавить(«412121»); Список128.Добавить(«111143»); Список128.Добавить(«111341»); Список128.Добавить(«131141»); Список128.Добавить(«114113»); Список128.Добавить(«114311»); Список128.Добавить(«411113»); Список128.Добавить(«411311»); Список128.Добавить(«113141»); Список128.Добавить(«114131»); Список128.Добавить(«311141»); Список128.Добавить(«411131»); Список128.Добавить(«211412»); Список128.Добавить(«211214»); Список128.Добавить(«211232»); Список128.Добавить(«2331112»); BCode = Новый Массив(1024); //Собираем строку кодов BInd = 0; CurMode = «»; I = 1; LenA = СтрДлина(A); Пока (I <= LenA) Цикл //Текущий символ в строке Ch = КодСимвола(Сред(A, I, 1)); I = I + 1; //Разбираем только символы от 0 до 127 Если Ch <= 127 Тогда //Следующий символ Если I <= LenA Тогда Ch2 = КодСимвола(Сред(A, I, 1)); Иначе Ch2 = 0; КонецЕсли; //’Пара цифр — режим С Если (48 <= Ch)И(Ch <= 57)И(48 <= Ch2)И(Ch2 <= 57) Тогда I = I + 1; Если BInd = 0 Тогда //Начало с режима С CurMode = «C»; BCode = 105; BInd = BInd + 1; ИначеЕсли CurMode <> «C» Тогда //Переключиться на режим С CurMode = «C»; BCode = 99; BInd = BInd + 1; КонецЕсли; //Добавить символ режима С BCode = Число(«»+Символ(Ch) + Символ(Ch2)); BInd = BInd + 1; Иначе Если BInd = 0 Тогда Если Ch < 32 Тогда //Начало с режима A CurMode = «A»; BCode = 103; BInd = BInd + 1; Иначе //Начало с режима B CurMode = «B»; BCode = 104; BInd = BInd + 1; КонецЕсли; КонецЕсли; //Переключение по надобности в режим A Если (Ch < 32)И(CurMode <> «A») Тогда CurMode = «A»; BCode = 101; BInd = BInd + 1; //Переключение по надобности в режим B ИначеЕсли ((64 <= Ch)И(CurMode <> «B»))ИЛИ(CurMode = «C») Тогда CurMode = «B»; BCode = 100; BInd = BInd + 1; КонецЕсли; //Служебные символы Если (Ch < 32) Тогда BCode = Ch + 64; BInd = BInd + 1; //Все другие символы Иначе BCode = Ch — 32; BInd = BInd + 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; //Подсчитываем контрольную сумму CCode = MOD(BCode,103); Для I = 1 По BInd — 1 Цикл CCode = MOD(CCode + BCode * I,103); КонецЦикла; BCode = CCode; BInd = BInd + 1; //Завершающий символ BCode = 106; BInd = BInd + 1; //Собираем строку символов шрифта S = «»; Для I = 0 По BInd — 1 Цикл S = S + Code_Char(Список128].Значение); КонецЦикла; Возврат S; КонецФункции Процедура КонструкторШК() СписокКБ = Новый Соответствие; СписокКБ.Вставить(«0″,»0082»); СписокКБ.Вставить(«1″,»00:0»); СписокКБ.Вставить(«2″,»0802»); СписокКБ.Вставить(«3″,»:000″); СписокКБ.Вставить(«4″,»0280»); СписокКБ.Вставить(«5″,»2080»); СписокКБ.Вставить(«6″,»8002»); СписокКБ.Вставить(«7″,»8020»); СписокКБ.Вставить(«8″,»8200»); СписокКБ.Вставить(«9″,»2800»); СписокКБ.Вставить(«-«,»0802»); СписокКБ.Вставить(«$»,»0:00″); СписокКБ.Вставить(«:»,»2022″); СписокКБ.Вставить(«/»,»2202″); СписокКБ.Вставить(«.»,»2220″); СписокКБ.Вставить(«+»,»0222″); СписокКБ.Вставить(«a»,»0:00″); СписокКБ.Вставить(«b»,»8802″); СписокКБ.Вставить(«c»,»0882″); СписокКБ.Вставить(«d»,»08:0″); СписокКБ.Вставить(«t»,»0:80″); СписокКБ.Вставить(«n»,»8802″); СписокКБ.Вставить(«*»,»0882″); СписокКБ.Вставить(«e»,»08:0″); Список128 = Новый СписокЗначений; Список128.Добавить(«212222»); Список128.Добавить(«222122»); Список128.Добавить(«222221»); Список128.Добавить(«121223»); Список128.Добавить(«121322»); Список128.Добавить(«131222»); Список128.Добавить(«122213»); Список128.Добавить(«122312»); Список128.Добавить(«132212»); Список128.Добавить(«221213»); Список128.Добавить(«221312»); Список128.Добавить(«231212»); Список128.Добавить(«112232»); Список128.Добавить(«122132»); Список128.Добавить(«122231»); Список128.Добавить(«113222»); Список128.Добавить(«123122»); Список128.Добавить(«123221»); Список128.Добавить(«223211»); Список128.Добавить(«221132»); Список128.Добавить(«221231»); Список128.Добавить(«213212»); Список128.Добавить(«223112»); Список128.Добавить(«312131»); Список128.Добавить(«311222»); Список128.Добавить(«321122»); Список128.Добавить(«321221»); Список128.Добавить(«312212»); Список128.Добавить(«322112»); Список128.Добавить(«322211»); Список128.Добавить(«212123»); Список128.Добавить(«212321»); Список128.Добавить(«232121»); Список128.Добавить(«111323»); Список128.Добавить(«131123»); Список128.Добавить(«131321»); Список128.Добавить(«112313»); Список128.Добавить(«132113»); Список128.Добавить(«132311»); Список128.Добавить(«211313»); Список128.Добавить(«231113»); Список128.Добавить(«231311»); Список128.Добавить(«112133»); Список128.Добавить(«112331»); Список128.Добавить(«132131»); Список128.Добавить(«113123»); Список128.Добавить(«113321»); Список128.Добавить(«133121»); Список128.Добавить(«313121»); Список128.Добавить(«211331»); Список128.Добавить(«231131»); Список128.Добавить(«213113»); Список128.Добавить(«213311»); Список128.Добавить(«213131»); Список128.Добавить(«311123»); Список128.Добавить(«311321»); Список128.Добавить(«331121»); Список128.Добавить(«312113»); Список128.Добавить(«312311»); Список128.Добавить(«332111»); Список128.Добавить(«314111»); Список128.Добавить(«221411»); Список128.Добавить(«431111»); Список128.Добавить(«111224»); Список128.Добавить(«111422»); Список128.Добавить(«121124»); Список128.Добавить(«121421»); Список128.Добавить(«141122»); Список128.Добавить(«141221»); Список128.Добавить(«112214»); Список128.Добавить(«112412»); Список128.Добавить(«122114»); Список128.Добавить(«122411»); Список128.Добавить(«142112»); Список128.Добавить(«142211»); Список128.Добавить(«241211»); Список128.Добавить(«221114»); Список128.Добавить(«413111»); Список128.Добавить(«241112»); Список128.Добавить(«134111»); Список128.Добавить(«111242»); Список128.Добавить(«121142»); Список128.Добавить(«121241»); Список128.Добавить(«114212»); Список128.Добавить(«124112»); Список128.Добавить(«124211»); Список128.Добавить(«411212»); Список128.Добавить(«421112»); Список128.Добавить(«421211»); Список128.Добавить(«212141»); Список128.Добавить(«214121»); Список128.Добавить(«412121»); Список128.Добавить(«111143»); Список128.Добавить(«111341»); Список128.Добавить(«131141»); Список128.Добавить(«114113»); Список128.Добавить(«114311»); Список128.Добавить(«411113»); Список128.Добавить(«411311»); Список128.Добавить(«113141»); Список128.Добавить(«114131»); Список128.Добавить(«311141»); Список128.Добавить(«411131»); Список128.Добавить(«211412»); Список128.Добавить(«211214»); Список128.Добавить(«211232»); Список128.Добавить(«2331112»); КонецПроцедуры //КонструкторШК() //// Функция Кодабар(КодШК) //Перем ШтрихКод; //ШтрихКод = «»; //Для Н = 1 По СтрДлина(КодШК) Цикл // ШтрихКод = ШтрихКод + СписокКБ.Получить(Сред(КодШК, Н, 1)); //КонецЦикла; //ШтрихКод = СписокКБ.Получить(«d») + ШтрихКод + СписокКБ.Получить(«e»); // //Возврат ШтрихКод; КонецФункции //Кодабар() //Функция получает остаток при делении // Параметры: // Делимое <число> — число, которое делим // Делитель <число> — число, на которое делим // Возвращаемое значение: // Рез <число> — остаток при делении // Функция MOD(Делимое,Делитель) Перем Рез; Рез=0; Частное=Цел(Делимое/Делитель); Рез=Делимое-Частное*Делитель; Возврат Рез; КонецФункции //MOD() //Штриховые символы шрифта iQs Code 128 по набору полос // Функция Code_Char(A) Перем S; Перем I; Перем B; Если A=»211412″ Тогда S = «A»; Возврат S; КонецЕсли; Если A=»211214″ Тогда S = «B»; Возврат S; КонецЕсли; Если A=»211232″ Тогда S = «C»; Возврат S; КонецЕсли; Если A=»2331112″Тогда S = «@»; Возврат S; КонецЕсли; S = «»; LenA=СтрДлина(A); Для I = 0 По (LenA/ 2 — 1) Цикл Стр=Сред(A, 2 * I + 1, 2); Если Стр=»11″ Тогда S = S+»0″;Продолжить; ИначеЕсли Стр=»21″ Тогда S = S+»1″;Продолжить; ИначеЕсли Стр=»31″ Тогда S = S+»2″;Продолжить; ИначеЕсли Стр=»41″ Тогда S = S+»3″;Продолжить; ИначеЕсли Стр=»12″ Тогда S = S+»4″;Продолжить; ИначеЕсли Стр=»22″ Тогда S = S+»5″;Продолжить; ИначеЕсли Стр=»32″ Тогда S = S+»6″;Продолжить; ИначеЕсли Стр=»42″ Тогда S = S+»7″;Продолжить; ИначеЕсли Стр=»13″ Тогда S = S+»8″;Продолжить; ИначеЕсли Стр=»23″ Тогда S = S+»9″;Продолжить; ИначеЕсли Стр=»33″ Тогда S = S+»:»;Продолжить; ИначеЕсли Стр=»43″ Тогда S = S+»;»;Продолжить; ИначеЕсли Стр=»14″ Тогда S = S+»<«;Продолжить; ИначеЕсли Стр=»24″ Тогда S = S+»=»;Продолжить; ИначеЕсли Стр=»34″ Тогда S = S+»>»;Продолжить; ИначеЕсли Стр=»44″ Тогда S = S+»?»;Продолжить; КонецЕсли; КонецЦикла; Возврат S; КонецФункции //Code_Char()

6. В процедуре вывода табличного документа на экран нужно добавить только две строки кода:

ШтрихКод = ПолучитьШтрихКодДокумента(ЭтотОбъект.Ссылка); ОбластьМакета.Параметры.ШтрихКод = .Код128(ШтрихКод); ОбластьМакета.Параметры.Код = ШтрихКод;

ПолучитьШтрихКодДокумента — просто получает цифры штрихкода из регистра сведений «ШтрихкодыДокументов».
Всё! Штрихкод готов, я получаю профит, клиент доволен. В дальнейшем обрабатывать событие сканирования очень легко — просто подтягиваем по номеру ссылку на документ из регистра и делаем с ним что угодно.

Оставить комментарий

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