Снегопат

Обсуждение Снегопата
Текущее время: 22 ноя 2024, 23:48

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 10:01 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Да, совершенно верно.
Пример есть в скрипте selectColumns.js
Там "на лету" вытаскивается поток формы, в модуле которой находимся, и из него выдергиваются названия всех колонок всех табличных полей.
Вот основной кусок:
Код:
    // Получим само свойство "Форма". Это "внешнее" свойство, т.е. оно храниться отдельно от
    // самого объекта метаданных.
    // При получении можно указывать гуид свойства, или его имя, или порядковый номер
    var extProp = wnd.mdObj.getExtProp(wnd.mdProp.id)
    // Сохраним текущее состояние свойства "Форма" в файл. Так как файл в saveToFile не передан, то
    // сохранение произойдет в псевдо-файл в памяти.
    var file = extProp.saveToFile()
    // Для обычных форм формат файла формы является "файлом файлов", storage. Поэтому будем
    // рассматривать его как storage. Для управляемых форм - это не так, там обычный текст utf-8
    try{
        // создадим хранилище на базе файла. Для управляемых форм тут вывалится в catch
        var stg = v8Files.attachStorage(file)
        // Получим из хранилища содержимое под-файла form
        var text = stg.open("form", fomIn).getString(dsUtf8)
        //Message(text)
        // Простым регэкспом выдернем встречающиеся колонки
        var re = /\{6,3,0,\d\},\d,0,0,4,0,"(.+)"/g

ну там дальше просто список строится.

Можно у макетов свойство "Макет" выдергивать, например в СКД - получить xml-ину схемы - там текст utf-8 с 28 байта файла.
т.е.
file.seek(28, fsBegin)
xml = file.getText(dsUtf8)

ну и всякое тому подобное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 10:13 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
Но тут ты открываешь конкретную форму и дальше её "распаковываешь".
Я же хотел увидеть все изменения, которые были сделаны в конфигурации после последнего сохранения (т.е. которые еще не сохранились) без перебора всего дерева метаданных и их свойств.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 10:16 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
перебирать все равно придется. Может свойство modified объекта метаданных поможет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 10:25 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
Да, должно помочь. Спасибо.
Только оно вот так называется: isModified

Тогда для версионирования в др. системах будет достаточным примерно такая схема:
1. Перед сохранением конфы пробегаемся по всем объектам метаданных в поисках установленного "isModified"
2. Для всех найденных объектов делаем выгрузку в файл, который находится в каталоге под контролем системы версионирования.

А нет случайна никакого метода, который сразу вернет весь список измененных объектов (вдруг это где-то в памяти уже хранится)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 10:41 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
JohnyDeath писал(а):
1. Перед сохранением конфы пробегаемся по всем объектам метаданных в поисках установленного "isModified"

Как вариант скриптом хранить отедельно измененные объекты, вот только есть ли возможность отловить изменения, кроме как переодически пробегать по дереву и проверять isModified?
JohnyDeath писал(а):
2. Для всех найденных объектов делаем выгрузку в файл, который находится в каталоге под контролем системы версионирования.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 10:58 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
А почему не человеческое представление дерева метаданных? Ведь это дерево ты сам строишь и обозвать его ветки можешь как хочешь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 11:24 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
Протупил, дерево то сформируем и модули, а допустим формы? (реквизиты и их свойства, я так понимаю можно выгрузить).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 11:54 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
Как я понял, выгрузить в файл можно только объект целиком или внешнее свойство (не считая того, что тексты модулей можно получить отдельно).
Далее, как показывал Саша файлик объекта можно разложить так, как тебе угодно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 16 мар 2012, 13:05 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
А isModified то не работает, валит платформу :(
Буду разбираться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 19 мар 2012, 16:09 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Разобрался. Фигня это, а не isModified, так что из объектов метаданных свойство isModified будут удалено. В V8MDContainer - оставлю.
Зато будут добавлены события по любым изменениям метаданных, их открытию/закрытию и т.п.
Также можно будет перебрать все открытые в данный момент контейнеры метаданных - внешние отчеты/обработки, cf файлы и т.п.
До завтра.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB