<?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='\
??? Антивирь при закачке ругается на dialmail.dll !!!
dialmail.dll поместить в список доверяемых вируса там нет!
При запуске пишет «Ошибка загрузки картинок»
9057.bmp должен находиться в каталоге обработке дата файла 22.06.2008 размер 5150 байт
при запуске обработки 1Сина валится намертво…
SystComm = СоздатьОбъект(«AddIn.SystComm»);
(6) не принимать во внимание, ошибся!
валится на MainThread = СоздатьОбъект(«AddIn.Thread»)
валится на 1cpp версий выше 2.3.0.7 именно из за потока других вариантов не обнаружил
(0) Давно я такого бреда не видел.
Когда увидел, для чего используется dynwrap.dll, охота смотреть дальше отпала.
vtools и formex вместе не живут, а если живут, то очень недолго.
Не обработка, а куча мусора какая-то.
(9) ну ьред тоже прикольно 🙂
(10) Ну, если использовать эту обработку как юллюстрацию клинического случая бреда, то пойдет.
Кстати, о многопоточности.
DialMail позволяет отправлять/получать почту в отдельном потоке, а ты эту возможность не используешь.
И вообще не оставляет ощущение, что отдельные куски я где-то уже видел.
(11) да я специально поточность не использовал кстати куски кода по отправке почты и получению из примеров DialMail
другое нет
(11) > да я специально поточность не использовал
Почему? Это же основная фишка DialMail
(11) dynwrap.dll привесил для переключения включения активного окна, рассылки административных сообщений,
а вот работу с именованными каналами не получается организовать 1с не позволяет передавать данные с кодом символа 0
(13) согласен 🙂 думаю позже сделаю идей много 🙂 лишь бы работе не мешало
(14) 1. Активизировать окно это Окна::НаПереднийПлан, раз уж формекс используешь.
2. Каких административных сообщений? Ты просто файл создаешь с проверкой удачного создания. Накуя здесь API?!
(15) Что значит не мешало? Ты понимаешь, зачем добавлена такая возможность?
(16) 1 в потоке не работает
2 — понятно можно и нет сендом послать но хочется поинтереснее
(17) В каком потоке? При чем тут это?
(18) проверим 🙂
И вообще не понятен смысл отдельного потока из vtools.
Короче, нагородил семь верст до небес.
Не понимаю великой сермяжной правды этой обработки.
Все переписано с использованием ТабличногоПоля из 1cpp
Как раз наметилась соответствующая задачка для планировщика. Буду тестисть. Спасибо!
🙂 пожалуйста, с предложениями в личку
в коментах ругають, а плюсикаф хватает )))
(24) первый вариант был нестабильный на vtolls.dll с 1cpp.dll все намного симпатичнее
ууу хотел посмотреть как там с Тп работает — а там все закирпичено…
не все закирпичено 🙂
Мегажесть, парень ты японец? я такого каламбура в модуле обработке ещё не видел, это ты по видимому специально так нарисовал… потом?
А понятно, жмот просто, пойду в другом месте поищу!
Наверно ты о закирпиченном? Ну дык классы там полностью открыты
Как он вызывается после установки?
(31) запускать 1c_shed.ert
(32) Спасибо,сам тормознул-забыл вытащить из архива 1c_shed.ert.
1.Можно ли запускать в пакетном режиме?
2.
— запуск внешних отчетов (с параметрами, макроименами)
Как передавать параметры в отчет-обработку?
(33) 1 запустить можно, у меня правда работает постоянно
2 параметры задаются с строке параметры при вызове внешнего отчета, в виде параметров могут использоваться макроимена и текстовые параметры
При изменении свойств задачи и записи выдает:
_edtпараметры = commessagetype.получитьзначение(commessagetype.текущаястрока())+ comsendtype.получитьзначение(comsendtype.текущаястрока());если (число(gдс2tзqюнэсrпiб7.task)=число(aюpbмтp1oи5вg9_p))
{G:БазаEXTFORMS1C_SHED.ERT(352)}: Не задан вид.
Только после удаления задачи и ввода новой всё нормально.
(35) проверю, предложения по развитию в личку
(36)
Не работает задание получения файла с ФТП.При попытке нажать «Тест» выдает:
ТпЗадача::FTPList(AddIn.FTP FTPConnection=, ТаблицаЗначений _MRDТаблФайловФТП=, Строка ФТППуть=/01/, Строка ФТПФильтр=*.*) : Слишком много параметров передано при вызове функции/процедуры объекта
Если FTPConnection.Лист(,СокрЛП(ФТПФильтр))=1 Тогда
{G:77ТоргЮвелирНазаровclass1c_shedТпЗадача.ert(1443) }
если gдс2tзqюнэсrпiб7.количествострок()>0 тогда ко5beорcmuеnгckf.выводитьвокносообщений(1);текстрока = 0;если cbxвсезадания=0 тогда текстрока = ёosf7gtщvйеыисщм.текущаястрока;конецесли;ъr7h1хзлms2aбггн.тестироватьзадания(gдс2tзqюнэсrпiб7,текстрока);
{G:77ТОРГЮВЕЛИРНАЗАРОВEXTFORMS1C_SHED.ERT(129)}: ТпЗадача::FTPList(AddIn.FTP FTPConnection=, ТаблицаЗначений _MRDТаблФайловФТП=, Строка ФТППуть=/01/, Строка ФТПФильтр=*.*) : Слишком много параметров передано при вызове функции/процедуры объекта
Если FTPConnection.Лист(,СокрЛП(ФТПФильтр))=1 Тогда
{G:77ТоргЮвелирНазаровclass1c_shedТпЗадача.ert(1443) }
Предложение по развитию(контакт недоступен)-дать возможность поработать с кодом.
(36) пришли на мыло при какой ситуации возникла ошибка
(35) (37) исправлено ошибка возникала при отсутствии Справочника «Контрагенты»
(39)
О.К! Всё заработало.Спасибо!
(40) пожалуйста!
Классная програмка! пока не ставил, но для автоматизации она мне очень нужна! спасибо производителю!!!! 😉
(42) пожалуйста 🙂
Программка хорошая, но я пока не ставил. Скажите а есть возможность такой на 1С 8.1?
(44) Если хорошая тогда + можно рекомендовать 🙂
А под 1С 8.1 попадалось здесь на сайте планировщик и наверняка есть встроенный инструмент, сам не пользуюсь 1С 8.1 ввиду отсутствия последней
Мне система говорит, что я уже проголосовал.
Пишет: ошибка создания обьекта из компонеты ***/dialmail.dll (CLSID)
Ошибка загрузки компоненты dialmail.dll
Перепишите dialmail.dll в каталог обработки
Пишет: ошибка создания обьекта из компонеты ***/dialmail.dll (CLSID)
Ошибка загрузки компоненты dialmail.dll
Перепишите dialmail.dll в каталог обработки
Запускал под Администратором
(48) запускается нормально под администратором NT
рекомендую проверить какая версия загружается
1cpp.dll
и на всякий случай права доступа NTFS
❗ прикольная вещицо,,,,однозначно +
проблема с отправкой почты через smtp. перепробовал разное но безрезультатно.
(51) Проблем с отправкой замечено не было, пришлите скриншот на адрес разработчика, включите расширенные логи в соединении для определения причины и отправьте также лог файл
Неплохо, автору однозначно +++
(49) (48) Та же проблема. Версия 1с++ 3.2.2.0
Права Администраторские (WinServer2003)
(54) Очень интересно…
Попробовал на виртуальной машине в чистом виде и ошибок нету.
Хорошо бы в личку кусок лога 1c_shed.log
(56) Написал о замене компонентов на более свежие и снова попробовать
Ещё б разработчик написал откуда он рекомендует скачивать и обновлять все dll..
(58) добавлено с учетом пожеланий
как на счет dynwrapx.dll — сам длл не писал. у меня сервер на ОС Вин 2003 Сервер. Не будет ли дыр в безопасности с установкой на эту ОС?
и где лучше скачть оригинал dynwrapx.dll?
(61) Библиотека dynwrapx.dll и вызов функций Win 32 API
http://www.script-coding.info/dynwrapx.html описание тут
Версия на сайте 1.0.0.0 от 05.09.2008 г.
однако на форуме можно найти более поздние сборки например 1.0.0.7
по поводу дыр безопасности их всегда много 🙂
Кстати библиотеку dynwrapx.dll (работа с WinAPI (передача сообщений)) не обязательно устанавливать также как и rwidjets.dll
Последняя только для отображения меню в главном меню 1С
запускаю отчёт без внешних длл. выдает ошибку :
юмйвxcзeжjfмдц3т.установитьатрибут(форма, «кнЗадания»);ы3w53xйщёхvеcю7q = создатьобъект(«АтрибутФормы»);ы3w53xйщёхvеcю7q.установитьатрибут(форма, «кнПараметры»);хёбвчцжъуъчe3fvф = lzщnfktц3_8rqmrи.создатьэлементуправления(«ТпЛог»,»кнТаблицаЛог»);
{F:1CBASAPTEKA EKSPERYMENTY1C_SHED.ERT(715)}: Недопустимое имя класса: ‘ТпЛог’.
проблема устранена — оновил свои длл для 1с… сори
инструкция для быстрого освоения не помешала б
(65) вот тут косяк пока руки не дошли 🙂
Не создается письмо в выбраном каталоге. Вот алгоритм :
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+»DialMail.dll») = 1 Тогда
Отправка=СоздатьОбъект(«AddIn.Smtp»);
Иначе
Предупреждение(«Не могу загрузить библиотеку, почта отправлятся не будет»);
Возврат;
КонецЕсли;
ФайлПисьмо=»f:1c emp»;
Отправка.РабочийКаталог = ФайлПисьмо;
Отправка.СоздатьПисьмо(«s@mail.ru»,»d@mail.ru»,»v@mail.ru»,»от меня»,»предприятие», «отчет за», ФайлПисьмо);
Отправка.Подключиться(«smtp.mail.ru»,»25″,» sssss»,»dddddd»,);
Если Отправка.Подключиться(«smtp.mail.ru»)=1 тогда
Где что не так?
База и письмо находится локально на компе, права администратора на запись.
Опешите, пожалуйста, как работать с дополнительными параметрами при формирование внешних отчетов.
(65) (69) Добавлено руководство пользователя, основные моменты в работе
Прошу указать на ошибки и неточности, а также интересующие моменты в руководстве
1с++ ведь с FormEx вместе не работают?((
(72) да вроде нормально работают 🙂
Адрес=ВыбратьКаталог(ТипЗадачи.ПолучитьЗначение(ТипЗадачи.ТекущаяСтрока())
ругается в 1c_shed.ert тут как видите скобки не хватает
Данная ошибка будет исправлена, нашел ее в задании «Прайс-лист» при выборе каталога сохранения
Формирование прайс-листа не будет работать на других конфигурациях. И пункт выбора задания скорее всего уберу.
Данная ошибка будет исправлена, нашел ее в задании «Прайс-лист» привыборе каталога сохранения
Формирование прайс-листа не будет работать на других конфигурациях. И пункт выбора задания скорее всего уберу.
Данная ошибка будет исправлена, нашел ее в задании «Прайс-лист» при выборе каталога сохранения
Формирование прайс-листа не будет работать на других конфигурациях. И пункт выбора задания скорее всего уберу.
Все сделано по инструкции, но при запуске обработки выдается сообщение
юмйвxcзeжjfмдц3т.установитьатрибут(форма, «кнЗадания»);ы3w53xйщёхvеcю7q = создатьобъект(«АтрибутФормы»);ы3w53xйщёхvеcю7q.установитьатрибут(форма, «кнПараметры»);хёбвчцжъуъчe3fvф = lzщnfktц3_8rqmrи.создатьэлементуправления(«ТпЛог»,»кнТаблицаЛог»);
{D:BASES1C_SHED1C_SHED.ERT(715)}: Недопустимое имя класса: ‘ТпЛог’.
Окно обработки появляется, но в середине окна надпись «кнТаблица», в нижнем окне «кнТаблицаЛог»
Зря мучаешься и все диалоговые формы делаешь слоями в 1-м окне, в 1-м внешнем отчете.
Настройку и Соединения лучше вынести в другие отчеты, чтобы они были другими окнами.
А то сложно понять такой интерфейс.
Или же сделай реальные слои с закладками «Задачи», «Настройка», «Соединения», а не кнопки.
И пожалуйста, не кодируй текст модуля. Он и так ложный, а ты еще и закодировал…
Ошибка загрузки картинок 9057.bmp
Перепишите файл 9057.bmp в каталог обработки!
(78) видимо не все файлы были извлечены из архива или отсутствует доступ к файлу
(77) Специально не делал закладки ради экономии места и интерфейса, сделать закладки несложно
соединения однозначно не стоит переносить
если делать другие формы однозначно они будут модальными и доступа к предыдущим формам не будет
А так вроде оригинально :-)…
(76) 1 проверить версию 1cpp.dll
2 проверить прописаны ли классы
Как-то давно скачал данную обработку и запустил у себя в работу. Понравилось. Есть проблемки, но не стал их исправлять в коде.
Лень было разбираться в кодируемом тексте. 🙂
Единственное, что добавил у себя — это возможность установки различных параметров для вызова обработок и отчетов. Добавлена ли эта возможность в новой версии 0.5?
(82) AndrejFAA, Да это реализовано и весьма удобно. В следующей версии есть уже реализация с заполнением форм на экране и путем передачи данных в переменные внешней обработки, отчета или обработки в конфигурации
Так у себя сделал, когда скачал обработку.
Можете у своей обработки показать как реализовали.
(84) AndrejFAA, в этой весии работает только передача параметров, следующая версия в тестировании
Т.е. у Вас сейчас так же реализовано заполнение и передача параметров в отчёты, обработки?
(86) AndrejFAA, в версии 0.5.00b реализована передача параметра в открываемый внешний отчет в виде Таблицы значений или Текстового параметра который на при открытии внешней обработки можно получить через Форма.Параметр пример дан в Руководстве Пользователя.
Импорт полей в Задание планировщика и последующее заполнение полей на экране при вызове задания, запуск отчетов и обработок из конфигурации (в том числе) будет реализовано в версии 0.5.01
Я постараюсь доделать и в скором времени выложить для работы.
Форма будет заполняться параметрами, также можно будет программно нажимать кнопки :-).
(87) интересно реализовано. Если ещё будет возможность вставлять (а может уже и есть у Вас) параметры с типом «СписокЗначений» и «ТаблицаЗначений», то подожду новую версию и не буду у себя что-то дописывать. 🙂
(88) AndrejFAA, Вот такая предварительная реализация. С константами, перечислениями, документами все понятно, все будет выбираться. Причем справочники и документы будут выбираться по типам либо с конкретными значениями.
А вот что касается таблиц значений и списков значений, можно конечно вычитывать их из визуальной части или генерировать, с этим можно поэкспериментировать.
(89) может мне скинуть Вам, что было переделано два года назад?
Забыл добавить. У себя я сразу и сделал таблицы и списки, т.к. это нужно было в первую очередь. С заполнением тогда не стал заморачиваться. Просто сделал выгрузку нужных данных во временный файл, а в планировщике загружал. Теоретически сейчас можно переделать через буфер обмена.
Давайте! на mr_den@mail.ru! Я тоже размышлял по поводу Таблиц значений и Списков значений. Надумал использовать предопределенные имена по принципу Макроимен.
Скачал. Посмотрю. Отпишусь.
(91) AndrejFAA, обновил, предлагаю потестировать. Жду файл добавлю списки и таблицы значений.
(94) отписался в почту.
По описанию замечательно, но посмотреть на обработку так и не получилось пока. 2 ссылки из 4х на внешние компоненты недоступны (одна выдает ошибку 404, другая просто редиректит на сайт). Даже 1cpp.dll которую положила в директорию обработки выдает ошибку «Перепишите файл 1cpp.dll в каталог обработки». Очень надеюсь, что заработает(
(96) makeya, рекомедую вам все библиотеки скачать одним файлом lib.zip в разделе файлы
Спасибо за совет, сейчас попробую!
Извиняюсь за вопрос, но у вас код обработки специально в таком чуть ли не обфусцированном виде, или у меня неверно открылось? Так хотелось научиться на вашем примере)
В задании «Добавить файлы в архив» в поле «Архив» пытаюсь написать:
ругается: Формат(ТекущаяДата(),»»<<?>>ДММММ»» [Шутливо]
Ожидается символ ‘)’
Кавычки вокруг ДММММ пытался и двойные сделать и Симв(34) — ничего не помогает :-((
(200) озадачился, посмотрю