<?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='\
Слушаю идеи и предложения 😉
(1) А реально будет: редактирование mxl средствами Excel?
(2) Ничего не понял…
(3) Можно ли сделать редактирование табличных документов 1С при помощи Excel? Ну, скажем, макетов для отчетов?
(4) К теме данной статьи это не относится, но конверторы mxl2xls и обратно существуют.
В статье рассмотрен вопрос об управлении ВК из 1С.
А есть ли наработки по управлению приложением из ВК на базе ActiveX?
Ну к примеру получить Контрагентов текущей БД и вывести их в форму html.
полезно и на заметку
(6) А что там сложного? Обычное ком-соединение.
Можно испросить пример как получить контекст приложения, загрузившего ВК из ВК?
(9) В шаблонах 1С реализовано через указатель на интерфейс 1С:http://www.asd-dnepr.com/v82vkomponent.html#_cpp_intf_comp
В ActiveX-ах только новым com-соединением к базе.
Спасибо.
Реально помогли.
Интересно.
А что насчет файрфокса? Слышал что у 1С новый метод реализации внешних компонент: не АктивИкс, а NativeAPI. Не ковырял еще?
Обратите внимание как автор себя любит 🙂
(13) Обращаем.
Любит себя вполне заслуженно.
Абсолютно нормально. Ненормально #nikolega.ОчереднойПеренумератор
(12) >не АктивИкс, а NativeAPI
Не верно сказано ;), правильнее не COM, а NativeAPI.
Это всего лишь технология подключения ВК к 1С, не визуальная (пример — формирование штрихкода, на макете в 8.2 уже нет объекта компоненты, как было в 8.1, а ВК формирует картинку и вставляется на форму).
А визуально — только ActiveX
(13) А в чем проблема?
(14) Ха, любить себя можно и незаслуженно, как и вообще любить 😉
(13) Мало того, мы его тоже любим 🙂
(14+) Программеру добиться признания в среде программеров (я не об адынэснегах) практически невозможно. Каждый считает себя творцом, единственным и неповторимым.
В данном случае г-н Душелов этого заслуженно добился.
Чего и вам искренне желаем.
(0)
А я знаю! 😀 У меня ни в одной ВК нет русского названия
(18) Я делал русскими, чтобы на форме в конфигураторе были «нормальные» (привычные) названия свойств и событий 😉 Видимо, придется дублировать…
А без вэб-сервера нельзя обойтись??? Это IIS???
А какой смысл в тонком клиенте без вебсервера?
может смысла и не много, хотя где-то прочитал в 1С-ной литературе, что предпочтительней выбирать тонкий клиент. Но вся проблема в том, что в управляемом приложении (хоть даже толстый клиент) так просто не кинешь элемент управления ActiveX на форму…
М.б. пойти другим путем, и сделать контрол, который будет программно выводиться на форму без оболочки IE, но пока что я не знаю, как такое сделать…. Если есть мысли или ссылки по поводу последнего предложения, то их очень интересно было бы увидеть
(22) Такого сделать не возможно.
+(23)
А в чем проблема настроить вебсервер или расшарить папку в сети и грузить html вида \192.168.0.1components.html ?
какая-то запара с вэб-сервером, не хочет страница показывать компонент. Вместо него как-будто в страницу вставлен фрейм с двумя полосами прокрутки…
Не похоже, что это так и должно быть 😐 . В чем может быть косяк?
(25) Не хватает прав. Эксплорер блокирует активикс.
«На клиентских машинах данный веб-сервер добавляем в список «надежных узлов»
(В IE — меню «Сервис» — «Свойства обозревателя» — закладка «Безопасность» — зона «Надежные узлы»)
и проверяем уровень безопасности для этой зоны (должно быть разрешено использование ActiveX).»
не помогло… м.б. что-то в настройках веб-сервера надо сделать???
(27) Если есть возможность скачать dll по ссылке, то с веб-сервером все нормально. А у эксплорера стот еще указать разрешение на выполнение .Net кода. вообщем, ради эксперимента стоит вообще поставить все в «разрешено» и поиграться настройками.
В эксплорере уже выставил се по максимуму. При попытке сохранить с сервера файл Dushelov.VectorDrawing1C.dll он выдает ему такое содержимое:
<html><head><title>Error</title></head><body>Не найдена указанная процедура. </body></html>
Отсюда и получался фрейм, как на скриншоте
(29) А в 8.1 эта компонента работает?
сделал обычную (неуправляемую 8.2) форму, туда кинул контрол активХ — работает.
Что-то мне подсказывает, что в вэб-сервере настройки безопасности не дают выполниться dll-ке… Эх, как любят центральные 1С-ники усложнять жизнь…
(31) Это не 1С-ники, это технология. Как же еще та же компонента будет работать в веб-клиенте? Там на форму ничего не кинешь.
А настройки безопасности не в веб-сервере, а именно в эксплорере, от веба главное отдать файл и все.
прогресс наступил (мало ли кому пригодится). по материалампохожего вопроса на gotdotnet выяснил, что если для папки в которой лежит dll в настройках стоит
Execute Permissions: Scripts and Executables
при этом dll интерпретируется как ISAPI dll, поэтому при обращении к ней она пытается выполниться и в результате выдается ошибка 404: ресурс не найден.
Для решения проблеммы достаточно убрать разрешение на выполнение для папки в которой лежит контрол…
Однако контрол всё равно не отоборажается, хотя скачать уже его можно… Буду копать дальше…
(33) Ну вот, уже набирается материал для собственной статьи 😉
(34) А на обычной форме в «толстом» клиенте пробовал визуальные актив-икс компоненты располагать? Что-то поиск молчит по этому поводу, такое чувство что все актив-икс придется располагать в тонких клиентах, и толстые совсем не у дел останутся
(34) В управляемых формах? Точно так же.
Спасибоsgeneralov за дополнение к статье по настройкам безопасности для .Net Framework’а.
Добавил видео, демонстрирующее работу визуальной компоненты в тонком клиенте.
подскажите почему у меня не работает конструкция
ОбъектВК = ЭлементВК.contentDocument;
а работает
ОбъектВК = ЭлементВК;
при этом почему то в отладчике не видно реальных методов и свойств объекта, хотя использовать их получается? Основная же моя беда — не находятся события объекта.
(39) Вебклиент? Версия платформы какая?
(39) и еще, события «не находятся» еще потому, что они могут быть с русскими названиями
И в отладчике не всегда видны свойства и методы ком-объектов.
Тонкий клиент, 8.2.10.82, 8.2.11.229
пробовал свою компоненту, не из статьи
(41) имена латинскими, мне почему-то кажется что как-то связано с contentDocument, может быть новая версия платформы иначе работает.
contentDocument — это ActiveX-объект InternetExplorer’a
Запустил таки это чудо через тонкий клиент (свой компонент), но вот при попытке старта через web-клиент получаю от браузера «…ФормаУправляемая.Форма(418)}: Поле объекта не обнаружено (url)». Соответственно 418 строка это
Элементы.ВьюверПоле.Документ.url = «http://localhost/agro.html»;
как тут быть? У меня IE 8.0.6001.18702, может версия не подходящая?
У кого-нибудь получилось таким же образом подключить компоненту WebCam.dll тоже от Dushelovа? Все делал по аналогии. Но не работает — черный квадрат и все…
dushelov, подскажи, что может быть при web-клиенте «Поле объекта не обнаружено (URL)»? В тонком все «как по маслу».
У меня и его компонента и моя отлично работают в тонком клиенте. Обновил ИЕ до 8 версии, поставил фреймверк 2 версии, добавил хост в доверенную зону, разрешил для доверенной зоны все.
Получается что свойство «Документ» поля вида «Поле html Документа» не работает в веб-клиенте, во всяком случае его тип не определен, по документации такое св-во доступно только в толстом клиенте. Однако успешно использует в тонком.
св-во «документ» не доступно в обработчике при открытии формы в веб-клиенте, после открытия пожалуйста…
Скорее всего при открытии его еще нет, этого документа, точнее его значение равно Null
Вот это очень сбило с толку, сейчас пытаюсь понять почему в веб-клиенте не работает
ОбъектВК = ЭлементВК.contentDocument; Нету св-ва contentDocument, т.е. работает такая конструкция ОбъектВК = ЭлементВК, но при этом не получается использовать события активХ элемента.
а вообще таким образом можно с любой dll -кой работать чтоли??? кто нить пробовал??? напрмер в УТ 11 можно будет покдлючить оборудование ???
Для заторможенных — на примере:http://infostart.ru/public/16446/ — как такое сделать в 8.2 на если несложно, то на пальцах 🙂
(54) seermak,
также интересует этот вопрос.
Уточню: в 8.2 на ТОНКОМ клиенте
Интересно, пришлось чутка повозитья ,чтобы разобраться и прикрутить, но это того стоило
Зарегистрировал Active-X компонент в системе. На форму документа добавил Поле HTML документа.
При создании на сервере присваиваю переменной даного поля следующий текст:
<HTML>
<OBJECT id=ThermalLib classid=clsid:904511D2-5407-4033-8DAD-07B33EC7317E width=0 height=0><PARAM NAME=»»_Version»» VALUE=»»65536″»><PARAM NAME=»»_ExtentX»» VALUE=»»26″»>
<PARAM NAME=»»_ExtentY»» VALUE=»»26″»>
<PARAM NAME=»»_StockProps»» VALUE=»»0″»>
</OBJECT>
</HTML>
Запускаю предприятие. При открытии данной формы 1С начинает матюкатся, типа настройки обозревателя не разрешают показывать ActiveX компоненты и все такое.
Иду в свойства обозревателя. Для зоны «Интернет» Включаю всевозможные настройки Active-X и сценарии.
Запускаю форму — вуаля, ни на что не ругается, компонента Active-X отлично работает.
Все бы ничего, если не учитывать того, что я полностью уничтожил безопасность компьютера.
Нужно все те настройки включить только для надежных узлов. Но самый сложный вопрос: Какой адрес добавить в надежные узлы??? Промучался. Что только не добавлял. И 904511D2-5407-4033-8DAD-07B33EC7317E добавлял, и clsid:904511D2-5407-4033-8DAD-07B33EC7317E добавлял не работает. Открываю форму — все те же сообщения и 1С виснет намертво.
Делаю в тонком клиенте