helpf.pro
Регистрация

v7: ГУИД Ссылки

KorolyovSS
14.05.2015 15:42Прочитано: 2466

Добрый вечер. Имеется задача синхронизации данных таблицы некого приложения с данными справочника 1С7.7. Уникальность записей по коду обеспечить не могу, потому-что он не уникален. Есть мысль каким-то образом получить ГУИД ссылки справочника и использовать его, но не могу найти как определить его в 1С7. Например В 1С8.2 есть Ссылка.УникальныйИдентификатор(). Что нибудь вроде этого в 7-ке есть?

Заранее благодарен.

Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
15.05.2015 11:53Ответ № 1

Посмотри: Битая ссылка, Объект не найден, Уникальный Идентификатор, GUID про 1С 7.7 в самом низу

E_Migachev
15.05.2015 11:56Ответ № 2

+ можно обработать справочник в 7-ке , добавив реквизит guid и присвоив каждому элементу этот гуид и потом его использовать:

Как получить GUID без v7plus.dll в Предприятии 7.7

Часто в терминальных сессиях у пользователю Windows не хватает прав на регистрацию v7plus.dll. Соответственно нельзя воспользоваться, например методом СоздатьGUID() класса V7SysInfo.

Поэтому предлагаю в таких случаях использовать альтернативу в виде функции:

Код 1C v 7.x
 Функция СоздатьGUID() Экспорт
    Перем Результат, ScrptCtrl;

    Попытка

        ScrptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language = "VBScript";
        ScrptCtrl.AddCode(
                            "Function CreateGUID()
                            |    Set TypeLib = CreateObject(""Scriptlet.TypeLib"")
                            |    CreateGUID = TypeLib.Guid
                            |End Function
                            |"
                        );
        
        Результат = ScrptCtrl.Modules("Global").CodeObject.CreateGUID();
        Результат = СтрЗаменить(СтрЗаменить(Результат, "{", ""), "}", "");
    
    Исключение
        
    КонецПопытки;
        
    Возврат Результат;
КонецФункции

Данную функцию можно вставить в любой модуль. Вставив в глобальный модуль данную функцию можно вызывать везде, где Вам может понадобиться GUID.

E_Migachev
15.05.2015 11:57Ответ № 3

еще элегантное решение

Код 1C v 7.x
 Процедура Сформировать()
    TypeLib = CreateObject("Scriptlet.TypeLib");
    CreateGUID = TypeLib.Guid;
    Message(CreateGUID);
КонецПроцедуры
KorolyovSS
15.05.2015 13:13Ответ № 4

Все это конечно хорошо. Я возможно неправильно сформулировал вопрос. Интересует Уникальный Идентификатор Ссылки справочника. Точнее даже не ссылки, а объекта справочника. Аналог для 8-ки - СправочникСсылка.Ссылка.УникальныйИдентификатор(). 

Решил использовать ЗначениеВСТрокуВнутр(ОбъектСправочника). Вроде выдает нечто уникальное и не повторимое не зависимо от содержимого полей объекта, удаления данных из справочника, упаковки базы 1С7.

Действительно ли он будет уникальным до конца срока жизни объекта справочника не знаю. Если это не так, подскажите.

all4cf
16.05.2015 20:51Ответ № 5

Как в 8-ке получить уникальный идентификатор - такого в 7-ке нет, самый уникальный ЗначениеВСТрокуВнутр()

KorolyovSS
18.05.2015 10:23Ответ № 6
Вопрос закрыт!
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.