Утилита Development Transfer Utility

27 40

Общая информация

Development Transfer Utility (DTU) – утилита, предназначенная для экспорта разработки в виде структуры из папок и файлов, что позволяет хранить разработку в системе контроля версий. Утилита также позволяет выполнить импорт разработки, то есть преобразовать разработку из структуры папок и файлов обратно в пакет и загрузить в базу данных. Структура представляет собой упорядоченный по группам (функции, константы и т.д.) набор папок, внутри которых, в текстовых файлах, хранятся данные и вычисления.

Использование

В данной статье применяется метод с использованием Windows-консоли, для того, чтобы показать, как работает утилита и какие подводные камни могут возникнуть при её использовании. Для упрощения ввода команд можно использовать такие скриптовые языки как Batch, VBS и др.

Посмотреть все доступные команды можно в справке утилиты. Для этого запустим консоль Windows, перейдём в каталог с утилитой и выполним DevelopmentTransferUtility с аргументом --help:

C:\common\dtu>DevelopmentTransferUtility.exe –help

Список параметров командной строки, разделенный по группам:

  • Режим работы:

--mode

Задает режим работы (export/import, по умолчанию export).

--type

Тип пакета разработки (standard - стандартная разработка, routes - типовые маршруты, wizards - мастера действий, по умолчанию standard).

--isc

Имя файла конфигурации (для экспорта по конфигурации).

--isx

Файл пакета разработки (для упаковки или распаковки пакета разработки).

 

  • База данных:

--server

Имя сервера (используется для подключения к БД).

--database

Имя базы данных (используется для подключения к БД).

--username

Имя пользователя (используется для подключения к БД).

--password

Пароль (используется для подключения к БД).

--authtype

Тип аутентификации (windows/sql, по умолчанию sql).

 

  • Выбор каталогов:

--clientpartpath

Путь к файлам клиентской части IS-Builder.

--devfolder

Папка с разработкой.

 

  • Фильтры:

--fromdate

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

--todate

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

--routeids

Список ИД экспортируемых ТМ (через запятую).

--userfilter

Имя пользователя. Для экспорта компонент измененных указанным пользователем.

 

  • Параметры для работы с Team Foundation Server:

--changesets

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

--importfolders

Список импортируемых папок (используется как фильтр при импорте).

--tfs

Путь к коллекции проектов TFS-сервера, в которой хранится разработка (используется для фильтрации при импорте). Требует наличие аргумента --tfsdevpath.

--tfsdevpath

Путь к папке с разработкой в TFS (используется для фильтрации при импорте). Требует наличие аргумента --tfs.

 

  • Вспомогательные аргументы:

--closewindow

Закрыть окно после окончания работы.

--help

Вывести справку по параметрам командной строки.

--hiddenimport

Признак импорта в скрытом режиме (без показа окна утилиты импорта разработки).

 

Экспорт стандартной разработки

Используя нижеприведенную команду, экспортируем стандартную разработку из БД:

DevelopmentTransferUtility --mode "export" --type "standard" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>" --clientpartpath "<КАТАЛОГ_КЧ>" --server "<ИМЯ_СЕРВЕРА>" --database "<ИМЯ_БАЗЫ>" --username "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>" --password "<ПАРОЛЬ>" --authtype "sql"

<КАТАЛОГ_РАЗРАБОТКИ> - папка, в которую будет сохранятся или из которой будет восстанавливаться разработка,

<КАТАЛОГ_КЧ> - путь к файлам клиентской части,

<ИМЯ_СЕРВЕРА> - имя сервера БД,

<ИМЯ_БАЗЫ> - название БД,

<ИМЯ_ПОЛЬЗОВАТЕЛЯ> - имя пользователя с правами администратора БД,

<ПАРОЛЬ> - пароль пользователя с правами администратора БД.

Рисунок №1. Пример экспорта стандартной разработки.

В данном случае --authtype, --mode и --type можно не указывать, так как для них заданы значения по умолчанию, а именно "sql", "export", "standard" соответственно. --authtype указывает какой вид аутентификации использовать при подключении к базе данных (по имени пользователя и паролю сервера или Windows-аутентификации). Аргументы --clientpartpath, --devfolder, --server, --database, --username и --password являются минимально необходимыми для запуска процесса экспорта.

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

Обратный процесс - импортирование:

DevelopmentTransferUtility --mode "import" --type "standard" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>" --clientpartpath "<КАТАЛОГ_КЧ>" --server "<ИМЯ_СЕРВЕРА>" --database "<ИМЯ_БАЗЫ>" --username "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>" --password "<ПАРОЛЬ>" --authtype "sql"

После запуска данной команды, откроется компонента “Импорт разработки”, в которой можно указать какие элементы импортировать в БД.

Все выше сказанное также применимо для типовых маршрутов (--type routes) и мастеров действий (--type wizards).

Типовые маршруты:

DevelopmentTransferUtility --mode "export" --type "routes" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>" --clientpartpath "<КАТАЛОГ_КЧ>" --server "<ИМЯ_СЕРВЕРА>" --database "<ИМЯ_БАЗЫ>" --username "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>" --password "<ПАРОЛЬ>" --authtype "sql"

Мастера действий:

DevelopmentTransferUtility --mode "export" --type "wizards" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>" --clientpartpath "<КАТАЛОГ_КЧ>" --server "<ИМЯ_СЕРВЕРА>" --database "<ИМЯ_БАЗЫ>" --username "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>" --password "<ПАРОЛЬ>" --authtype "sql"

Примечание. При экспорте элемента разработки также экспортируются и требуемые ему реквизиты, строки локализации, роли и т.п. элементы (зависимости).

 

Экспорт разработки с помощью файла конфигурации

Файл конфигурации, содержащийся в пакете разработки, созданном с помощью компоненты “Экспорта разработки”, можно использовать в качестве фильтра для экспорта разработки:

DevelopmentTransferUtility --mode "export" --type "standard" --isc "<ПУТЬ_К_ФАЙЛУ_КОНФИГУРАЦИИ>" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>" --clientpartpath "<КАТАЛОГ_КЧ>" --server "<ИМЯ_СЕРВЕРА>" --database "<ИМЯ_БАЗЫ>" --username "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>" --password "<ПАРОЛЬ>" --authtype "sql"

<ПУТЬ_К_ФАЙЛУ_КОНФИГУРАЦИИ> - полный путь к файлу конфигурации.

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

 

Фильтры

В примерах выше экспорт и импорт разработки занимает продолжительное время, так как он проводится по всем элементам БД. Для ускорения существуют специальные фильтры, по которым можно получить срез только тех объектов, которые были изменены в течении некоторого времени (--todate и --fromdate) или изменены указанным пользователем (--userfilter).

По временному интервалу и имени пользователя в системе DIRECTUM

Экспорт элементов разработки, которые изменялись пользователем системы DIRECTUM в интервале дат от левой границы до правой границы:

DevelopmentTransferUtility.exe --mode "export" --type "standard" --fromdate "<ЛЕВАЯ_ГРАНИЦА>" --todate "<ПРАВАЯ_ГРАНИЦА>" --userfilter "<ПОЛЬЗОВАТЕЛЬ>" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>" --clientpartpath "<КАТАЛОГ_КЧ>" --server "<ИМЯ_СЕРВЕРА>" --database "<ИМЯ_БАЗЫ>" --username "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>" --password "<ПАРОЛЬ>" --authtype "sql"

<ЛЕВАЯ_ГРАНИЦА> - дата, от которой необходимо получить срез изменений,

<ПРАВАЯ_ГРАНИЦА> - дата, до которой проводились изменения,

<ПОЛЬЗОВАТЕЛЬ> - имя пользователя, который менял разработку.

По ID типового маршрута

Экспорт типового маршрута по его ID:

DevelopmentTransferUtility --mode "export" --type "routes" --routeids "<ID_ТМ>" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>" --clientpartpath "<КАТАЛОГ_КЧ>" --server "<ИМЯ_СЕРВЕРА>" --database "<ИМЯ_БАЗЫ>" --username "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>" --password "<ПАРОЛЬ>" --authtype "sql"

<ID_ТМ> - ID типового маршрута.

Примечание. Для импорта разработки, аргумент --routeids не используется.

 

Импорт разработки из папки в БД с фильтрацией по наборам изменений

С использованием TFS есть возможность импортировать разработку по определенным наборам изменений в ветке:

DevelopmentTransferUtility.exe --mode "import" --type "standard" --tfs "<АДРЕС_ TFS>" --tfsdevpath "<ВЕТКА_TFS>" --changesets "<СПИСОК_ИЗМЕНЕНИЙ>" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>" --clientpartpath "<КАТАЛОГ_КЧ>" --server "<ИМЯ_СЕРВЕРА>" --database "<ИМЯ_БАЗЫ>" --username "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>" --password "<ПАРОЛЬ>" --authtype "sql"

<АДРЕС _TFS> - путь к коллекции проектов TFS-сервера, в которой хранится разработка (пример: «http://test:8080/tfs/DefaultCollection»),

<ВЕТКА_TFS> - путь к папке с разработкой в TFS (пример: «$/TestDev/Development»),

<СПИСОК ИЗМЕНЕНИЙ> - список наборов изменений через запятую, по которому будет проводится импорт.

Примечание. Обратите внимание на <КАТАЛОГ_РАЗРАБОТКИ>: необходимо указать тот, в котором проводились изменения для указанных наборов изменений.

 

Преобразование пакета разработки в структуру папок и наоборот

Для того, чтобы упаковать разработку в пакет используется следующая команда:

DevelopmentTransferUtility --mode "import" --type "standard" --isx "<ПУТЬ_К_ПАКЕТУ_РАЗРАБОТКИ>" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>"

<ПУТЬ_К_ПАКЕТУ_РАЗРАБОТКИ> - полный путь к пакету разработки.

Обратный процесс – извлечение в каталог:

DevelopmentTransferUtility --mode "export" --type "standard" --isx "<ПУТЬ_К_ПАКЕТУАДО_РАЗРАБОТКИ>" --devfolder "<КАТАЛОГ_РАЗРАБОТКИ>"

 

Заключение

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

Ссылка на утилиту: Development Transfer Utility

Александр Чугунов

Покажите, пожалуйста, в какую структуру файлов и папок экспортируется разработка.
Исходники будут? Или хотя бы dll чтобы можно было прикрутить к утилитам типа ISBLScan.ViewCode?
Вот сложно было написать в комментах к моим статьям и ответить на вопрос, будет ли у Directum такая утилита? Хотя, если не предоставите исходников, то я не зря кучу времени потратил на аналог.

Денис Архипов
  • Параметры для работы с Team Foundation Server:

c gitlab/github планируется встроенная интеграция?

 

p/s/ Утилита огонь!

з.з.ы. исходные коды можно получить?

Денис Архипов: обновлено 05.10.2017 в 10:32
Дмитрий Тарасов

Очень полезная утилита! Присоединяюсь к вопросу, исходники можно как-то получить?

Александр Чугунов

Требование наличия клиентской части можно убрать, если выгружать разработку напрямую с SQL. 
Вот набор sql-функций, позволяющий выгрузить с SQL сразу ISX. Там есть фильтрация по дате, фильтр по пользователю несложно прикрутить (заготовки есть в коде). Поддержки диалогов там нет, делал очень давно, а потом мне оно не надо было, версии систем старые. 

Андрей Дозоров

Какие версии DIRECTUM поддерживает данная утилита?
В каком режиме в утилиту будет добавляться поддержка новых возможностей инструментов разработчика, вместе с выходом версии системы?

Денис Архипов

полную выгрузку делает ооооооооооооочень долго.

Денис Архипов

прошел 1 час. ничего не выгрузилось  :( Утилита жрет 1Гб памяти и 12% CPU

Результат:

13:10:05 Экспорт из базы данных: запущен.
14:10:49 Экспорт из базы данных: завершен.

а что так долго?

Денис Архипов: обновлено 05.10.2017 в 14:40
Александр Чугунов

Денис, эта утилита использует стандартный механизм экспорта. Как минимум он жрёт много памяти и долго работает. А еще требует клиентской части. В том числе поэтому я делал SQL-функции, про которые написал выше и в своей утилите мы сделали свою загрузку с SQL. Загрузка полного стандартного пакета с SQL меньше 5 сек, выгрузка в ISX меньше 5 сек, выгрузка в файловую систему у меня на SSD занимает меньше минуты (очень много файлов).

Денис Архипов

Александр, а загрузка у вас как реализована?

Александр Чугунов

Денис, какая загрузка? Из базы данных? Просто запросами получаем разработку в модель. По этой части, к сожалению, из ISBLScan ничего взять не удалось, там было очень не оптимально, я когда за нее взялся не стал переписывать, только чуток оптимизировал.
У меня очень высокие требования к скорости работы таких утилит потому что часто работаю не на самых лучших каналах связи, а через RDP очень неприятно работать с ISBLScan.ViewCode, при пролистывании тормозит очень.
Вот наша утилита на канале с RTT 150мс и шириной 5мбит грузит всю разработку за 30 секунд.

Камиль Саляхутдинов

Александр,

Подробное описание структуры файлов получилось бы довольно объемным. Если кратко: в корневой папке создаются папки для каждого типа компоненты (Constants, Scripts etc.), в них создаются папки для каждой компоненты этого типа (название папки может быть кодом или наименованием компоненты). Содержимое этих папок может отличаться, в зависимости от типа компоненты, но обычно там есть XML с реквизитам карточки, другие XML с данными, формы, отдельные файлы с вычислениями сгруппированные по типу, например события справочника. Картинка для примера:

 

Денис, 

Встроенной интеграции с другими системами контроля версий не планируется пока. В текущей версии привязка к TFS только в плане фильтрации компонент. Если не использовать эти параметры, то утилита, я думаю, подойдет для работы с большинством СКВ.

Экспорт всей разработки действительно занимает продолжительное время. Но совсем скоро выйдет DIRECTUM 5.5, и там стандартные механизмы экспорта/импорта работают быстрее.

Александр, Денис, Дмитрий,

Исходники планируем выложить, но позже, т.к. нужно решить некоторые организационные вопросы. Выложим ссылку тут же.

Андрей, 

Требования к системе:

  • IS-Builder 7.6.1 и выше
  • Для экспорта типовых маршрутов и мастеров действий с помощью утилиты требуется версия DIRECTUM 5.3.1 или выше. Для импорта потребуется версия 5.5.
  • Запуск импорта разработки в визуальном режиме выполняется для DIRECTUM версии 5.5 или выше, в более старых версиях разработка импортируется в скрытом режиме.

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

 

Денис Архипов

Денис, какая загрузка? Из базы данных?

Наоборот, в базу данных импорт разработки

 

 Но совсем скоро выйдет DIRECTUM 5.5, и там стандартные механизмы экспорта/импорта работают быстрее.

у многих клиентов 5.5. еще не скоро появится :( 

Денис Архипов: обновлено 06.10.2017 в 10:42
Александр Чугунов

Денис, импорт стандартными средствами, мы формируем ISX. Решили что свой импорт писать нет смысла, но мы делали прототип изменения разработки напрямую через служебные справочники разработки, вполне рабочий вариант.
У нас в приложении есть модель всей разработки. Ее мы можем заполнять из базы данных запросами, из ISX, из файловой системы. Выгружать из модели можем в ISX и в файловую систему. Модель еще будет использоваться в аналоге ISBLScan для отображения разработки и, возможно, ее редактирования. Можно и свой экспорт сделать, с выбором в одном окне не только разработки, но и ТМ, мастеров, записей справочников. В общем, возможностей много, нужны руки и время=)

Камиль, спасибо. Мы у себя выбрали JSON, а не XML. Вроде как легче должен читаться. А в целом всё похоже=)

Денис Архипов

Зачем утилита постоянно создает папку Development? я уже указал куда сохранять, зачем мне еще 1 папка.

Денис Архипов

Требования к системе:

  • IS-Builder 7.6.1 и выше

А что это за версия? Если версия системы DIRECTUM 5.5 использует платформу IS-Builder 7.55.0.

Камиль Саляхутдинов

Денис, платформа IS-Builder 7.6.1 соответствует версии DIRECTUM 4.5.

В рамках наших процессов, использование отдельной папки Development было оправдано, с ней проще хранить рядом с разработкой другие объекты, в рамках одной сущности (например, в рамках ветки в СКВ). Хотя это, конечно, не критично.

Денис Архипов

В рамках наших процессов, использование отдельной папки Development было оправдано, с ней проще хранить рядом с разработкой другие объекты, в рамках одной сущности (например, в рамках ветки в СКВ)

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

Алексей Шкунов

Добрый день! Просвятите пожалуйста что за параметр path1? Не получается экспортировать с типом аутентификации - win.

Запускал так: DevelopmentTransferUtility --mode "export" --type "standard" --devfolder "C:\DTU\DEV\" --clientpartpath "C:\Program Files (x86)\DIRECTUM Company\DIRECTUM 5.3" --server "server" --database "DIRECTUM" --username "user" --password "pass" --authtype "win"

Ниже привожу лог:

2017-10-17 08:24:29.7517    INFO    NpoComputer.DevelopmentTransferUtility.Common.EntryPoint    Экспорт из базы данных: запущен.    
2017-10-17 08:24:29.7817    ERROR    NpoComputer.DevelopmentTransferUtility.Common.EntryPoint    Экспорт из базы данных: ошибка.    System.ArgumentNullException: Value cannot be null.
Parameter name: path1
   at System.IO.Path.Combine(String path1, String path2)
   at NpoComputer.DevelopmentTransferUtility.Common.TransferDevelopmentRunner.get_ExportUtilityFullFileName()
   at NpoComputer.DevelopmentTransferUtility.Common.TransferDevelopmentRunner.Execute()
   at NpoComputer.DevelopmentTransferUtility.Common.EntryPoint.ExportDevelopment(ICommandLineOptions options, String developmentFileName)
2017-10-17 08:24:29.7817    ERROR    NpoComputer.DevelopmentTransferUtility.Common.EntryPoint    Возникла ошибка: Value cannot be null.
Parameter name: path1

Алексей Шкунов: обновлено 17.10.2017 в 07:32
Алексей Шкунов

ОПытным путем выяснил: в параметре --devfolder "C:\DTU\DEV\"  нужно убрать кавычки. А почему --clientpartpath понимает эти кавычки??

Камиль Саляхутдинов

Алексей, с кавычками, при вызове из командной строки, действительно все не однозначно. Например, можно убрать из вашего пути "C:\DTU\DEV\" крайний слэш и такой вариант тоже сработает. Рекомендую попробовать для вызова утилиты использовать VBS-скрипт. Его, к тому же, проще менять. 

Например, такой (переделал свой, не отлаживал):

Set shell = CreateObject("WScript.Shell")

packageTransformerPath = shell.CurrentDirectory & "" 
outputFolderName = "C:\DTU\DEV\"
clientPartPathName = "C:\Program Files (x86)\DIRECTUM Company\DIRECTUM 5.3"
exportServerName = "server"
exportDatabaseName = "DIRECTUM"
exportUserName = "user"
exportUserPassword = "pass"
exportUserAuthentication = "Sql"

commandLine = _
  """{0}\DevelopmentTransferUtility.exe"" " & _
  "--mode export " & _
  "--devfolder ""{1} "" " & _
  "--clientpartpath ""{2}"" " & _
  "--server ""{3}"" " & _
  "--database ""{4}"" " & _
  "--username ""{5}"" " & _
  "--password ""{6}"" " & _
  "--authtype ""{7}"""
commandLine = Replace(commandLine, "{0}", packageTransformerPath)
commandLine = Replace(commandLine, "{1}", outputFolderName)
commandLine = Replace(commandLine, "{2}", clientPartPathName)
commandLine = Replace(commandLine, "{3}", exportServerName)
commandLine = Replace(commandLine, "{4}", exportDatabaseName)
commandLine = Replace(commandLine, "{5}", exportUserName)
commandLine = Replace(commandLine, "{6}", exportUserPassword)
commandLine = Replace(commandLine, "{7}", exportUserAuthentication)

Call shell.Run(commandLine, 10, True)

 

Денис Архипов

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

Локальное время на компе 9:44 по москве. Из скрипта повершелл запускаю утилиту:

Set-Location $DTUPath

$type = "routes"
.\DevelopmentTransferUtility.exe  --mode $mode --type $type  --devfolder $devfolder  --clientpartpath $clientpartpath  --server $server  --database $database  --username $username --password $password --authtype $authtype --closewindow

получаю вывод в окно терминала:

09:10:04 Экспорт из базы данных: запущен.
09:10:26 Экспорт из базы данных: завершен.
09:10:27 Преобразование пакета в структуру папок: запущено.
09:10:27   Чтение пакета ТМ: запущено.
09:10:27   Чтение пакета ТМ: завершено.
09:10:28   Экспорт типовых маршрутов: завершен (экспортировано 50)
09:10:29   Удаление типовых маршрутов: завершено (удалено 0)
09:10:29   Чтение пакета ТМ: запущено.
09:10:29   Чтение пакета ТМ: завершено.
09:10:29   Экспорт групп типовых маршрутов: завершен (экспортировано 8)
09:10:30   Удаление групп типовых маршрутов: завершено (удалено 0)
09:10:30   Чтение пакета ТМ: запущено.
09:10:30   Чтение пакета ТМ: завершено.
09:10:31   Экспорт ролей типовых маршрутов: завершен (экспортировано 28)
09:10:31   Удаление ролей типовых маршрутов: завершено (удалено 0)
09:10:31 Преобразование пакета в структуру папок: завершено.
09:10:32 Готово!

что за 9:10? когда у меня 9:44. и как он в 09:10:26 Экспорт из базы данных: завершен. если 09:10:32 Готово!??

Денис Архипов

и как он в 09:10:26 Экспорт из базы данных: завершен. если 09:10:32 Готово!??

с этим разобрался. остался вопрос что за время он выводит?

Денис Архипов

Сделайте возможным указывать в какой кодировке сохранять. UTF-8 надо.

Сергей Романов

Денис, по поводу времени: это ошибка в App.config. Там где, настраивается формат вывода  (layout="${date:format=HH\:MM\:ss} ${message}") надо заменить MM на mm. Иначе выводится текущий месяц вместо минут:)

Денис Архипов

Спасибо! :)

Денис Архипов

Если нет TFS как ограничить импорт разработки  только измененными элементами?

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

Камиль Саляхутдинов

Денис, для фильтрации при импорте можно использовать параметр --importfolders. В нем нужно перечислить относительные пути до компонент, которые нужно импортировать, например: "RouteBlocks\AddTaskInfoToRRC,RouteBlocks\AllAssignmentsProcessed,RouteBlocks\ConfirmationEnter".

Денис Архипов

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

Денис Архипов: обновлено 23.10.2017 в 09:45
Денис Архипов: обновлено 23.10.2017 в 11:23
Денис Мурашов

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

Камиль Саляхутдинов

Исходники утилиты опубликованы на GitHub: DevelopmentTransferUtility

Камиль Саляхутдинов: обновлено 29.12.2017 в 11:16
Денис Архипов

Спасибо!

Сергей Камышев

теперь осталось сделать интеграцию DTU с гитом, и заживем....

Денис Архипов

Закинул на гитхабе иссью https://github.com/DirectumCompany/DevelopmentTransferUtility/issues/1.

Александр Манохин: обновлено 31.01.2019 в 08:19
Максим Буланов

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

Максим Буланов

Добавили опцию для конвертации выгружаемой разработки в UTF-8 https://github.com/DirectumCompany/DevelopmentTransferUtility/pull/4

Проверили на своей разработке, в sourcetree и Visual Studio Code всё отображается корректно.

Было

Стало

Денис Архипов

а при импорте обратно в директум все работает (в 1251 перевод)?

Максим Буланов

Импорт в кодировке UTF-8 еще не проверяли.

Обратную конвертацию не делали. Сделаем если понадобится.

Максим Буланов

Как и ожидалось запаковка в UTF-8 не проходит. Чуть позже добавим обратную конвертацию налету перед упаковкой в пакет.

Максим Буланов

Итог:

  • в ключ --type добавлено значение all, которое последовательно вызывает три типа standart->routes->wizards
  • Добавлен ключ --utf8, при указании с ключом --mode "export" преобразовывает кодировку всех файлы в UTF8. При указании с ключами --mode "import" --isx на лету конвертирует файлы в 1251 без их физического изменения.

Изменения тут https://github.com/DirectumCompany/DevelopmentTransferUtility/pull/4

Дмитрий Тарасов

Что-нибудь планируется сделать с тем, чтобы код МД выгружался с помощью утилиты аналогично ТМ?

(Хранение мастеров действий отдельными файлами)

Авторизуйтесь, чтобы написать комментарий