helpf.pro
Регистрация
 0 
Распечатать

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

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

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

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

Общий реквизит документов "EAN13"
Тип – “Строка”, длина – 13, отбор по реквизиту

Добавляем в глобальный модуль процедуру
Код 1C v 7.x
 //******************************************************************************
// глСформироватьШтрихкодДокумента(Конт)
//
// Параметры:
// Конт - контекст документа для которого необходимо сформировать штрихкод
// EAN13- реквизит документа содержащий штрихкод
// Возвращаемое значение:
// Нет
//
// Описание:
// На основании номера документа и вида документа формирует штрихкод в формате
// EAN
//
Процедура глСформироватьШтрихкодДокумента(Конт, EAN13) Экспорт

Если ПустаяСтрока(EAN13) = 1 Тогда

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

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

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

КодДокумента = СокрЛП(Прав(Конт.НомерДок,7));
КодВидаДокумента = ПрефиксыДокументов.Получить(Конт.Вид());


Префикс = Прав(ДатаГод(Конт.ДатаДок), 2);

ИспКолво = 10;

Штрихкод = СимволыВЦифры(Прав(СокрЛП(КодДокумента+КодВидаДокумента),
ИспКолво));
Штрихкод = Префикс + глДополнитьСтрокуЛ(Штрихкод, "0", ИспКолво);

EAN13 = Штрихкод + глКонтрольныйСимволEAN(Штрихкод, 13);
КонецЕсли;

КонецПроцедуры // глСформироватьШтрихкодДокумента()


После этого в документы, которым будут присваиваться штрихкоды добавляем вызов
вышеописанного в процедуру "ПриЗаписи()"
Код 1C v 7.x
 Процедура ПриЗаписи()
//..............................
глСформироватьШтрихкодДокумента(Контекст, EAN13);
КонецПроцедуры


В результате при первой записи документа ему будет присвоен штрихкод состоящий
из следующих блоков:
1. год документа (2 символа);
2. семь цифр справа от номера документа;
3. код вида документа (3 символа);
4. контрольный символ;


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

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

Автор: Александр Шкураев
Разместил:   Версии: | 7.x |  Дата:   Прочитано: 11420
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 2
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код...
1C и Google Maps 12
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во...
Cообщение: "Не удалось удалить чеки ККМ!" 2
Пользователь с правами Администратор ККМ проводит Закрытие кассовой смены (Z). Выходит сообщение: " Не удалось удалить чеки ККМ!" ФР печатает Z -отчет, но Отчет о рознчничных продажах не формируется. Необходимо дать...
Google maps : вывод точек на карту и режим панорамы 2
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С...
Google maps, поиск оптимального маршрута 2
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; *...
Посмотреть все результаты поиска похожих
Комментарии
McFly
12.01.2012 15:18Комментарий: 4
McFly
Функция ЗначениеВСтроку() не выдает внутренний IDDOC в 7.7. Его выдает функция : ЗначениеВСтрокуВнутр(). Беда в том, что выдает его функция в виде 10-значного числа. А в базе оно хранится в 36ричном формате. Я написал 2 небольших функции :
//*******************************************
//Перевод 10чного числа в 36чное
//*******************************************
Функция DecTo36(Значение)
СтрокаЦифр = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Код = "";
Пока Значение>36 Цикл
Дел = Цел(Значение / 36);
Остат = Значение - Дел * 36;
Код = Сред(СтрокаЦифр,1+Остат,1) + Код;
Значение = Дел;
КонецЦикла;
Если Значение>0 Тогда
Код = Сред(СтрокаЦифр,1+Дел,1) + Код;
КонецЕсли;
Возврат Код;
КонецФункции
//*******************************************
//Выборка кода IDDOC
//*******************************************
Функция НайтиВнутреннийКод(Док)
Значение = ЗначениеВСтрокуВнутр(Док);
Значение = СтрЗаменить(Значение,"""","");
Значение = Сред(Значение,2,СтрДлина(Значение)-2);
Массив = СтрЗаменить(Значение,",",РазделительСтрок);
Значение = СтрПолучитьСтроку(Массив,СтрКоличествоСтрок(Массив));
Возврат DecTo36(Число(Значение));
КонецФункции
ab
10.01.2011 13:08Комментарий: 3
ab
Для того чтоб в 1С 7.7 получить внутренний ID обекта необходимо его преобразовать в строку с помощью функции ЗначениеВСтроку() среди прочего в результирующей строке будет и внутренний ID.
E_Migachev
14.07.2010 09:42Комментарий: 2
E_Migachev
На сколько я знаю стандартными методами в 7.7 IDDOC не получить *16, поэтому реализовано так!
newbas
14.07.2010 08:33Комментарий: 1
newbas
ИМХО вместо создания списка с префиксами видов документов лучше взять внутренний ИД документа (IDDOC), который имеет длину 9 знаков+префикс:
"222"+IDDOC
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.