Программный доступ к хранилищу конфигурации #603718


#0 by Лефмихалыч
Коллеги, кто-нибудь пробовал как-то исхитриться и программно получить список захваченных объектов из хранилища? Платформа имеет какую-то культяпку для автоматизации работы с хранилищем в виде ключей запуска конфигуратора, но культяпка не позволяет получить хотя бы отчет по захватам. Хотя, может я мануал поперек читал и кто-то знает какие-то тайные ключи? Необходимость обусловлена тем, что у меня два хранилища от на самом деле одной конфигурации, которые я руками время от времени сращиваю. В идеале хочу автоматически сращивать не захваченные объекты между ними по определенному правилу. Но существенным подспорьем будет даже и просто возможность сравнить захваты по объектам.
#1 by Maxus43
имхо нет, тока если парсить файлы в каталоге с 1ЦД, захваты хранилища наверняка там, как и блокировки в файловом варианте
#2 by Maxus43
хотя не уверен... инфа о захватах сохранится и при удалении файлов наверно. надо пробовать)
#3 by Лефмихалыч
да, забыл сказать - я покрутил в руках поделие 1CD_Tool для этой цели и то ли руки у меня не туда вставлены, то ли не для того поделие предназначено, но я не нашел нич его по поводу сабжа
#4 by Maxus43
имхо файлы о захватах отдельно лежат, не в 1ЦД. как инфа о блокировках в файловом варианте
#5 by Лефмихалыч
Экспериментально удалось только подтвердить, что вся эта бодяга живет в файле 1cv8ddb.1CD в каталоге хренилища. Если из каталога хранилища поудалять всё к чертям, кроме 1cv8ddb.1CD, то при повторном коннекте захваты остаются. А вот как выцарапать из этого файла захваты - ума не приложу...
#6 by Maxus43
на взгляд там ничо в норм виде не лежит? 1CD_Tool этот файл не понимает?
#7 by Лефмихалыч
Там один этот файл и больше и чего. 1CD_Tool этот файл, но я не нашел там ни чего похожего на блокировки. Искал долго, наверное 20 минут аж.
#8 by Лефмихалыч
Чего бы я на мисте не спросил, ответа почти ни когда нет
#9 by Maxus43
это миста а не фирма 1с, ты думаеш мы знаем структуру хранения в файлах 1с? я хотя бы предположил где оно лежит, и вроде правильно. парсить файл за тебя никто не будет
#10 by pumbaEO
Так и не понял, какой профит получишь от этого [В идеале хочу автоматически сращивать не захваченные объекты между ними по определенному правилу] каким образом, если не секрет будешь автоматом сращивать?
#11 by Лефмихалыч
я ветку создал для того, чтобы узнать два вопроса: 1. Знает ли кто-то готовое решение 2. Не упустил ли я каких-то очевидных фактов парсить за меня ни чего не надо. Да и, где оно лежит, я вроде и сам догадался не знаю еще - это второй вопрос :)
#12 by pumbaEO
Ну если бы я себе такую задачу ставил, я бы тогда брал снегопат и парсил дерево метаданных на предмет захвата доступности для записи, те что доступны, значит захвачены... Но второй вопрос будет посложнее и для его решения я бы советовал использовать версионный контроль другой с 2-мя ветками production и dev ... В комментариях при commit писать объекты изменненые, ну а для просмотра, что же изменилось можно придумать варианты.
#13 by Лефмихалыч
ты прям меня заинтриговал. А каким образом использовать этот версионный контроль с ветками?
#14 by Лефмихалыч
+ в принципе именно этого я и добиваюсь двумЯми хранилищЯми...
#15 by pumbaEO
Пока конечно-же только под версионный контроль класть cf ... Пробовал делать выгрузку модулей, но все равно непонятно, что в формах изменилось, а что в ролях или реквизитах. Сейчас использую bzr + для снегопата
#16 by Лефмихалыч
у нас 25+ разработчиков, класть сам cf под версионный контроль просто не получится. С обработками/отчетами-то понятно, под это дело сейчас svn затачиваем
#17 by pumbaEO
25 c х[...]м разработчиков... Как тогда использовать хранилище, я не представляю. Тормозит хранилище?
#18 by Лефмихалыч
а будет еще больше. Хранилище само по себе не тормозит. Зело мешает жить отсутствие ветвлений. Подошли к осознанию того, что без второго хранилища жизни нет. Сейчас разделили release и trunk вот так врукопашную, создав два хранилища. Сейчас размышляем, как облегчить жизнь с двумя хранилищами. Для начала надо обеспечить синхронность не захваченных объектов.
#19 by pumbaEO
со снегопатом имхо это решаемо, в принципе небольшой скриптик, который пройдется по метаданным, выдаст их статус и запишет куда либо не проблема. Хм, в теории в release только мержи должны попадать и там красивая незаляпаная (всякими высказываниями разработчиков) история, типа "[+]Добвленна фигня раз [*] Исправленна ошибка 2 [-] Все будет хорошо." И это можно как бы автоматизировать, выгрузить из trunk версию и загрузить в release... В принципе ради ветвления я начал смотреть как бы прикрутить dvcs к 1С... Жду 8.2.16, если кардинально не поменяется, что либо в выгрузке/загрузке файлов конфигураций, надо будет все таки в v8reader добавлять экспорт дерева конфигурации в файловую систему.
#20 by Лефмихалыч
Фткание красными глазами в tool_1cd дало результаты - я понял, где там захваты хранятся - они хранятся в таблице OBJECTS, как ни странно. Осталась одна проблема - как узнать по objid, что это за объект? Есть тут спецы по внутренним идентификаторам метаданных? Попробовал ЗначениеВСтрокуВнутр от пустой ссылки в режиме предприятия, но там какой-то другой гуид.
#21 by pumbaEO
там в макетах вроде как есть известные на текущий момент внутренние идентификаторы.
#22 by Лефмихалыч
Всё просто. Ну, как то есть просто?.. Не просто на самом деле ни фига, но решаемо. Захваты живут в таблице OBJECTS, имена и классы объектов хранятся в таблице HISTORY. Имея OBJECTS.Objid, можно найти его в HISTORY. Оттуда серией переходов по HISTORY.Parentid можно выйти на один из ГУИДов из макета вот этой обработки и из этого понять, что это за объект. Геморройно, но, учитывая, что имя объекта может поменяться, другого способа, видимо, нет.
#23 by Лефмихалыч
, а снегопат чего может? Он может объединить конфу с файлом? ЗЫ Понимаю, что звучит дико, но мало ли что и вдруг...
#24 by pumbaEO
Объединить, т.е. выбрать именно объекты для объединения?
#25 by Лефмихалыч
ну, даже предположим, что имена объектов заранее известны. Я к чему клоню - подключенную к хранилищу конфигурацию нельзя обновить загрузкой cf-ника. Можно обновить только сравнением/объединением. Вот я и подумал - может ли снегопат сделать объединение без сравнения. Чтобы я какое-нить регламентное задание или еще как время от времени запускал для синхронизации не захваченных объектов. Дюже руками работать не хочется в этом плане, а хочется наоборот - автоматизацяйца...
#26 by pumbaEO
В принципе сейчас через скрипты можно послать команду "Сравнить, объединить с конфигурацией из файла!" Потом перехватить событие выбора пути к cf, передать правильный путь к cf файлу. В теории, когда появиться диалог сравнения через send key можно послать Ctrl+Enter, единственное не знаю какие там диалоги появляются для заблокированных объектов.
#27 by Лефмихалыч
ни каких - у всего, что не захвачено, галки не проставятся. Ноя понял из твоего ответа, что сейчас вариантов нет, а когда появятся, то это будет адский велосипед :) Ладноть, будем довольствоваться отчетами.
#28 by pumbaEO
почему, велосипед? Если не захвачено и галки не проставятся, то часа 2 на скрипт. Тем более примеры работы есть: для перехвата выбора файла Clipboard.js, для диалога сравнения traymessage.js.
#29 by pumbaEO
Пример traymessage.js после окончания сравнения выводит сообщение пользователю, тебе надо будет послать send key и готово.
#30 by MMF
у Softpoint-а есть такая разработка, обратись к ним
#31 by Лефмихалыч
главным образом потому, что все эти круть-верть на сервере не поедут (ну, или почти не поедут). Так что это по сути то же самое, что руками галки проставить по списку, только дороже - т.к. снегопат денег стоит (что само по себе, конечно, правильно).
#32 by Лефмихалыч
а название не подскажешь? Чего-то не могу ни чего найти
#33 by MMF
внутренняя разработка для своих 1С-ников. Просто намыль свою задачу, может и срастетесь
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С