GUID – Программные продукты – Статьи

GUID - Программные продукты - Статьи Сертификаты

Что делать, если в меркурии нет нужной площадки

Существует два способа зарегистрировать новую площадку:

  1. Сформировать заявку на создание новой площадки в системе Цербер. После оформления заявки нужно обратится в Территориальное Управление Россельхознадзора для ее подтверждения. Контакты территориальных управлений РСХН.
  2. Зарегистрировать площадку с помощью API Меркурия. Эта функция доступна и в интеграционном модуле Контур.Меркурии и в нашем веб-сервисе.

Что делать, если контрагент просит guid 4 уровня?

С юридической точки зрения, ничто не обязывает производителей молочной продукции работать со справочником 4 уровня. Однако многие торговые сети на практике настаивают на его использовании – как для готовности к будущему, так и для того, чтобы препятствовать появления разных GUID на одну и ту же продукцию.

Если вы договорились с контрагентом на обмен GUID 4 уровня, то в этом случае производителю стоит вести справочник готовой продукции, указывая при этом конкретное наименование товара (без «в ассортименте»). При подготовке к его ведению стоит открыть журнал продукции и проверить, есть ли у записей GUID.

После перехода на новый уровень справочника GUID 4 уровня можно будет посмотреть таким же способом, как и третьего – через загрузку «Списка наименований продукции». В файле GUID 4 уровня будет записан как «наименование номенклатуры продукции». 

Что такое guid

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

Ну, по-порядку: GUID – Globally Unique Identifier – шестнадцатибайтный двоичный массив, обеспечивающий, по-идее, идентификаторы, которые не повторяются нигде и никогда.

“Нигде” обеспечивается включением в код MAC-адреса сетевого интерфейса (при его отсутствии – какого-то суррогата).

“Никогда” – это генерация меток времени с точностью до 1 нс размером 8 байт. На самом деле, наверное, никто эту наносекунду не ловит. Вероятно, младшие разряды метки просто как-то увеличиваются по мере генерации новых кодов, хотя Microsoft пишет, что значение берётся из внутреннего таймера центрального процессора (BOL):

“…The Transact-SQL NEWID function and the application API functions and methods generate new uniqueidentifier values from the identification number of their network card plus a unique number from the CPU clock…”

Что такое guid?

Глобальный уникальный идентификатор, или GUID – это код, состоящий из 32 цифр и букв, разделённых дефисами. Программисты используют коды вместо словесных наименований для того, чтобы однотипные записи не дублировались друг с другом.

В системе «Меркурий» существуют несколько типов GUID. Обычно контрагенты, работающие с производителями подконтрольной продукции, запрашивают у них GUID 3 уровня, 4 уровня, хозяйствующего субъекта (ХС) и площадки.

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

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

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

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

Про сертификаты:  Подарочные карты и сертификаты 585 Gold и 585 золотой: какие бывают номиналы, где купить и как использовать

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

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

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


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

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

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

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

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

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


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

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

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


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

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

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

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

Guid и access’97

Всё написанное ниже относится к русской версии с установленным пакетом обновления 2 (SR-2) и типу данных “Числовой” или “Счетчик” с размером поля “код репликации” для таблиц JET. Хотя, присоединённые таблицы MS SQL Server ведут себя аналогично.

Создаётся впечатление, что 97-й Access не был изначально рассчитан на активное использование этого типа данных. Он описывается как массив байтов (vbByte vbArray), то есть отдельного типа не предусмотрено. Различные варианты получения содержимого элементов управления и полей наборов записей дают самые разнообразные результаты:

В форме (txtID – поле формы, ID – поле набора записей формы, не связанное с каким-либо элементом управления)

Me!ID:

аК=Vg/~ъR^щW5*Ф[ (строка из 16 символов)

Me.txtID.Value:

???????? (байтовый массив, который выводится в окне отладки скорее всего как строка Unicode)

Me.txtID.Text:

{6F9619FF-8B86-D011-B42D-00C04FC964FF} (строка, что мы видим на экране)

В наборе записей

RS!ID:

{guid {6F9619FF-8B86-D011-B42D-00C04FC964FF}} (строка, аналогичная результату применения функции StringFromGuid)

Такое многообразие форм напоминает природу тропического леса и так же грозит массой сюрпризов. Однако постепенно всё это запоминается и начинает давать предсказуемые результаты.

Для взаимного преобразования представлений служит пара функций: GuidFromString и StringFromGuid.

Первая из них принимает в качестве аргумента строку, представляющую GUID. Допускается как минимум два варианта: “{6F9619FF-8B86-D011-B42D-00C04FC964FF}” и “{guid {6F9619FF-8B86-D011-B42D-00C04FC964FF}}”. Возвращает GUID в формате всё того же байтового массива.

Вторая принимает GUID исключительно в формате байтового массива и выдаёт строку вида “{guid {6F9619FF-8B86-D011-B42D-00C04FC964FF}}”. Если передать в эту функцию любую строку, то на выходе получается эта же самая строка. Ошибка не возникает.

Если надо получить GUID в виде строки из 16 символов, то можно использовать вместо GuidFromString функцию Eval.

Преобразования позволяют обойти некоторые ограничения Access’а. Например попытка перейти на нужную запись в форме обычным способом

            Set RS = Me.RecordsetClone
            RS.FindFirst "FirmID = " & Me.OpenArgs
            Me.Bookmark = RS.Bookmark

приведет к ошибке 3614 “Не допускается применение поля GUID в выражении условия отбора для метода Find”.

А вот такой вариант сработает

            Set RS = Me.RecordsetClone
            RS.FindFirst "StringFromGuid(FirmID) = " & Me.OpenArgs
            Me.Bookmark = RS.Bookmark

Ссылки по теме

Инициализируем переменную с типом uniqueidentifier путем преобразования строки

В данном случае мы вручную сформировали текстовую строку, т.е. GUID, и присвоили это значение переменной с типом данных UNIQUEIDENTIFIER.

   
   DECLARE @Var UNIQUEIDENTIFIER;
   SET @Var = '8F9619FF-7B16-D012-B45D-90C04FC064F9'; 
   SELECT @Var AS GUID;

Заметка!Типы данных в T-SQL (Microsoft SQL Server).

Инициализируем переменную с типом uniqueidentifier функцией newid

В этом примере мы объявляем переменную с типом данных UNIQUEIDENTIFIER, а затем с помощью функции NEWID присваиваем ей значение GUID.

   
   DECLARE @Var UNIQUEIDENTIFIER;
   SET @Var = NEWID();
   SELECT @Var AS GUID;

Как создать guid в microsoft sql server

Сгенерировать новое значение GUID и инициализировать столбец или переменную с типом UNIQUEIDENTIFIER в SQL Server можно с помощью функции NEWID. Однако кроме этого можно сформировать GUID путем преобразования строки xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где каждый x – это шестнадцатеричная цифра (0–9 или A–F).

Заметка!Что такое T-SQL. Подробное описание для начинающих.

Как узнать guid 3 уровня?

Когда компания говорит об «уровнях», она имеет в виду уровни в справочнике номенклатуры ФГИС «Меркурий», в который записаны все наименования поднадзорных товаров. 

Про сертификаты:  Что такое ADR и GDR и как работают депозитарные расписки

Первые три уровня основаны на сведениях из Товарной номенклатуры ВЭД ЕЭС и указывают место продукции в её иерархии. Уровни описывают тип продукции (1 уровень; «пищевая продукция»), продукцию (2 уровень, «молоко и молочная продукция») и вид продукции (3 уровень, «творог»).

Четвёртый же уровень справочника предназначен для товарного наименования конкретной выпускаемой продукции. Подробней об уровнях справочника можно почитать в разборе, подготовленном Milknews ранее.

Чтобы узнать GUID 3 уровня в государственной системе, нужно:

  • войти в личный кабинет «Меркурий.ХС» в системе «Ветис»;
  • выбрать обслуживаемое предприятие;
  • перейти в раздел Справочники → Наименование продукции;
  • нажать кнопку загрузки (зелёная стрелка) справа от заголовка «Список наименований продукции»;
  • в скачанном текстовом файле найти «наименование вида продукции» – рядом с ним и будет указан GUID 3 уровня.

Как узнать guid предприятия?

В интерфейсе «Меркурия» можно узнать и GUID предприятия. Для этого нужно просто зайти в систему и, не выбирая предприятие, нажать кнопку с зелёной стрелкой рядом с заголовком «Выбор обслуживаемого предприятия».

Как узнать guid своей площадки

В веб-сервисе от СКБ Контур легко найти, где расположен GUID.

Шаг 1. Зайдите в систему и перейдите на вкладку «Меркурий/Настройки»: вы увидите перечень подключенных предприятий.

Шаг 2. Нажмите кнопку «Редактировать»: откроется экран со списком площадок, рядом с каждой площадкой вы увидите ее GUID-код.

Шаг 3. Скопируйте GUID и отправьте его поставщикам, чтобы они могли правильно оформлять ВСД.

Если вы используете государственный «Меркурий», чтобы получить GUID предприятия, вам надо:

Шаг 1. Перейти во вкладку «Сменить предприятие», где вы увидите все зарегистрированные площадки.

Как узнать guid хозяйствующего субъекта и площадки?

Помимо данных о товаре и предприятии, поставщики запрашивают у производителей идентификаторы ХС и площадки. Использование GUID позволяет избежать путаницы при нахождении нескольких юридических лиц – например, магазина, кафе и склада – по одному адресу.

Чтобы найти GUID, необходимо войти в личный кабинет «Цербер» в системе «Ветис» с данными, используемыми при входе в «Меркурий». После этого стоит выбрать из меню пункт «Хозяйствующий субъект» или «Площадка» – в зависимости от того, какой конкретно GUID вам нужен. В строке «Глобальный идентификатор в системе» будет указан нужный вам код.

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

Практическое использование guid

Теперь о главном: не так важно, как GUID делается. Гораздо важнее оценить возможность его использования в качестве первичного ключа. Совершенно очевидно, что в четыре раза больший размер поля приводит к более быстрому увеличению размеров таблиц. Ещё несколько лет назад это имело существенное значение, но сейчас, когда как дисковая, так и оперативная память значительно подешевела и увеличилась в объёмах, данный фактор можно просто исключить из рассмотрения (но только для клиент-серверных систем!).

Другое дело – быстродействие. Это стоит проверить, но только сначала определимся с местом и назначением идентификаторов в общей структуре данных. Идентификаторы – GUID’ы можно использовать только для связи таблиц и однозначного указания нужной строки. Всё. Никакого другого смысла в них искать не следует.

Исходя из этого строился тестовый набор из двух таблиц:

Master:
        MasterID  Код репликации
        Criteria  Длинное целое
Detail:
        DetailID  Код репликации
        MasterID  Код репликации
        Value     Денежный

Вторая аналогичная пара таблиц отличалась только типом полей – идентификаторов. Там они были целые (4 байта). Количество записей не очень большое: на каждую из 10000 в таблице Master приходилось 10 в таблице Detail. Итого 110000 записей в каждой паре. Тест проводился на относительно слабеньком компьютере (PIII-450, 128Mb RAM, Windows’98 SE) с русским Access’97 SR-2.

Для получения GUID’ов использовалось поле типа “Счетчик” с размером “код репликации”, а идентификаторов целого типа – “Счетчик” с размером “Длинное целое”. Поле Criteria заполнялось случайными челыми числами от 0 до 9, Value – случайными значениями денежного типа порядка 10000.

Далее выполнялся простейший запрос, суммирующий Value из таблицы Detail по одинаковым значениям Criteria из таблицы Master.

SELECT Master.Criteria, SUM(Detail.Value) AS Summ
FROM Detail INNER JOIN Master ON Detail.MasterID = Master.MasterID
GROUP BY Master.Criteria

Так вот: применение GUID’ов привело к увеличению времени выполнения запроса почти в 4 раза (с 3 до 11 секунд). Такое снижение производительности делает использование таких идентификаторов в традиционных документоориентированных программах учета, мягко говоря, не очень привлекательным.

Про сертификаты:  Сертификат на пельмени в Екатеринбурге | ГортестУрал

Такой-же тест проводился с проектом Access’2002 и сервером MS SQL’2000 Desktop Edition (MSDE). GUID’ы получались с помощью функции NewID(), а идентификаторы целого типа – с помощью Identity с единичным инкрементом.

Результат получился совершенно другой: в обоих случаях запрос выполнялся около двух секунд и разница субъективно не была заметна. Это, скорее всего, позволяет в данном случае не учитывать критерий быстродействия при выборе типа идентификатора.

Однако, есть ещё несколько факторов, существенных при решении такого вопроса. Главный из них, на мой взгляд, – насколько хорошо клиентская система (MS Access в нашем случае) поддерживает этот тип данных.

Про ссылки, уникальные идентификаторы, guid и не найденные объекты

Поиск данныхИнструментарий разработчикаWEBv81cv8.cfРоссияАбонемент ($m)

Менеджер закачки и средство автоматизации обработки web-данных в одном флаконе.
Интерактивный режим работы: фоновое скачивание, многопоточная фоновая проверка ссылок.
Параллельное выполнение парсера, проверки, скачивания, редактирования списка и другие действия.
Авто подключение через активный прокси.
Индикация всех процессов: парсинга, проверки, скачивания, оставшегося времени, скорости (текущая и средняя), свободного места, состояния прокси соединения.
Модульная структура: 3 парсера, 2 модуля скачивания, 2 экспорта, 1 печати.
Экспорт в списки закачки для «Download Master», «ReGet».
Список закачки в виде дерева значений – логическое структурирование данных, организация подпапок хранения.
Печатная форма для дерева закачки на СКД.
Веб-браузер: авто подбор парсера, история просмотра, «домашние страницы».
Для программиста: легко расширяемых функционал (есть демо-модули для примеров); настраиваемый лог; авто подключение новых модулей в интерфейсе; открытый код.
По возможности максимально применены сначала встроенные объекты 1С и затем ОС Windows (ПолеHTMLДокумента, ЧтениеXML и COM: WinHttp.WinHttpRequest, MSXML2.DomDocument, winmgmts).
Не использовались: временные файлы, скрипты, внешние компоненты.

1 стартмани

06.09.2021   
27886   
157   
TrashMaster   
37    

Создаем столбец с типом данных uniqueidentifier

А теперь давайте представим, что нам необходимо, чтобы наши товары, допустим, записи в таблице Goods, имели глобально уникальный идентификатор.

Для этого мы для столбца идентификатора укажем тип данных UNIQUEIDENTIFIER и зададим значение по умолчанию, в нашем случае вызов функции NEWID.

Таким образом, всякий раз, когда новая запись вставляется в таблицу Goods, по умолчанию функция NEWID генерирует уникальное значение для столбца ProductId, т.е. GUID.

При добавлении записей в инструкции INSERT мы просто указываем ключевое слово DEFAULT в качестве значения для первого столбца, который предназначен для идентификатора. В этом случае в этот столбец по умолчанию будет вставлено значение GUID.

   
   CREATE TABLE Goods
	(
          ProductId UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT NEWID(),
	  ProductName VARCHAR (50) NOT NULL
 
	);

   GO
 
   INSERT INTO Goods (ProductId, ProductName)
	VALUES (DEFAULT, 'Системный блок'),
	       (DEFAULT, 'Клавиатура'),
	       (DEFAULT, 'Монитор');

   GO

   SELECT ProductId, ProductName
   FROM Goods;

Заметка! Всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.

На сегодня это все, надеюсь, статья была Вам интересна и полезна, до новых встреч!

Структура guid

Структуру GUID Microsoft описывает следующим образом (HOWTO: Use GUIDs w/ Access, SQL 6.5 and SQL 7):

    typedef struct _GUID
    {
        unsigned long   Data1;
        unsigned short  Data2;
        unsigned short  Data3;
        unsigned char   Data4[8];
    } GUID;

А визуальное представление, которое ещё называется каноническим видом, вот так (BOL):

{6F9619FF-8B86-D011-B42D-00C04FC964FF}

Налицо явное несоответствие: 4 элемента в определении типа и 5 частей в строке. Это можно понять, если внимательно рассмотреть самую правую часть строки. Она как раз и представляет собой шестибайтовый MAC-адрес сетевой карты. Следующие два байта тоже как-то связаны с оборудованием, и, вполне возможно, способствуют решению проблемы возможного совпадения адресов в некоторых сетевых платах.

Левая половина кода, несмотря на разбиение на три части, может быть интерпретирована как метка времени. В примере (для Access’97) есть функция (найдена в конференции MAUG), которая извлекает из неё момент начала текущего сеанса работы. То, что она делает, выглядит как шаманство, однако для GUID’ов, сгенерированных Access’ом и MSSQL Server’ом, даёт вполне верный результат.

Оцените статью
Мой сертификат
Добавить комментарий