<?php // Полная загрузка сервисных книжек, создан 2025-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://infostart.ru/forum/messages/forum14/topic7872/message56011/#message56011 , а так же работы других авторов…
И решил набросать свое…
В архиве пока пример для 8-ки, для 7-ки в процессе…
Горячие клавиши добавлю сегодня.
Может еще какие идеи появятся?
Еще раз поблагодарю автора иконок, какие я использовал:http://infostart.ru/projects/2328/
Добавил пример для 7.7
Боян! )
(6) Типа того 😉 Пока боян, еще пару бантиков добавлю — будет другое 😉
Душелов, думаю пора делать одну компоненту. Что то типа формекса. Сделать описание. Думаю всем будет удобнее. Как тебе такая идея?
(8) Я уже думал над этим… Но АктивИксы туда не запихнешь — они отдельные, а просто компонент у меня мало.
(9) А почему это вдруг АктивИкс-ы нельзя запихнуть в одну длл-ку?
или ты говоришь, что ВК и АктивИкс в одной длл-ке не живут?
> ВК и АктивИкс в одной длл-ке не живут
Именно, технологии разные.
я могу ошибаться, но почему не живут? интерфейсы же разные
веселая иконка, добавь дута балоны и редирект окна сообщений в балоны, мона еще всплывающие прозрачные окна
(3) …а не удобнее сами свойства перенести в Сервис->Параметры?
(13) Редиректо окно сообщений вряд ли получится.
Всплывающие окна будут уже в новой версии
(14) Нет, не удобнее.
не бейте новичка а как это установить ?
(16) см (0)
*** Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, который можно скачать отсюда.
и зарегистрировать компоненту в Windows — запустить reg.bat
Microsoft .NET Framework 2.0 установлен
куда эту папку запихать или файлы из нее
(18) куда хочешь. Поручик Ржевский, молчать! 🙂
Я просто в каталоге C:Program Files1С сделал подкаталог
видать не фига я не понимаю все сделал как написано, что и где должно появиться. не вижу изменений
1. Microsoft .NET Framework 2.0
2. папку сунул в C:Program Files1Cv77
3. запустил reg.bat
и дальше ? )
А дальше можно хотя бы попытаться открыть обработку.
(20) попробуй обработочку запустить 🙂
а что будет если подгрузить компоненту и попытаться ее использовать когда 1ска запускается сразу при терминальном подключении?
если это операцииобработка то там ее нету .
все разобрался
спасибо полезная штукень
(24) в архиве 6 файлов
Tray1CDushelov.Tray1C.dll
Tray1C
eadme.txt
Tray1C
eg.bat
Tray1Cunreg.bat
Tray1CСистемныйТрей.epf
Tray1CСистемныйТрей.ert
(23) Думаю, что свернет на сервере… Хотя не знаю…. Надо пробовать.
(27) вот как раз вопрос: при таком запуске 1Ски — трея-то нет…?
(28) Значит окно терминалки надо захватывать другими средствами 😉
Ошибка регистрации на Windows Vista: Не удалось найти входную сборку Dushelov.Tray1C.dll или одну из ее зависимых компонент…
Что делать?
уже пару лет пользуюсь компонентой
hide1c.dll
делает все то же самое.
тока меньше вкусностей…в ней.
идея — зачет
У hide1c есть большой плюс — размер 44 кб и больше ничего не надо.
Хотя возможности добавлять собственное меню ей не хватает.
Любопытная приблуда. Спасибо за то, что не забываете 1Cv77 !
Сам я пользую Hide1C.dll — сворачивает/разворачивает окно 1С в/из трей, можно задавать: пароль на разворот, мигание иконки, частоту мигания иконки, всплывающую подсказку для иконки. Для работы не требует НетФреймворка и пр., регить в реестре не обязательно. Практически, 1С-ка работает в фоне. Нет многих вещей, таких как в Tray1C, но очень удобная штука и весит 45056 байт.
(30) Висты нет под рукой — посмотреть не на чем…
hide1c- хорошо. Но не для моих нужд.
(30) Аналогичная ошибка возникает и на отдельных XP
(28) Кстати, только что запустил у себя в цитриксе — терминальное окно нормально сворачивается в трей.
(35) Фреймворк свежий стоит? Админские права?
🙂
не понял..
а чем эта Вк лучше ВК hide1c
да еще и с фреймворк 2.0…
(37) Ничем. Даже хуже.
Может немного не в тему, но все же… Никак не могу найти способ сделать динамическое меню для 8-ки. Цель — создать список пунктов меню, скажем после пункта «Операции», средствами языка, который мог бы изменять без перезапуска программы… Для 7-ки юзал RWidjets, после перехода на 8-ку в ступоре 🙁
Можно попробовать вот так regsvr32 С:путь к файлу Tray1C.dll
нормально все работает
(40) Кстати да… В батнике reg.bat прописать полный путь к длл-ке и запустить его.
(39) Наверное сделать можно… Смотреть надо… То, что есть — пока не встречал.
Добавил 2 новых метода:
— Трей.УстановитьЗаголовокОкна(ЗаголовокОкна); //устанавливает произвольные текст в заголовок окна 1С
— Трей.ВсплывающееСообщение(ТекстСообщения, ТекстЗаголовока, Таймаут, Линк); //НомерИконки — от 0 до 3,
//Линк — строка, которая будет передана в событии нажатие на сообщение
На всплывающем сообщении, в принципе, можно размещать все, что угодно, даже картинки…
> можно размещать все
Точнее можно сделать размещение разных данных…
(38)
🙂
аа..
велосипеды..
понимаю..
(45) Ага, типа того 🙂
Обновил.
Добавлено:
— возможность всплывающего окна (не зависимо свернута 1С или нет) любого окна из самой 1С, т.е. любую форму, обработку и т.п.
Окно берется по заголовку, советую использовать формы, у которых отключена возможность изменения размера.
— добавлен показ окна служебных сообщений при появлении в нем сообщений (пока для 1С 8.х)
И вывод произвольного окна работает пока только для 8-ки… В 7-ке, как оказалось, другая структура окон…
Горячая благодарность тебе от меня лично и от всех кто искал такую штуку (седня наткнулся т.к. уже сам решил попробовать написать)
> Может еще какие идеи появятся?
1. думаю было бы полезно сделать для всех окон (всплывающих и сообщений) возможность баловаться со шрифтом (цвет, размер, жирный или курсив), например как HTML или как ты сделал [RichTextBox1C]
2. нельзя ли чтобы вывод сообщений не заменяли друг друга а выстраивались снизу вверх как в QIP, а то если их несколько — они заменяют друг друга, или там где то надо что то указать?
(50)
1. Для этого я сделал возможность вывода собственного окна, а там делай, как хочешь.
2. Как бы они и должны встраываться.
А можно сделать так, чтоб все открытые базы сворачивались в одну иконку, а потом выбирать какую открыть. А то допустим работаю я с 5-6 базами — пол трея в 1С 🙂
(52) > А то допустим работаю я с 5-6 базами
Прям Юлий Цезарь. Подозреваю, что это не «работаю», а болезнь под названием «открыл — фиг закрою, даже если не надо». У меня юзвери за это получают довольно болезненные подарки
нет. в этом случае ты не прав. у меня две рабочие базы ЗиУП и Бух 1.6, две тестовые, плюс к каждой часто приходится конфигуратор держать. А еще со второй работы УПП стоит. Частенько открыто по 5-6 баз, а то и больше. Так что… Было бы удобно в одной иконке все держать.
(54) У меня рабочих баз с десяток+ почти столько же отладочных.
Но привычка закрывать, если в ДАННЫЙ момент оно не надо — в крови 😉
(52) Сделать можно все, только я считаю это не нужным.
Для получения демо-версии или покупки обращайтесь по контактам, указанным в профиле.
что то не пойму а нафига оно? если есть куча приблуд бесплатных которые сворачивают любой софт в трей хоть косынку хоть Ворд
(58) Не за чем.
Подарок на день программиста (вчера 22.04) — выкладываю снова в бесплатный доступ 😉
(60)А мы с плюсиком на это 😉
Неплохие возмождности
(62) братишка плюсанул? 😉
Василий, извини за ОФФ. Не удержался… ))
Это самое лучшее изобретение в этом направлении !
— добавлена возможность вывода языка ввода в строке состояния 1С 8.х
За возможность вывода языка ввода в строке состояния 1С 8.х респект и уважуха.
Подскажите еще, может ли эта ДЛЛка всплывать форму и не прятать ее до нажатия кнопок этой формы (срабатывания обработчиков нажатия кнопок)?
(66) Не совсем понял, что имеется в виду… Это же модальное окно?..
(67) Надо так:
1С свернута или перекрыта другим приложением. Пользователь отвлекся от компа. В системе происходит какое-то событие, после которого у пользователя всплывает окно (поверх остальных окон, не взирая на то, что сама 1С свернута) и не прячется до тех пор, пока пользователь не выполнит какое-то действие на этой форме.
(68) Подобное сделать можно, аналогично Трей.ВсплывающееОкно(ЗаголовокОкна, Таймаут, Линк);
(69) Так это можно делать уже, или для этого еще что-то нужно доделывать?
(70) Надо дорабатывать компоненту. Когда-нибудь, возможно, я это сделаю.
(71) Еще одна засада. У некоторых пользователей отключен рабочий стол (explorer не запущен). В таком случае компонента не подключается, а язык ввода как раз в таком случае очень нужен.
(72) Не подключается как? Что пишет?
(73) {Обработка.АРМДосьеСерии.Форма.Форма(11)}: Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту): Ошибка при подключении внешней компоненты
ПодключитьВнешнююКомпоненту(ИмяВК);
по причине:
Ошибка при подключении внешней компоненты
А другие ВК подключаются?
Другая ВК, работающая с клавиатурой, подключается без проблем при отключенном рабочем столе.
В Windows 7 не под админом работает?
На Microsoft .NET Framework 3.5 не работает ?
а то ngen ругается и не регистрирует.
Пишу код:
Показать
Отлично срабатывает, окно 1С скрывается, иконка в трее появляется. Но при попытке развернуть окно 1С назад (по иконке в трее «открыть» или dbl click) вылетает JIT отладчик с сообщением:
Показать
1c 8.2
окно управляемого приложения не сворачивает в трей 😐 (обычное сворачивает)
а очень хочется 🙁
да, на 8.2 запускается, но нормально работать не хочет
А можно установить размер всплывающего сообщения?
Когда-то (может года 2 назад)я выводил всплывающие окна ПРОИЗВОЛЬНОГО размера из 1С!! Это так здорово! Но какой компонентой?
В твоей нет таких настроек? Тогда не нужно было…
Хорошая вещь. Давно пользуюсь
Интересная вещь, но все равно нужно под себя и свои нужды доработать
спасибо полезная вещь. Можно использовать в качестве системных сообщений. Есть недостаток- если добавить в конгфигурацию подключение то при отладке системы в трее могут появиться несколько иконнок. А вообще прикольно.
что то не пойму а зачем это надо?
Интересная наработка, все упрощают и украшают бедным пользователям трудную и нудную работу с 1С, скоро вместо всех этих наворотов, какой нибудь супер специалист нарисует в системном трее большую кнопку «ХОЧУ», по нажатию которой будет выпадать меню с решением большинства житейских проблем. Спасибо автору за продвижение светлых идей.
ИМХО фигня, нафиг не нужная. Никто не делал разработки по заполнению нового годового баланса, вот это реально стоящая весч был бы.
Пробовал написать нечто подобное для управляемых форм на 8.2, но ничего толком не вышло 🙁
А разработка классная, особенно удобно было бы использовать с 1С Документооборот 8 или УТ 11, где при поступлении задачи можно помигать в трее 🙂
Хорошее решение, открытых окон всегда много выполнять какие-то рутинные действия удобнее, когда необходимо реагировать на результат действий в других окнах.
(1) Метод УстановитьЗаголовокОкна() не работает в 1С:Предприятие 8.2 (8.2.15.289), в 8.2.13 работал, интересно с чем связано? Вернее не работает если запущено Предприятие из Конфигуратора! А если такпросто базу запустить то работает
Можете исправить? Заодно не работает и сворачивание в трэй, но это не так важно, по большому счету оно даже иногда мешает — забываеш закрыть базу перед выключением ПК.
Сказка было бы если б 1С в ОбработкаВнешнегоСобытия() отлавливала события Windows такие как выключение и прочее, насколько знаю ОС генерирует их и нормальные программы обрабатывают — типа предлагают сохранить открытые документы (Ворд, Блокнот) но 1С почему то решила пойти по своему пути 🙂 Или может я не в курсе есть такой типовой метод?
Пробую запустить вашу обработку для Документооборота (8.2) таким образом:
в поле расположения ярлыка добавляю запись
«C:Program Files1cv828.2.15.289in1cv8.exe» /IBName «Документооборот» /N «Администратор» /p «888» /Execute «D:Tray1CСистемныйТрей.epf». Запускается программа с пустой вкладкой обработки. Так запустить не получится?
Обработка не работает для управляемых форм
автору светлая память. покойся с миром……
Супер! Мне пригодилось!
Для регистрации в файле reg.bat к файлу Tray1C.dll прописать путь полностью и, например, в Windows 7 запускать reg.dat от имени администратора
Добрый день! Использую вк в рознице, но проблемка в том что после использования ВК после закрытия программы она остается в диспетчере задач. В чем может быть проблемма?
Добрый день.
После использования ВК панели инструментов перестали перетаскиваться…
(92) Varies, доброго времени суток! Вы не нашли решение вопроса «помигать при создании задачи в документобороте»?