<?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='\
Комментарии где? Вы мне баги, баги давайте! 🙂
ИМХО, конечно на практике вещь абсолютно бесполезная… 🙂 Но за одну документацию уже можно плюс ставить! 🙂
to (2)
Ну так дурная голова рукам покоя не дает..
Завтра займусь тестированием 🙂
Я так понимю что с 7-кой работать не будет?
УстановитьПрозрачностьОкна|SetGhostingWindow
Описание: Выполняет изменение степени прозрачности окна. Не работает для дочерних окон.
Параметры:
ДескрипторОкна – 4-х байтное, целое, беззнаковое. Принимает дескриптор окна, для которого будет выполняться снимок.
СтепеньПрозрачности– 1 байтное, целое, беззнаковое. Принимает степень прозрачности в процен-тах. 0 – окно полностью непрозрачно, 100 – окно полностью прозрачно (фокус ввода и события от клавиатуры отрабатываются).
Возвращаемое значение: значение не возвращается.
СкриншотОкна| ScreenShotWindow
Описание: Выполняет снимок окна и сохранение рисунка в файл с сжатием в формат JPG.
Параметры:
ДескрипторОкна – 4-х байтное, целое, беззнаковое. Принимает дескриптор окна, для которого будет выполняться установка прозрачности.
Качество– 1 байтное, целое, беззнаковое. Принимает качество сжатия рисунка. 100 – максимальное качество, 0 – минимальное качество.
Возвращаемое значение: значение не возвращается.
ИмяФайла – строка. Принимает имя файла, который будет создан и будет содержать рисунок.
Ощибка в документации !!
СкриншотОкна — как снять весь экран прложения , а не только активное окно?
(5) Пока нет. Есть же FormEx!
Пытался сделать версию под 7.7 — криво пошло, пока отложил.
(6) Запарился, когда писал. Поправлю
(7) Надо шотить окно рабочего стола. Добавлю свойство дескриптора рабочего стола.
Тут у некоторых расширение не отображается???
Это Rar архив, если что…
(10) ААА, все вспоминал, что еще хотел реализовать.. Просто из головы вылетело.
Попробую
а можно сделать генерацию события при активации окна 1с.
Если основного окна — тогда там есть. В обработке галочку поставить надо…
to Hadgehogs
Вот так плавно весь функционал FormEx у тебя и попросят.
Неладно, видно, что-то в восьмерочном королевстве…
Ну дык, все для фронта, все для победы…
Еще вопросик, будут ли исходный код? Ведь использовать никто не будет опасаясь спайваре.
>Ведь использовать никто не будет опасаясь спайваре.
О как! Народ, кто качнул мои проги — срочно кладите назад :))) Там спайвая до фига
(10) А зачем для работы с буфером обмена нужны ВК?…
А это краснодарские пацаны: Димон и Славик, которые пытаются заставить 1С работать так как надо.
-Славик, я чето очкую ВК от Hadgehogs-а скачивать..
-Че ты очкуешь, че очкуешь? Все, давай, погнали…
-Как бы не облажаться, Славик…
Исходники не выкладываю:
1) Пока стыдно за код 🙂 (не структурирован)
2) Могут появиться алтернативные версии
3) Выложу, когда закончу/надоест
Насчет SpyWare гарантии:
1) Мой честный ник здесь, на Мисте, на Кубани
2) Не использование сторониих компонент в проекте: только VCL Borland (сильно сомневаюсь, чтобы тут было нечисто), Win API Microsoft (тут нечисто, но так и надо (:-), свой код (тут пучком), чужой код ( анализирован, безопасен)
3) Блин, ну просканьте порты, если не верите.
Это… пишите чего еще надо…
напоминаю про событие двойного нажатия на иконке.
а можно конфу для 1С 8.1 выложить?
плиз!!!
для 8.1 выложите конфигурацию, пожалуйста
(22-23)
ППЦ
Меню «Файл->Открыть» выбираем файл с конфой 8.0
Скажет «Требуется конвертация документа»
Согласимся.
Получим конфу формата 8.1
Жесть?
(24) cf в 8.1 не загружается =), обновится можно только с 1cd, а у них видно нет 8.0 =)
А где метод получения позиции окна. Установки есть, а получения нету?
А можно ли подписаться на событие компоненты? Типа ловить нажатие «.» хочу.
что-то не получается обменяться сообщениями по UDP
(26, 27) Нашел.
28. Подробней. Есть ли файрвол, попробуйте сниффером порты пощупать.
Как получить размеры и положение окна? УстановитьРазмерОкна есть, а ПолучитьРазмерОкна нету.
30. Файрвол отключен. Порекомендуй pls какой нить снифер не сложный
Netstat2. Ищите и обрящите…
1. в документации читаю объект «Addins.TrayIcon» — а объект который удается создать называется «Addin.TrayIcon»
(так же кстати и со всеми отсальными объектами по моему)
есть какой нибудь сокровенный смысл в создании пунктов меню в трэе «затененными» (недоступными) ?
(34) Ошибся, Addin правильно.
(35) Не понял вопроса 🙂
(36)
у меня простейший код
Показать полностью
Добавляет пункт меню к иконке — НО пунтк меню НЕДОСТУПЕН
ЗЫ Может имеет смысл что я всё это дело тестирую на ВинXP
добавляеи
«ПолучитьДревоОкон» — пАлУбОмУ плюс! 🙂
Компонента впечатляет. Отдельный респект за описание. Его смело можно предлагать всем тутошним разработчикам ВК, как пример для подражания.
(37) Фых, я уж мспугался.. Эт у вас семерка, там ето не тестировалось 🙂 Не работает значится..
7.7 от 8.0 отличаютсь по устройству окон.
(40)
ну значит попробую как потестировать функционал на семерке
кстати вопрос
трафик по udp сжимается чем нибудь?
(41) Нет, не сжимается. Как есть…
(42) Надо кстати добавить параметр
(40)
только сейчас понял
а причем тут разница между семеркой и восьмеркой и Виндовым tray’ем
При работе стал слетать процесс 1сv8.exe в течении дня 2-3 раза. Без видимых причин. Неделю понять не мог в чем трабла. Пока не отключил загрузку компоненты v8add.dll.
(45) Какие объекты использовали?
Пользовался только отловом событий клавиатуры. Компонента загружалась при открытии формы «Рабочее место оператора». Объект «Addins.Events» создавался при открытии формы выбора, и уничтожался перед закрытием. Слет программы происходит в любой момент, если загружена компонента. Независимо от того открыта форма выбора или нет. Т.е. похоже независит от объекта «Events. Весьма жаль, потому как юзеры уже привыкли к функционалу, который был реализован при помощи компоненты.
Какая версия Нетленки?
Какая версия латформы?
Пришлите код формы подбора…
Буду ковырять/смотреть
Версия Нетленки была 2.0
платформа 1cv8.1.10, режим работы клиент-сервер(!) т.е. компонента загружается на каждом компе, перед загрузкой проверяется условие
«#если клиент тогда ПодключитьВнешнююКомпоненту()»
вчера поставил на тестирование нетленку 2.1, хотя ТЕОРЕТИЧЕСКИ проблема может быть и не в компоненте.
Код вышлю чуть позже (сейчас не на работе)
А зачем столько объектов? Замучаешься их создавать 🙁
По мне бы лучше объект один, а в нем все методы…
Но это дело вкуса
может откроешь код?
Код — позже, чуть позже.
Ну, есть какие-нибудь баги, предложения?
>> Ну, есть какие-нибудь баги, предложения?
>> причем тут разница между семеркой и восьмеркой и Виндовым tray’ем
Предложение всё-таки глянуть почему в семерке не работает
1) CRC32 есть
2) Сохранение/загрузка буфера — сделаю
3) MXL->JPEG — если MXL открытый формат — сделаю.
(56) Что за флуд в тематической ветке? 🙂
to Hadgehogs
Вы старательно игнорируете мои вопросы
Очень инетерсно почему? Я надеюсь просто не все комментарии читаете к своей разработке
(58) Помоему там идентификатор меню совпадает с внутренним 1С-овским. Поэтому элементы контекстного меню недоступные, а при проведении по ним курсором — в строке состояния 1С выводится всякая ерунда. Надо ковырять.
Всем, кто писал здесь, в контактах, хочу сообщить, что эту неделю я нахожусь в перманентном переезде. Сняли с девушкой квартиру, пустую, счаст обустраиваемся. Компьютера нет, надеюсь купить в выходные (если з/п будет). До этого полтора месяца жили у друзей в условиях жесткой конкуренции между 3 самцами за 1 ноутбук. Поэтому Нетленка 2.2 так долго выходила…
Поэтому по всем вопросам смогу сказать только после покупки ПК…
Держись 🙂
Использую dll для управления GSM-модемом. Столкнулся с проблемой, что dll не совсем корректно генерирует данные при возникновении внешнего события. При подключении модема я выполняю некоторые предварительные действия, как то: подключаю АОН,устанавливаю параметры СМС,определяю СМС-центр и, при необходимости, выполняю ряд других установок. Взаимодействие с модемом осуществляется следующим образом: я отправляю модему команду типа: «AT+CSCA?» (определение СМС-центра), он мне возвращает типа такого: «+CSCA: «+79037011111″,145» (номер СМС-центра) — это я читаю уже из генерируемого dll внешнего события. Внешнее событие генерится, когда форма не выполняет других действий, поэтому после выполнения первоначальных установок модема (3-4 команды типа вышеуказанной), я начинаю оптом читать ответ модема на мои команды. Проблема заключается в том, что текст генерируемый dll мне приходит в виде ответа на последнюю команду, повторённую столько раз, сколько было команд-установок (в данном случае 3-4 штуки). Если я читаю сразу после установки команды (команда-ожидание 100мс-ответ модема) с помощью ПринятьДанные(), то ответ соответствует отправленной команде, а вот, если читаю оптом, то получается вышеназванная ерунда.
версия Нетленки — 2.2, версия платформы — 8.1.10.50
Попробуйте использовать задержку из
«Addin.System» команда Спать(150) между каждыми командами. Работа с COM — портом идет отдельным потоком, поэтому внешнее событие успеет сгенериться.
Если не поможет — сделаю что — то типа общего буфера возврата..
Огромное спасибо!
(64) Попробовал, к сожалению, не помогает…
а возможно добавить перехват открытия любой формы ? (например формы списка документа) ???
Можно ли переделать демо конфигурацию под платформу 8.1. 8.0 ведь умерла уже почти. Да и ошибки валятся в демо конфигурации.
И еще вопрос осуществимо ли для элементов формы узнавать их родительский элемент. Например для ЭлементаУправления, узнать к какому табличному полю он принадлежит, и к какой колонке. Для табличного поля узнать какой форме поле принадлежит?
Что-то подобное и я хотел написать… 😉
идея для нетленки:
у FormEx для 7.7 была полезная фича:
«отображение в строке состояния текущего времени и раскладки клавиатуры»
Для восьмеры ничего подобного нет. Думаю многим было бы полезно. Особенно
когда работаешь в терминале вещь просто незаменимая.
Хочу нормальный md5, через ВК? Почему CRC32 есть, а md5 нету?
А вообще компонента рулит, истинная нетленка 🙂
нетленка 1с81
2(73) Это что?
пост. 68
2(75) В таком случае ее было бы логичней направить автору с просьбой выложить в проект. Или самому создать свой проект, а не давать ссылку на депозит.
Вещь. Автору плюс. Кто-то здесь говорил об обработке события по клику на значке в трее — поддерживаю, было бы очень полезно. Ещё хотелось бы метод, который получает дескриптор активного дочернего окна, а то по заголовку не всегда удобно. Например когда нужно сделать скриншот такого окна.
Вылетает 1с (8.1.12.101) после
Объект.НачатьОтловСобытий(1000);
в обработке РаботаССобытиями
Нетленка с
» tocv 10.02.2009 12:34:58
нетленка 1с81″
(78) У меня то же самое: вылетела тестовая конфа при включении отлова событий
эх.. хорошая штука. много полезного можно было бы применить
но вот для начала мне нужно то было всего лишь нажатия клавиш отлавливать..
и тут как у (78) и (79)
Нажимаю в тестовой конфе и прога тихо закрывается
(80) Аналогично, все обыскал, думаю: вот он — отлов нажатий кнопок. Так слетает 1С, обидно.
Аналогично 80, 81
А требуется именно отлов нажатий кнопок 🙁
Потестил в 2.3 (бета) отлов событий — сейчас вроде работает без вылетов. Правда в своей задаче я уже сделал с помошью АктивИкса, но + поставил.
ИМХО. Чрезмерная деталихзация событий — «нажал-отжал». Хотелось бы управлять этим. Редко когда нужно будет отлавливать отжатие клавиши, а лишний раз неоправданно вызывать ВнешнееСобытие как то не хочется
(83) Параметризуем
Использую USB сканер, с эмуляцией клавиатуры. Сканированный ШК перехватывается как набор нажатий/отжатий клавиш. Все бы ничего, но часть нажатий/отжатий клавиш пропускается. Например, ШК 4005808231492 возвращается как
НАЖАТА_КЛАВИША 4. Код клавиши:52
ОТПУЩЕНА_КЛАВИША 0. Код клавиши:48
НАЖАТА_КЛАВИША 0. Код клавиши:48
ОТПУЩЕНА_КЛАВИША 5. Код клавиши:53
НАЖАТА_КЛАВИША 8. Код клавиши:56
ОТПУЩЕНА_КЛАВИША 8. Код клавиши:56
НАЖАТА_КЛАВИША 0. Код клавиши:48
ОТПУЩЕНА_КЛАВИША 8. Код клавиши:56
НАЖАТА_КЛАВИША 2. Код клавиши:50
ОТПУЩЕНА_КЛАВИША 2. Код клавиши:50
НАЖАТА_КЛАВИША 3. Код клавиши:51
ОТПУЩЕНА_КЛАВИША 1. Код клавиши:49
НАЖАТА_КЛАВИША 1. Код клавиши:49
ОТПУЩЕНА_КЛАВИША 4. Код клавиши:52
НАЖАТА_КЛАВИША 9. Код клавиши:57
ОТПУЩЕНА_КЛАВИША 2. Код клавиши:50
НАЖАТА_КЛАВИША 2. Код клавиши:50
ОТПУЩЕНА_КЛАВИША Enter. Код клавиши:13
НАЖАТА_КЛАВИША Enter. Код клавиши:13
непонятно как разобрать эту последовательность
А куда делась версия 3.0? Я успел скачать и уже переделать свою разработку на использование этой версии? Я так полагаю она ушла на доработку. Можно сказать что за глюки обнаружены и когда ждать выхода новой версии?
Извиняюсь это версия 2.3 — перепутал.
Да по поводу (85), действительно если запушен отлов событий то все внешние события передаются как «КЛАВИАТУРА», в то время как сканирование ШК должно идти как «BarCodeValue». Получается что компоненту можно использовать только в тех формах, где не предусмотрена обработка других внешних событий. Это означает, что при компоненту нельзя использовать при написании интерфейса кассира (мне кажется основное место использования компоненты будут различного рода АРМы)
(88) Дописываю арм кассира, очень бы хотелось разделить эти два события
Уважаемый Автор, хочется искренне поблагодарить за отлов событий, это мне действительно очень нужно, т.к. пишу свои курсоры к другим СУБД.
Было бы очень здорово и совершенно замечательно, иметь возможность передавать массив тех кнопочек, реакция на нажатие которых интересна, а не все подряд. И работало бы быстрее и без гимороя.
И ещё если можно реализовать ЗакончитьОтлов(). А в остальном работает 2.3 нормально. Тестил на 8.1.13.43 если не ошибаюсь последнем релизе. В табличном поле всё работает и отлавливает. И это позволило управлять Recordsetom и двигать указатель.
Спасибо !!!
Искал внешнюю компоненту для обработки событий, нашел эту программу был потрясен! Все здорово, одного не могу понять почему отлов событий обрабатывает только клавиатуру, а событие нажатия на кнопки мыши нет? Заранее спасибо, буду ждать ответа! 🙂
Кроме слипа наверно ничего не понадобится.. но все равно плюс
Вещь полезная. И даже очень. Но что делать с вылетом программы и как преключать клавиатуру на украинский?
Вот такой вопрос, а можно ли используя вашу ВК, сменить картинку в окошке, которое появляеться при запукске 1С Предприятие или убрать его совсем?
Проверил под обычным пользователем 2.2.1СЕ — не загружается, а под админом загружается.
(95) Приношу извинения. Я сам накосячил. Работает без прав админа! Спасибо!
У меня загрузка этой супер-полезной компоненты длится 6 сек.
Помогите диагностировать «болезнь».
Что я делаю не так?
Win7 Ultimate x86 + 1c8.1.15.14
Под Win2003 все быстро грузится.
Судя по дате последнего комментария автора, у него опять переезд 🙂
Искал внешнюю компоненту для обработки нажатия клавиш, наткнулся на эту вещь. Действительно хорошая и рабочая вешь! Тестировал НЕТЛЕНКУ 2.3 на 8.1.13.43 — использовал перехват событий и замену заголовка главного окна 1С (без «1С:Предприятия» — удобно когда используется много приложений, в т.ч. куча 1С’ок — сразу видно что открывашь из панели).
(90) согласен с berezinbp — «Было бы очень здорово иметь возможность передавать массив тех кнопочек, реакция на нажатие которых интересна, а не все подряд. И работало бы быстрее»
Есть вопрос: «Возможно ли при отлове событий отменять событие, что-то типа Отказа?»
А в 8,2 под упр приложение должно работать или нет. Вот у меня ошибочка {ОбщаяФорма.МониторДвижениеТоваров.Форма(51)}: Тип не определен (Addin.Events)
Объект = Новый («Addin.Events»);
Нашелся явный баг в версии нетленки 2.3. При работе с объектом ком-порт происходит самопроизвольное зависание. На ком-порте сидят весы, на них посылаем команду «типа отдай вес». Так вот при посылке 5, 10 … 3-го сообщения в ком-порт через набор команд виснет наглухо 1С. Внешнее событие не создается.
Если МассивКодовСимволов.Количество()>0 Тогда
МассивКодовСимволов.Добавить(13);
МассивКодовСимволов.Добавить(10);
БезопасныйМассив = Новый COMSafeArray(МассивКодовСимволов,»VT_UI1″,МассивКодовСимволов.Количество());
глВесы.ОтправитьДанные(БезопасныйМассив); //Отправляем массив на запись
Задержка(300);
КонецЕсли;
Помогите разобраться. А так компонента хорошая, но глючит и нет описания подробного. Например, непонятно какие еще функции есть у объект ком-порт.
1С:Предприятие 8.1 (8.1.15.14)
{МодульПриложения(5)}: Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты
ЗагрузитьВнешнююКомпоненту(«V8ADD.dll»);
по причине:
Ошибка при загрузке внешней компоненты
и «НЕТЛЕНКА_232 и «НЕТЛЕНКА2_2_1(CE)»
а 2,0 несовместима версия 1са