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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *