gifts2017

Автоматическое изменение структуры конфигурации с помощью скрипта в формате AutoIT.

Опубликовал Андрей Крутских (K_A_O) в раздел Администрирование - Сервисные утилиты

Обработка создает скрипт в формате AutoIT из текстовых файлов описания конфигурации. Данный скрипт осуществляет групповое изменение структуры справочников и документов с помощью эмуляции нажатий клавиш в конфигураторе.

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

Запуск скрипта – F11, прерывание – Ctrl-F11.

 

 

Для создания файла отчета 1С должна быть запущена в режиме «Конфигуратор» - меню «Конфигурация»-«Отчет по конфигурации».

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

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

Программу  AutoIT можно бесплатно скачать с сайта http://www.autoitscript.com/autoit3/. Описание языка можно также посмотреть на сайте http://www.script-coding.info.

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

ВНИМАНИЕ!!!

Положение окна свойств должно быть 'Свободное'. В конфигураторе на любых метаданных: Alt-Enter, щелчок правой кнопкой мышки на заголовке окна, пометка 'Свободное'

Из плюсов: 

 - может работать как в файловой, так и в клиент-серверной версии;

 - может работать как на собственном компьютере, так и у клиента (поскольку autoit легко переносится);

 - ... ну, собственно, плюсы и закончились.

Из минусов:

 - поскольку скрипт работает в режиме эмуляции ввода символов нельзя ничего делать с компьютером во время работы скрипта;

 - тесно завязан на платформу, малейшее изменение фирмой 1С горячих клавиш и описания полей в конфигураторе испортит скрипт;

 - интерфейс конфигуратора должен быть русский;

 - неопределено поведение в случае разных объектов метаданных с одинаковыми именами (т.е. не стоит менять справочник "ЗначенияСвойствОбъектов", если есть регистр сведений "ЗначенияСвойствОбъектов");

 - на данный момент можно менять только документы и справочники;

 - ... и т.д.

 

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

Скачать файлы

Наименование Файл Версия Размер
Описание (13.03.2009) 81
.1236952042 74,00Kb
25.09.09
81
.1236952042 74,00Kb Бесплатно
Обработка (21.03.2009) 84
.1236952196 40,51Kb
25.09.09
84
.1236952196 40,51Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Лунев (luns) 14.03.09 09:28
Интересная идея, + авансом.
А нет ли возможности таким образом элементы форм выносить? Скажем, чтобы после обновления типовой, указать "файл описания формы" и скрипт сам модифицирует форму, выносит реквизиты и т.д.
2. Андрей Крутских (K_A_O) 15.03.09 10:25
(1) может это лучше делать в пользовательском режиме.
уже есть декомпилятор форм http://infostart.ru/projects/1343/

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

Панель.ОтображениеЗакладок = ОтображениеЗакладок.СлеваВертикально;
Панель.Страницы.Страница1.Заголовок = "Основные данные" ;
Панель.Страницы.Добавить("ДопДанные","Доп.данные") ;
Панель.ТекущаяСтраница = Панель.Страницы.ДопДанные ;

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

3. Роман Ершов (MRAK) 17.03.09 08:42
(0), О, только вчера сам подумал о такой фишке! Когда-то давно нечто подобное писал, только на VB, запускал прогу невидимой и посылал нажатия клавиш непосредственно в невидимое окно. Чтобы юзер ничего случайно не замутил - блокировал на время работы нажатия модальным системным окошком...