Навигатор дополнительных отчётов и обработок (с иерархической структурой)




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

95 Comments

  1. О, с картинками и по-человечески!

    — что еще бы надо: возможность «прятать» колонки «имя файла» и «папка файла» (есть такое?)

    — ну и для полной красоты: раздача прав на обработки по пользователям — был бы вообще песня…

    — «импорт» данных из стандартных «доп.возможностей» — вот у меня там мнооого обработок — как их перекинуть…?

    а описание — проанализировать — если установлен формекс — вытягивать стандартное описание обработки (может как-то так и делается?)

    Reply
  2. DDD2005

    ТекТабОтч.НоваяСтрока();

    {C:DOCUMENTS AND SETTINGSDENISРАБОЧИЙ СТОЛНОВАЯ ПАПКА (2)EXTREPADMIN.ERT(216)}: Значение не представляет агрегатный объект (НоваяСтрока)

    Ошибки нынче появились

    Reply
  3. azernot

    DDD2005, исправил ошибку. (возникала, если не было настроек)

    Че:

    1. Спешл фо ю. Настройка видимости колонок. (пока работает только на самом верхнем уровне иерархии, т.к. при изменении видимости колонок в таблице с фиксированными строками, значения в ячейках слетают, в дальнейшем поглядим)

    2. Права будут (даже специальную колонку зарезервировал) но пока не до них. Планирую же сделать завязку как на имя пользователя 1С, на имя прав, на имя интерфейса, так и на глобальные переменные типа глПользователь, может и на имя виндового юзверя.. короче вариантов масса) При этом планирую не только права на запуск, но и права на чтение (видимость) обрбаботки. Возможно будут группы пользователей.

    3.Импорт есть. (обрати внимание на кнопку «Заполнить»).

    4. Не работал с формэксом. Сорри. Если сделаешь — гран мерси тебе. Сам — очень не скоро, может никогда.

    Reply
  4. CheBurator

    Маньяку: галочки расставлять по пользователям и обработкам — запаришься. У меня внешних обработок за сотню всяких перевалило, допустим юзверей десяток — 1000 штук руками — забабахаться… имхо надо типа групп юзверей.. ща гляну свои соображения на Т1С я там как-то эту тему обмозговывал…

    Reply
  5. CheBurator

    Опять же — как при простом открытии обработки из меню — обрубить возможность?

    в формексе кстати есть

    //ПРЕДОПРЕДЕЛЕННАЯ ПРОЦЕДУРА FORMEX

    Процедура ПриЗагрузкеВнешнегоОтчета(ИмяФайлаОтчета)

    //можно типа так

    Если Правонарушено(ИмяФайлаОтчета)=1 Тогда

    СтатусВозврата(0);

    КонецЕсли;

    КонецПроцедуры //ПриЗагрузкеВнешнегоОтчета()

    Reply
  6. CheBurator

    Опять же Маньяку: хотя у меня ограничение прав на обработки прописано на уровне галочек в справочнике доступных для юзверей обработок

    Reply
  7. CheBurator

    А вот хотелось бы узнать: на картинке у автора: Обработки с инфостратра по авторам — я там есть? (скромно потупился)… 😉

    Reply
  8. azernot

    Чикатала: На конкретного юзверя завязываться точно не буду. Обработка должна работать в нескольких базах (хотя бы и без параметров). Будут группы пользователей. К конкретной группе будут относиться юзвери по условию (по вхождению подстроки в ИмяПользователя() в ПолноеИмяПользователя(), в глПользователи, по реквизиту глПользователя, по WSH.netUser..

    Права будут раздаваться на группы обработок и на обработки. Поиск прав бкдет осуществляться по восходящей Обработка — Обработка.Родитель — Обработка.Родитель.Родитель — Обработка.Родитель.Родитель.Родитель и т.п. с соответствующими приоритетами по условию И или ИЛИ.

    Че: Ну конечно! Там есть все! Все-все-все… И некоторые даже по нескольку раз (особенно те, кто +1 ставит)

    P.S. Ну даже если этот пример я наколотил специально для скриншота, разве ж я в ентом признаюсь? 😉

    Reply
  9. azernot

    Ну ты маньяк.

    Не согласен — пиши в Гаагу.

    В группе может быть 1 пользователь.

    Групп может быть сколько угодно.

    Определять их ты можешь и по имени.

    Я тут вчера нагнал много (конец дня, устал). Конечно права будут на видимость в списке. Если пользователь не видит группу, то он не видит и обработку. Если он видит группу, то может видеть не все обработки группы. Повторюсь права могут задаваться как на группу так и на конкретную обработку. Но если на группу стоит запрет, то и обработка не видна (вне зависимости от прав на обработку).

    В списке обработки могут повторяться много раз. Так что, распихав нужную обработку по нужным группам можно добиться нужного результата.

    Reply
  10. azernot

    Если бы я делал по принципу «делов на пять минут», то боюсь наступал бы на те же грабли..

    Reply
  11. vasilykushnir

    >Импорт есть. (обрати внимание на кнопку «Заполнить»).

    Обратил и попробовал — не заполняет… Где грабли?

    +1 Все-равно

    Reply
  12. azernot

    Грабли в файлах efd. Заполнение производится на основании информации в этих файлах.

    Вобщем-то ничто не мешает мне добавлять в спиок просто ert файлы… В сл. версии так и сделаю.

    Reply
  13. CheBurator

    Азернот! Мочи их всех! с правами — правильно!

    Reply
  14. CheBurator

    Типа надо если есть EFD (соответствующий ERT) — тащить инфу оттуда, если EFD нет — брать ERT — типа так сделано будет?

    Reply
  15. azernot

    ну да. В наименование — имя файла, в описание — «». (может и вставлю фермексовскую приблуду)

    Reply
  16. CheBurator

    При создании группы, наверное, логично было бы располагать ее ПО УМОЛЧАНИЮ вверху списка — а то забодаться сколько стрелками двигать…

    Reply
  17. azernot

    Yes, sir!

    By your command!

    With pleasure!

    (Поклонникам Warcraft 2 посвящается)

    Reply
  18. CheBurator

    Двоечник!

    Распихал по группам…. выставил галки, вырезал, перешел в нужную группу, вставить — вывалилось с сообщением «номер за пределами значения» — вся работа — ек! УУУУУ!!!!

    Reply
  19. CheBurator

    Но удобно… хотя есть куда развиваться…

    Reply
  20. azernot

    Проводи диагностику, в каком случае такя штука возникает. Я воспроизвести не могу. Может вставляешь в группу, которую вырезаешь?

    Reply
  21. CheBurator

    Опять!!!

    ТекТабОтч.ПолучитьСтрокуПоНомеру(ТекОтч[А]);

    {\SERVERPC2BAZDATACOMPLEX_SQL.DIREXTFORMSEXTREPADMIN.ERT(218)}: Номер за пределами значения!

    — после этого таблица пустая.

    Последовательность действий к ошибке.

    1. пустая таблица.

    2. заполнил — ок.

    3. ввел несколько групп — все на первом уровне — находятся в конце списка

    4. включил колонку пометок

    5. отметил пару обработок.

    6. вырезать — отметки снялись

    7. перешел в нужную группу

    8. вставить — ОШИБКА, после этого таблица пустая

    ..

    ошибка происходит при попытке вставить в ПОСЛЕДНЮЮ ПО СПИСКУ ГРУППУ (что-то видимл сл счетчиком строк) — опа… не обязательно в последнюю — видимо когда кол-во вставляемых строк к чему-то плюсуется и оказывается больше номера строки последней…

    + еще трабл:

    Reply
  22. CheBurator

    Есть предложение — 1. обязательно кнопка БЭКАП и восстановить из БЭКАПА

    2. перед перестройкой списка — спрашивать (опционально?) о сохранении того что уже есть (если были изменения)

    Reply
  23. azernot

    А я так скажу. Перед операцией «Вырезать» — сохранись. (Только она деструктивная)

    А ещё лучше не пользоваться ей, пока не разберусь. Копируйте и удаляйте -так надёжнее.

    Reply
  24. CheBurator

    Есть пожелание:

    1. сделать сдвиг строки по кольцу — т.е. если последняя в списке и вниз — то в начало списка (в соответствии с иерархией, ясен пень)

    2. возможно — сортировка по алфавиту (в соответсвии с иерархией), группы соритруются отдельно от элементов… типа так…

    Reply
  25. CheBurator

    Есть пожелание: сделать кнопку «печать» — для печати описания выбранной обработки, а еще лучше — печать для группы — получится книжечка с описанием использования обработок… ОЧЕНЬ НУЖОННАЯ ВЕСЧЬ!

    Reply
  26. azernot

    Что касается краткого описания — так без проблем.

    Но вот что касается полного.. Был у меня геморрой с этим делом (печатать файл асоциированным Windows-приложением). Единственное, что я нашёл — это выдёргивать из реестра командную строку команды «Печать по умолчанию» и запускать как команду системы с параметром <ИмяФайла>. При этом не всё в порядке было с диспетчером печати (если кол-во заданий на печать превышало определённый лимит, задания попросту пропадали). Приходилось через каждое N файлов выдавать предкпреждение и продолжать только по нажатию ОК.

    Так что, глубокоуважаемый ушастый революционер из Аргентины, пораскинь мозгами и процедуру печати придумай сам…

    Reply
  27. CheBurator

    Ну вы извратились!!

    Сделать по простому: описание обработки в Таблицу и показать…

    ок. сделаю сам — процедуры выдам тебе (и вытаскивание описания из самой обработки тоже)

    Reply
  28. azernot

    Я же говорю, с кратким — нет проблем. А если ты мне в полном описании файл tif присобачишь? Или таблицу Excel на 65000 строк?

    Reply
  29. CheBurator

    Описание в т.ч. и полное — имеется в виду описание, которое задается в конфиге — туда «штатно» ничего не зафигачишь (есть хорошая ВК — позволяет туда код HTML запихнуть — получается тогда красиво)…

    Reply
  30. CheBurator

    Когда, когда уже будет новая версия с исправлением глюков и правами…? не терпится ужо…

    Reply
  31. azernot

    Ну не люблю брать не себя обязательства, если нет уверенности что смогу выполнить.

    А по сему — как только, так сразу. Затягивать не буду — обещаю.

    Reply
  32. VV

    Скачал еще с проклуба — понравилось. Но с давних пор использую встроенную в конфу обработку с записью в Спр.ВнешниеОтчетыПользователя прописанных юзверю отчетов. Так там я могу отчет на всех/нескольких пользователей повесить, или несколько отчетов на пользователя. Удобно, однако… Так же и удалить. Конечно, все без групп, вырезаний и перемещений, в форме списка справочника.

    Как насчет таких возможностей?

    Reply
  33. azernot

    Версия 1.1

    — группы пользователей. Гибкая настройка условий отнесения пользователей к группе.

    — возможность раздачи прав на просмотр обработок (через группы пользователей). Можно указать как права на просомтр так и запрет на просмотр;

    — заполнение списка обработками из каталога (ert, mxl, txt), при этом если найден соответствующий efd-файл, наименование берётся оттуда;

    — исправлены ошибки с копированием, вырезанием и вставкой групп и элементов;

    — возможность сохранения в backup и восстановления;

    — в параметрах запуска можно указать необходимость загрузки внешней компоненты перед запуском отчёта (обработки).

    — настройка видимости колонок в пользовательской части (имеется возможность запрета пользователям управять видимостью).

    — сортировка списка по признаку группы и наименованию;

    — заполнение относительных каталогов, восстановление реальных каталогов;

    Reply
  34. azernot

    Ну вот… Кричали, кричали: «Где права? Вот если бы ещё и права.. А когда права?»

    Недоедал, недосыпал, на личную жизнь забил — сделал… И что?! Где отзывы? Неужели всё так неопнятно сделано?

    Reply
  35. CheBurator

    спакуха! не ты один с личной жизнью забивший — аналогично сижу…

    смотреть буду обязательно.

    Reply
  36. CheBurator

    Готов поощрить небольшой суммой.

    скинь вебмани на личку.

    Reply
  37. CheBurator

    конечно немного лучше хотелось бы…

    типа прописал группу (как СЗ из строк — у тебя на кртинке все в строке — надо на каждую одиночную обработку писать эту строку) а так завел несколько СЗ типа Продажи, закуп и проверяешь принадлежит — типа проще было бы манипулировать с большими объемами.

    а какая иерархия прав? аллоу-дени или дени-аллоу?

    Reply
  38. azernot

    Накой иерархии прав.

    Если пользователь входит хоть в одну группу и эта группу в правах строки — строка показывается (или наоборот не показывается, если галка «При указании в правах группы — есть права» снята).

    Про СЗ не понял.

    Reply
  39. azernot

    Версия 1.2

    — система статистики использования (запуска) отчётов и обработок;

    — поправлены разнообразные баги (thanks to Че Бурашка);

    Статистика ведётся в текстовых файлах (резделитель — СимволТабуляции).

    Схема простая — при запуске отчёта (обработки) в оперативный лог записывается информация о среде окружения, пользователе, времени запуска и обработке. По мере переполнения оперативного лога (превышения максимального количества строк), информация переносится в файл статистики (процедуру переноса можно инициироать из административной части в любое время). Анализ выполняется через файл статистики. Пока в качестве анализатора предлагается использовать MS Excel, в дальнейшем будет разработан специальный анализатор.

    Reply
  40. vasilykushnir

    > система статистики использования (запуска) отчётов и обработок

    Ну, ты, Санёк, даёшь! Вот это крутизна! Жаль, блин, что нельзя повторно рейгнуть.

    Reply
  41. alekseineputin

    +1

    Reply
  42. JohnyDeath

    Очень хорошая обработка! Особо понравилось разделение прав!

    +1

    Reply
  43. CheBurator

    надо сделать поиск обработки по (фрагменту)названию и/или по (фрагменту)имени файла

    ..обязательно!

    Reply
  44. clappa

    Что называется, закрыл тему.

    +1

    Reply
  45. azernot

    Не, не закрыл, а раскрыл 🙂

    Но ещё не до конца. Чебуратор идей накидал вагон, да у самого в планах маленькая тележка… Так что, есть куда двигаться..

    Reply
  46. CheBurator

    А вот еще один навигатор попроще

    http://infostart.ru/projects/791/ с интерфейсом красивым…

    но мне тутошний больше нравится… 😉

    .. и когда автор порадует новыми феньками?

    Reply
  47. azernot

    Версия 1.3.

    — поиск отчётов (обработок) в списке по вхождению подстроки в:

    наименование отчёта (обработки);

    имя файла;

    имя каталога;

    краткое описание;

    Результаты поиска заполняются в табличную часть, кликом на нужной обработке можно спозиционироваться в иерархической структуре на найденном отчёте (обработке), либо войти в найденную группу.

    (структура файла настроек не менялась, но обновление версии в файле всё равно происходит)

    Reply
  48. CheBurator

    ура! есть еще одна нужная фишка!

    Reply
  49. Спасибо автору, замечательная вещь ! 🙂

    Я добавил новый функционал

    2007-02-20 artbear

    * ExtForms/НавигаторВнешнихФайлов/ExtRepAdmin/МодульФормы.1s 1.2:

    * ExtForms/НавигаторВнешнихФайлов/ExtRepViewer/МодульФормы.1s 1.2:

    если каталог находится внутри каталога ИБ, путь к нему задается относительно каталога ИБ

    сначала пытаемся использовать файл настройки в каталоге КаталогИБExtForms

    А также возможность создания специального меню «Доп.возможности» на базе данных для Навигатора с помощью классов 1С++ и ВК RWidjets

    Более подробная инфа

    http://www.1cpp.ru/forum/YaBB.pl?num=1169222935/84#84

    Reply
  50. CheBurator

    Хочется: нашел обработки по вхождению «продажи» — кликаю по списку — перехожу на строку в навигаторе, а список найденных закрывается!!!! ЗАЧЕМ???

    хочу бродить по найденному списку и типа «из него» (или позиционироваться на навигатор) открывать нужную обработку, а если список найденных не понадобится больше — закрою его сам…

    Reply
  51. azernot

    Хочется — перехочется.

    Если объяснишь мне неразумному как из немодального окошка передать параметр в родительскую форму (для позиционирования ведь нужно знать на что позиционироваться!) можно сделать незакрывающееся окно поиска..

    Для запуска же из формы поиска — нужно перетаскивать в эту форму весь функционал с параметрами запуска, статистики и т.п. что не есть правильно.

    Надо было тогда поиск мутить просто на отдельной вкладке основного списка, тогда бы и запуск сделать проще и при позиционировании результат поиска не теряется. Но, сделал — как сделал, не обессудь.

    Короче, мухи — отдельно, котлеты — отдельно. Поиск и запуск — вещи разные.

    Reply
  52. Ок. С передачей из немодального — подумаю, есть идея.. надо проверить…

    Вопрос: есть например набор обработок, который распихан по папочкам навигатора.

    Если я сделаю «заполнить» — прога поймет что обработки распиханы по папочкам и не будет вносить их в корень списка? Внесет в корень только новые?

    Reply
  53. azernot

    Нет, внесёт все какие найдёт.

    Reply
  54. CheBurator

    1. Бяка… по предыдущемй посту.

    2. регулярно в папке скапливается всякая ненужная… типа хорошо бы: кнопка «мусор» — список всех что есть в каталоге но нет в навигаторе с возможностью разруливания — эти убить нафиг, эту — в навигатор.. или как-тотак…?

    Reply
  55. CheBurator

    Доработал немного в части внесения новых файлов в Навигатор.

    Отправил автору.

    Ждем версию 1.4

    Еще раз — замечательная вещь!

    Советую всем.

    Reply
  56. CheBurator

    Взял на себя смелость выложить доработанную мной версию 1.4

    Обработка лежит здесь: http://www.infostart.ru/file.php?0,file=275 — распаковать, файл обработки положить в общий комплект обработок НАВИГАТОРА.

    Из существенного: выбор режима добавления обработок/файлов/отчетов — «только новые» или «все», так как зачастую папки с внешними обработками пополняются из разных источников и каждый раз проводить «пополнение» НАВИГАТОРА всеми файлами как-то некрасиво — вот и будем добавлять только новые файлв… причем файлы в НАВИГАТОР теперь добавляются в создаваемую автоматом папку для новых файлов.. Подробное описание нововведений в версии 1.4 представлено ниже.

    Reply
  57. CheBurator

    Нововведения в версии 1.4

    Версия 1.4. ( 04.04.2007, Che Burashka, e.meil@mail.ru )

    — перед удалением группы задается вопрос-подтверждени;

    — добавление отчетов/обработок/файлов производится в папку, создаваемую автоматически на текущем уровне иерархии

    (т.е. новая папка создается в той папке, в которой вы находитесь на текущий момент); имя папки, в которую будут добавлены

    отчеты/обработки/файлы формируется по шаблону _ <ДОБАВЛЕНО ГГГГММДД ЧЧММСС ТипФайлов>, где ГГГГММДД ЧЧММСС — маркер времени.

    после добавления новых элементов они могут быть разнесены по разным группам с использованием штатных возможностей НАВИГАТОРА.

    — возможность выбора режима добавления новых отчетов/обработок/файлов:

    • только новые файлы: в этом режиме файл добавляется только если он больше нигде не найден в таблице (на любом уровне иерархии папко);

    • все файлы: в этом режиме добавляются все файлы из выбранного каталога;

    — исправлены мелкие программные недоработки, в определенных ситуациях приводящие к некритичным ошибкам в работе с лог-файлом.

    Reply
  58. azernot

    Выложена версия 1.4.

    Хочу сказать отдельное спасибо глубокоуважаемому Че Бурашке за произведённые доработки.

    Сам уже весь в 8.0, поэтому особого развития обработки не предвидится…

    Однако, если кто-то из сообщества 1С-ников желает поучавствовать в разработке — милости просим.

    Вот основные идеи по доработке:

    — хранение состава обработки (перечень основных и вспомогательных файлов, которые имеют отношение к конкретной обработке, с целью дальнейшей работы с обработками — проверка целостности, копирование, перенос в другой каталог, на другой диск и т.п.);

    — хранение состава возможных параметров запуска для обработок (с идентификаторами, возможными типами и т.п., для более удобной работы с параметрами)

    — экспорт и импорт настроек конкретной обработки/обработок (для того, чтобы сторонние программисты разрабатывая новый отчёт/обработку создавали файл настроек для быстрого и корректного добавления в навигатор. Что-то типа стандартного efd-файла, но существенно навороченнее);

    — добавление ДЕЙСТВИТЕЛЬНО только новых файлов (поиск по имени и по свойствам файла, замена обновлённых файлов или путей к ним);

    — анализатор статистики;

    — печать перечня обработок (с возможностью вывода любой доступной информацией об обработке, начиная от имени и свойств файла, заканчивая описанием);

    В случае, если количество дорабатывающих будет достаточно большим, придумаем вкладку «Разработчики», в которой разместим информацию о всех учавствовавших в процессе разработки авторах (с указанием контактной информации, ссылки на страничку и т.п.).

    Reply
  59. CheBurator

    Ну,

    — анализатор статистики

    — печать перечня обработок…

    это я наверное прикручу, но опять же — когда время будет…

    — хранение состава обработки(обработок) — вообщем-то тоже не проблема — уже думал над этим.. (но.. см.выше).

    Но когда это будет… — НАВИГАТОР в своей нише имхо лучшее что я видел и по функциональности — мои потребности перекрывает процентов на 90%…

    .. а то что весь а 8-ке — ну что же.. еще один переметнулся на сторону капиталистов 😉

    Reply
  60. Shaman100M

    Плюсуем.

    Reply
  61. artbear

    Вы мне скажите — добавлена ли работа с каталогам относительно каталога ИБ?

    Т.е. в настройках хранится не всегда полный путь, а в том случае, если обработка находится внутри КаталогаИБ или его подпапок, в настройках хранится только относительный путь.

    ИМХО удобно при настройке с одной машины/базы переносить файлы на другую машину/базу/базы

    .

    Сделано или нет?

    Reply
  62. azernot

    Каталог ИБ можно добваить в перечень относительных каталогов.

    Далее, при переносе базы, меняем путь к этому относительному каталогу и вуаля!

    Вообще, старался не привязывать обработку к каталогами ИБ потому как предполагал использования одной обработки (и одного комплекта настроек) сразу из нескольких информационных баз.

    Reply
  63. artbear

    Если использовать твой механизм, то при любом переносе данных из одной базы/одного компа на другую базу/другой комп, нужно заново открывать Администратор и перебивать путь.

    ИМХО очень и очень неудобно.

    Я же делал по-другому — если указанного абсолютного пути для каталога не существует, пытаюсь искать по имени КаталогИБ+Путь.

    В этом случае решается указанная проблема.

    Может быть, добавишь подобную фичу?

    Вроде и твоя схема работы не нарушается, т.к. проверка на принадлежность КаталогуИБ производится в последнюю очередь, уже после остальных проверок.

    Reply
  64. azernot

    Ну как хотите… Теперь, в случае отсутствия реального каталога, указанного в относительных каталогах, поиск осуществляется последовательно в:

    — Каталоге текущей ИБ

    — Подкаталоге ExtForms текущей ИБ

    — Подкаталоге ExtFormsPrnForms текущей ИБ

    Reply
  65. CheBurator

    У меня, например, одинаоквые наборы обработок в 2-х меситах, но разные пути…

    приходилось «перебивать» не пути, а относительные имена просто менял.. была мвсль типа «переключалку» относительных путей сделать…

    Reply
  66. artbear

    1) Спасибо! Сейчас посмотрю.

    .

    2) Не смотрели мою доработку по созданию МЕНЮ Доп.возможностей на базе данного Навигатора?

    Вот скриншот http://www.1cpp.ru/forumfiles/Attachments/1_002.JPG

    Т.е. я сделал 2 класса, которые добавляют в основное меню подменю «Дополнительные возможности» с возможностью вызова любых внешних форм и файлов. Сделано с использованием ВК RWidjets.

    При использовании обработки от azernot-а можно ограничивать права на показ и запуск обработок. Соответственно в меню доп.возможностей появляются только те файлы, на которые у пользователя есть права.

    Моим пользователям очень ПОНРАВИЛОСЬ это меню дополнительных возможностей.

    Более развернутая инфа http://www.1cpp.ru/forum/YaBB.pl?num=1169222935/84#84

    Reply
  67. корум

    Все комменты не читал, но судя по дискуссии. вещь полезная. +1.

    Reply
  68. azernot

    artbear2 Не могу оценить МЕНЮ Доп.возможностей, ибо полный профан в 1с++… Подозреваю, что всё круто. Спасибо, за развитие Навигатора.

    Reply
  69. CheBurator

    Автор, расскажи чуть подробнее что делается в твоей фиче и как она «привязана» к Навигатору?

    Reply
  70. CheBurator

    Точно так же не смог оценить объявленную artbear фишку..

    потому что тотально непонятно откуда ее скачать, как установить/подключить/запустить…

    видимо — это только для приверженцев 1С++

    Reply
  71. JohnyDeath

    >Точно так же не смог оценить объявленную artbear фишку..

    >потому что тотально непонятно откуда ее скачать, как установить/подключить/запустить…

    >видимо — это только для приверженцев 1С++

    Качаем отсюда: http://openconf.1cpp.ru/beta/artbear/1cpp_classes.rar конфу и юзаем.

    Reply
  72. artbear

    Че, ответил тебе в личку, продублирую здесь

    Отвечаю на все вопросы по порядку.

    — Для работы конфигурации нужны

    1) последняя сборка 1С++ версии 2.5.0.2 (ночная сборка) http://1cpp.ru/files/nightbuild.zip

    2) и ВК ФормЕкс 2.0.5 http://www.dorex.ru

    .

    — по поводу меню Доп.возможностей проверю.

    У меня все ок, все работает.

    У тебя ВК RWidjets какой версии?

    .

    — По поводу набора классов — честно скажу, нет времени детально все оформить, как обычно, на документирование нет времени.

    Просто практически все эти классы созданы достаточно давно, прошли обкатку временем и доказали свою явную полезность.

    .

    — Полный адрес ветки с описанием всех изменений в указанной конфигурации с самого начала

    http://www.1cpp.ru/forum/YaBB.pl?num=1169222935/0

    .

    — Последнее сильное добавление в набор классов — я показал, как помощью 1С++ возможно добавлять универсальные механизмы в конкретную конфигурацию, практически не изменяя саму конфу, только 4 строчки в глобальнике — это последние посты.

    Посмотрите, я думаю, что понравится 🙂

    .

    Например, посмотрите вот этот мой пост

    http://www.1cpp.ru/forum/YaBB.pl?num=1169222935/103#103

    Reply
  73. artbear

    Разобрался, в чем была проблема.

    — Исправлено — не работал класс «Общие.МенюНавигатораДополнительныхВозможностей» из-за неверной настройки в папке ExtForms

    .

    Текущий вариант готовой конфигурации с классами всегда выкладывается здесь

    http://openconf.1cpp.ru/beta/artbear/1cpp_classes.rar

    .

    Заново закачайте утром 23.04.07 этот файл — он собирается ночью!

    .

    Более полное описание http://www.1cpp.ru/forum/YaBB.pl?num=1169222935/114#114

    Reply
  74. CheBurator

    Есть предложение: переименовать файлы, входящие в состав Навигатора, типа

    _ExtRep_Admin.ert

    _ExtRep_Viewer.ert

    _ExtRep_SetParamRep.ert

    _ExtRep_SetUsersGroup.ert

    _ExtRep_SetLabel.ert

    _ExtRep_SearchRep.ert



    ???

    Reply
  75. azernot

    Не, считаю переименование ненужным. Если так уж хочется можно поместить все файлы НАВИГАТОРА в отдельный каталог, который можно назвать «_Navigator»

    Reply
  76. CheBurator

    Обнаружился мелкий глючок.

    Есть группа, в ней подгруппа и элементы. Отмечаю, вырезаю.

    Иду в другую группу, вставляю — внезапно оказываюсь в другой группе.

    При этом вставка произошла корректно — в нужное место.



    и еще: при ручном добавлении файла в список — если путь к файлу присутсвует в списке каталогов — по умолчанию ставить алиас

    Reply
  77. azernot

    Не могу продиагностировать ошибку, поскольку у меня она не возникает…

    Попробуй закоментировать строку кода № 365

    //Отчеты.НСтроки = ТекТабОтч.НомерСтроки;

    Про алиас не понял… Вроде бы и так при добавлении файла используется идентификатор относительного каталога…

    Reply
  78. CheBurator

    Ок. Покопаюсь еще.

    Reply
  79. CheBurator

    А как «открепить» Полное описание..? Получается что штатно — никак…

    Reply
  80. azernot

    Ну почему же, удалить файл описания можно той же кнопкой что и прикрепить (скрепка).

    Если к обработке прикреплено полное описание, по нажатию на эту кнопку выплывает подменю Изменить / Очистить.

    Reply
  81. CheBurator

    Cgc,/ мне уже это подсказали.. я тут обработку твою пиарю направо и налево…

    Reply
  82. OldCadet

    Начал настраивать права по группам — не заработало. Заработало после:

    обработка ExtRepViewer, процедура ОпределитьСписокГрупп() заменил:

    1) Подходит =ПроверкаУсловия(ПроверяемоеЗначение,Условие,Значение);

    на

    Подходит =Подходит+ПроверкаУсловия(ПроверяемоеЗначение,Условие,Значение);

    2)Если Соответствие = 0 Тогда

    на

    Если Соответствие = 1 Тогда

    3)ИначеЕсли Соответствие = 1 Тогда

    на

    ИначеЕсли Соответствие = 2 Тогда

    PS: буду внедрять по полной программе, если че нарою — могу намылить

    PS: обработка отличная 😉

    Reply
  83. azernot

    Поправлен механизм отнесения пользователя к группе. Спасибо OldCadet!

    Все бы так баги искали… 😉

    Reply
  84. CheBurator

    Всякое обсуждение по данной обработке — актуально однозначно!

    Reply
  85. корум

    Кхм… Посмотрел обработку ещё раз (+ поставлен ещё бог весть когда, по моему, с версии 1.1).

    Есть ли возможность задать относительный путь? (КаталогИБ()+»тра-ля-ля»).

    УРБД, чтоб её… свои ограничение накладывает…

    Reply
  86. CheBurator

    Дельный вопрос! Поддерживаю!

    Reply
  87. azernot

    Я работаю над этим.

    Будут вшитые предопределённые каталоги:

    1. Каталог из которого запускается навигатор

    2. Каталог BIN из которого запущен сеанс

    3. Каталог информационной базы в которой выполняетя навигатор

    4. Каталог ExtForms информационной базы в которой выполняетя навигатор

    5. Каталог prnForms информационной базы в которой выполняетя навигатор

    6. Каталог пользователя информационной базы под которым запущен навигатор

    К сожалению катастрофически не хватает времени…. Как сделаю, сразу размещу.

    Reply
  88. CheBurator

    Чертовски нужен удобный механизм переключения относительных каталогв. Идентичная структура на работе и дома. Хочется притащив набор с работы и развернув его дома — быстро для всех обработок переключится на домашний каталог.

    можно подробно рассказать — как это делать быстро и удобно?

    Reply
  89. artbear

    Так я же давно сделал работу с относительными каталогами, полгода точно 🙂

    И даже выкладывал или отправлял автору вроде, но автор эти изменения не принял.

    В своей работе давно использую — например, один набор обработок в разных папках на сервере, на рабочем компе и домашнем компе.

    Reply
  90. artbear

    Даже еще точнее — в постах 68 и 69 мы с автором говорим о решении проблемы с относительными путями.

    ЗЫ я лично не использую последние версии именно из-за того, что неудобно работать с относительными путями.

    Reply
  91. azernot

    (95) А вот на счёт «отправлял автору» ты не прав.. Нету, пересмотрел все архивы.

    Механизм работы относительных каталогов:

    — Заводим относительный каталог с идентификатором «ПутьДоОбработок», указываем путь к корневому каталогу в том месте где сейчас находимся (например \FSAPPSWin321C)

    — при добавлении, программа спросит, мол «осуществить поиск во всех обработках и если найден будет указанный путь, заменить на относительный?»

    — Пути всегда можно восстановить/установить через кнопочку «Обновить каталоги» на вкладке «Каталоги»

    — приходим домой, меняем путь относительного каталога «ПутьДоОбработок» на свой (например C:1C)

    Всё!

    При запуске обработок, если путь указан с использованием относительного каталога будет подставляется путь указанный на вкладке «Каталоги»

    Например, запускаем демку «Печать документов от имени поставщика», для неё указан путь: <ПутьДоОбработок>New_demoPDPDP_demo_zav\r

    — На работе это путь \FSAPPSWin321CNew_demoPDPDP_demo_zav\r

    — Дома это путь C:1CNew_demoPDPDP_demo_zav\r

    После комментариев artbear, я сделал так:

    Если получаемый путь не существует, вместо относительной части подставляется последовательно:

    1. КаталогИБ (КаталогИБ() + «New_demoPDPDP_demo_zav»);

    2. Каталог ExtForms (КаталогИБ() +»ExtForms»+ «New_demoPDPDP_demo_zav»);

    3. Каталог PrnForms (КаталогИБ() +»ExtFormsPrnForms»+ «New_demoPDPDP_demo_zav»);

    Возможно, я не так понял, возможно письмо от artbear не дошло, но после того, как я это сделал никаких претензий не было. Поймите, я сам не использую навигатор! Соответственно о багах и пожеланиях узнаю только от вас!

    Обратите внимание на п. 93. Это будет. Т.е. в относительных путях можно будет использовать все указанные пути без указания на вкладке «Каталоги». Когда это будет — вопрос отдельный, надеюсь, что скоро.

    Reply
  92. artbear

    Ага, я как раз и говорил о таком варианте — если путь обработки не существует, не важно, относительный или нет, пытаемся найти этот путь относительно каталога ИБ и других предопределенных каталогов.

    Меня такая схема вполне устраивает.

    Reply
  93. azernot

    Версия 1.5

    Версия 1.5 (07.09.2007)

    — Реализован пеханизм предопределённых относительных каталогов

    • Каталог, откуда запущен НАВИГАТОР (Идентификатор «ERZ»);

    • Каталог запускаемого файла 1С:Предприятие (Идентификатор — «BIN»);

    • Каталог пользователя информационной базы под которым запущен НАВИГАТОР (Идентификатор — «USR»);

    • Каталог информационной базы в которой выполняетя НАВИГАТОР (Идентификатор — «IB»);

    • Каталог ExtForms информационной базы в которой выполняетя НАВИГАТОР (Идентификатор — «EXF»);

    • Каталог PrnForms информационной базы в которой выполняетя НАВИГАТОР (Идентификатор — «PRN»);

    Эти идентификаторы нельзя использовать в относительных каталогах.

    При редактировании каталогов в списке отчётов (обработок) доступны действия:

    • восстановление реального каталога;

    • замена относительного каталога на другой (в т.ч. предопределённый);

    • ручное редактирование каталога;

    Reply
  94. artbear

    В SetParamRep.ert желательно бы строчку

    Возврат «ни выбрано нихрена!»;

    привести к более приличному виду 🙂

    Reply
  95. artbear

    (103) ответил по почте через этот сайт.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *