Имя: Пароль:
1C
1С v8
Как узнать номер последней версии хранилища программно
0 Ndochp
 
18.09.14
14:00
День добрый, не подскажете как программно узнать последний номер версии конфы из хранилища 1C.
1 ДенисЧ
 
18.09.14
14:09
а что, 1с уже научилась программно работать с хранилищем?
2 Dmitry1c
 
18.09.14
14:12
через DLL-ку, которая может анализировать код файлов хранилища там где-то выцеплять

напишу за $50 тыс. гривней
3 1Сергей
 
18.09.14
14:13
(1) через sendkey можно сделать очень многое :)
4 Armando
 
18.09.14
14:14
"номер последней версии хранилища"
или
"последний номер версии конфы"

Это какбе разные вещи.
"номер последней версии хранилища" у меня есть пример
5 Armando
 
18.09.14
14:21
Хотя версию конфигурации тоже меожно из хранилища получить из таблицы versions
6 Ndochp
 
22.09.14
11:39
(4) Сорри, что не ответил, сдернули на кипяток, закончившийся только в пятницу вечером.
Нужен именно номер версии хранилища.
(колонка "№" формы "История хранилища")

Версию конфы я как-нибудь получу через "Метаданные.Версия" после того как утяну конфу к себе.
7 vhl
 
22.09.14
11:41
(6) через ключи коммандной строки. Только это в 8.3 появилось вроде.
8 vhl
 
22.09.14
11:43
ConfigurationRepositoryReport
9 Ndochp
 
22.09.14
11:45
(7) Может быть. Я ключи смотрел, для 8.2 - там только можно указать какая версия нужна (и -1 для последней)
(8) И распарсить MXL... Блин, тяжелый батник получается...
10 Ndochp
 
22.09.14
12:42
+(9) Забавно... запрос отчета без параметров группировки для версии 8.2.18.96 дает отчет без номера версии (такое ощущение, что группировка по комменту), а для 8.3.5.1119 - с версией (командная строка отличалась только именем базы, через которую я обращался к хранилищу)
Несмотря на хелп и режим совместимости "не используется"

/ConfigurationRepositoryReport <имя файла> [-NBegin <номер версии>] [-NEnd <номер версии>] [-GroupByObject] [-GroupByComment] — построение отчета по истории хранилища. Если параметры группировки не указаны и режим совместимости указан "Не используется", то отчет формируется с группировкой по версиям. В режимах совместимости "Версия 8.1" и "Версия 8.2.13" отчет формируется с группировкой по объектам. Если конфигурация базы данных отличается от редактируемой по свойству совместимости, при обработке командной строки учитывается значение режима совместимости конфигурации базы данных.
11 Armando
 
22.09.14
23:12
Вот кусок моего скрипта


'Выгрузка таблицы VERSIONS из хранилища
Set objShell = wscript.createobject("wscript.shell")
RetCode = objShell.Run("c:\Scripts\Tools\Tool_1CD.exe c:\1C_Depository_ING\1C_Depository_ING_2014\1cv8ddb.1CD -quit -NotExclusively -ExportToXML e:\DepositoryFiles\1C_Depository_ING_2014 ""VERSIONS""", 1, True)

'номер текущего коммита
Set xmlParser = CreateObject("Msxml2.DOMDocument.6.0") ' обязательно 6.0, проверял на 3.0 - не работает
xmlParser.load "e:\DepositoryFiles\1C_Depository_ING_2014\VERSIONS.xml"
Set colNodes = xmlParser.selectNodes("Table/Records/Record[last()]/VERNUM")
CurrentCommitNumber = colNodes(0).nodeTypedValue



Для работы нужна тулуза Tool_1CD.exe. В переменной CurrentCommitNumber будет номер версии хранилища.
12 Armando
 
22.09.14
23:13
А тебе это зачем надо? Просто интересно
13 Ndochp
 
24.09.14
10:44
(12) Рекомендации 1С по разработке тиражных решений говорят, что должно быть одно центральное хранилище, и по хранилищу на каждое долгоживущее задание по доработке. Обмен между этими хранилищами осуществляется через поставки
(http://its.1c.ru/db/v8std#content:2149184358:1)
В этой всей их катавасии с поставками (приложение 1, 3) мне не нравится одно: так как номер сборки меняется не перед созданием новой поставки, а согласно "5. Нумерация сборок", то возможно существование отличающихся поставок одной и той же версии, что ИМХО черевато.
С другой стороны, если приписать к версии перед самым созданием поставки номер версии хранилища (пятым числом в номере версии или встык с четвертым) то получится четкая система нумерации поставок для техпроектов (каждый номер уникален, все идут по возрастанию).
А так как все эти генерации и обновления штука не быстрая, то охота сделать скрипт, который буде генерить поставки для техпроектов по шедулеру перед началом рабочего дня или по требованию, но все равно одной кнопкой.