Снегопат

Обсуждение Снегопата
Текущее время: 14 май 2024, 18:16

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




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

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
orefkov писал(а):
kuntashov писал(а):
Спасибо :)
Тогда просьба: можно ли при выпуске следующих релизов сопровождать релиз дополнительной информацией по добавленным возможностям.

Хотя так-то это все было сделано еще в 1.1.3.1


Да, это я видел, помню, но в том то и дело, что из описания, на которое ты ссылаешься, не понятно, что есть возможность

Цитата:
Но всякие модули/формы уже можно открывать.
Сам объект можно активировать в дереве метаданных, а также открыть на редактирование.


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

Полагаю вместо формального описания в духе "добавлен объект IV8MetaData" при выпуске релиза полезнее для пользователей проекта информация в виде "добавлена возможность работы с метаданными". А уже какие свойства и методы использовать - заглянем в объектную модель.

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


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

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
Круто! Значит скоро будет бытрая открывашка любого модуля через svcsvc? ;)


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

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
JohnyDeath писал(а):
Круто! Значит скоро будет бытрая открывашка любого модуля через svcsvc? ;)

Здесь обсуждаем.


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

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
По поводу добавлений в объектной модели версии 1.1.5.1
В первую очередь, это функционал по работе со свойствами объектов метаданных, содержащими модуль.
Это такие методы объекта IV8MDObject, как
Код:
isPropModule(индексСвойства)
getModuleText(индексСвойства)
setModuleText(индексСвойства, текст)
openModule(индексСвойства)

Каждый объект метаданных содержит свойства - именованные атрибуты объекта, содержащие какое-либо значение.
Ткните в любой объект метаданных в дереве правой кнопкой мыши, выберите "Свойства" - и вы их увидите в отдельном окне.
Обратите внимание, что различные модули и непосредственно форма - это тоже свойства объекта метаданных.
В самом деле, в окне свойств они представлены текстом - названием модуля и гиперссылкой "Открыть".
Либо там есть свойство "Форма", при нажатии на кнопку "Открыть" которого открывается сама форма.
Представленные выше методы позволяют узнать, содержит ли какое-либо свойство объекта метаданных модуль, и
если да, то взаимодействовать с ним.
Для указания свойства можно использовать - строку - имя свойства, либо число - порядковый номер свойства, либо строку,
содержащую гуид - уникальный идентификатор свойства. Сами эти методы базируются на функциях внутреннего движка 1С,
которыми она сама пользуется, например чтобы перебрать все модули при синтакс-проверке конфигурации.

isPropModule - возвращает true, если свойство содержит модуль.
getModuleText - возвращает текст модуля. При поставке без исходного кода текста не будет. Окно редактора модуля не открывается.
setModuleText - позволяет установить текст модуля. Окно редактора модуля не открывается.
openModule - открывает редактор модуля и возвращает объект ITextWindow для взаимодействия с ним.
В отличии от открытия методом editProperty - всегда активизирует именно модуль.
Например, если свойство Форма, то editProperty("Форма") откроет вкладку на закладке формы, а
openModule("Форма") - на закладке модуля.

Короткий пример - открытие модуля управляемого приложения:
Код:
metadata.current.rootObject.openModule("МодульУправляемогоПриложения")


Пример подлиннее из mdNavigator.js - создает для каждого свойства-модуля Конфигурации отдельный макрос для открытия:
Код:
    var mdObj = metadata.current.rootObject
    var mdc = mdObj.mdclass
    for(var i = 0, c = mdc.propertiesCount; i < c; i++)
    {
        var mdProp = mdc.propertyAt(i)
        if(mdObj.isPropModule(mdProp.id))
        {
            var descr = mdProp.description.split('\n')[0].toLowerCase()
            SelfScript.self["macrosОткрыть " + descr] = new Function('metadata.current.rootObject.openModule("' + mdProp.id + '")')
        }
    }

Здесь берется корневой объект текущей конфигурации, из его класса узнаем количество свойств, и перебираем их.
Если свойство - модуль, то получаем описание названия свойства и формируем макрос для его открытия.


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

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Саш, а что такое "внешние данные" и "внешнее свойство" из описания 1.1.5.1 ?
Также поясни по новым объектам, пожалуйста!
IV8DataFile - работа с различными внутренними данными 1С
IV8StorageFile - работа с составным файлами 1С.
Объект v8files - для работы с файлами.
IV8ExtProp - работа с "внешними" свойствами объектов метаданных.


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

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Внешние свойства - это те свойства объектов метаданных, которые хранятся не в самом объекте метаданных, а в виде отдельных "файлов".
Например, модули, форма, макет, права.
Небольшой пример есть в свежем скрипте selectColumn.js
IV8DataFile - работа с потоком данных. Его можно получить, например как v8files.open(урл, режимОткрытия)
(Для открытия файлов на диске урл должен быть в виде "file://путь к файлу")
Можно создать файл в памяти, он открывается сразу в режиме чтение/запись.
Если в методы saveToFile не передавать заранее открытый файл, будет создан файл в памяти и вернет ссылку на него.
Далее в файле можно позиционироваться методом seek, читать/писать байты или строки.
Часть файлов представляет собой storage, это замена compaund файлам семерки. (Например cf файл - storage)
Для того чтобы работать с файлом как со storage, надо к открытому файлу приатачить storage, v8files.attachStorage.
После этого из storage можно получить список входящих в него файлов, открывать эти файлы, создавать новые, удалять, переименовывать.
В свою очередь, эти файлы также могут быть storage, и содержать еще файлы, т.е. аналог каталогов получается.

Смотрите скрипт пример, будут конкретные вопросы появляться - отвечу.


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

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Кто-нибудь уже занимался разборкой/сборкой внешних файлов (отчетов/обработок) для Снегопата?
Хочется программной генерации обработок и отчетов.
Как и какими средствами это можно выполнить?
На базе v8unpack или последних добавлений по файлам и storages в Снегопате?


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

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
Вообще, как я понял уже можно с помощью снегопата разобрать конфу примерно так, как это делал ГКомп для 7.7. Саша написал, что всё это пока в тестовом режиме. Руки так и чешутся покопать в данном направлении (хотя бы посмотреть что там и как хранится), но времени катастрофически не хватает.


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

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Разобрать то можно, но только - все во внутреннем представлении. То есть так же, как v8unpuck.
Только можно "на лету", даже еще не записанные изменения отловить.
А вот насчет собрать - не знаю, не пробовал.


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

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

Можно про это поподробнее?
Т.е. сейчас можно сделать вот так:
Я что-то меняю в конфигурации в разных местах. Вызываю метод скрипта и тут же сразу могу получить только измененные данные без перебора всего дерева метаданных и сравнения каждого объекта с предыдущим состоянием? Я правильно понял? Если да, то можно маленький пример?


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

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