0. user607480_elsystem2000 2 23.12.16 23:37 Сейчас в теме

Получение Алкокода из PDF417

Обработка получает алкокод из кода акцизной марки.

Перейти к публикации

Комментарии
Сортировка: Древо
1. pablo_escobar 26.12.16 10:11 Сейчас в теме
Если весь алгоритм представлен на скрине, то он не полный. Охватывает не все возможные ситуации.
2. user607480_elsystem2000 2 26.12.16 10:46 Сейчас в теме
Возможно.
Делал под конкретную задачу.
Так как алгоритм не мой, хотел разместить бесплатно в варианте "Как есть", но не вышло...
Если не сложно, подскажите какие ситуации не охвачены?
3. ValeriTim 20 26.12.16 11:06 Сейчас в теме
А вот так? Это не мое творчество - тоже где то подсмотрел.

// получен код специальной марки ЕГАИС
КодАлкогольнойПродукции = Формат(ДополнительныеПроцедурыФункцииСервер.ИзХСчислВЧисло(Сред(Штрихкод, 8, 12), "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"), "ЧЦ=19; ЧВН=; ЧГ=");

Функция ИзХСчислВЧисло(аф, Шаблон) Экспорт
	
    аф = ВРег(аф); // на всякий случай.
    ДлинаШаблона = СтрДлина(Шаблон);

    ДлинаСтроки = СтрДлина(аф);
    Результат = 0;

    Для ТекСимвол = 1 По ДлинаСтроки Цикл
        ОбрабатываемыйСимвол = Сред(аф, ТекСимвол,1);
        ПозицияВШаблоне = Найти(Шаблон,ОбрабатываемыйСимвол)-1;
        Результат = Результат * ДлинаШаблона + ПозицияВШаблоне;
    КонецЦикла;

    Возврат(Результат);

КонецФункции
Показать
4. user607480_elsystem2000 2 26.12.16 11:09 Сейчас в теме
Нет предела совершенству .
У меня стояла задача помощи при инвентаризации остатков продукции поступившей до 2016 года. После выполнения инвентаризации, перспективы использование обработки весьма туманны ...
Поэтому это просто внешняя обработка.
5. pablo_escobar 26.12.16 16:24 Сейчас в теме
Нужен отсев старых цифровых марок, делать Врег обязательно, (встречались марки с маленькими буквами)

Если сред(Значение,4,5) = "00000" тогда

		Значение = Сред(Значение,9,11);
		итр =11;

		Иначе

		Значение = Сред(Значение,8,12);
		итр =12;

		конецЕсли;

		Результат=0;

		Для Х=1 По итр Цикл

		М=1;
		Для У=1 По итр-Х Цикл 

		М=М*36 

		КонецЦикла;

		Результат=Результат+(Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Сред(Значение,Х,1))-1)*М;

		КонецЦикла;

		AlcCode = Формат(Результат, "ЧЦ=19; ЧВН=; ЧГ=0");
Показать
6. pablo_escobar 26.12.16 16:28 Сейчас в теме
И шк является ли он шк с марки можно проверять xsd схемой
ТипДляПроверкиБарКода=ФабрикаXDTO.Тип("http://fsrar.ru/WEGAIS/My_Cheque","BK");
Попытка
		ТипДляПроверкиБарКода.Проверить(ШтрихКод);
	Исключение	
		ЭтоБарКод=Ложь;
		Предупреждение("Считанный штрихкод не является ШК с акцизной марки!");
		
		Сигнал();
конецпопытки;
Показать
7. user607480_elsystem2000 2 26.12.16 23:44 Сейчас в теме
Для моих задач такие сложности не требовались, но всё же стало интересно..
Если можно поясните пожалуйста строку
ТипДляПроверкиБарКода=ФабрикаXDTO.Тип("http://fsrar.ru/WEGAIS/My_Cheque","BK");

Как реализуется "/My_Cheque"?

Попробовал написать по вашему тексту, но "My_Cheque" подвел ..

Прикрепленные файлы:
9. pablo_escobar 27.12.16 09:25 Сейчас в теме
(7) My_Cheque это XDTO пакет из стандартной xsd схемы розничного чека. В типовых решениях 1С делала свои схемы, можно их использовать, мне проще пользоваться стандартными от ЕГАИС.
8. user607480_elsystem2000 2 27.12.16 00:04 Сейчас в теме
Просматривал егаис - XDTO пакеты в УТ11, наткнулся на используемый Тип значения PDF417.


Прикрепленные файлы:
10. pablo_escobar 27.12.16 09:40 Сейчас в теме
(8) Маленькие буквы нужно переобразовывать потому что в алгоритме идет сравнение на большие буквы и цифры, можно доработать алгоритм под маленькие буквы, но проще поднять регистр.
11. user607480_elsystem2000 2 27.12.16 13:35 Сейчас в теме
Спасибо за разъяснения.
По My_Cheque интересно. В мой код смотрели? Почему не работает можете на мысль натолкнуть?
13. pablo_escobar 27.12.16 13:46 Сейчас в теме
(11)
My_Cheque
потому что My_Cheque это моя схема, созданная на основе схемы egaischeque.joint.2.xsd от ЕГАИС. На основе потому что она единственная стандартная от ЕГАИС не загружается в 1С. Используйте тот тип который есть в Ваших схемах.
12. user607480_elsystem2000 2 27.12.16 13:39 Сейчас в теме
Проверку на корректность КодаМарки интересно сделать, если пойму как, добавлю в обработку. Заодно и буквы к верхнему регистру приведу.
14. user607480_elsystem2000 2 27.12.16 14:32 Сейчас в теме
:) Когда увидел строку с "My_Cheque" так и думал, что халявы не будет .!! :)
15. user607480_elsystem2000 2 27.12.16 16:23 Сейчас в теме
Внесены изменения на основе предложений от Алексей (pablo_escobar)
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии



Ведущий программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Руководитель проектов 1С
Москва
Полный день

Консультант-аналитик 1С: ЗУП
Санкт-Петербург
Полный день