V8Reader (с расширенным анализом форм) Upd.




Принцип обмена данными из 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='\

98 Comments

  1. itar59

    Даже нет слов!

    Мог бы и 10+ поставил

    одна из полезнейших разработок!

    Reply ↓
  2. pumbaE

    При сравнение 2-х конфигураций:

    {Форма.НавигаторПоФайлам.Форма(41)}: Поле объекта не обнаружено (ИндексКартинки)
    ОформлениеСтроки.Ячейки.Имя.ИндексКартинки=ДанныеСтроки.ИндексКартинки;
    

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

    Если серьезно, еще несколько раз попробовал все работает четко.

    Reply ↓
  3. BalVlad

    Очень нужная разработка, спасибо. От меня +

    Reply ↓
  4. tango

    мощно, спасибо

    Reply ↓
  5. ThunderUA

    Нужная вещь

    Reply ↓
  6. KliMich

    2 раза Супер!

    Reply ↓
  7. xbic

    Обязательно надо

    Reply ↓
  8. WendyH

    Вообще-то функциональности стандартной обработки сравнения и объединения конфигураций во многом хватает и даже где-то удобней и быстрей. Единственное прекрасное незаменимое — это сравнение печатных форм. За это спасибище!

    Reply ↓
  9. Max.Potapov

    Архиважная вещь, большое спасибо за полезную разработку.

    Reply ↓
  10. Программулькин

    ( 8 ) WendyH , +1 . Стандартный вполне функционален и удобен . А вот за сравнение форм — действительно плюс !

    Reply ↓
  11. pumbaE

    (8) Подскажите, а как получить сравнение печатных форм? Ну никак не получается. скрин

    Reply ↓
  12. semenich_b

    Спасибо!

    Reply ↓
  13. bambr1975

    (11) pumbaE, спасибо Вам за скриншот — сразу стало видно, что с привязками имеет смысл еще поработать — а по поводу макетов печатных форм — просто по умолчанию работает режим:

    Сравнениефайлов.СпособСравнения=СпособСравненияФайлов.ТекстовыйДокумент;

    При попытке показать различие в табличном документе, он вызывает исключение — а при вызове исключения там ищется файл text (как для модулей объектов). Просто не предусмотрел потребность в сравнении табличных документов. Макеты-то сами из дерева объектов можно вызвать по-одиночке. Согласен, надо доработать. Вот, по поводу фильтра Вы мне тоже сказали, глюк с привязками показали — отдышусь — и все исправлю.

    Reply ↓
  14. bambr1975

    (11) pumbaE, привязки и обработку сравнения табличных документов исправил — смотри рисунок к сообщению и новый скриншот к публикации.

    Reply ↓
  15. amiralnar

    Отличная работа! Но я так и не понял, в чем отличие от стандартной? Расскажите, пожалуйста, как вы ей пользуетесь? Какой сценарий работы применяете?

    Reply ↓
  16. bambr1975

    (15) amiralnar, стандартный функционал ограничен сравнением конфигураций (и файлов конфигураций) и работает в режиме конфигуратора. Моя обработка работает в режиме предприятия и способна сравнивать и анализировать файлы конфигураций, а также — в отличие от стандартной — файлы обновлений и обработок. Сценарии работы каждый выбирает по мере своих потребностей — удобно анализировать приходящие обновления, есть возможность детально проанализировать изменения в формах (эта возможность отсутствует в стандартном функционале). Работает медленно — много анализируемой информации. Но я не предлагаю Вам запускать ее каждый день — только по мере необходимости. Для часто анализируемых файлов — в случае, когда изменения в них нужно смотреть «в несколько подходов» можно не запускать каждый раз распаковку — создать для них постоянный каталог на диске и при случае просто вызывать этот каталог для вывода информации из него — тогда получается быстрее. Ничего сложного и заумного там нет. Все прозрачно и понятно.

    Reply ↓
  17. amiralnar

    (16) Спасибо за ответ!

    Сравнение обновлений может быть полезно для принятия решения о перепрыгивании через версию.

    Сравнение обработок доступно через стандартный диалог сравнения файлов: Меню «Файл — Сравнить файлы»

    Поясните, пожалуйста еще один момент:

    есть возможность детально проанализировать изменения в формах (эта возможность отсутствует в стандартном функционале)

    На данный момент в стандартном функционале доступны следующие действия:

    — открыть старую форму

    — открыть новую форму

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

    Какая именно возможность отсутствует в стандартном функционале?

    Reply ↓
  18. bambr1975

    Ну — считайте, что про сравнение обработок вы меня просветили (стыдно). Да и отчеты о сравнении в стандартном функционале, не спорю, побогаче. Но, Вы ведь понимаете, что все мы занимаемся одним общим делом — пытаемся разобраться… У каждого это происходит по-своему — кому-то нужно написать такую обработку для того, чтобы что-то расставить по своим местам. И, может, если это, все-таки, дает какие-то видимые результаты, оно к лучшему?

    Reply ↓
  19. amiralnar

    (18) Как я уже отметил, вы проделали отличную работу, я нисколько не умаляю важность вашей обработки.

    Мне было важно узнать, какое преимущество она имеет, как её можно использовать в работе, вот и все.

    Спасибо!

    Reply ↓
  20. Кадош

    очень круто. Спасибо

    Reply ↓
  21. Pavel777777

    Гениально) … а нет ли возможности выводить размер файлов в колонке … у меня, например, «раздулась» конфигурация КА мегов на 150 после всех обновлений, а как найти из-за чего, пока не нашёл возможности … а так было бы наглядно видно, какие объекты конфигурации сколько места занимают….

    Или же это уже есть в этой обработке?

    Reply ↓
  22. Pim

    Если то, что нарисовано на картинках правда, то ОГРОМНЫЙ респект и уважуха автору.

    Reply ↓
  23. bambr1975

    (21) Pavel777777, в навигаторе файлов есть кнопки, перемещающие Вас в каталог распаковки — делаете в этом каталоге сортировку по размеру файлов и определяете, в чем у вас проблема. Наверное, так.

    Reply ↓
  24. Pavel777777

    (23) Ясно, спасибо … но тут есть два момента ))) во-первых — названия файлов не совсем понятные сходу), а во-вторых — многие объекты расположены в папках, поэтому размер сразу не показывается. В принципе, это, конечно, можно прикрутить и самому…

    Reply ↓
  25. karakozov

    Разработка весьма полезная, если не сказать очень полезная,Стандартные механизмы не позволяют анализировать формы и макеты, бывает сложно понять что же изменилось.Отличная работа.+

    Reply ↓
  26. samamoiloff

    Здравствуйте. Огромное спасибо. Могу ли использовать в своих исследованиях-разработках? Со ссылкой на Вас, разумеется.

    Reply ↓
  27. bambr1975

    Я не против.

    Reply ↓
  28. Rustig

    (0) можно ли с помощью вашего инструмента увидеть код в модулях, не включенных в поставку?

    Reply ↓
  29. bambr1975

    (28) Rustig, нельзя.

    Reply ↓
  30. FLYYY1986

    Спасибо большое, очень меганужная штука!

    Reply ↓
  31. Rustig

    (29) Спасибо 🙂

    есть своя разработка, код модуля не включен в поставку, поэтому вот спрашиваю — анализирую: достаточна ли защита? …обфускацию кода делать не хочется (имхо, трудоемко)

    Reply ↓
  32. MRAK

    Круто!

    Reply ↓
  33. antek

    Спасибо. Плюс за огромную проделанную работу, полезная вещь для кодеров и к сожалению бесполезная для юзеров 1с.

    Как тока времени хватает писать такое для себя любимых

    Reply ↓
  34. yalo

    Обязательно скачаю, спасибо!

    Reply ↓
  35. awa

    К сожалению, на данный момент, обработка несовместима с подсистемой «Инструменты разработчика». В общем модуле ирГлобальный есть функция

    Функция ЛксСтрокаВнутрВХМЛТело(вхСтрока, выхХМЛТело = Неопределено) Экспорт

    из-за этого при попытке анализа формы возникает ошибка

    {Форма.РазборФормы.Форма(1904,9)}: Процедура или функция с указанным именем уже определена (ЛксСтрокаВнутрВХМЛТело)
    Функция <<?>>ЛксСтрокаВнутрВХМЛТело(вхСтрока) (Проверка: Толстый клиент (обычное приложение))

    Думается мне, что при заимствовании чужого кода, префиксы все-же лучше менять.

    Reply ↓
  36. bambr1975

    (35) awa, спасибо за совет. Признаю, исправлюсь. На счет заимствования чужого кода — вообще сложный вопрос — насколько это допустимо. Поэтому и не хотелось изменять характерные признаки, для сохранения сходства с оригиналом.

    Reply ↓
  37. tormozit

    (36) Префикс Лкс был выбран специально на основе анализа вероятности встретить его в коде в другой роли. Поэтому достаточно просто сделать замену всех вхождений «Лкс» на свой префикс. Несовместимость с подсистемой ИР для многих станет очень неудобным фактором.

    Reply ↓
  38. Trofimov_M

    ++

    Reply ↓
  39. awa

    (36) Насчет допустимости заимствования чужого кода — если бы автор (в данном случае уважаемый tormozit) не хотел бы допустить копирования своего кода, то не выкладывал бы его в открытом виде, или четко написал бы в публикации и в самом коде о нежелании использования своего кода другими. Повторное использование кода — вещь, безусловно, полезная. Я думаю, что при копировании чужого кода префиксы можно и нужно менять, а в комментариях просто оставить информацию об авторстве кода и ссылку на источник.

    Reply ↓
  40. zavedeev

    Авторы +10, классная разработка, молодец.

    Reply ↓
  41. sound

    Работа, видимо, проделана немалая, поэтому плюс. Кстати как правильно подмечено в (17) многие пользователи (да и разработчики) не используют Меню «Файл — Сравнить файлы», хотя вещь действительно очень удобная. Америку не открою конечно … вот для чего это нужно программистам понятно, а вот для бухгалтеров, например, она становится незаменимым помощником при «анализе обороток» (проводок), когда хочется понять что изменилось в оборотке за период или вообще что изменилось в проводках отдельного документа после его перепроведения. Работает это примерно так:

    1) Бухгалтер открывает проводки документа любимой кнопкой «ДтКт».

    2) Жмакает правой кнопкой по полю с проводками, выбирает «вывести список», получает печатную форму, и сохраняет ее на комп в формате по умолчанию MXL (файл1.mxl).

    3) Перепроводит документ, заходит в проводки и также как в пунке 2 создает файл файл2.mxl

    4) Меню «Файл — Сравнить файлы», выбирает файл1.mxl и файл2.mxl

    5) Видит что изменилось.

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

    Reply ↓
  42. Boroda

    Да, это то, что было бы очень полезно иметь в своём арсенале инструментов. Большое спасибо и, конечно, «+».

    Reply ↓
  43. bambr1975

    (35),(37),(39) Обновил. Добавил в код комментарии со ссылками на изначальные источники. Убрал префикс Лкс из трех функций анализа документа DOM формы.

    Reply ↓
  44. RomanUzmov

    Обработка супер! Спасибо!

    Reply ↓
  45. elena_77

    Спасибо огромное. Проделана большая и нужная работа.

    Reply ↓
  46. elena_77

    Разработка полезная автору плюс

    Reply ↓
  47. iov

    (0)сравнение УПП-УПП cf windows 7 проф

    {Форма.Форма.Форма(1512)}: Индекс находится за границами массива

    СтрокаСравнения=ДеревоМетаданных.Строки[0];

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

    Reply ↓
  48. bambr1975

    (51) iov, эта надпись появляется, когда что-то напутано с каталогами распаковки. Создайте для каждой конфигурации свой каталог распаковки (который не будет удаляться при закрытии обработки) — попробуйте еще раз. Напишите, если не получится. На сравнении cf УПП проверялось. Было все в порядке.

    Reply ↓
  49. bambr1975

    +52 (51)Распаковать и вывести. Не просто Вывести

    Reply ↓
  50. iov

    (52) два разных каталога

    УПП допиленная и УПП типовая — указаны каталоги распаковки

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

    на допиленной вылетает. причем сразу же при запуске.

    Типовая — без проблем.

    (53) Конечно распаковать и вывести.

    Reply ↓
  51. iov

    (52) Сейчас попробую выгрузить опять и проверить…

    Reply ↓
  52. bambr1975

    (54) iov, УПП на платформе 8.2?

    Reply ↓
  53. bambr1975

    (51) iov, сообщение «Результат распаковки не является результатом распаковки для файла конфигурации» пишется, если в каталоге распаковки отсутствует файл root

    Структуру файлов каталога распаковки посмотрите, пожалуйста. Обычно, при сортировке файлов по имени там в самом низу должно быть три файла — root, version, versions

    Reply ↓
  54. iov

    (56) естессно…

    вылетает практически сразу после нажатия. так что в каталоге распаковки даже ничего не появляется

    Reply ↓
  55. bambr1975

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

    V8Unpack.exe -parse [ПолныйПутьКФайлуРаспаковкиВКавычках] [ПолныйПутьККаталогуРаспаковкиВКавычках]

    В каталоге с программой V8Unpack.exe и zlib1.dll

    Получится что-нибудь?

    Reply ↓
  56. iov

    (59) UnpackToFolder. Error in reading file!

    Reply ↓
  57. iov

    (59)файл не заблокирован — перемещал на разные диски — типовая распаковывается доработанная — нет

    Reply ↓
  58. bambr1975

    (60) iov, от имени всей медицины ничего Вам сказать не могу. Но V8Unpack.exe — это не совсем мое. Хотелось бы думать, что выход найдется. Наверное, об этом надо написать в комментариях к соответствующей публикации.

    Reply ↓
  59. iov

    (62) В любом случае спасибо за участие. попробуем добиться истины в других местах.

    Reply ↓
  60. xhronx

    Отличная обработка, дерзайте! Ждем доступных версий.

    Reply ↓
  61. Збянтэжаны Саўка

    Das ist fantastish!!!

    Reply ↓
  62. Збянтэжаны Саўка

    (8) WendyH, по мне так для сравнения печатных форм стандарта за глаза хватит, но вот визуальное сравнения форм — это жемчужинка, которой всегда хотелось!

    Reply ↓
  63. Gasdrubal

    отличная обработка, качну ,спасибО очень нехватало такого в вид дерева сравнения форм и печатных формочек!

    Reply ↓
  64. xbic

    нужная штука

    Reply ↓
  65. vasiliy_b

    Надеюсь 1Су теперь станет стыдно, и они реализуют это в платформе =)

    Reply ↓
  66. amiralnar

    Здравствуйте!

    Скажите, пожалуйста, знакомились ли вы с методом динамического добавления элементов формы от TormozIT?

    Как вы думаете, возможно ли в вашей обработке написать функцию, которая по информации о сравнении форм — сгенерирует код для динамического добавления элементов на форму?

    Reply ↓
  67. bambr1975

    (71) amiralnar, эта функция в обработке и так есть — в слегка непричесанном виде, согласен — при нажатии на гиперссылку с синонимом формы выводится текст для динамического добавления элементов формы — в случае сравнения — сравнение этих текстов динамического добавления. Задачи сформировать отдельно именно текст изменений одной формы от другой не ставилось — хотя, по-моему, это не сложно. Сильно восхищает предложенный формат подачи нужных изменений в обработке от Istur — у него более специализированная обработка, может, он возьмется ее слегка развить?

    Reply ↓
  68. KVIKS

    хорошая обработка

    Reply ↓
  69. bambr1975

    (74) petrov_al, пользовательский режим используется для вывода только потому, что других способов вывести для анализа нужные данные еще не знаю. Аудиторию бухгалтеров и операторов баз данных охватить в мои планы не входило. Конфигуратор, конечно, нужно еще подучить. Но альтернативные методы получения нужной для анализа информации тоже должны быть изучены.

    Reply ↓
  70. astonvilla

    Однозначно одна из полезнейших разработок…

    Reply ↓
  71. amiralnar

    (72) Большое спасибо за подсказку на обработку! Это как раз то, что мне было нужно.

    Reply ↓
  72. vikorn

    Полезно. Спасибо

    Reply ↓
  73. Magister

    Приятно видеть такие разработки 🙂

    А про объединение ещё не думали? Как замену функционалу конфигуратора?

    Reply ↓
  74. bambr1975

    (79) Magister, ридер — от слова «читать». Подразумевалось, что те, кто ищет альтернативный разбор форм — как Вы в своих комментариях к CFU-ридеру, найдет для себя что-то подходящее. Замена конфигуратору не планировалась.

    Reply ↓
  75. Magister

    (80) Понял, спасибо за ответ.

    Reply ↓
  76. Batman

    спасибо, отличная разработка

    Reply ↓
  77. lexa12345

    Спасибо, очень полезная вещь.

    Reply ↓
  78. SSO

    Отличный и удобный механизм. Очень помогает когда есть множество изменений в форме. Спасибо.

    Reply ↓
  79. svbel85

    видно, что проделана большая работа, но не повторяет ли механизм этой обработки, механизм сравнения конфигуратора???

    Reply ↓
  80. bambr1975

    (85) svbel85, на самом деле — такая видимость действительно имеет место быть. И если у Вас нет потребности расширить имеющиеся механизмы и развить их в нужном для Вас направлении — обработка не для Вас. На возможности сравнения форм конфигуратором Вы, к сожалению, повлиять не сможете, а тут — проявить немного фантазии и… может быть, узнаете что-то новое для себя.

    Reply ↓
  81. fanilya

    Сравнениефайлов.СпособСравнения=СпособСравненияФайлов.ТекстовыйДокумент;

    При попытке показать различие в табличном документе, он вызывает исключение — а при вызове исключения там ищется файл text (как для модулей объектов). Просто не предусмотрел потребность в сравнении табличных документов. Макеты-то сами из дерева объектов можно вызвать по-одиночке. Согласен, надо доработать. Вот, по поводу фильтра Вы мне тоже сказали, глюк с привязками показали — отдышусь — и все исправлю.

    Reply ↓
  82. fap82

    Разработка весьма полезная, если не сказать очень полезная,Стандартные механизмы не позволяют анализировать формы и макеты, бывает сложно понять что же изменилось.Отличная работа.+

    Reply ↓
  83. yalo

    Супер экономии времени при обновлении. Спасибо!!

    Reply ↓
  84. yalo

    Экономия времени при обновлении. Спасибо!!

    Reply ↓
  85. Uscolegy

    Спасибо, очень помогло. а дальнейшее развитие будет ?

    Reply ↓
  86. bambr1975

    (91) Usc, конечно, было бы здорово довести дело до чего-то более практичного. То, что требует простой доработки напильником — будет реализовано в ближайшее время. Мне пока что не определиться с тем — в каком виде будет получаться информация на выходе. Поможете в этом «ступоре идей»?

    Reply ↓
  87. Dethmond

    Оболденная вещь, спасибо большое

    Reply ↓
  88. pumbaE

    Вариант: пустая база анализирует параметры командной строки и допустим если передается 2 пути к файлам выводить их diff (erf, epf, mxl) неважно. В этом случаи можно для svn написать скрипт, что эти файлы сравнивать с помощью определенной программы.

    Особенно будет прикольно для клюшечников — посмотреть визуально различия в mxl файле…

    Reply ↓
  89. commo

    хорошая весчь спасибо

    Reply ↓
  90. Yasen

    Спасибо

    Reply ↓
  91. Artemuch2

    Ну с удовольствием бы протестировал функционал и поставил плюс и содержательный комментарий. Из за этого ретинга приходится всякую ерунду писать что бы скачать обработку. Неужели инфостарту это реально нужно?

    Reply ↓
  92. владимирп

    Дошли руки попробовать. Задумка очень нравится, но произошло: {Форма.Форма.Форма(1111)}: Значение не является значением объектного типа (ВидМетаданных)ВидМетаданныхОбъекта=СтрокаДереваМетаданных.ВидМетаданных;

    Это выдала машина. В чем может быть причина? Пытался просмотреть свою конфигурацию УПП, но измененную

    Reply ↓
  93. bambr1975

    (99) владимирп, единственное, что приходит в голову — это то, что в конфигурациях с версии 8.2.14 появились новые виды метаданных — обработка их еще не учитывает. Буду работать в этом направлении.

    Reply ↓
  94. Zas1402

    (3) BalVlad,

    очень нужная вещь

    Reply ↓
  95. DMSDeveloper

    (31) Rustig, защиты на основе исключения модулей в комплект поставки не достаточно. На основе V8Unpack была не известным мне автором разработана обработка — декодирование модулей V8. Эта обработка прекрасно вскрывает и декодирует модули с «псевдокодом». Таким же образом обходит установленные пароли на текст.

    Дабы не совсем offtop 🙂 Автору МЕГАРеспект! Я давно искал алгоритм + механизм разбора и формирования дерева конфигурации из файлов после V8Unpack.

    Есть идея реализовать свой собственный (на базе 1С) SVN-чик с функциями автоматического документирования на основе комментариев. Шаблоны для документирования уже готовы и успешно используются в кодировании, а вот с разбором программного кода сервером при добавлении новой версии в хранилище — затык. Конфигуратор может выгружать только всю конфигурацию в текстовые файлы, и не может выгружать отдельные объекты из конфигурации или внешние обработки или отчеты. А из поставленной задачи это основное.

    Еще раз — автору МЕГАРеспект.

    Reply ↓
  96. ndacoder

    (60), (62)

    << от имени всей медицины ничего Вам сказать не могу. Но V8Unpack.exe — это не совсем мое. Хотелось бы думать, что выход найдется. Наверное, об этом надо написать в комментариях к соответствующей публикации.

    >>

    автору спасибо за труд.

    НО! архитектура решения жестко завязана на V8Unpack, что не даёт легкого простора для перевода на другие решения (в свободном доступе есть как минимум ещё 2 решения для получения аналогичного результата)

    P.S. автору V8Unpack писать бесполезно разработка не поддерживается и передана сообществу.

    P.P.S.если у кого не распаковывается V8Unpack-ом приму на изучение другими инструменами.

    Reply ↓
  97. babys

    «Тут, эта, как его, не работает, начальника». В части «анализ и сравнение ролей и ограничений доступа» при нажатии на кнопки перехода «Различия в ограничениях доступа (4):» выдаёт вот такое сообщение:

    {Форма.ФормаДляРолей.Форма(951)}» Ошибка при вызове метода контекста (Индекс)
    ИндексТекущейСтроки=ТабличноеПолеСравненияРЛС.Индекс(ТекущаяСтрока);
    по причине:
    Несоответствие типов (параметр номер ‘1’)

    PS: И можно, что нибудь с реквизитным составом сделать, а то СтандартныйРеквизит, тяжело понимается.

    Reply ↓

Leave a Comment

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