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

0. es2000 23.12.16 23:37 Сейчас в теме
Обработка получает алкокод из кода акцизной марки.

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

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

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

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

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

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

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

КонецФункции
Показать
4. es2000 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. es2000 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. es2000 27.12.16 00:04 Сейчас в теме
Просматривал егаис - XDTO пакеты в УТ11, наткнулся на используемый Тип значения PDF417.


Прикрепленные файлы:
10. pablo_escobar 27.12.16 09:40 Сейчас в теме
(8) Маленькие буквы нужно переобразовывать потому что в алгоритме идет сравнение на большие буквы и цифры, можно доработать алгоритм под маленькие буквы, но проще поднять регистр.
11. es2000 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. es2000 27.12.16 13:39 Сейчас в теме
Проверку на корректность КодаМарки интересно сделать, если пойму как, добавлю в обработку. Заодно и буквы к верхнему регистру приведу.
14. es2000 27.12.16 14:32 Сейчас в теме
:) Когда увидел строку с "My_Cheque" так и думал, что халявы не будет .!! :)
15. es2000 27.12.16 16:23 Сейчас в теме
Внесены изменения на основе предложений от Алексей (pablo_escobar)
Оставьте свое сообщение
Вакансии
Программист 1С
Рязань
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Архитектор 1С
Обнинск
зарплата от 150 000 руб. до 350 000 руб.
Полный день

Программист 1С
Обнинск
зарплата от 200 000 руб.
Полный день

Консультант-аналитик 1С
Нижний Новгород
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Нижний Новгород
зарплата от 100 000 руб.
Полный день