Обмен с УТМ ЕГАИС для 1С: 7.7




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2024-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. Гость

    у всех работает?

    Reply
  2. karpov-vn

    И где рисунок 4 ?

    Reply
  3. victuan

    Все ждут рисунка 4 😉

    Reply
  4. kirlog

    А что нужно, чтобы получить незапароленную обработку с читабельным исходным кодом?

    Reply
  5. M_W_W

    (4) kirlog,

    Вот тоже интересно…. Хотя, уже и не нужно:-)

    Кто-нибудь попробовал? Работает? Я пока не могу, джакарту оплатили но еще не привезли, соответственно УТМа в живом виде пока нет…

    Reply
  6. bikmullina

    Обработка не работает. Выдает ошибки при формировании запроса:

    10:39:28 — Запрос справочника по ИНН 7453191902

    ХМЛ = ПарсерХМЛ.СоздатьДокумент(); ХМЛ.Загрузить(ФайлОтвета); УзелA = ХМЛ.ВыбратьУзел(«A»); Попытка ЗапросИд = УзелA.ВыбратьУзел(«url»).Значение; Исключение Сообщить(«Ошибка!»,»!»); ЗапуститьПриложение(«explorer «+ФайлОтвета); Возврат; КонецПопытки; Сообщить(ТекущееВремя() + » — Ожидание ответа……»); Пока Вопрос(«Ожидание ответа(~5мин)…….»+РазделительСтрок + «ОК — Проверить входящие, Отмена — Прервать»,»ОК+Отмена»,30) <> «Отмена» Цикл

    {D:РАБОТАЕГАИС!ЕГАИС.ERT(14)}: : XML document must have a top level element.

    При нажатии кнопки Выбор прихода:

    КомандаСистемы(«curl -X GET http://«+СокрЛП(АдресУТМ)+»/opt/out?refresh=true»+»>»+ФайлОтвета); ТЗ_Документы.Очистить(); ТЗ_Документы.НоваяКолонка(«Юрл»); ТЗ_Документы.НоваяКолонка(«Ид»,»Строка»,36); ПарсерХМЛ = СоздатьОбъект(«AddIn.XMLParser»); ХМЛ = ПарсерХМЛ.СоздатьДокумент(); ХМЛ.Загрузить(ФайлОтвета); УзелA = ХМЛ.ВыбратьУзел(«A»); Для ш = 1 По УзелA.КоличествоПодчиненных() Цикл Узел1 = УзелA.ПолучитьПодчиненныйПоНомеру(ш);

    {D:РАБОТАЕГАИС!ЕГАИС.ERT(3)}: : XML document must have a top level element.

    Reply
  7. roman8115

    (6) bikmullina,

    Не отвечает УТМ или неправильно указан адрес УТМ.

    Адрес должен быть вида ИМЯ_ПК:ПОРТ или IP_Адрес:Порт.

    Например:

    comp1:8080 — правильно

    192.168.1.5:8080 — правильно

    http://comp1:8080 — неправильно

    Reply
  8. roman8115

    (4) kirlog,

    Reply
  9. natanvidja

    посмотрел файл текст.txt от автора. Всё работает. Огромное спасибо.

    Можно обработку целиком на natanvidja@gmail.com ПЛИИЗЗЗ. Скину на телефон отправителю 300 р. Покупка Абонемента для скачивания 850 р (((( Дорого

    Если вылезает ошибка типа

    {D:РАБОТАЕГАИС!ЕГАИС.ERT(3)}: : XML document must have a top level element.

    Вероятно всего не удалось загрузить приходящий ответ в xml файл. Помогает открытие 1с 7 с Админскими правами.

    Reply
  10. HSV

    (8) Спасибо!

    Reply
  11. bikmullina

    Проверила адрес, всё правильно написано. Быть может у нас слишком старая версия 1с 7.7. Скажите, пожалуйста, на каком релизе 1С 7.7 ТиС проверялась данная обработка.

    Reply
  12. bikmullina

    После запуска от имени Администратора новая ошибка:

    11:35:06 — Запрос справочника по ИНН 7453191902

    11:35:07 — Ожидание ответа……

    11:35:37 — Проверка входящих

    11:35:50 — Проверка входящих

    11:36:21 — Проверка входящих

    11:40:52 — Проверка входящих

    11:40:54 — Получение данных http://192.168.100.249:8080/opt/out/ReplyPartner/24

    КомандаСистемы(«curl -X GET «+СправочникЮрл+»>»+ФайлОтвета); ПарсерХМЛ = СоздатьОбъект(«AddIn.XMLParser»); ХМЛ = ПарсерХМЛ.СоздатьДокумент(); ХМЛ.Загрузить(ФайлОтвета); Узел1 = ХМЛ.ВыбратьУзел(«ns:Documents»); Узел2 = Узел1.ВыбратьУзел(«ns:Document»); Вид = Узел2.ПолучитьПодчиненныйПоНомеру(1).Наименование; Таб = СоздатьОбъект(«Таблица»); Если Вид = «ReplyClient» Тогда Узел3 = Узел2.ВыбратьУзел(«ns:ReplyClient»);

    {D:РАБОТАЕГАИС77!ЕГАИС.ERT(16)}: : Ошибка исполнения метода

    Reply
  13. roman8115

    (12) bikmullina,

    После выполнения обработки файл ответа «reply.xml» находится в каталоге временных файлов(КаталогВременныхФайлов()). Нужно проверить структуру XML

    Reply
  14. roman8115

    (11) bikmullina,

    от релиза ТиС не зависит, должно работать с любой конфигурацией

    Reply
  15. M_W_W

    Добрый день!

    Вчера настроил УТМ, попробовал, работает…. Но, частично… Запросы отправляет, квитанции получает, ожидаем ответа… Через ~5 минут приходит ответ, а дальше — распарсить его не получается, ХМЛ.ВыбратьУзел(«ns:Documents»); — ошибка исполнения метода, как в посте 12 от bikmullina… Файл ответа(во вложении к этому сообщению) просматриваю — вроде все нормально, во всяком случае, я косяков в структуре не вижу(может чего-то недопонял???)…

    Для отладки написал простенькую обработку, по анализу готового файла ответа, чтобы лишний раз не терять время на ожидании ответа и не мучать УТМ…

    Процедура Сформировать()
    ФайлОтвета = «C:Temp
    eply.xml»;
    // ФайлОтвета = «C:Tempcard_cl.xml»;
    ПарсерХМЛ = СоздатьОбъект(«AddIn.XMLParser»);
    ХМЛ = ПарсерХМЛ.СоздатьДокумент();
    ХМЛ.Загрузить(ФайлОтвета);
    
    Узел1 = ХМЛ.ВыбратьУзел(«ns:Documents»);
    
    Узел2 = Узел1.ВыбратьУзел(«ns:Document»);
    
    КонецПроцедуры

    Показать

    Но, это пока понимания «а чего ему в XML ответе не нравится — ???» не добавило… Вылетает там-же, на первом же «ВыбратьУзел»… Если не трудно, посмотрите пожалуйста файлик, что-бы было хоть понятно, в какую сторону копать — файл кривой(или у меня руки?:-( ), что-то не так в коде обработки, в части парсинга, или вообще проблема в чем-то другом…

    PS Сам УТМ вроде нормально работает, во всяком случае через сайт Егаисик.рф мне удалось и ТТН посмотреть, и справочники…

    Reply
  16. roman8115

    Похоже проблема в XML парсере. Вот мой V7PLUS.dll.

    Reply
  17. M_W_W

    Поменял dll… Результат тот-же.

    Для чистоты эксперимента в процедуре «ПриОткрытии()» прописал полный путь к длл, чтобы исключить вариант, что она не оттуда подгружается. Та-же ошибка…

    В отладчике уже все перепробовал, вытащил все что смог — скриншот во вложении. Уже не знаю, куда и копать…

    PS Операционка XP SP3 — может быть причиной некорректной работы парсера? УТМ стоит на машинке с семеркой, но на ней нет 1С. Может есть смысл установить, и перенести эксперименты туда?

    Reply
  18. M_W_W

    Попробовал. Установил «чистую» 1С, создал пустую базу, закинул в нее Вашу длл, и тестовую обработку, ничего не изменилось:

    Узел1 = ХМЛ.ВыбратьУзел(«ns:Documents»);

    {C:TESTXMLПРОВЕРКАРАБОТЫС_XML.ERT(9)}: : Ошибка исполнения метода

    та же ошибка…

    Reply
  19. aceman07

    (18) M_W_W, возможно дело в сертификате. Вероятно УТМ не берет информацию о номенклатуре. Смотрели, есть у Вас во временном каталоге файлы WAYBILL…xml ?

    Reply
  20. roman8115

    (18) M_W_W,

    предлагаю проверить такой механизм:

    Для Сч=1 По ХМЛ.КоличествоПодчиненных() Цикл

    Узел1=ХМЛ.ПолучитьПодчиненныйПоНомеру(Сч);

    Сообщить(Узел1.Наименование);

    Если Узел1.Наименование=»oref:ClientRegId» Тогда

    РегИд =Узел1.Значение;

    ИначеЕсли Узел1.Наименование=»oref:KPP» Тогда

    КПП=Узел1.Значение;

    КонецЕсли;

    КонецЦикла;

    Reply
  21. roman8115

    (18) M_W_W,

    ВерсияАнализатора должна быть 2.0

    ПарсерХМЛ = СоздатьОбъект(«AddIn.XMLParser»);

    Сообщить(ПарсерХМЛ.ВерсияАнализатора);

    Reply
  22. roman8115

    (18) M_W_W,

    еще вариант

    regsvr32 /u msxml4.dll

    regsvr32 msxml3.dll

    Reply
  23. M_W_W

    (20) roman8115,

    предлагаю проверить такой механизм:

    Узел1.Наименование = «Documents» (в смысле, в табло выводит — Documents )…

    А должно быть, как я понимаю — «oref:ClientRegId»

    Вот собственно и ошибка, поэтому и не парсит… Получается всетаки структура самого хмл?

    Хотя, зрительно, вроде правильный, во всяком случае на глаз ошибки не видно…

    Вобщем то, это было видно и в отладчике, скриншот приложенный к сообщениию(17), так же как и версия анализатора…

    Щас еще попробую с регистрацией длл-ок поиграть, но похоже причина не в этом…

    Reply
  24. M_W_W

    Ура! Заработало!!! 🙂

    Как это ни странно:

    Щас еще попробую с регистрацией длл-ок поиграть, но похоже причина не в этом…

    но причина была все-таки в этом… Удивительно, парсер работал, но как-то криво… Я бы понял, если-бы совсем не работал, но так…

    Спасибо огромное за помощь! Я думаю, этот опыт всем пригодится, не у одного меня такая проблема…

    Reply
  25. HSV

    Здравствуйте, вопрос не совсем по обработке

    подскажите если 1С в терминале, делаю адрес УТМ например (192.168.10.106:8080)

    На компе где УТМ (192.168.10.106 ) что-то нужно расшарить или ставить Апач?

    Если просто запускаю в 1С по сети где УТМ обработку то все ОК, как из терминала запустить? выходит ошибка:

    ХМЛ.Загрузить(ФайлОтвета);

    {\SERVERЕГАИС.ERT(164)}: : XML document must have a top level element.

    В браузере http://192.168.10.106:8080/opt/out?refresh=true «страница не найдена»

    Reply
  26. roman8115

    на терминале установлен cURL?

    Reply
  27. HSV

    (26) Да

    Reply
  28. aximo

    Ну что, выглядит довольно уверенно. Интересно, долги писали?

    Reply
  29. aximo

    (25) а как вы адрес утм сделали не 127.0.0.1 в терминале естественно.

    та же проблема, работаем все через терминал.

    Reply
  30. HSV

    Может не совсем ясно выразился, попробую еще раз

    Сервер win2012 (виртуализирован) в 1C работаем в терминале — ip 192.168.10.100, curl установлен, УТМ -нет

    машина с УТМ-1 win7 — ip 192.168.10.106 curl установлен

    Если захожу на машине с УТМ-1 в 1С не через RDP, а просто, ч/з сеть, то в обработке значение АдресУТМ (localhost:8080), попробовал загрузить данные своей организации, все сработало ОК.

    В принципе можно и так работать, но у нас опт и розница и еще 2 разных фирмы (пиво/крепкий алкоголь) все на одном сервере, соответственно УТМ будет штук 10, а работать все на сервере в одной 1С, так вот если обработку открываю в терминале 1С и прописываю в ней АдресУТМ 192.168.10.106:8080, то не работает, но тут не обработка конечно виновата. Вопрос как правильно машину с УТМ настроить.

    Reply
  31. aximo

    (30) вы хотите обращаться через рдп к УТМ машины, которая подключается? тоже интересует этот вопрос!

    Reply
  32. aximo

    хотел еще спросить по каком критерию вы объединили ссылки на файлы ТТН и СправкуБ?

    Reply
  33. HSV

    Через rdp тоже заработало (брандмауэр отключил на УТМ), но вышла ошибка как в 12, 18 посте, сейчас до понедельника

    Reply
  34. M_W_W

    (32) aximo,

    В ТТН есть рег.номера справок, делается запрос к УТМ с указанием номера справки, и получается в ответе ссылка.

    Reply
  35. aximo

    (34) понятно, т.е вы командой рефреш смотрите, что лежит в утм, затем, выбираете все ттн, парсите ее, получая номер справки б, а каким запросом получаете ссылку на справку????

    И еще… Не совсем понятно зачем технически справка б вообще нужна, в ттн же вся информация имеется!

    Reply
  36. V-A-V

    (24) M_W_W,

    Расскажи точно, как добился, что у тебя заработало…

    У меня та же проблема.

    Узел1 = ХМЛ.ВыбратьУзел(«ns:Documents»);

    {D:ЕГАИСОБРАБОТКИЕГАИС.ERT(288)}: : Ошибка исполнения метода

    Здесь все перечитал и переделал. Не помогает.

    Файл с УТМ получаеться и лежит во временной папке.

    Хоть свой парсер пиши блин…

    Reply
  37. HSV

    (36) У меня такая же проблема,

    сделал обработку в ней:

    Сообщить(«ВерсияАнализатора — » + ПарсерХМЛ.ВерсияАнализатора);

    Сообщить(«ВерсияБазовогоАнализатора — «+ПарсерХМЛ.ВерсияБазовогоАнализатора);

    так если ВерсияБазовогоАнализатора =3 то все нормално, пробовал с разных компов, а на сервере ВерсияБазовогоАнализатора =4, там не работает

    Сервер 2012r2 там пробовал regsvr32 /u msxml6.dll

    regsvr32 msxml3.dll

    все равно пишет ВерсияБазовогоАнализатора =4

    Reply
  38. HSV

    Помогло C:WindowsSysWOW64
    egsvr32 /u msxml4.dll

    C:WindowsSysWOW64
    egsvr32 msxml3.dll

    Reply
  39. V-A-V

    (37) HSV,

    Написал батник перерегистрации парсера.

    Все сразу заработало.

    Версия базового анализатора должна быт 3.

    Reply
  40. kirlog

    Спасибо!

    Reply
  41. M_W_W

    (38) HSV,

    Да, мне тоже это помогло, не знаю, в других программах где нибудь вылезет необходимость 4-того парсера, или нет… Это судя по всему косяк v7plus, что не хочет с более современным парсером работать.

    Reply
  42. art010

    как проверить установлен curl или нет?

    и как его установить если его нет?

    Reply
  43. V-A-V

    (42) art010,

    Скачивешь с сайта произзводителя cUrl и кидаешь exe-шник и dll-ку в windowssystem32

    и все работает…

    Reply
  44. art010

    Для документа XML должен существовать документ более высокого уровня. Связано с curl ?

    Reply
  45. V-A-V

    (44) art010,

    ДА…

    вот cUrl 32/64

    Reply
  46. art010

    Спасибо. заработало.

    Будет доработана возможность создания прихода на основании данных из ЕГАИС?

    Будет обработка для взаимодействия по опту для 7.7? Отправка ТТН и все что требуется?

    Reply
  47. V-A-V

    (46) art010,

    Но тут уж как автор захочет.

    Если сделает, то будет.

    А мне однозначно все это надо — придется писать…

    Отдельное спасибо автору за идею и код…

    Reply
  48. roman8115

    (46) art010,

    все будет

    Reply
  49. V-A-V

    (48) roman8115,

    А сроки… Уже поджимает…

    Reply
  50. M_W_W

    (49) V-A-V,

    А какие сроки Вас поджимают? 01.01.2016?

    Требуется подтверждать приход, или формировать акты разногласий…

    Это можно делать уже сейчас, хоть этой обработкой, хоть еще кучей способов…

    А о загрузке накладных из ЕГАИС, в нормальном, удобном виде, можно пока забыть…

    В ЕГАИС нет ШтрихКодов EAN-13, а какая без них загрузка? Торговать то Вы будете не по кодам ЕГАИС, и не по акцизкам,а по обычным ШтрихКодам… Представляете, сколько накосячат наши любимые пользователи, если мы загрузим накладные в таком виде,и дадим ввод ШК им на откуп?

    Нет, конечно можно добавить в номенклатуру код ЕГАИС, потом вручную перелопатить весь справочник, сопоставив имеющуюся номенклатуру со справочниками ЕГАИС… Но, представляете, какой это труд, и какое поле для ошибок… Я долго думал, как максимально упростить эту процедуру, но, пока все упирается в то, что «а кто это все делать будет?» Да даже если это разово и проделать, то, как только будет появляться новый товар, так проблемы будут возникать снова…

    Вобщем, лично я для себя решил пока подождать, может что-то поменяется в лучшую сторону. Пока, «ужасы 01.01.2016» особо не пугают, мы к ним готовы.

    Reply
  51. V-A-V

    (50) M_W_W,

    Мы оптовики и нам на горло наступают производители.

    Код товара ЕГАИС я однозначно буду заводить.

    Ну и придется девочкам его ручками поддерживать…

    Мы с 01.01.2016 должны уже ТТН по покупателя выгружать.

    На сей момент должны подтверждать факт прихода…

    Да и вообще не люблю тянуть, как бухи до последнего.

    Лучше пущай лежит готовое…

    Reply
  52. stepan13

    (50) M_W_W, по текущему состоянию дел розница с 1.07 будет обязана сканировать каждую марку.

    из марки легко вычисляется егаисовский 19 значный алккод. (http://forum.fsrar.ru/viewtopic.php?f=33&t=35128&start=20) забивать алккоды можно сразу при приёмке с помощью двумерного сканера.

    всё идёт к тому, что еан-13 и не нужен.

    более того, еан-13 может совпадать у разных производителей, а алккод — нет.

    Reply
  53. art010

    Ребята, Вы в техническом плане сильно подкованы. Почему не отпишитесь в РАР с предложениями: как надо делать, чтобы нормально работать. Например, привязать еан-13 к УТМ (справочная информация получится). Все-таки не так часто еаны совпадают с другим товаром.

    Судя по тому как они написали Декларант Алко, ничего хорошего от них ждать нельзя!

    Cамая опа светит рознице:

    1.Производитель отгружает оптовику продукцию указывая диапазон спец. марок,

    2. Оптовик отгружает рознице, также диапазоном.

    3. Розница с 01.07.16г реализует каждую спец. марку.

    4. Если не производить контроль в рознице на стадии прихода (соответствие фактического прихода диапазону) то при пересорте на двух предыдущих этапах (производитель-оптовик-розница) розница постоянно будет получать плюхи за реализацию несуществующего товара.

    Следовательно, необходимо «автоматизировать» фактический приход с обязательной сверкой марки с диапазоном указанным в УТМ, чтобы выявлять пересорт. Или в УТМ нет инфы по диапазону? (Извините, я не в курсе, что там есть)

    Какую инфу содержит ШК спец марки?

    Как быть с остатками? Можно создать документ для переучета (с применением шк с марки) для заполнения в карточке товара кода АП, инфы о производителе и т.д?

    Поможете?)

    Люди добрые, пришлите ТТН на ИНН 2627019438 КПП263245001. Мои поставщики спят(

    Reply
  54. M_W_W
    Следовательно, необходимо «автоматизировать» фактический приход с обязательной сверкой марки с диапазоном указанным в УТМ, чтобы выявлять пересорт. Или в УТМ нет инфы по диапазону? (Извините, я не в курсе, что там есть)

    Нет там никаких диапазонов. Есть только код, наименование, количество, цена, номер справки А, номер справки Б. Ничего там больше нет, по чем можно было-бы идентифицировать принадлежность марки конкретному поставщику/производителю.

    Reply
  55. art010

    Как тогда РАР собирается отслеживать конкретную продукцию от производителя до рта потребителя (ведь это и есть весь смысл внедрения ЕГАИС с долбаным УТМ)? Только по номерам справок А и Б? Они ведь собираются прийти к предметно-количественному учету на всех этапах. Или я опять что-то не догоняю?

    Reply
  56. art010

    ответов нет в УТМ. У меня все правильно работает?

    Reply
  57. V-A-V

    (56) art010,

    Ну, что ты мучаешься. Есть хороший новый форум

    http://www.egais2016.ru

    Тама очень много хороших разъяснений и по твоим вопросам.

    Задавай вопросы и ребята с РАРА и ЕГАИСА тебе ответят.

    Плюс есть еще пара видеоконференций от ЕГАИСА.

    Смотреть их нудно и долго, но можно извлечь нужную инфу для себя.

    Скажу только, что ребята делают так как им надо и удобно, с учетом законодательства…

    Reply
  58. roman8115

    (53) art010,

    отправил тестовую ТТН

    Reply
  59. art010

    Спасибо. Вижу ее во входящих.

    Но, «выбрать приход»> в «окошке выбор строки» = пусто. Что не так?

    И запросы обработка отправляет (например по своему ИНН), но ответы не приходят вообще. в out их нет

    Reply
  60. M_W_W

    Она их отправляет с ошибкой, потому ответы и не приходят.

    В процедуре ЗапроситьСправочник(), там, где передается ИНН в запрос, используйте СокрЛП(ИНН). Длина поля ИНН 12 символов, а ИНН организаций 10. Два лишних пробела в конце, «не пролазят» в шаблон. Раньше — работало. Пару дней как перестало, видимо xml схему запроса поменяли.

    Reply
  61. ivanov_alex

    Интересно, а есть ли код для создания ТТН кому-либо?

    Reply
  62. HSV

    По образцу АКТа. Тут универсального решения нет, у каждого свои реквизиты справочников/документов, даже если из типовой ТИС выгружать, все равно учет в разрезе справок А и Б как-то надо вести

    Reply
  63. roman8115

    (59) art010,

    обновил обработку

    Reply
  64. roman8115

    Убрал лишние пробелы из запроса в соответствии с новыми требованиями.

    Reply
  65. ivanov_alex

    (64) roman8115, Вы про пробелы в запросе справочников? или еще где то изменились пробелы?

    скачать не могу, нет стартов

    Reply
  66. roman8115

    (65) ivanov_alex,

    еще были лишние пробелы в идентификаторе справки Б при отправке акта

    Reply
  67. art010

    Подскажите, пожалуйста, Такой запрос Контрагента верный?

    <?xml version=»1.0″ encoding=»UTF-8″ ?>

    — <ns:Documents xmlns:ns=»http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01″ xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns:oref=»http://fsrar.ru/WEGAIS/ClientRef» xmlns:qp=»http://fsrar.ru/WEGAIS/QueryParameters» Version=»1.0″>

    — <ns:Owner>

    <ns:FSRAR_ID>020000593500</ns:FSRAR_ID>

    </ns:Owner>

    — <ns:Document>

    — <ns:QueryClients>

    — <qp:Parameters>

    — <qp:Parameter>

    <qp:Name>ИНН</qp:Name>

    <qp:Value>2627019438</qp:Value>

    </qp:Parameter>

    </qp:Parameters>

    </ns:QueryClients>

    </ns:Document>

    </ns:Documents>

    Reply
  68. roman8115

    (67) art010,

    проверить можно через УТМ

    Reply
  69. art010

    (68) roman8115,

    Спасибо. разобрался. Неделю долбался, чтобы понять что JaCarta глючит сука.

    Ключи записываются,УТМ запускается, Запросы уходят, а ответы не заходят.

    100 раз переустанавливал эту тварь. В итоге, Поменял ключ и все заработало.

    Reply
  70. red777

    Народ, третий день бьюсь с этой ошибкой

    Узел1 = ХМЛ.ВыбратьУзел(«ns:Documents»);

    {D:ЕГАИСОБРАБОТКИЕГАИС.ERT(288)}: : Ошибка исполнения метода

    Все что тут описано запускал, перезапускал — не помогает. Где копать?

    открывает вроде все правильно:

    <?xml version=»1.0″ encoding=»windows-1251″?>

    <ns:Documents xmlns:wb=»http://fsrar.ru/WEGAIS/TTNSingle» xmlns:pref=»http://fsrar.ru/WEGAIS/ProductRef» xmlns:oref=»http://fsrar.ru/WEGAIS/ClientRef» xmlns:ns=»http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01″>

    <ns:Owner>

    <ns:FSRAR_ID xmlns:ns=»http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01″>5678921</ns:FSRAR_ID>

    </ns:Owner>

    <ns:Document>

    <ns:WayBill>

    Если стираю ns:

    Узел1 = ХМЛ.ВыбратьУзел(«Documents»);

    Узел2 = Узел1.ВыбратьУзел(«Document»);

    то выдает уже

    Узел2 = Узел1.ВыбратьУзел(«Document»);

    {C:USERS1DOWNLOADSЕГАИС ПРИХ.ERT(309)}: Значение не представляет агрегатный объект (ВыбратьУзел)

    т.е. Узел 1 присваивается

    Reply
  71. V-A-V

    (70) red777,

    Смотри выше.

    Во всем виноват микросовтовский парсер и v7plus.dll

    Reply
  72. red777

    Да вроде все поменял уже..

    «ns:Documents» — так все и должен узел называться? Мучить парсер?

    Reply
  73. nikanat

    Товарисчи, зарезюмируйте плиз, как победить ошибку: Для документа xml должен существовать документ более высокого уровня?

    Я уже и закомметил команду curl, вручную в cmd сохранил запрос на справоч контрагента в файл reply.xml

    попытка этот файл записать в xml-parser = ОШИБКА =( =( =(

    Reply
  74. red777

    Версия базового анализатора на 3 никак не меняется.. 4 и все..

    на сервере верчия 3.0 Но пробиться на мой ПК к транспортному модулю пока не получается..( порт открыть)

    Reply
  75. V-A-V

    (74) red777,

    Порт на УТМ должен быть открыт и винда настроена для доступа.

    Вверху есть батник, который разрегивает все версии парсера и регит третью.

    Если третья не стоит, то ее надо поставить.

    Reply
  76. roman8115

    (73) nikanat,

    в какой момент ошибка?

    Reply
  77. M_W_W

    (73) nikanat,

    Что Вы в файл сохранили? Запрос, или ответ УТМ-? Покажите файл reply.xml, что Вы там сохранили?

    Reply
  78. ivanov_alex

    <title>Error 500 Server Error</title>

    весь день такую табличку выкидывает

    может чтото не так делаю?

    запрос контрагента если что

    Reply
  79. nikanat

    (76) roman8115, по отладчику было в момент записи файла xml в объект-парсер для разбора файла.

    выше по сообщениям архивчик с cUrl-ом помог) распаковал содержимое в system32 — ошибка исчезла) мож у меня версия curl-a была кривая )

    Reply
  80. nikanat

    (77) M_W_W, а вот насчет где запрос а где ответы до сих пор точно не отличаю)) надо разобраться что к чему… in и out вообще др на др похожи: и там и там какието ссылки толи на документы толи на запросы…. толком не отличаю покачто..(

    Reply
  81. M_W_W

    (78) ivanov_alex,

    А если просто к УТМ из браузера обратиться(просто в адресную строку адрес с портом ввести), свою домашнюю страницу выводит?

    Reply
  82. ya.vladi.mir

    Роман здравствуйте, можно ваш контакт на Vladi_Mir_@mail.ru

    Reply
  83. ivanov_alex

    (81) M_W_W, ошибка была изза версии утм, обновил и работает

    кто может отправить тестовую накладную на фсрар_ИД 020000357295

    ИНН/КПП 7447219042/740445002

    спасибо!

    Reply
  84. art010

    Доработал процедуру для Номенклатуры. Вынимает Алкокод из pdf-417 в реквизит КодВЕГАИС. (записывает данные сканера в ту ячейку, где курсор находится)

    Для первоначальной обработки номенклатуры.

    Может кому пригодится.

    Не ругайте сильно если очень криво, Я только учусь)

    Был косячок, исправил

    Если кто-нить допишет так, чтобы по составу кода определял в какой реквизит записывать, ваще будет хорошо)

    Reply
  85. art010

    Люди добрые, и мне сбросьте по несколько накладных на

    инн 2627019438

    кпп 263245001

    кпп 263232001

    ИНН 262700251448 ИП

    ,

    пожалуйста.

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

    Осталось обкатать 1с7.7 с ЕГАИС (комплексная доработка опт+розница) и будет готовый .md)

    Reply
  86. aximo

    Товарищи. подскажите механизм как грамотно сделать массовую отправку ТТН исходящих в ЕГАИС?

    На сколько я понимаю, запросом можно отправить файл только одного наименования TTN1.xml

    Спасибо!

    Reply
  87. art010

    (86) aximo,

    Может журнал документов, и запрос по каждой строке если нет идентификатора отправки?

    У меня так по контрагентам запросы отправляет. Правда по справочнику, а не по журналу.

    Reply
  88. alisa_vv

    (63) roman8115, А можно обновленную обработку выложить?

    И еще вопрос пробую запросить партнера вываливает ошибка

    <error>org.xml.sax.SAXParseException; cvc-pattern-valid: Value ‘ 0200001448’ is not facet-valid with respect to pattern ‘[0-9]+’ for type ‘FSRARIDType’.</error>

    В чем может быть проблема.

    Reply
  89. roman8115

    (99) alisa_vv, новее нет

    Reply
  90. Uncore

    (99) alisa_vv, пробел в начале ИНН мешает, перед выгрузкой нужно либо программно убирать пробелы, либо указывать данные ИНН без пробелов.

    Reply
  91. ya.vladi.mir

    alekseev genady (99)

    вместо

    Текст.ДобавитьСтроку(«<wa:ACTNUMBER>» + ПреобразоватьСтрокуВУТФ8(ПриходНомерДок) + «</wa:ACTNUMBER>»);

    сделай так

    Текст.ДобавитьСтроку(«<wa:ACTNUMBER>» +ВремяДляЕГАИС(«:»)+ «</wa:ACTNUMBER>»);

    где

    Функция ВремяДляЕГАИС(Раздел)

    ЧЧас=»»;

    ММин=»»;

    ССек=»»;

    ТекущееВремя(ЧЧас,ММин,ССек);

    Возврат «»+Формат(Число(ЧЧас),»Ч(0)2.0″)+Раздел+Формат(Число(ММин),»Ч(0)2.0″)+Раздел+Формат(Число(ССек),»Ч(0)2.0»);

    КонецФункции

    и будет тебе СЧАСТЬЕ ))

    Reply
  92. glavbuh70

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

    При попытке:

    11:14:46 — Запрос справочника по ИНН

    {D:1CBASEMAGAZIN1EXTFORMSЕГАИС_ПРИХОДЫ.ERT(14)}: : Для документа XML должен существовать документ более высокого уровня.

    Reply
  93. Temniy

    (156) glavbuh70, Вот у меня тоже самое

    Reply
  94. SSSR

    (156) glavbuh70,

    Нужно добавить функцию как в 121 и прописать в процедкре таким образом:

    Узел1 = ПолучитьУзел(ХМЛ,»ns:Documents»);

    Узел2 = ПолучитьУзел(Узел1,»ns:Document»);

    и далее по аналогии заменить ВыбратьУзел на данную функцию.

    Reply
  95. ya.vladi.mir

    у меня при копировании что-то прилепилось не то вот и пишу теперь про ошибку, которой в исходном тексте и нет (boundary = getrandomstring(30);), а у меня есть (( boundary = getrandomstring<a rel=»noindex,nofollow…….

    да, невнимательность ))

    Reply
  96. Spirit11

    ТИС 941 релиз, пытаюсь выбрать приход, ошибка:

    КомандаСистемы(«curl -X GET http://«+СокрЛП(АдресУТМ)+»/opt/out?refresh=true»+»>»+ФайлОтвета); ТЗ_Документы.Очистить(); ТЗ_Документы.НоваяКолонка(«Юрл»); ТЗ_Документы.НоваяКолонка(«Ид»,»Строка»,36); ПарсерХМЛ = СоздатьОбъект(«AddIn.XMLParser»); ХМЛ = ПарсерХМЛ.СоздатьДокумент(); ХМЛ.Загрузить(ФайлОтвета); УзелA = ХМЛ.ВыбратьУзел(«A»); Для ш = 1 По УзелA.КоличествоПодчиненных() Цикл Узел1 = УзелA.ПолучитьПодчиненныйПоНомеру(ш);

    {C:USERSVDOWNLOADSЕГАИС ПОД 77.ERT(3)}: : Для документа XML должен существовать документ более высокого уровня.

    Reply
  97. makus

    (84)(84) art010, Ещё как пригодится! Спасибо!

    Reply
  98. makus

    (84) art010,

    У меня вот какая странность происходит: адаптировал я Вашу обработку, так что теперь у меня штрихкод сканируется правильно, я проверил.

    Но вот какую странность я наблюдаю: когда сканирую код в ОС, он весь из заглавных букв и цифр состоит. Когда сканирую в 1С, в текстовый файл, некоторые символы в нижнем регистре, некоторые — в верхнем.

    При этом, когда прогнал Вашу функцию через отладчика, оказалось, что в неё, в функцию, передаётся штрихкод полностью в верхнем регистре. Это только у меня такие странности? Драйвер сканера на этом компьютере не установлен.

    Кроме того, заметил, что если выбрана английская раскладка, штрихкод сканируется английскими буквами, если же русская — русскими, соответствующими английским на тех же клавишах. Это я обошёл легко, написав функцию для замены символов английскими, а заодно — и в верхнем регистре. Тем не менее, удивительно это.

    Как бы там ни было, Ваша обработка мне очень помогла, спасибо ещё раз!

    Reply
  99. art010

    (234) makus,

    Главное, что работает)

    Рад был помочь.

    Reply

Leave a Comment

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