Сценарий будет интересен разработчикам на ISBL.
Рассматривая код, можно для себя почерпнуть понимание базовых вещей. Обращение к реквизиту карточки и таблицы, найти элемент управления на форме и получить его заголовок, получение действий формы и даже те, которые скрыты от разработчика, работа с Excel, добавление листов в Excel, быстрый вывод данных в Excel, поиск на листе Excel, создание гиперссылок на ячейки в Excel.
Также интересно то, что этот сценарий делает обратное действие. Разработчик идет от визуального программирования и переходит к программному коду. Как бы сверху вниз. Данный код идет снизу вверх. Он достает сначала все, что есть программного, и поднимается к визуальным элементам формы. В связи с этим вы можете для себя обнаружить, что в книгу Excel выводится значительно больше информации, чем когда вы пользуетесь стандартным инструментами разработки системы Directum. Например, в списке реквизитов в режиме редактора уже давно не видно реквизита с именем «ИД», однако он присутствует у записи ТС, и к нему можно обратиться по этому имени. Также вы увидите действия сохранения записи или перехода к следующей и, как вариант, приложив немного смекалки, можете переопределить действие кнопки «Сохранить».
Разработчику часто требуется "живьем" посмотреть на данные, лежащие в записи справочника, а не как он думает. Конечно, можно вытащить столбцы в форму-список справочника. Попробуйте сделать 28 колонок, и часть этих колонок будут отображать занчения системных реквизитов.
Иногда требуется понимание общей обстановки в целом. Например, в случаях когда:
С помощью этого функционала удобно:
Можно использовать полученный файл как протокол разработки при сдаче проекта, т.е. какие элементы разработки содержатся в ТС на момент сдачи заказчику.
Среда объектов ISBL позволяет циклично получить информацию по объекту. Для данной цели создан данный программный код. Код выводит информацию по записи справочника в Excel. Запись должна быть создана в справочнике. Информация раскладывается по листам рабочий книги Excel. Основной лист (первый), см. приложенный снимок экрана, объединяет результаты остальных листов. Через гиперссылки в ячейках можно перейти на соответствующий лист, на котором будут более подробные данные или дополнительная информация. На листы выводится информация по составу реквизитов, о каждом реквизите в частности и его событиях, сопоставление элементов формы реквизитам, список действий формы.
Код специально написан без использований функций, так как иногда требуется посмотреть информацию по проблемной записи, например, в БД заказчика. Импорт функций не всегда возможен в БД заказчика, так как потом может потребоваться удаление импортированных функций. А так можно воспользоваться стандартным функционалом Directum - «Выполнить внешний сценарий». Данная разработка работает на версии Directum 4.9 и на более ранних версиях. Поскольку в более поздних версиях Directum были добавлены новые типы данных и элементы управления, то наблюдается не опознавание типов данных.
Прикреплен файл: Сценарий Экспорт Excel.txt
Видеоролик как это работает https://youtu.be/-WvFnsROD4E
Константин, вопрос по самому сценарию:
1) почему имя справочника и даже ИД записи захардкодили в текст сценария? удобнее же ввести в диалоге.
2) поменял на свой справочник, поставил ИД реальной записи — открывается Excel, но ни на одном листе ничего нет Что я делаю не так?
В моем случа сценарии именует лист - "КСК152789"
Сделал видеоролик как это работает https://youtu.be/-WvFnsROD4E
Вот этого (порядка работы со сценарием) не хватает в описании работы сценария в материале. Пусть будет в комментариях.
Не факт. Выбор можно и запоминать с предыдущего запуска и подставлять по умолчанию. Останется только нажать OK в диалоге.
Было бы неплохо, если бы сценарий сам сообщал, что ему не понравилось. А то получается, чтобы понять как правильно запустить сценарий, нужно изучить его код, да еще и под отладчиком погонять.
Это есть. Лист создался и назвался правильно. Видимо, я уже в двух шагах от успеха , перепроверю данные.
А с какой целью тут цикл? Ведь перед открытием набора данных вы фильтруете его: MBAnalit.Analit =. Вы ожидаете увидеть более одной записи в наборе?
Данный сценарий - это часть огромного. Часть кода по выводу данных писалась как универсальный код. Я предпочитаю писать универсальный код. Но это отнимает много времени и сил.
Почему же он универсальный. Потому что он использовался для ЭД, ТП, ТС и т.п. В данном случае он формализован под ТП. Но если подставить объект ЭД, ТП, то он то же будет работать. Я начинал с ранних версий директум и документация была слабой. А задачи ставились не выполнимые(переопределить действия по кнопке сохранить!) и тогда появился этот код который выводил не документированный возможности. Есть код который показывает что же всетаки можно достать из объекта задания. Результат выглядит очень круто. Я был ввосторге. Мне больше не надо было ломать голову как написать SQL запрос.
Сценарий падает на строке 111 при попытке обработать реквизит формы справочника типа "Документ"
Мда. Я с таким реквизитом не тестировал. Реквизит пявился в версии 5.5.
А вам нужен текст заплатки или целиком рабочий сценарий?
Прикреплен файл: Экспорт данных записи спр в Excel.txt
Внес исправления, теперь работает.
Проверил под версией 5.5.1
В основном фале есть ошибка. В виду того что у директума в нумераторе типа данных(TReqDataType) есть пропуск в порядке типов. Поэтому начиная с 5 типа, тип данных выводится не верно.
Авторизуйтесь, чтобы написать комментарий