Как найти guid справочника

Содержание:

1.      Что такое GUID в 1С?

2.      Чем отличается GUID от UUID?

3.      Как получить уникальный идентификатор зная UUID в 1С 

1.      Что такое GUID в 1С?

GUID – это объект матричной таблицы в системе базы данных из шестнадцатеричных символов, заключенных в круглые скобки и прописанных через дефис. Он формируется с учетом времени и места, указывающего на расположение этого объекта (справочника, документа). Первая половина этого кода является расчетом времени, вторая – местом, где хранится объект. GUID в 1С создается в момент создания объекта. Подобно массивам объект хранится в определенной таблице, на определенном столбце с определенной строкой. При определенном попадании в эти 100 наносекунд могут формироваться абсолютно идентичные объекты. Это настолько мало вероятно, как проверить на уникальность все значения за 10 млрд лет.

В Базе данных для каждого объекта предназначен свой глобальный уникальный идентификатор — GUID (Globally Unique Identifier). Он представляет из себя ссылку из 32 символов, разделенных дефисами, которая состоит из 16 октетов. В первой части содержится время генерации уникального идентификатора, во второй – счетчик и MAC-адрес. Отсчет времени для генерации кода Guid идет с 15 октября 1582 года с интервалом на 100 наносекунд.

Вот так выглядит GUID БД 1С: 3de72ee8-f8b2-11e4-92f1-0050568b35ac

Его UUID можно получить по ссылке.

e1cib/data/Документ.ПриходныйОрдерНаТовары?ref=92f10050568b35ac11e4f8b23de72ee8

Это зеркальное отражение уникального идентификатора в 1С 8.3.

Совпадений разных объектов одной базы крайне малы, т.к. общее количество сгенерированных ключей составляет (2128 или 3,402 * 10в38).

Этот 128-битный код информации определяется ссылкой на тип метаданных, содержащий информацию об объекте. Генерация Guid происходит не только в пространстве, но и во времени псевдослучайным набором чисел. Непрерывно сформированные GUIDы используются в качестве первичных ключей в базе данных. 

2.      Чем отличается GUID от UUID?

UUID – универсально-уникальный идентификатор по данным всемирной организации стандартизации версии RFC4122. Этот термин используется в спецификациях протокола Windows как синоним GUID в 1С. Он должен быть полностью технически совместим с RFC4122. Из рекомендаций Международного стандарта «Все стандарты UUID, соответствующие этой Рекомендации, должны иметь биты варианта с битом 7 октета 7, установленным в 1 и бит 6 октета 7, установленным в 0». 

3.      Как получить уникальный идентификатор зная UUID в 1С

Итак, как же получить GUID зная UUID в 1С?

В конструкторе запроса необходимо создать запрос:

СправочникСсылка=Справочники.ИмяСправочника.НайтиПоНаименованию(«Наименование»);

GUID=СправочникСсылка.УникальныйИдентификатор()

Для установления соответствия объектов разных БД используется GUID.

Необходимо указать узел обмена и тип объекта (склад, договор, контрагент и т.д.). В «источнике» базы данных нужно указать объект, с которым будет устанавливаться соответствие с объектом из «приемника» БД.

Специалист компании ООО «Кодерлайн» 

Ирина Оргина.

    navaho@email.ru 8-(908)-920-34-77

    1С Доступно1С Доступно

    • Блог
    • Главная

    Блог

    17 января 2018

    Просмотров: 6154

    Когда приходится править Идентификаторы элементов справочника и документа в регистрах сведений Согласования выгрузки и загрузки, нужно быстро посмотреть GUID (точнее внутренне представление), для этого предназначена эта обработка… думаю есть и другие задачи в которых нужен GUID

    • Назад

    • Вперёд

    epf ПолучитьGUID (6.15 kB, количество скачиваний: 1989)
    epf GUID Управляемые Формы (8.62 kB, количество скачиваний: 984)

    высокое-качество

    Пример уникального идентификатора: 4bf85396-cc7a-11ea-9ef0-c86000245adb

       //

       //Узнать уникальный идентификатор

       ГУИД = КонтрагентСсылка.УникальныйИдентификатор();

       //Создаём уникальный идентификатор из строки

       СтрокаGUID = «4bf85396-cc7a-11ea-9ef0-c86000245adb»;

       НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID);

       //Можно не указывать СтрокаGUID. Программа сгенерирует сама

       НовыйGUID = Новый УникальныйИдентификатор();

       //

       //Получить ссылку на на объект, зная его GUID

       СсылкаПП = Документы.ПлатежноеПоручениеВходящее.ПолучитьСсылку(НовыйGUID);

       //Создать документ и присвоить ему ГУИД

       СтрокаGUID = «4bf85396-cc7a-11ea-9ef0-c86000245adb»;

       Док = Документы.ПлатежноеПоручениеВходящее.СоздатьДокумент();

       СсылкаДок = Документы.ПлатежноеПоручениеВходящее.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаGUID));

       Док.УстановитьСсылкуНового(СсылкаДок);    

       //

       //Получить ГУИД из COM-объекта

       V83COMConnector = Новый COMОбъект(«V83.COMConnector»);

       БД = V83COMConnector.Connect(ПараметрыПодключения);  

       СтрокаГУИД = БД.XMLСтрока(Док.Ссылка);

    Вариант применения в заметке «Сделать из элемента справочника группу»

     +6 

       

    Распечатать

    GUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов. Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,402 * 10в38), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала.

    Для получения уникального идентификатора объекта, используйте код вида:

    Код 1C v 8.х

     ГУИДССЫЛКИ	= СсылкаНаОбъект.УникальныйИдентификатор();
    // или
    НоменклатураСсылка = Справочники.Номенклатура.НайтиПоКоду("00013");
    Если НЕ НоменклатураСсылка.Пустая() Тогда
    Сообщить("GUID = " + НоменклатураСсылка.УникальныйИдентификатор());
    КонецЕсли;

    Как с помощью запроса получить уникальный идентификатор:

    Код 1C v 8.х

      Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.НаименованиеПолное,
    | Номенклатура.ЕдиницаИзмерения,
    | Номенклатура.СтавкаНДС,
    | Номенклатура.НоменклатурнаяГруппа,
    | Номенклатура.СчетУчетаЗапасов,
    | Номенклатура.СчетУчетаЗатрат,
    | Номенклатура.Ссылка,
    | Номенклатура.ЭтоГруппа
    | ИЗ
    | Справочник.Номенклатура КАК Номенклатура";
    РезультатЗапроса = Запрос.Выполнить();
    СпрОбъект = РезультатЗапроса.Выбрать();
    Пока СпрОбъект.Следующий() Цикл
    СтрокаУИ = Объект.XMLСтрока(СпрОбъект.Ссылка);
    GUID = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(СокрЛП(СтрокаУИ)));
    КонецЦикла;

    В 1С 7.7 можно получить так

    Через v7plus.dll
    Код 1C v 7.x

     Инфо = СоздатьОбъект("AddIn.V7SysInfo");
    ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID();

    Через WScript
    Код 1C v 7.x

     Функция СоздатьGUID()
    TypeLib = CreateObject("Scriptlet.TypeLib");
    NewGUID = TypeLib.Guid();
    TypeLib = "";
    Возврат NewGUID;
    КонецФункции

    //*******************************************
    Процедура Сформировать()
    g=СоздатьGUID();
    Сообщить("Создан GUID: "+g);
    КонецПроцедуры

    при OLE доступе:

    Код 1C v 7.x

     Если Док_Источник.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1 Тогда
    Пока Док_Источник.ПолучитьДокумент() = 1 Цикл
    Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент());
    ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект));

    // Для примера Объект возвращает {"O","0","0","3114","0","0"," 258156CB "},
    // а ПолучитьИД(объект) = 258156CB
    КонецЦикла;

    Еще посмотрите метод:

    ЗначениеВСтрокуВнутр(<?>);
    Синтаксис:
    ЗначениеВСтрокуВнутр(<Объект>)
    Назначение:
    Преобразование значения объекта агрегатного типа в строковое системное представление.
    Возвращает: представление значения объекта в строковом системном виде.
    Параметры:
    <Объект> — значение объекта агрегатного типа данных которое нужно преобразовать.

    В процессе разработки интеграции с 1С часто возникает необходимость написать вычисления на языке 1С или языке запросов 1С, а также отладить их. Для написания таких вычислений удобно использовать готовые обработки 1С, рассмотрим их в этой статье.

    Скачать архив с обработками можно по ссылке: Полезные обработки 1С.zip

    Чтобы запустить обработку:

    1. Запустите «1С Предприятие» в режиме «Обычное приложение». Для этого используйте дополнительный параметр запуска:

    /RunModeOrdinaryApplication

    2. В меню Файл выберите пункт Открыть и в открывшемся окне выберите нужный файл.

    Обработка «Поиск объекта 1С по GUID»

    Обработка позволяет:

    • определить GUID любого объекта 1С (записи справочника, документа и пр.);
    • по заданному GUID найти ссылку на объект 1С (запись справочника документа и пр.).

    Чтобы определить GUID объекта 1С:

    1. Запустите обработку «Поиск ссылки по GUID».

    2. В поле Ссылка нажмите на кнопку T, выберите тип объекта.

    3. Нажмите на кнопку  и выберите объект 1С. Если необходимо выбрать другой объект, очистите значение по кнопке .

    4. Нажмите на кнопку Показать GUID. В результате в поле GUID отобразится уникальный идентификатор объекта 1С.


     

    Чтобы определить ссылку на объект 1С, введите уникальный идентификатор объекта в поле GUID и нажмите на кнопку Найти ссылку. Таким образом в поле Ссылка отобразится найденный объект из базы данных. Кнопка  позволяет открыть карточку текущего объекта.

    Обработка «Консоль запросов»

    Обработка позволяет составить и выполнить запрос на языке запросов 1С. Используется для написания вычислений в событии коннектора «При выгрузке из 1С».

    Рассмотрим, как выполняется обработка на примере запроса по получению юридического адреса контрагента:

    1. Запустите обработку «Консоль запросов».

    2. В основное окне обработки добавьте текст запроса:

    ВЫБРАТЬ
      КИ.Представление КАК Адрес
    ИЗ
      РегистрСведений.КонтактнаяИнформация КАК КИ
    ГДЕ
      КИ.Объект = &Объект
      И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
      И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)

    Запрос можно составить самостоятельно или с помощью конструктора запросов (пункт контекстного меню Конструктор запросов):


    В тексте запроса, как правило, используются параметры. В нашем примере используется параметр &Объект, через который в запрос передается ссылка на запись справочника Контрагенты. Значения параметров задаются в левом нижнем окне обработки.

    3. Чтобы выполнить запрос, нажмите кнопку Выполнить (F7). Результат выполнения запроса отобразится в правом нижнем окне.

    Обработка «Выполнение произвольного кода»

    Обработка позволяет быстро проверить вычисления на языке 1С, не создавая новую обработку в конфигурации 1С.

    Чтобы проверить вычисление:

    1. Запустите обработку «Выполнение произвольного кода».

    2. В окне редактора напишите код вычислений:

    3. Для выполнения кода нажмите на кнопку Выполнить.

    Ниже рассмотрим примеры использования обработки «Выполнение произвольного кода».

    Пример 1

    Необходимо написать вычисления для события коннектора «При выгрузке из 1С» по получению юридического адреса контрагента. Текст события представляет собой xml-текст, в котором задаются вычисляемые реквизиты 1С. Подробнее см. в справке Коннектор к «1С:Предприятие 8» События и фильтры.

    Ранее с помощью обработки «Консоль запросов» мы создали и отладили запрос:

    ВЫБРАТЬ
      КИ.Представление КАК Адрес
    ИЗ
      РегистрСведений.КонтактнаяИнформация КАК КИ
    ГДЕ
      КИ.Объект = &Объект
      И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
      И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)

    Теперь нужно написать вычисления на языке 1С, в которых нужно выполнить этот запрос и вернуть результат в виде строки.


    Для отладки вычислений добавьте определение переменной Источник:

    Источник = Справочники.Контрагенты.НайтиПоКоду("000000007");

    И вывод результата:

    Сообщить(Значение);

    В событие «При выгрузке из 1С» эти строки переносить не нужно, т.к. переменная Источник в событии является предопределенной и будет заполняться автоматически.

    В итоге событие «При выгрузке из 1С» будет выглядеть следующим образом:

    <Свойства>
      <Свойство>
        <Код>60</Код>
        <Наименование>Выч_ЮридическийАдрес</Наименование>
        <Порядок>60</Порядок>
        <Источник/>
        <Приемник Имя="Выч_ЮридическийАдрес" Вид="Реквизит" Тип="Строка"/>
        <ПриВыгрузке>Запрос = Новый Запрос("ВЫБРАТЬ 
                                            |  КИ.Представление КАК Адрес 
                                            |ИЗ 
                                            |  РегистрСведений.КонтактнаяИнформация КАК КИ 
                                            |ГДЕ 
                                            |  КИ.Объект = &amp;Объект 
                                            |  И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) 
                                            |  И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)"); 
                              Запрос.УстановитьПараметр("Объект", Источник); 
                              Выборка = Запрос.Выполнить().Выбрать();  
                                Значение = ?(Выборка.Следующий(), СокрЛП(Выборка.Адрес), "");
        </ПриВыгрузке>
      </Свойство>
    </Свойства>

    Пример 2

    Необходимо на форму 1С добавить кнопку, при нажатии на которую будет запускаться сценарий DIRECTUM. В сценарий требуется передать один параметр. При завершении сценария получить результат его выполнения.

    Для этого выполните отладку вычисления, в котором запускается сценарий DIRECTUM по кнопке из 1С:

    Обработка «Регистрация изменений для обмена»

    Обработка включена в большинство конфигураций 1С. С ее помощью можно просматривать или редактировать записи о регистрации объектов в плане обмена 1С, в том числе:

    • просматривать список метаданных, участвующих в обмене;
    • просматривать список объектов, для которых зарегистрированы изменения;
    • добавлять и снимать регистрацию для объектов, а также использовать запросы для выбора данных;
    • просматривать данные в формате XML.

    Рассмотрим возможности обработки наглядно в 1С:

    1. Запустите обработку «Регистрация изменений для обмена».

    2. В верхнем поле выберите узел обмена, например, DIRECTUM.

    В результате в нижней области отобразятся все объекты, включенные в План обмена. В колонке Авторегистрация – текущее состояние авторегистрации изменений и количество зарегистрированных в данный момент объектов.

    К объектам можно применить действия:

    Обработка «Выгрузка и загрузка данных XML»

    Универсальная обработка позволяет выполнить полную или частичную выгрузку данных информационной базы в xml-файл. Обработку можно использовать для миграции данных из 1С.

    Сценарии использования обработки:

    • Выгрузка записей справочника из одной базы и загрузка в другую. Разработка в базах должна быть идентичной.
    • Выгрузка записей справочника в качестве резервной копии. Если в процессе работы со справочником записи затерлись либо были удалены, то их можно восстановить из xml-файла.
    • Выгрузка данных в xml-файл для последующей миграции этих данных в систему DIRECTUM с помощью заказной разработки.

    Обработка может выгружать записи объектов:

    • Константы;
    • Справочники;
    • Документы;
    • Последовательности;
    • ПланыВидовХарактеристик;
    • ПланыСчетов;
    • ПланыВидовРасчета;
    • РегистрыСведений;
    • РегистрыНакопления;
    • РегистрыБухгалтерии;
    • РегистрыРасчета;
    • БизнесПроцессы;
    • Задачи;
    • ПланыОбмена.


     

    Особенности обработки:

    • Фильтр можно накладывать на любой из реквизитов справочника. Например, настроить фильтрацию по справочнику Внутренние документы по полю ВидДокумента = Договор.
    • Вместе с основным справочником можно выгружать связанные записи других справочников. Например, настроить выгрузку, чтобы вместе с внутренними документами выгружались связанные записи справочника Корреспонденты.

    Обработка «Массовая регистрация изменений для обмена»

    Обработку удобно использовать при тестировании интеграции с 1С.

    Обработка позволяет зарегистрировать в плане обмена нужное количество записей для указанного справочника:

    1. Запустите обработку «Массовая регистрация изменений для обмена».

    2. Выберите необходимый справочник и нажмите на кнопку Выполнить.


     

    Понравилась статья? Поделить с друзьями:
  • Как найти поставщика бисера
  • Ошибка 5011 canon mg2540s как исправить
  • Как найти поставщиков для продажи на вайлдберриз
  • Как составить акт взаимозачета между двумя организациями образец
  • Ark как найти ресурсы