+ один из последних вариантов того модуля
Функция ЧГ0(ЗначениеЧисло)
Возврат Формат(ЗначениеЧисло,"ЧГ=0");
КонецФункции
Функция ЗагрузитьМетаданные(КаталогИБ, ИмяПользователяV7, ПарольПользователяV7, ИдентификаторХранилищаМетаданных) Экспорт
МД = Новый Структура;
Состояние("Подключение к " + КаталогИБ);
V7 = Новый COMОбъект("V77.Application");
Если V7.Initialize(V7.RMTrade, "/d"""+КаталогИБ+""" /n"+ИмяПользователяV7+" /p"+ПарольПользователяV7, "NO_SPASH_SHOW") = 0 Тогда
Сообщить("Нет доступа к информационной базе.");
Возврат Ложь;
КонецЕсли;
MDW = V7.CreateObject("MetaDataWork");
MD = V7.Метаданные;
Состояние("Загрузка справочников..");
Ст1 = Новый Структура;
МД.Вставить("Справочник", Ст1);
Для Номер1 = 1 По MD.Справочник() Цикл
МДСправочник = MD.Справочник(Номер1);
Ст2 = Новый Структура;
Ст1.Вставить(МДСправочник.Идентификатор, Ст2);
Ст2.Вставить("ИД", ЧГ0(MDW.ИДОбъекта(МДСправочник)));
Ст2.Вставить("ИД36", Прав(V7.EvalExpr("_idtostr("+ЧГ0(MDW.ИДОбъекта(МДСправочник))+")"),4));
Для Номер2 = 1 По МДСправочник.Реквизит() Цикл
МДРеквизит = МДСправочник.Реквизит(Номер2);
Ст2.Вставить(МДРеквизит.Идентификатор, ЧГ0(MDW.ИДОбъекта(МДРеквизит)));
КонецЦикла;
КонецЦикла;
Состояние("Загрузка перечислений..");
Ст1 = Новый Структура;
МД.Вставить("Перечисление", Ст1);
Для Номер1 = 1 По MD.Перечисление() Цикл
МДПеречисление = MD.Перечисление(Номер1);
Ст2 = Новый Структура;
Ст1.Вставить(МДПеречисление.Идентификатор, Ст2);
Ст2.Вставить("ИД", ЧГ0(MDW.ИДОбъекта(МДПеречисление)));
Для Номер2 = 1 По МДПеречисление.Значение() Цикл
МДЗначение = МДПеречисление.Значение(Номер2);
Ст2.Вставить(МДЗначение.Идентификатор, V7.EvalExpr("_idtostr("+ЧГ0(MDW.ИДОбъекта(МДЗначение))+")")+" ");
КонецЦикла;
КонецЦикла;
Состояние("Загрузка граф отбора..");
Ст1 = Новый Структура;
МД.Вставить("ГрафаОтбора", Ст1);
Для Номер1 = 1 По MD.ГрафаОтбора() Цикл
МДГрафаОтбора = MD.ГрафаОтбора(Номер1);
Ст2 = Новый Структура;
Ст1.Вставить(МДГрафаОтбора.Идентификатор, Ст2);
Ст2.Вставить("ИД", ЧГ0(MDW.ИДОбъекта(МДГрафаОтбора)));
КонецЦикла;
Состояние("Загрузка документов..");
Ст1 = Новый Структура;
МД.Вставить("Документ", Ст1);
Для Номер1 = 1 По MD.Документ() Цикл
МДДокумент = MD.Документ(Номер1);
Ст2 = Новый Структура;
Ст1.Вставить(МДДокумент.Идентификатор, Ст2);
Ст2.Вставить("ИД", ЧГ0(MDW.ИДОбъекта(МДДокумент)));
Для Номер2 = 1 По МДДокумент.РеквизитШапки() Цикл
МДРеквизит = МДДокумент.РеквизитШапки(Номер2);
Ст2.Вставить(МДРеквизит.Идентификатор, ЧГ0(MDW.ИДОбъекта(МДРеквизит)));
КонецЦикла;
Для Номер2 = 1 По МДДокумент.РеквизитТабличнойЧасти() Цикл
МДРеквизит = МДДокумент.РеквизитТабличнойЧасти(Номер2);
Ст2.Вставить(МДРеквизит.Идентификатор, ЧГ0(MDW.ИДОбъекта(МДРеквизит)));
КонецЦикла;
КонецЦикла;
Состояние("Загрузка регистров..");
Ст1 = Новый Структура;
МД.Вставить("Регистр", Ст1);
Для Номер1 = 1 По MD.Регистр() Цикл
МДРегистр = MD.Регистр(Номер1);
Ст2 = Новый Структура;
Ст1.Вставить(МДРегистр.Идентификатор, Ст2);
Ст2.Вставить("ИД", ЧГ0(MDW.ИДОбъекта(МДРегистр)));
Для Номер2 = 1 По МДРегистр.Измерение() Цикл
МДИзмерение = МДРегистр.Измерение(Номер2);
Ст2.Вставить(МДИзмерение.Идентификатор, ЧГ0(MDW.ИДОбъекта(МДИзмерение)))
КонецЦикла;
Для Номер2 = 1 По МДРегистр.Ресурс() Цикл
МДРесурс = МДРегистр.Ресурс(Номер2);
Ст2.Вставить(МДРесурс.Идентификатор, ЧГ0(MDW.ИДОбъекта(МДРесурс)))
КонецЦикла;
Для Номер2 = 1 По МДРегистр.Реквизит() Цикл
МДРеквизит = МДРегистр.Реквизит(Номер2);
Ст2.Вставить(МДРеквизит.Идентификатор, ЧГ0(MDW.ИДОбъекта(МДРеквизит)))
КонецЦикла;
КонецЦикла;
СсылкаДопИнфо = Справочники.СохраненныеНастройки.НайтиПоРеквизиту("НастраиваемыйОбъект", ИдентификаторХранилищаМетаданных);
Если СсылкаДопИнфо.Пустая() Тогда
ОбъектДопИнфо = Справочники.СохраненныеНастройки.СоздатьЭлемент();
ОбъектДопИнфо.НастраиваемыйОбъект = ИдентификаторХранилищаМетаданных;
ОбъектДопИнфо.Наименование = ОбъектДопИнфо.НастраиваемыйОбъект;
ОбъектДопИнфо.ТипНастройки = Перечисления.ТипыНастроек.ПроизвольныеНастройки;
Иначе
ОбъектДопИнфо = СсылкаДопИнфо.ПолучитьОбъект();
КонецЕсли;
ОбъектДопИнфо.ХранилищеНастроек = Новый ХранилищеЗначения(МД);
ОбъектДопИнфо.Записать();
Возврат Истина;
КонецФункции
Функция ПолучитьСтрокой(ЗначениеСтроки) Экспорт
Если ПустаяСтрока(ЗначениеСтроки) Тогда
Возврат "";
ИначеЕсли ЗначениеСтроки = Null Тогда
Возврат "";
Иначе
Возврат СокрП(ЗначениеСтроки);
КонецЕсли;
КонецФункции
Функция ПолучитьДатой(ЗначениеДаты) Экспорт
Если ЗначениеДаты = '17530101000000' Тогда
Возврат '00010101000000';
ИначеЕсли ЗначениеДаты = Null Тогда
Возврат '00010101000000';
Иначе
Возврат ЗначениеДаты;
КонецЕсли;
КонецФункции
Функция РасшифроватьДатуВремя(ДатаВремяИД) Экспорт
ДатаВремя = Дата(Число(Лев(ДатаВремяИД, 4)), Число(Сред(ДатаВремяИД, 5, 2)), Число(Сред(ДатаВремяИД, 7, 2)));
Вес = 1;
Секунд=0;
Для Ном = 0 по 5 Цикл
Код = КодСимвола(ДатаВремяИД, 14 - Ном);
Если Код < 65 Тогда
Код = Код - 48;
Иначе
Код = Код - 55;
КонецЕсли;
Секунд = Секунд + Код * Вес;
Вес = Вес * 36;
КонецЦикла;
ДатаВремя = ДатаВремя + Секунд / 10000;
Возврат ДатаВремя;
КонецФункции