Групповое редактирование объектов конфигурации

79 views
Skip to first unread message

VSozansky

unread,
Mar 14, 2014, 9:32:16 AM3/14/14
to enterprise...@googlegroups.com
Здравствуйте.
Очень нужно массово внести изменение в код модулей.
Где-то читал, что имеется репозитарий решений. Имеется ли такое решение?

Герман Кудяков

unread,
Mar 14, 2014, 1:58:21 PM3/14/14
to enterprise...@googlegroups.com
Да, такая возможность есть, но только в платном функционале.
Дерево объектов конфигурации можно передать в конструктор для групповой обработки на встроенном языке. Где для каждой строки (объекта, формы) можно получить текст модуля и по определенным условиям обработать и сохранить в конфигурацию


14 марта 2014 г., 17:32 пользователь VSozansky <vsoz...@gmail.com> написал:
Здравствуйте.
Очень нужно массово внести изменение в код модулей.
Где-то читал, что имеется репозитарий решений. Имеется ли такое решение?

--
Вы получили это сообщение, поскольку подписаны на группу "Enterprise Integrator".
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес enterprise-integ...@googlegroups.com.
Дополнительные возможности доступны на странице https://groups.google.com/d/optout.


VSozansky

unread,
Mar 15, 2014, 6:29:30 PM3/15/14
to enterprise...@googlegroups.com
Здравствуйте Герман.
Я недавно купил EI, так, что платный функционал имеется.
Можно ли продемонстрировать код такой обработки.
Интересует перебор объектов конфигурации.
Получение текста содержимого модуля.
Сохранение измененного модуля в базу.
Запись признаков модификации в базу.

Хочу увидеть простой пример. Спасибо.

Герман Кудяков

unread,
Mar 16, 2014, 10:02:21 AM3/16/14
to enterprise...@googlegroups.com
Открываете форму объектов конфигурации, в контекстном меню дерева выбираете обработать в Конструкторе
Встроенное изображение 1

В таблицу результатов конструктора будет передано текущее дерево. перейдите на закладку Обработка результата и добавите произвольный алгоритм на любую колонку

Встроенное изображение 2

шаблон текста произвольного алгоритма 

Изменяли = Ложь;
//Получение
FileName = ТекущиеДанные.FileName;
ИмяДинЗаписи = зПолучитьИмяДинамическойЗаписи(FileName);
Если Не ПустаяСтрока(ИмяДинЗаписи) Тогда
FileName = ИмяДинЗаписи;
КонецЕсли;
_СтуркутраЗаписи = вПолучитьСтруктуруЗаписи(FileName,"config");
Для Каждого элСпискаЗнач ИЗ _СтуркутраЗаписи.Содержание Цикл
Если ТипЗнч(элСпискаЗнач.Значение)=Тип("ТекстовыйДокумент")Тогда
Если элСпискаЗнач.Представление = "text" Тогда
Модуль_ = элСпискаЗнач.Значение.ПолучитьТекст();
Если Истина Тогда
Модуль_ = "// добавляем Комментарий в модуль объекта или менеджера"+Символы.ПС+Модуль_;
элСпискаЗнач.Значение.УстановитьТекст(Модуль_);
Изменяли = Истина;
КонецЕсли;
ИначеЕсли элСпискаЗнач.Представление = "module" Тогда
Модуль_Формы = элСпискаЗнач.Значение.ПолучитьТекст();
Если Истина Тогда
Модуль_Формы = "// добавляем Комментарий в модуль формы"+Символы.ПС+Модуль_Формы;
элСпискаЗнач.Значение.УстановитьТекст(Модуль_Формы);
Изменяли = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Если Изменяли Тогда
//сохраняем 
вСохранитьСтруктуруЗаписи(_СтуркутраЗаписи,"configsave");
КонецЕсли;

отметьте флажками нужные модули (можно использовать иерархию флажков), или задайте условие выполнения обработки  и нажмите кнопку выполнить
Результат выполнения вы сможете увидеть в конфигураторе (конфигуратор придется перезапустить если изменяемые модули в нем вы уже открывали) или в форме объектов конфигурации предварительно обновив таблицу

Встроенное изображение 3

Для вступления изменений в силу конфигурацию необходимо обновить. 

VSozansky

unread,
Mar 17, 2014, 7:24:53 AM3/17/14
to enterprise...@googlegroups.com
Спасибо за быстрый ответ. 
Все получилось.

Но проявилось ограничение.
Пишу в произвольном модуле вызов процедуры из общего модуля и вуаля - ошибка компиляции.

Хочу написать вызов функции омСервис.ИсправитьКодМодуля(....)

Для Каждого элСпискаЗнач ИЗ _СтруктураЗаписи.Содержание Цикл
    Если омСервис.ИсправитьКодМодуля(элСпискаЗнач.Представление,элСпискаЗнач.Значение) Тогда
        Изменяли = Истина;
    КонецЕсли;
КонецЦикла;
Если Изменяли Тогда
вСохранитьСтруктуруЗаписи(_СтруктураЗаписи,"configsave");
КонецЕсли;

Уважаемый Герман, есть огромная просьба указать источник(ссылку) где можно ознакомится с ограничениями EI такого рода.

Герман Кудяков

unread,
Mar 17, 2014, 7:44:34 AM3/17/14
to enterprise...@googlegroups.com
Никаких ограничений нет, проверьте что функция Экспортная 

VSozansky

unread,
Mar 17, 2014, 7:46:36 AM3/17/14
to enterprise...@googlegroups.com
Поторопился с сообщением.
Оказывается в отладке был в одной конфигурации а EI тестировал в другой, не было тех процедур, которые я вызывал.
Извиняюсь за свою вспыльчивость.

Вызов вида
    Если омСервис.ИсправитьКодМодуля(элСпискаЗнач.Представление,элСпискаЗнач.Значение) Тогда
       
Изменяли = Истина;
   
КонецЕсли;
работает. 
Спасибо.

VSozansky

unread,
Mar 17, 2014, 7:53:44 AM3/17/14
to enterprise...@googlegroups.com
конструкция вида

ВнешниеОбработки.Создать("D:\ТЕСТ\ТЕСТ_01.epf").ТЕСТ("ТЕСТ");

где ТЕСТ - экспортная процедура

вызывает ошибку
Ошибка при вызове метода контекста (ПолучитьЗначениеПеременной)
Не удалось выполнить выражение на встроенном языке
Не удалось выполнить/вычислить выражение на встроенном языке
Не удалось выполнить обработку

Герман Кудяков

unread,
Mar 17, 2014, 8:01:15 AM3/17/14
to enterprise...@googlegroups.com
Включите Отладку, там ситуация должна прояснится


VSozansky

unread,
Mar 17, 2014, 8:12:42 AM3/17/14
to enterprise...@googlegroups.com
Снова поторопился.
Действительно нет ограничений и на вызов внешних обработок.

VSozansky

unread,
Mar 17, 2014, 8:16:06 AM3/17/14
to enterprise...@googlegroups.com
Ошибка возникала в ситуации когда "ТекущиеДанные.Имя" было пустое.
Обернул исполнение скрипта условием  и все заработало без ошибок.

Если Не ПустаяСтрока(ТекущиеДанные.Имя) Тогда
 
... код ....

КонецЕсли;


Reply all
Reply to author
Forward
0 new messages