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




Принцип обмена данными из 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. Гость

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

    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 не будет опубликован. Обязательные поля помечены *