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

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

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

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

Комментарии
Избранное Подписка Сортировка: Древо
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С
Краснодар
зарплата от 70 000 руб.
Полный день

Старший консультант-аналитик 1С БИТ.Финанс
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

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

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

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