Проверка марок из ЛК ФСРАР




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2026-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

99 Comments

  1. M_W_W
    Reply ↓
  2. Alexei_fox

    Обработка еще актуальна ? работает ? А то там что бы войти в ЛК требуется ЭЦП.

    Reply ↓
  3. knstanta

    (2) Alexei_fox,

    Обработка продолжает работать.

    Для проверки марки достаточны только ИНН и пароль.

    Reply ↓
  4. Alexei_fox

    (3) Сканер в какой режим загонять для работы с обработкой ?USB HID COM пойдет ?

    Reply ↓
  5. knstanta

    (4) Alexei_fox,

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

    Reply ↓
  6. tarzan654

    Добрый день. А есть ли возможность удалить марку из списка проверенных через POST запрос?

    Reply ↓
  7. knstanta

    (6) tarzan654,

    Спасибо за предложение.

    Функционал расширил.

    1. Удаление марок из списка с одновременным удалением из ЛК ФСРАР, также предусмотрен.

    2. Добавлена конвертацию с русской на английскую раскладку (по наводке M_W_W).

    3. Добавил отдельную обработку событий сканера. Теперь можно сканировать сразу в обработку. Следить за количеством марок на проверку необязательно. Необходимое число запросов будет сформировано автоматически.

    Файл обработки обновил.

    Reply ↓
  8. 1c-vihr

    будет ли добавлен функционал ввода серии/номера/типа АМ?

    чтобы проверка была самой жесткой — дабы у фсрар при обнаружении нелегала не было претензий насчет того что проверяли марки «по-простому»

    спасибо

    Reply ↓
  9. knstanta

    (8) 1c-vihr,

    Проверка по жесткому не предусматривалась. Возможно в следующих версиях будет предусмотрена. Спасибо за предложение к развитию.

    Reply ↓
  10. SergBA

    Скажите, а сейчас этот сервис функционирует? 15/04/16 проверял — марки проверялись, а теперь в процессе отладки вижу ответ сервера, что документ перемещен

    <head><title>Документ перемещен</title></head>

    <body><h1>Объект перемещен</h1>Документ теперь находится здесь</body>

    и марки не проверяются 🙁

    Reply ↓
  11. k_petrovich

    говорят, что проверка марок через ЛК имеет ограничение на количество запросов. через обработку таких ограничений нет?

    Reply ↓
  12. knstanta

    (11) k_petrovich,

    Для обхода этого ограничения организована передача данных допустимыми пакетами N-ого количества.

    Reply ↓
  13. knstanta

    Очередное обновление.

    Добавлена проверка по жесткому.

    Для сканирования марок с сериями, переходим на закладку «Жесткий».

    Выбираем тип марки, активируем таблицу штрих-кодов и сканируем большой-маленький штрих.

    Reply ↓
  14. arabesca

    при запуске обработки выходит ошибка:

    «СканерШтрихКода<<?>>.ПосылкаДанных = 0;

    {ПРОВЕРКАМАРОКИЗЛК_ФСРАР.ERT(771)}: Переменная не определена (СканерШтрихКода)»

    Переменная вызывается в процедуре: ОбработкаВнешнегоСобытия

    Но сама переменная нигде не определена.

    Что это за переменная, как ее определить?

    Reply ↓
  15. knstanta

    (14) arabesca,

    Эта переменная сканера. Обычно определяется в глобальном модуле.

    Можно дописать к примеру такой код из глобального модуля:

    Перем СканерШтрихКода   Экспорт;
    //….
    //….
    Процедура ПриНачалеРаботыСистемы()
    Если ЗагрузитьВнешнююКомпоненту(«Scaner1C.dll»)<>0 Тогда
    Попытка
    СканерШтрихКода = СоздатьОбъект(«AddIn.Scaner45»);
    Исключение Сообщить(«Сканер: «+ОписаниеОшибки(), «i»)
    КонецПопытки;
    КонецЕсли;
    //….
    //….
    КонецПроцедуры

    Показать

    Reply ↓
  16. malinko.vasiliy

    Обработку капчи сделаете? (спасибо фсрару за дополнительное удобство…)

    Reply ↓
  17. knstanta

    (16) malinko.vasiliy,

    следите за обновлением

    Reply ↓
  18. beresnata

    Приобрели обработку «Проверка марок из ЛК ФСРАР», установили, но при нажатии кнопки «Передать» в легком режиме передача не происходит — в личном кабинете не появляются марки и в обработке по кнопке обновить тоже нет изменений. Если забить марку в самом личном кабинете ФСРАР и потом нажать в обработке «Обновить», то информация появляется. То есть связь из ФСРАР есть, а в ФСРАР не уходит. Подскажите пожалуйста, может мы что-то не так установили, или не доустановили.

    Reply ↓
  19. knstanta

    (18) beresnata,

    ФСРАР для ограничений действий сторонних приложений в автоматическом режиме, ввел капчи.

    Необходимо, обновиться до последней версии.

    Reply ↓
  20. espero2000

    Пытался на 4-х компьютерах запустить обработку, везде подключение к сайту ФСРАР, безуспешно 🙁

    С Windows ХР работа поддерживается? Я запускал на работе, там после нажатия кнопки «Подключить» вываливается ошибка: (532)}: WinHttp.WinHttpRequest: The server name or address could not be resolved

    На работе используется прокси, может в этом проблема. Решил попробовать дома, на прямом соединении. В этом случае другая ошибка: (532)}: WinHttp.WinHttpRequest: Отсутствует пакет безопасности.

    Запускал на двух компьютеров с Win 7, там после нажатия «Подключить» ничего не происходит, внизу написано «Выполняется обработка», закрыть нельзя. Приходилось через диспетчер задач снимать 1С.

    Как у всех работает, ума не приложу..

    Reply ↓
  21. knstanta

    (20) espero2000,

    Необходимо обновить обработку до последней версии.

    ФСРАР внес исправления в работу личного кабинета.

    Reply ↓
  22. knstanta

    Есть несколько запросов на встраивание в обработку возможности авторизации по Сертификату.

    На сколько актуален данный функционал?

    Стоит ли этим заниматься?

    Reply ↓
  23. natanvidja

    Добрый день.

    Скачал обработку… кое как понял как отправлять «лёгкую» проверку марки, оказалось капчу надо обновлять при нажатии «передать» и вводить соответственно, если капча не правильная просто ничего не происходит при нажатии «передачи» . Не получается внести данные сканером для «Жёсткой проверки», при сканировании ничего кроме звукового сигнала не выдаёт.

    Reply ↓
  24. knstanta

    (23) natanvidja,

    Капчу обновлять кнопкой со стрелками, до читабельного состояния. При ошибке, в ЛК ничего не уйдет.

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

    При отсутствии такого подключения смотреть ответ (15)

    Reply ↓
  25. Yurgis57

    Здравствуйте,

    Установил Вашу обработку. Все было ОК, но в какой-то момент в ответ на первый запрос сервер ФС РАР перестал возвращать мне раздел скрипта id=f5_cspm.

    Соответственно, «Что-то не так…». Это у меня что-то не так, или у них что-то поменялось?

    Reply ↓
  26. knstanta

    (25) Yurgis57,

    Необходимо обновиться до версии 1.3.0

    Reply ↓
  27. kumi2012

    Добрый день.

    У меня тоже самое. Выходит на сообщение «что-то не так..»

    Reply ↓
  28. knstanta

    (27) kumi2012,

    Обновление на 28.06.16

    Файл версии 1.3.0 — авторизация по ИНН-пароль

    Файл версии 1.3.1 — авторизация по ИНН-пароль, или по цифровой подписи (необходимо наличие CAPICOM)

    Reply ↓
  29. SerSinelnik

    Отлично все работает.

    Эта обработка, просто шедевр!!!

    Автор — гений. Огромное спасибо за труд от всех с ЕГАИСом мучающихся!!!

    Reply ↓
  30. knstanta

    (29) SerSinelnik,

    Спасибо на добром слове.

    Reply ↓
  31. HollyRoller

    А через прокси-сервер она работать будет?

    Reply ↓
  32. knstanta

    (31) HollyRoller,

    Не проверял. Нет в наличии. 😉

    Reply ↓
  33. M_W_W

    Все работает, автору спасибо большое! И процедура авторизации, перенесенная отсюда в обработку получения лицензий из ЛК тоже.

    Но, вопрос скорее методически-правового характера — если при проверке ФСМ пишет «данных не найдено», это однозначный левак, или что-то в консерватории не правильно???

    Уж больно много таких бутылок, бОльшая часть… Особенно по ФСМ, по АМ пока все правильные попадаются… Думал, может обработка что-то не так передает, перевел сканер в режим KB, зашел «пешком» в ЛК на сайте, попробовал — все аналогично… Фигня какая-то, не верю, такого не может быть, что-то в ФСРАРе косячит ИМХО… Как у остальных с этим дела обстоят?

    Reply ↓
  34. knstanta

    (33) M_W_W,

    На сколько я понял из вопроса, сканирование происходит по «жесткому» сценарию, при этом необходимо указывать тип марки, серию, номер и PDF417-код. Серия и номер выдергивается из QR-кода, вероятно не совсем верно формируются эти данные. Не проверяли цифирьки на бутылке? Определяется ли марка вообще по «легкому» режиму?

    Может действительно левак….

    Reply ↓
  35. M_W_W

    (34)

    Да, по «жесткому» сценарию. По легкому — проходит нормально, как и в старых версиях проходило.

    Тип марки, естественно указываю правильно, визуально считывая с бутылки, серию/номер получаю из ДатаМатрикс… Для «чистоты эксперимента» попробовал серию/номер ввести в ЛК вручную, а ПДФ считал сканером в клавиатурном режиме, результат тот-же…

    При проверке «по легкому» тип марки показывает правильный, такой как в «жестком режиме» вручную выбираю…

    И, как уже писал, проблемы в основном с ФСМ, АМ по жесткому проверяется нормально…

    Может у самого ФСРАРа проблемы с БД марок? У них вечно не пойми-что творится… Форум третий день «лежит» на «регламентных работах», может и по БД ФСМ какие-то работы, а я тут напрягаюсь???

    Reply ↓
  36. knstanta

    (35) M_W_W,

    Интересно, а если посмотреть протокол «легкой» проверки, есть там серия-номер. Совпадают они с реальными?

    Reply ↓
  37. M_W_W

    Ну, как-бы да… Все совпадает… На скриншоте в этом сообщении, более полная картина. Самая верхняя строка в верхнем окошке — жесткая проверка марки — «данных не найдено», выделенная строка в том-же окне — легкая проверка той-же марки, в нижнем окне информация по ней. Видно хорошо, что серия и номер одни и те-же…

    И ладно-бы, единичный случай, можно было-бы подумать, что контрофакт, а таких большинство, и именно по ФСМ. 🙁

    Reply ↓
  38. knstanta

    (37) M_W_W,

    Тип марки выбран «ФСМ. Водка до 0,5 л». В списке присутствует и «ФСМ. Водка 0,5 л». Может дело в неправильном указании типа….

    Reply ↓
  39. M_W_W

    Да, сам дурак… Разобрался еще днем, действительно, в списке есть и «до 0.5» и «0.5»… Сразу и не заметил… После того, когда понял, что не проверяются только пол-литровки, внимательнее посмотрел список, и нашел ровно 0.5. После этого, стало все проверяться:-)

    Reply ↓
  40. knstanta

    (39) M_W_W,

    Бывает….из всего этого, родилась идея «Псевдо Жесткой» проверки. Отправляем на проверку PDF417, а затем по протоколу проверяем схожесть серии-номера марки. При этом не заносим тип марки(слишком уж большой этот список). Может реализую в очередных обновлениях. Как вы думаете?

    Reply ↓
  41. M_W_W

    Думаю, это правильно. Я тоже уже об этом подумал — зачем указывать тип марки, когда он в ПДФе есть?

    А вообще, у них похоже разные, отдельные базы для разных типов марок:-) Была-бы общая база, могли бы выводить сообщение, что считанная марка не соответствует выбранному типу… А так, не найдена, и все тут…

    Reply ↓
  42. knstanta

    (41) M_W_W,

    К каким цифрам из штрихкодов можно подвязать список «тип марки» (001011, 001012,…002013, 002014…) ?

    вот цитата с форума РАРа

    Цитата:

    Re: Расшифровка штрих-кода PDF-417 акцизной марки

    Сообщение operator9 » 11 дек 2015, 13:02

    Данные полученные из марки ФСМ, пример:

    136-102719868197240715410498397226

    136- тип марки — в данном случае ФСМ, так как первая цифра «1» (если первые три цифры начинаются на «2», то это АМ)

    Далее идет последовательность цифр, составляющая серию + номер марки + контрольная сумма.

    Для ФСМ 12 цифр (серия + номер)

    136- тип марки ФСМ

    102- серия марки

    719868197 — номер марки

    240715410498397226 — контрольная сумма гознака

    20N00001CGUMZYCB99J1NKN31105001000056NQQMS5VP4HTF5SB46ZSQQJD­­8BNJP891

    20 – Номер Версии ПС ЕГАИС

    00001CGUMZYCB99J – Зашифрованный в кодировке Base36 код продукции(алккод)

    1NKN31105001 – Номер заявки на печать.

    000056 – номер марки на печать

    NQQMS5VP4HTF5SB46ZSQQJD8BNJP891 — защитная последовательность

    Reply ↓
  43. M_W_W
    К каким цифрам из штрихкодов можно подвязать список «тип марки»

    При «легкой проверке» в протокол выводится тип марки. Значит, он возвращается из сервиса, как они его там определяют, ИМХО не принципиально…

    Отсюда идея — отсканировали список марок, как по жесткому, с номерами, сериями и ШК, запустили «легкую» проверку, если что-то не проверилось — сразу отсеяли, с соответствующим результатом, на оставшиеся — из протоколов «легкой проверки», вытащили типы марок и дозаполнили таблицу. И только после этого, разрешить запуск «жесткой проверки». Изначально, до проведения «легкой проверки» кнопку «жесткой» сделать недоступной. Тогда, по идее, таких ошибок уже не будет.

    Как Вам такой алгоритм?

    Reply ↓
  44. knstanta

    (43) M_W_W,

    Действительно, на жесткую проверку выводить только те марки, что не сошлись при легкой проверке.

    Алгоритм ловкий…попробовать реализовать и испытать.

    Reply ↓
  45. M_W_W
    на жесткую проверку выводить только те марки, что не сошлись при легкой проверке

    Не! Наоборот… Не сошлись при «легкой» проверке, какая может быть «жесткая»-??? Уже и так ясно, что левак. А вот если «легкая» прошла, получаем из нее протокол, и в «жесткую» передаем тип марки из него(он там есть), что-бы не выбирать руками.

    Как-бы «жесткая» проверка в два этапа, сначала предварительная проверка, с отсевом того, что не проверилось «по легкому»(с одновременным получением типов марок на прошедшие проверку марки из протокола), а потом уже сама «жесткая» проверка, с использованием данных, полученных при легкой…

    Так понятнее?

    Reply ↓
  46. M_W_W

    Можно, конечно, и после «легкой» устроить еще и «промежуточную» проверку, со сверкой отсканированных кода и номера с полученными из протокола «легкой» проверки, но, не знаю, стоит ли… Я так понимаю, смысл «жесткой» проверки — это поиск мрки в базе данных ФСРАР… Найдено — «Проверено», «Данных не найдено» — контрафакт…

    Reply ↓
  47. knstanta

    (46) M_W_W,

    На сколько я себе представляю, смысл «жесткой» проверки заключен в проверке (нахождении соответствия) трех составляющих, полученных от реальных штампов (тип марки, серия-номер, PDF417). Если брать тип марки из протокола «легкой проверки» уже заведомо обманываемся с реальным типом марки бутылки.

    Двухуровневая проверка наверно не имеет смысла. Каждому PDF417 соответствует только один комплект «серия-номер», повторов PDF417 не может быть. И задача передать на проверку, как можно больше реальных данных, а не перебрасывая их из одного протокола в другой. Протоколы «легкой» и «жесткой» проверки не различимы, только присутствуют ответы «Не проверялась — Совпадает». Вопрос определения типа марки, остается открытым.

    Reply ↓
  48. M_W_W
    смысл «жесткой» проверки заключен в проверке (нахождении соответствия) трех составляющих, полученных от реальных штампов (тип марки, серия-номер, PDF417)

    Если так — то да.

    Но, мне показалось, что при проверке ищется марка в базе фиксации марок ФСРАР… Иначе какой смысл «жесткого» запроса, когда все данные и в «легком» есть, только сравнить с отсканированными?

    Reply ↓
  49. knstanta

    (48) M_W_W,

    Вот и получается, что быстро (без типа марки) можно обойтись и «легкой» проверкой, добавив для себя анализ данных из протокола. Но при этом в ЛК ФСРАР останется метка о не полной проверке, что может дать некоторое преимущество Росалко в обвинении в распространении нелегала.

    «Золотая середина» — ….. со сверкой отсканированных кода и номера с полученными из протокола «легкой» проверки….

    Reply ↓
  50. boev

    Если нужен прокси

    Если ПроксиСервер = 1 Тогда

    WinHttp.SetProxy(2,»192.168.110.126:3128″);

    WinHttp.SetCredentials(«admin»,»pass»,1);

    КонецЕсли;

    Reply ↓
  51. HollyRoller

    Добрый день.

    До сегодняшнего дня Ваша проверка работала безупречно.

    Начиная с 28-09-2016 при попытке подключения к ЛК ФСРАР получаем ошибку —

    WinHttp.SetRequestHeader(«Cookie»,Кука);

    {\XXXXXXXYYYYYYZZZZZZZZEXTFORMSПРОВЕРКАМАРОКИЗЛК_ФСРАР.ERT(945)}: WinHttp.WinHttpRequest: The requested header was not found

    Что могло произойти?

    Заранее благодарен.

    Reply ↓
  52. knstanta

    (52) HollyRoller,

    Очередное изменение cookie со стороны ФСРАР, файлы обработки подправлены.

    Reply ↓
  53. user631592_rs148

    Акцизные марки надо сканировать в обработку, или можно с файла загрузить?

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

    Еще не понял. Для жесткой проверки надо указывать вручную тип акцизной марки — это же неудобно!

    Reply ↓
  54. knstanta

    (54) user631592_rs148,

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

    2. Выгрузки проверенных марок из ЛК обратно в текстовой файл нет. Хотя реализовать не сложно и своими силами при должном умении. Хотя бы командой ЗначениеВФайл(КаталогПользователя()+»МаркиОбратно.txt»,Марки)

    3.При жесткой проверке необходимо указывать тип марки. Указав один раз, сканируем всю партию данного типа. При появлении партии другого типа, предварительно изменить тип марки на нужный и т.д. Автоматом вычислять тип марки не представляется возможным.

    Reply ↓
  55. M_W_W

    Похоже опять что-то поменяли…

    До этого, работало исправно.

    WinHttp.Send();
    {Îáðàáîòêà.ÏðîâåðêàÀÌâËÊ.Ôîðìà.Ìîäóëü(634)}: WinHttp.WinHttpRequest: An error occurred in the secure channel support
    
    WinHttp.SetRequestHeader(«Cookie»,Êóêà);
    {Îáðàáîòêà.ÏðîâåðêàÀÌâËÊ.Ôîðìà.Ìîäóëü(930)}: WinHttp.WinHttpRequest: The requested header was not found

    Извиняюсь, нечем перекодировать в удобочитаемый текст… Но, я думаю, и так понятна ошибка.

    Reply ↓
  56. M_W_W

    Ложная тревога. Сейчас — все отлично работает, как и раньше. Видимо, днем были какие-то проблемы… При этом, по той-же связке ИНН и пароль, «пешком» в ЛК заходило нормально. А из программы — ни в какую… И в получение лицензий — тоже.

    Reply ↓
  57. M_W_W

    (55)

    Автоматом вычислять тип марки не представляется возможным.

    Ну, на самом деле, ничего невозможного нет… Первые три символа «маленького» ШтрихКода, которые до «-«, это и есть тип марки…

    Вот только, или я чего-то не понял, или ФСРАР как всегда «в своем репертуаре», надо же намутить воды на пустом месте…

    Вот пример:

    То, что Вы получаете из ЛК ФСРАР:

    ArrayМарки = «001013»

    ArrayРасшифровка = «ФСМ. ВОДКА ДО 0,1 Л»

    Первые три символа ШК этой марки — «133».

    Если заглянуть в схему «EGCommonEnum.xsd» из УТМ, то видим:

    <xs:enumeration value=»133″>
    <xs:annotation>
    <xs:documentation>ФСМ. Водка до 0,1 л</xs:documentation>
    </xs:annotation>
    </xs:enumeration>
    

    То есть, первые три символа ШК с бутылки однозначно идентифицирует тип марки, с точки зрения УТМ ЕГАИС.

    Но, получается, что в ЛК ФСРАР код совсем другой — «001013»… Бред какой-то… Две разных базы, с совершенно разной организацией справочников?

    В принципе, можно подгрузить список кодов из XSD схемы УТМ, находить отсканированный код(первые три символа) в этом списке, и потом как-то сопоставлять найденый тип марки с типом, полученным из ЛК ФСРАР… Только, пока не понятно, как их связать — по строковому наименованию(приведя их к одному регистру так, как написаны они тоже по разному — в ЛК все большие буквы, а в УТМ нет), но, как-то это криво получается — а вдруг они там не только регистром отличаются, а где-то еще и какую нибудь точку пропустили…

    Может есть какой-то другой способ сопоставить коды из ЛК и из схемы XSD УТМ — ?

    Reply ↓
  58. M_W_W
    Reply ↓
  59. M_W_W
    Reply ↓
  60. M_W_W

    Во, блин… Форум извратил код… В двух местах, там где Array.ТекущаяСтрока(1); и глСканерПосылкаДанных(1); он какую-то html строку вписал… Наверное надо для кода 1С не тег Code использовать, а просто как цитату вставлять…

    Reply ↓
  61. M_W_W

    (60)»Пока, можно перед сканированием первой марки просто выбрать первую строку списка типов(Выберите тип марки) или щелкнуть мышкой на таблице, чтобы она была активная.»

    Хотя, если в функции Функция АктивизацияСканераДляШтрих_Серия()

    закомментировать:

    //Если ПустоеЗначение(Array.ПолучитьЗначение(Array.ТекущаяСтрока()))=1Тогда

    // Возврат 0;

    //КонецЕсли;

    То работает и так, можно сразу после перехода на закладку «Жесткий» начинать сканировать «маленький» ШК…

    Reply ↓
  62. knstanta

    (62,(62) M_W_W,

    Все правильно и логично….Если нет формулы нахождения соответствия, то остается искать его на «Кошках». Единственное…в этой темной комнате кошки каждый раз могут разными….

    Спасибо, за моральную поддержку.

    Reply ↓
  63. M_W_W

    Да, запросто могут… И отследить мы это никак не сможем. Единственное, если «вдруг, не с того ни с сего» протокол проверки будет отрицательный, будет повод сразу, без паники(ААА!!!! Контрафакт!!! :-)) обратить внимание на визуальное соответствие автоматически полученного типа марки — марке на соответствующей бутылке.

    Reply ↓
  64. M_W_W

    Да, еще кстати…

    В XSD схемах ЕГАИС, недавно появились еще новые коды для «старых» марок, с 001 по 031. Буквально пару недель назад, делал документ запроса нового ШК для не читаемых марок, их не было, а вчера заглянул в схему — уже есть.

    Что по старым маркам возвращает сайт ФСРАР — ? Вроде их там тоже нет… Для таблицы соответствия, я их из Array вытащил, может они где-то опубликованные есть?

    Хотя, для этой задачи толку от них не много — их все равно негде взять, второго то ШК нет…

    Reply ↓
  65. M_W_W

    (57) M_W_W,

    «Ложная тревога. Сейчас — все отлично работает, как и раньше. Видимо, днем были какие-то проблемы…»

    У меня — все нормально работает. А на том компе, где тогда не работало — так и не работает. Стал разбираться — оказалось, там древний Windows XP SP2! Скорее всего, в этом причина. Не находит поддержку какого-то протокола наверное… Хотя, раньше, одна из первых версий обработки еще до «фокусов» ФСРАР, там вроде работала.

    PS Обновил винду, установил SP3, все заработало!:-)

    Reply ↓
  66. knstanta

    (66) M_W_W,

    Протестировал на Windows XP SP3, в ЛК входит отлично, марки отправляет и получает результаты.

    Что может быть на SP2 такое, что не переваривает обработка???

    Reply ↓
  67. M_W_W

    Ну, когда я сегодня обновил винду до SP3, то тоже все отлично и сразу заработало.

    Вот это:

    WinHttp.WinHttpRequest: An error occurred in the secure channel support

    наводит на мысль, что что-то с защищенным протоколом не то… Да и фиг с ним, пора вообще забывать об XP, а тем более без обновлений.

    Просто, вдруг еще кто-то наступит на эти грабли, будет хоть понятно, что посоветовать проверить.

    Reply ↓
  68. knstanta

    (68) M_W_W,

    Согласен, а то весь мозг изъел этот баг…

    Reply ↓
  69. Xeromant

    а для версии 1с8 на управляемых формах это есть ?

    Reply ↓
  70. Xeromant

    как удалить все марки из ЛК ? (там их 995)

    Reply ↓
  71. knstanta

    (71)

    При должной сноровке можно организовать кнопку с циклическим удалением.

    Reply ↓
  72. knstanta

    (70)

    На 1с8 нет.

    Можно постучаться туда: Проверка марок из 1с8. Антидубль продаж https://youtu.be/fBu4w8gwhxI

    Reply ↓
  73. M_W_W

    А зачем их удалять? То, что Вы проверяете марки, Вам только плюс! Коснись чего, не дай бог конечно, а у Вас будет дополнительный аргумент — «а мы марки проверяем, вся история в ЛК-!».

    PS Но, конечно, если Вас захотят поиметь, то все равно поимеют, не зависимо от истории проверки марок 🙁

    Reply ↓
  74. arkada2009

    Здравствуйте. Во время сканирования марки не заполняется поле. Сканер пикает и дергается графа.Подскажите пожалуйста что делаю не так ? Заранее благодарен

    Reply ↓
  75. M_W_W

    А он у Вас в режиме «эмуляция COM порта», или «эмуляция клавиатуры» — ?

    По тому, что Вы пишете, похоже второе… А должно быть первое.

    Reply ↓
  76. M_W_W

    Похоже, опять ФСРАРовцы чего-то нахимичили… Подключение на этот раз проходит нормально, капча появляется, но после нажатия кнопки «Передать на проверку» ничего не происходит. Марка не появляется в списке. На сайте в ЛК она тоже не добавляется. В самом ЛК проверка работает. Такое обычно происходило, когда при вводе капчи ошибались. Но, тут точно правильно — раз десять пробовал, с перегенерацией капчи, выбирал самые легкие, где ошибок быть не может… Что-то поломали, видимо…

    Reply ↓
  77. SerSinelnik

    Там новая проверка » Я не робот»

    Мож пожаловаться на них в антимонопольный?)

    Реально достали своей неугомонной фантазией.

    Reply ↓
  78. meis2000@newmail.ru

    А эту новую проверку «Я не робот» как-то в обработке реализовать можно?

    Reply ↓
  79. arkada2009

    «Подключение на этот раз проходит нормально, капча появляется, но после нажатия кнопки «Передать на проверку» ничего не происходит. Марка не появляется в списке. На сайте в ЛК она тоже не добавляется.»

    Такая же проблема во всех наших торговых точках. Подскажите , может ест какой нить способ !!!

    Reply ↓
  80. SergN77

    Достал ФС РАР, не дает вообще работать, удалось кому-нибудь «Я не робот» в обработку прикрутить?

    Reply ↓
  81. Taburovdm

    (78)

    уже жаловались. нам антимонопольная служба так не чего и не ответила

    Reply ↓
  82. Taburovdm

    а есть какие-то другие сервисы для проверки легальности марок? кроме как через ЛК ФСРАР может что есть в открытых источниках?

    Reply ↓
  83. Stas-ch

    (83) Других сервисов похоже нет и не будет, ибо тогда «злоумышленники» начнут такими сервисами активно пользоваться для наклейки на нелегальную продукцию якобы легальных марок, проверка которых проходит успешно.

    Reply ↓
  84. M_W_W
    добавлена авторизация по ЦифровойПодписи

    Добрый день! А подпись только через внешние криптопровайдеры(Крипто-Про, VipNet CSP) — ? Использовать аппаратную «криптографию на борту» с ДжаКарты или Рутокен ЭЦП-2.0 не получается?

    Было-бы очень интересно…

    Reply ↓
  85. M_W_W

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

    Reply ↓
  86. M_W_W

    (86)А нет… Извиняюсь. Не показывает в таблице на форме, а в печатную форму протокола проверки все выводит нормально.

    Reply ↓
  87. knstanta

    (87) Из протокола вырвать можно любые данные. На тот момент такая задача не стояла.

    Reply ↓
  88. M_W_W

    Да нет, с этим все нормально, ничего не надо, а будет надо, сам допишу.

    Меня больше волнует вопрос — можно ли как-то ДжаКарту или РуТокен ЭЦП 2.0 прикрутить…

    Боюсь, что через КапиКом не получится. Там есть какая-то новая примочка, сейчас не помню какая, можно поискать.

    Reply ↓
  89. M_W_W

    Просто у многих клиентов, кроме ЕГАИсовских ключей ничего нет. Декларации подписывают с помощью КриптоАРМ-Стандарт Плюс, он умеет с ними работать, и в ЛК тоже можно с ними заходить. Было-бы интересно и в обработке проверки марок использовать.

    Reply ↓
  90. knstanta

    Так как вход в личный кабинет реализован ФСРАР и с помощью ключей Jacarta и Рутокен. То это можно сделать и в обработке.

    Reply ↓
  91. M_W_W

    Не все так просто… Вот скриншот. Сертификаты на компе видны, которые через VipNet созданы.

    По первому из списка, даже заходит в ЛК. По остальным не зайдет — они не «Алкогольные», я их

    просто для регистрации ККТ в ФНС и ОФД делал.

    А поверху окна 1С, окно единого клиента ДжаКарты. На ней есть сертификат, естественно «алкогольный».

    Но, как видите — он не виден в обработке. Но, «пешком» по нему я спокойно захожу в ЛК на сайте ФСРАР.

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

    Это другой принцип входа. VipNet или CriptoPro не может получить ключи с ДжаКарты или Рутокен ЭЦП 2.0, потому,

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

    не используются. Поэтому CapiCom и не может до этих сертификатов добраться.

    Как-то так…

    Reply ↓
  92. M_W_W

    Вот что удалось сразу найти, о чем писал в (89):

    PKCS#11

    Библиотека PKCS#11 предоставляет универсальный кроссплатформенный программный интерфейс к USB-токенам и смарт-картам.

    Функции делятся на:

    Функции доступа к устройству;

    Функции записи/чтения произвольных данных;

    Функции работы с ключами (поиск, создание, удаление, импорт, экспорт);

    Функции работы с сертификатами (поиск, импорт, экспорт);

    Функции ЭЦП;

    Функции хэширования;

    Функции шифрования;

    Функции вычисления имитовставки;

    Функции выработки ключа согласования (Диффи-Хeллман);

    Функции экспорта/импорта сессионного ключа;

    Источник: https://habrahabr.ru/company/aktiv-company/blog/241221/

    Reply ↓
  93. knstanta

    Я со своим Рутокеном захожу спокойно из обработки в ЛК. Правда, если память не изменяет, единожды делал регистрацию сертификата в системе, с помощью КриптоАРМ.

    Reply ↓
  94. M_W_W

    Сертификат вроде скопирован в хранилище… Он к ключам обратиться не может.

    А у Вас РуТокен именно «ЭЦП-2.0» — ? Просто, их там куча до этого была разных,

    у которых не было «криптографии на борту», просто ключи и сертификаты хранились…

    Как в еТокене…

    Попробую сегодня перепроверить, есть ли сертификат в хранилище «Личные», отпишусь.

    Reply ↓
  95. knstanta

    Для ЕГАИСных дел используется Рутокен ЭЦП 2.0

    Reply ↓
  96. knstanta

    А сертификат PKI не пробовали зарегистрировать в системе? Вроде через него находит сертификат ГОСТ….

    Reply ↓
  97. M_W_W

    Попробовал. Сертификаты добавил в хранилище «Личные».

    В итоге, ГОСТ стал видиться в списке, но не работает:

    Произошла ошибка при подписи файла!

    Описание ошибки: : The signer’s certificate is not valid for signing.

    Произошла ошибка при подписи файла!

    Описание ошибки: : The signer’s certificate is not valid for signing.

    Зацикливается, и без остановки пишет эту ошибку.

    Дальше, если прервать по Esc, то выдает такое:

    WinHttp.SetRequestHeader(«Cookie»,Кука);

    {D:BASA_1CПРОВМАРОК2018ПРОВЕРКАМАРОКИЗЛК_ФСРАР-ПОДПИСЬ.ERT(1359)}: WinHttp.WinHttpRequest: Параметр задан неверно.

    Установка PKI ничего не меняет, его просто не видно в списке, и его наличие/отсутствие никак не влияет на работу ГОСТа.

    Но, это ДжаКарта, и с тестовым PKI. Сейчас, под рукой, нет РуТокена с «боевыми» сертификатами, вечером, после 10, смогу зайти к клиенту по удаленке и проверить с РуТокеном…

    Reply ↓
  98. knstanta

    (98) В личку бросьте адрес почты, пришлю работающий у меня вариант

    Reply ↓
  99. Kostt

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

    Reply ↓

Leave a Comment

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