<?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='\
Делал для себя получение с сайта:http://www.fedresurs.ru/ , там по сути все то же, что и на egrul.nalog.ru, но без капчи. Добавляйте в вашу обработку.
(0) а где остальные комментарии?
(9) qwinter, спасибо, добавлю!
(10) iov, потерты администрацией)
(11) что же здесь было, что потерли?
(12) qwinter, Небольшая дискуссия по поводу использования «авторских прав» на эту гениальную идею)
(10) iov,
За халяву всегда +. Осталось на УТ11 перейти.
(9) qwinter, добавил в обработкуhttp://www.fedresurs.ru/
Эххх… жалко, что у меня ни одной УТ нету…А так бы с удовольствием и потестила, и отплюсовала, и коммент предметный написала 🙂 В любом разе — спасибо. ПОдписалась на Ваши новости. Как подцепите Бухгалтерию 8.2 — отпишите, это моя темочка 🙂
(16) yelena-ppm, Бухгалтерию 3.0 подцепил, можете скачивать обработку и проверять 🙂
а в комплесной пойдет?
В бухгалтерии 8.2 не идет ((( жалко (((
(19) olesechka, что конкретно не идет? У вас редакция 3.0?
Нет, 2.0
Или я что-то не так делаю?
Прицепила к внешним обработкам…
(21) olesechka, Да, на данный момент обработка есть только для управляемых форм.
(22)
Жаль (((
Буду ждать )))
(18) tadem,
В комплексной тоже не пойдет, так как она не на управляемых формах.
В ближайшее время сделаю обработку для обычных форм.
(23) olesechka,
Сделал обработку для обычных форм 🙂
(18) tadem,
В комплексной теперь тоже должна работать (версия для обычных форм)
Для обычных форм с сайта ФНС не загружается…
(27) bnw,
Что пишет? Цифры с картинки правильно ввели?
Действительно полезная обработка!
Оптимизирует затраты времени!
Будет работать в конфигурации УНФ?
(30) Cybersant, Должна работать
А к ДОКУМЕНТООБОРОТУ КОРП ПОДКЛЮЧИТЬСЯ через доп обработки?
Прекрасно работала, сейчас {Форма.Форма.Форма(1944)}: Ошибка при вызове метода контекста (Send): Произошла исключительная ситуация (WinHttp.WinHttpRequest): Время ожидания операции истекло
Куда смотреть ?
(33) wolwip, у Вас какие-то проблемы с интернетом, возможно появился прокси сервер?
При попытки получить с сайта ФНС пишет:
{
«namul»: [
«Не указано наименование юридического лица»
]
}
С сайта Контур-Фокус вообще ничего
(35) bnw, Обновил обработки. Скачайте свежую версию.
(36) Контур-Фокус так и не работает!
(37) ligan, да, пока не работает
Прокси нету. Работает только с сайта ФНС, с контура не берет и с федреестра. Фнс не очень удобен, по ИНН в отдельности не ищет
Ошибка
ОШИБКА!!!
Как ни хотим ФНС, в Бухгалтерии 3 используют именно её
Скачала, стоит 8.3.5.1146 КА 1.1.51.2
При нажатии на кнопку зарегистрировать выдает: «{Форма.ФормаКонтрагента.Форма(24)}: Значение не является значением объектного типа (ПолучитьОбъект)
ОбъектКонтрагент = СсылкаКонтрагент.ПолучитьОбъект();
»
Почему и как исправить?
(25) Очень актуальная тема. При возможности обязательно скачаю — протестирую. На данный момент пользуюсь только ресурсом fedresurs.ru. Вопрос откуда актуальнее брать данные? Неужели необходимо перебирать столько ресурсов?
Конфигурация КА.Заводил для поиска только ИНН своей организации
По ФНС нашло.
По Контуру не нашло
По сайту Федреестра по ИНН -выдало ошибку
{Форма.ФормаКонтрагента.Форма(231)}: Поле объекта не обнаружено (ADRESTEXT)
Адрес = ВыбранныйКонтрагент.ADRESTEXT;
.
(43) victory1985,
реквизит обработки СсылкаКонтрагент имеет тип Строка, надо изменить на СправочникСсылка.Контрагенты.
И Реквизит СсылкаОрганизация тоже имеет тип Строка, его тоже можно поменять на соответствующий.
При поиске по Контуру результат ResponseText:
Через веб интерфейс обработка не запускается.
ИП не ищет, пришлось доделывать. Спасибо!
гыг.. в 8.3.6:
Ошибка инициализации модуля: Форма.Форма.Форма
по причине:
Процедура или функция с указанным именем уже определена (ЗаписатьJSON)
А можно ли данную обработку открыть в web версии 1с 3.0?
УТ 11, платформа 8.3.6.2041. При запуске выдает {Форма.Форма.Форма(258,9)}Процедура или функция с указанным именем уже определена .ПрочитатьJSON) .Не работает, а жаль (
(52) ako,
Переименуйте процедуру, например в «ПрочитатьJSON1» и ссылки на нее..у меня заработало
Появилась ошибка:
{Форма.Форма.Форма(575)}: JSON: Некорректный формат числа «<» в позиции 6.
ВызватьИсключение ИсключениеНекорректныйФорматЧисла(Начало, Сред(Значение, Начало, Индекс — Начало));
Кто подскажет куда копать ?
(54) saint07, присоединяюсь…
(54) — Присоединяюсь!
тишина …
(54) saint07,
(55) feel_deep,
(56) java66,
Надо в адресе запроса поменять http на https
ГетЗапрос.Open(«POST», «https://egrul.nalog.ru/», 0);
Так работает.
(58) amiralnar, спасибо !
в бухгалтерии базовой будет работать?
(45) В модуле «Форма» найти Процедуру НайтиФедРесурс() и в ней за комментировать второе объявление «ВыбранноеЗначение». Должно выглядеть так:
Отказ = Ложь;
//ВыбранноеЗначение = Новый Структура;
ПолучитьДанныеФедРеестр(ВыбранноеЗначение, url, Отказ);
(9) qwinter, не поделитесь описанием API для получения данных?
Спасибо за обработку. После исправлений в коде работает как надо
(9) qwinter,
Не вводите в заблуждение людей.
В вашей обработке идет запрос на сайт http://www.fedresurs.ru. Этот ресурс хоть и государственный, НО! В нем публикуются только некоторые сведений о юр. лицах.
Многие ИП-шники на этом ресурсе не значатся.
Таким образом, значительная часть организаций, действующих МНОГО ЛЕТ в виде ИП (всякие мелкие конторы, заводики и т.п. ИП хозяйства в глубинке и в городах области)
на этом ресурсе не значатся и не видятся вашей обработкой.
НАпример ИП Аристов Юрий Алексеевич 661100051911
Этот косяк очень значительный, именно поэтому НЕОБХОДИМО ИСПОЛЬЗОВАТЬ ГОС. ресурс http://www.egrul.nalog.ru
(9) qwinter, А не подскажите, как по федресурсу ИП искать? IsiKosta тут написал в (49), что доработал. Скачал я его код. ИП он так же не ищет.
http://www.fedresurs.ru/IndividualEntrepreneurs . Подобрать правильный GET-параметр я не смог. Может, вы его подскажете?
Get-параметр ?filter= не работает для страницы
(64) pvlunegov, Скорее всего, вы ошибаетесь. Ваш пример ИП Аристов Юрий Алексеевич 661100051911 находится по федресурсу:http://www.fedresurs.ru/individualEntrepreneurs/64F648BB5392C78A5184A2CA5098173A . Попробуйте воспользоваться поиском на странице http://www.fedresurs.ru/individualEntrepreneurs/IsSearching . Проблема тут в другом. Обработка (9) может распарсить только ветку http://www.fedresurs.ru/Companies , но не ветку http://www.fedresurs.ru/individualEntrepreneurs . Это связано с тем, что разработчики сайта заложили Get-параметр ?filter= для страницы http://www.fedresurs.ru/Companies , но этот параметр не работает для страницы с реестром ИП. А вот подобрать Get-параметр для ИП пока не удается никому, насколько я понимаю. Возможно, его разработчики сайта не заложили в своем коде.
Я разобрался сhttp://www.fedresurs.ru . Ветку http://www.fedresurs.ru/individualEntrepreneurs/ я распарсил. Посмотрел через браузер содержимое post-запроса для поиска ИП — и использовал такой же post-запрос в своем коде 1с. Get-запрос так и не подобрал, но это уже мне и не нужно. Всем спасибо. Если кому-то будет надо распарсить ИП на федресурсе — пишите, помогу.
(67) shur52,
пиши сюда, интересно
С ЕГРЮЛ не загружает.
А задумка очень хорошая.
(58) amiralnar, спасибо !
Автор, поправь обработку, тогда можно будет смело плюсовать
Версия на обычных формах с ЕГРЮЛ не работает!
При запуске в УТ10,3 (10.3.41.1)
1С:Предприятие 8.3 (8.3.8.2197)
выдает ошибку:
{ВнешняяОбработка.ВводКонтрагентовПоДаннымФНС_ОФ.Форма.Форма.Форма(260,9)}: Процедура или функция с указанным именем уже определена (ПрочитатьJSON)
Функция <<?>>ПрочитатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь)
{ВнешняяОбработка.ВводКонтрагентовПоДаннымФНС_ОФ.Форма.Форма.Форма(282,9)}: Процедура или функция с указанным именем уже определена (ЗаписатьJSON)
Функция <<?>>ЗаписатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь)
{ВнешняяОбработка.ВводКонтрагентовПоДаннымФНС_ОФ.Форма.Форма.Форма(2408,14)}: Обращение к процедуре как к функции (ЗаписатьJSON)
Сообщить(<<?>>ЗаписатьJSON(Значение));
{ВнешняяОбработка.ВводКонтрагентовПоДаннымФНС_ОФ.Форма.Форма.Форма(2408,14)}: Недостаточно фактических параметров (ЗаписатьJSON)
Сообщить(<<?>>ЗаписатьJSON(Значение));
Разобрался, как указано выше, надо внести два изменения:
1. Поменять ЗаписатьJSON на ЗаписатьJSON1 и ПрочитатьJSON на ПрочитатьJSON1
2. Надо в адресе запроса поменять http на https
ГетЗапрос.Open(«POST», «https://egrul.nalog.ru/», 0);
Так работает!
(73)
В Бухгалтерия государственного учреждения, редакция 1.0 (1.0.48.6), после исправления Максим 2 раза, запускается, но после ввода капчи ошибка:
{ВнешняяОбработка.ВводКонтрагентовПоДаннымФНС_ОФ.Форма.ФормаКонтрагента.Форма(241)}: Поле объекта не обнаружено (ЮрФизЛицо)
ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
{«ERRORS»:{«query»:[«Не заполнено обязательное поле «Поисковый запрос»»]}}
у кого такие же проблемы ?
(76) подтверждаю проблему. Придется раскуривать этот вопрос на днях… иначе коллеги сожрут за нерабочий ергюл
(76)
Надо изменить на:
ПоисковыйЗапрос = «query=»+СокрП(ИНН); Ошибка исчезает, но ответ какой-то не тот, короткий и не удается его распарсить.
(80)
: В тестовом примере обработки замени, пожалуйста, «ADRESTEXT» на «ADR_TEXT», а то адрес не подтягивается. Спасибо за решение проблемы! Доброте твоей нет предела!