<?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='\
вот за это плюс, я уже давно писал про слои, эьто очень удобно 😀
молодчина
Я создала 2 закладки, добавляю на 2-ю закладку значок. По умолчанию созданный значок добавится на 1-ю закладку (если внизу формы не указать 2-ю закладку). Хотелось бы что бы по умолчанию значки добавлялись на ту закладку, из которой была вызвана форма. По поводу оформления кода — звездочки на мой взгляд не самый лучший вид разграничения, особенно в таком количестве. Очень рябит в глазах.
1 — Если создать значок, удалить его, а потом попробовать создать заново — ошибка! » Уже существует значок «НазваниеЗначка» с теми же реквизитами».
2 — при открытии значка(какой либо справочник) — «Значение не является значением объектного типа (Гиперссылка)».
3 — при выборе пункта «Выстроить все значки» в контекстном меню — «Ошибка при вызове метода контекста (Добавить): Недопустимое значение параметра (параметр номер ‘2’) (Не уникальное имя! (Иконка_3))
«. И все значки на данной странице ПРОПАДАЮТ!!!!
4 — кнопка отсортировать значки из контекстного меню — делает вообще что то непонятное…(у меня несколько закладок, с несколькими значками).
Итого: Это я просто открыла посмотреть обработку…. Хочется спросить автор обработки вообще хоть как то «протестил» функционал?
Спасибо за тестирование. Обработка будет дорабатываться. Разрабатывал и тестировал на простой конфигурации — все работало. Сейчас запустил на типовой — есть проблемы.
Ну и новую версию не стоит выкладывать новой разработкой, когда можно просто обновить.
Исправил и обновил.
Ну все ранее указанные замечания исправлены — молодец! НО…
1-Если на значке вызвать контекстное меню -> переместить, и на выбранной закладке будет значок в левом верхнем углу, то перемещаемый значок «накроет» его.
2-Вызвав форму «Закладки» (в поле отображение закладок — пусть по умолчанию проставляется значение «Сверху», так как если пусто, то возникает ошибка и в свойствах КоманднойПанелиФорма убрать галочку «Вспомогательная» и сделать кнопку «ОК» — по умолчанию ….так удобнее — это так пожелания). При перемещении закладок вверх или вниз, принадлежность значков к какой либо закладке сбивается..(((
3-Я не поняла зачем кнопки «Добавить» и «Добавить еще» на форме «Значок».
И просто совет автору — почитать стандарты. На мой взгляд стоит придерживаться хотя бы элементарных правил оформления и выравнивая.
(8) Еще раз спасибо за исчерпывающее тестирование, внесу исправления в ближайшее время
Это еще не исчерпывающее…)))
Проблемы возникают если обработку вставить в конфигурацию … не получает имя каталога обработки. Можно сделать немного универсальнее? чтобы каталог с иконками можно было указывать в настройках.
Внес исправления, добавил иконки в закладки и обновил
rauf — не подумай, что я придераюсь, но все же….
1-если я добавляю одну закладку, то она не отображается на экране.
2-а можно сделать чтобы на каждой закладке можно было изменить обои?
3-говоря об оформлении я конкретно имела ввиду форму «Значок». Очень хотелось чтобы Поля ввода «Имя», «Тип», «Вид», «Действие», «Объект» были выровнены по левому краю.
В общем прогресс уже налицо, ошибок намного меньше.
(13) В пункте 2 я имею ввиду разные обои на разных закладках.
Замечания приняты (по пункту 1 наверное Ваш вариант лучше, хотя непонятно зачем нужна одна закладка — уже думал об этом). Буду реализовывать
При добавлении иконки возникает ошибка с отсутствующем итератором 😮
Исправил и обновил
Спасибо, еще проблемка список регистра сведений не хочет открываться :(.
И еще при создании ярлыка на внутренний отчет то в поле вид не отображает название и не сохраняет его
По 18. Регистр сведений по всей видимости не имел форм — поправил для этого случая. По 19. Какой длины идентификатор и название этого внутреннего отчета? Было расчитано на 90, увеличил до 200 (не будет изменено для уже сохраненных настроек пользователя). Добавил подсказки для ярлыков. Обновил.
Название короткое, у него тоже никакой формы нет. Отчет с формой открывается.
Точнее форма у него все же есть, имя отчета: Отчет2
Разобрался. Создал пустой отчет Отчет1. У него нет синонима — поэтому не определялся вид. Исправил и обновил. Теперь и пустой отчет открывается.
Спасибо 🙂
Спасибо крутая штучка, очень очень понравилась,
а сложно сделать на значек, чтобы можно самосу вешать горячие клавиши
❗
К пункту [25] Спасибо за идею — добавил назначение горячих клавиш для значка
Спасибо) а на 8,2 можно доработать? не весь функционал сработал при конвертации((
Так сори, все на 8.2 работает))
а можно еще кроме ярлыков, добавить формы списков (справочники, документы, регистры)?
Однозначно Плюс.
http://infostart.ru/public/58561/)
Сравниваю со своим столом, который, как я понимаю был толчком для создания Вашего. (
Неплохо переписано. Перемещение гораздо быстрее. Идея с вкладками тоже не плоха. Настройки сделаны удобнее. И даже «О программе» есть 😀
В общем получился практически готовый коммерческий продукт ;). Буду использовать Ваш. Немного завидую результату. Оправдываюсь только тем что у меня на доведение своего времени нет 🙁
А слабо для перемещения на панель ActiveX приделать? У меня все лапы не доходят.
Супер … еще раз супер…….. НО Было бы еще круче если можно добавлять был бы просто иконки (графику)… например стрелки.. для рисования примитивных бизнес-процессов что за чем идет….
Скачал, оценил… +плюс+ Только почему dll файлы содержащие значки он не понимает?!
Подскажи пожалуйста, под 8.2 будешь делать?
Под 8.2 переходит при обычной конвертации (см.28)
Если добавлять новую форму, а потом не записывая элемент закрыть форму, то форма будет регулярно выскакивать и надоедать:( Даже если ее после этого записать (типа, горшочек — не вари)
А так очень хорошо!
кавай, до визуализации блок-схем алгоритмов допилить бы в отпуске
(30) «стол был толчком» — Челябинские хроники?)
Впечатлило. Спасибо!
1с 8.2 (8.2.11.235)
{Форма.РабочийСтол.Форма(1499,11)}: Процедура или функция с указанным именем уже определена (ОткрытьФорму)
Переименование функции помогает.
Спасибо, добрый человек!!!))))
Подскажите пожалйста, как сделать чтобы сама автоматически запускалась?
Если автор не потерял интерес , то приведу пример доработки рабочего стола.
В целом должен сказать , что дорабатывать текст автора было легко и приятно.
Ошибка
(42) Всё-таки выбор «Поле картинки» в качестве ярлыка не очень элегантен.
Гораздо перспективнее и богаче подход в платной разработке где за основу был выбран объект ГрафическаяСхема.
Но посмотрев код — пришёл в ужас.
Стало понятно , что дешевле доработать «РабочийСтол» из текущей темы.
Очень понравилось. Пользователи в восторге. Использовал в своей конфе написанной с нуля. Спасибо автору.
Спасибо автору. Всех порадовало)
Подскажи пожалуйста, под 8.2 будешь делать?
Да, под 8.2 все вроде пашет, не поленись скачай и проверь сам 😉
Спасибо автору. Всех порадовало)
Подскажи пожалуйста, под 8.2 будешь делать?
Да, под 8.2 все вроде пашет, не поленись скачай и проверь сам 😉
Держи плюсик! 🙂
Да, под 8.2 все работает.
А можно подключить, не внося изменений в конфигурацию?
В версии 2.12 в разделе об обработке написанно:
Автозапуск = ВосстановитьЗначение(«РабочийСтол_Автозапуск»);
Если Автозапуск <> Неопределено Тогда
Если ВосстановитьЗначение(«РабочийСтол_Автозапуск») Тогда
Каталог = СтрокаСоединенияИнформационнойБазы();
Если Найти(Каталог, «File=») = 0 Тогда
Каталог = КаталогПрограммы();
Иначе
Каталог = СтрЗаменить(СтрЗаменить(Каталог, «File=»»», «»), «»»;», «») + «»;
КонецЕсли;
ОбработкаРабочийСтол = ВнешниеОбработки.Создать(Каталог + «РабочийСтол.epf»);
ОбработкаРабочийСтол.ПолучитьФорму().Открыть;
КонецЕсли;
КонецЕсли;
Видимо, после «открыть» скобочки забыли поставить?
У меня толь ко так заработало : ОбработкаРабочийСтол.ПолучитьФорму().Открыть();
И то не сразу….
Автору спасибо, всех порадовало.
Держи плюс и от меня! 🙂
Супер!!! Спасибо!
За разделение по страницам плюс. Используем давно, довольны.
Так все таки версия под 8.2 будет? У меня не захотела работать под 8.2.15.257
1с 8.2 (8.2.11.235)
{Форма.РабочийСтол.Форма(1499,11)}: Процедура или функция с указанным именем уже определена (ОткрытьФорму)
Переименование функции помогает.
Тоже сделал и я для 8.2.15. тестил под УПП. Пользователям понравилось. Единственно, так это долго запускаются внешние обработки типа Универсальный журнал документов. Но в общем намного приятнее кучи панелей и менюшек по стандарту
Такой вопрос (с учётом неопытности): в ЗУП уже есть стандартный рабочий стол. Если использовать этот, то он встанет поверх стандартного, параллельно с ним (будет выбор использования) или стандартный надо как-то отключить? И как прилепить данный рабочий стол, как его подключить? Опыта работы в 8-ке мало, поэтому затрудняюсь.
(55) Boroda,
В ЗУП нормальный рабочий стол. Не вижу смысла его менять.
Это в комплексной он необходим.
(54) NovSL,
У меня 8.2.15 без проблем работает.
Я даже информер погоды в него вписала.
Не хватает элементов оформления: рамочек и т.д….. 🙁
(41) Ish_2,
Очень красиво! Тоже нужны рабочки и т.д….
Бесплатно эту доработку никак не получить? 🙂
(59) Почему нет ? Не жалко.
Во вторник прикреплю файл обработки к комментарию.
НО. На 99.9 % текст обработки автора Rauf. Изменения носят чисто косметический харакиер :
См. (41)
1. Возможность расположения текста справа от ярлыка.
2. Введен новый тип элемента : Надпись.
3. Элемент «Ярлык» может иметь тип «программный модуль» ,
т.е. интерактивно в режиме «1сПредприятие» может быть набран текст модуля в ярлыке и
по дв.щелчку запущен на исполнение.
4. В типовых возможно указывать для «отчета» настройку из справочника
(в нетиповых приведет к ошибке)
5. Перед запуском нужно очистить настройки пред.раб стола.
П.4-5. можно было бы поправить , но как то не сложилось. Рабочий стол стал не нужен в силу других причин.
(59) Давайте адрес. Вышлю.
(56) Понятно. Спасибо.
rauf, было бы неплохо указывать в тексте описания чем, скажем, этот релиз рабочего стола отличается от 26.10.2009 ?
Присоединяюсь ко все спасибо — СПАСИБА оч.класная весчь!!!:)
огромное спасибо за программу. Очень удобно, быстро, а главное доступно для пользователя. Замечательно работает на 8.1. Пользователям обычно нравится встроенные рабочие столы в типовых конфигурациях и многие хотят их видеть оформленными под свои нужды, а на 8.1 такого нет.
интересное решение
(0) Спасибо за обработку. Подскажите порядок сохранения иконок, а то у меня после закрытия/открытия иконка сбрасывается на стандартную. М.б. есть ограничения по размеру иконки или я неправильно сохраняю. Делаю так: выбираю файл иконки, захожу в Настройку раб.стола и ставлю галочку «Закрепить раб.стол», потом еще сохраняю в файл.
А на 8.3 для розницы 2.2.2 нет такой штуки??