Получение уникального идентификатора объекта в 1С

Содержание

Подключение к базе 1С через COM и OLE соединение. V83.Application и V83.COMConnector

Получение уникального идентификатора объекта в 1С

Пользоваться этим методом можно как в клиент-серверных вариантах баз, так и в файловых базах.

Существует два вида COM объектов для приложения 1С:

Com соединение V83.COMConnector

В случае с V83.Application запускается практически полноценный экземпляр приложения . В случае использования V83.COMConnector запускается небольшая серверная часть. Скорость работы в этом случае выше, но некоторые функции могут быть недоступны.

В частности работа с формами и с общими модулями для которых, не установлено свойство работы с внешними соединениями. По большей части нужно использоватьV83.COMConnector и только в случае нехватки функционала V83.Application.

Особенно сильно разница в скорости работы может быть заметна на базах большого объема.

Для платформы 1С 8.2 используется V82.Application или V82.COMConnector

Установить OLE соединение к 1С 8

Соединение = Новый COMОбъект(“V83.Application”);

Установить COM соединение к 1С 8

Соединение = Новый COMОбъект(“V83.COMConnector”);

Строка подключения к 1С 8

//Для варианта клиент – серверСтрокаСоединения = “Srvr = “”ИмяСервера””;Ref = “”ИмяБазы””; Usr = ИмяПользователя; Pwd = Пароль”;//Для варианта файлового режима:СтрокаСоединения = “File = “”ПутьКБазе””; Usr = ИмяПользователя; Pwd = Пароль”;Подключение = Соединение.Connect(СтрокаСоединения);Сообщение = Новый СообщениеПользователю;Сообщение.Текст = “Не удалось подключиться к базе” + ОписаниеОшибки(); Сообщение.Сообщить();

Разрыв соединения с 1С 8

Соединение = Неопределено;

Для объекта V83.Application выполнять разрыв соединения обязательно, в противном случае останется висеть незавершенный сеанс, который потом придется удалять вручную. В случае с V83.COMConnector соединение разрывается автоматически при завершении процедуры в которой выполнялось подключение.

И есть еще один маленький момент. Для пользователя под которым выполняется подключение должен быть отключен флажок «Запрашивать подтверждение при закрытии программы» в его настройках.

Метод NewObject()

Для создания нового объекта можно воспользоваться методом NewObject(), например:

для V83.COMConnector

ЗапросCOM = Подключение.NewObject(“Запрос”);ТаблицаCOM = Подключение.NewObject(“ТаблицаЗначений”);МассивCOM = Подключение.NewObject(“Массив”);УидCOM =Подключение.NewObject(“УникальныйИдентификатор”, СтрокаУИД);

для V83.Application

ЗапросOLE = Соединение.NewObject(“Запрос”);ТаблицаOLE = Соединение.NewObject(“ТаблицаЗначений”);МассивOLE = Соединение.NewObject(“Массив”);УидCOM =Соединение.NewObject(“УникальныйИдентификатор”, СтрокаУИД);

После создания Com объекта можно далее работать с ним, например

ЗапросCOM.Текст =”ВЫБРАТЬ| ДолжностиОрганизаций.Код,| ДолжностиОрганизаций.Наименование| Справочник.ДолжностиОрганизацийКАК ДолжностиОрганизаций”;Результат = ЗапросCOM.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() Цикл

Можно также использовать менеджеры объектов конфигурации:

СправочникCOM = Подключение.Справочники.ИмяСправочника;ДокументCOM = Подключение.Документы.ИмяДокумента;РегистрCOM = Подключение.РегистрыСведений.ИмяРегистра;

Получение и сравнение перечисления через COM соединение

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

ЭлементПеречисления = Подключение.Справочники.Справочник1.НайтиПоКоду(1).Реквизит1;ВозможныеЗначения = ЭлементПеречисления.Метаданные().ЗначенияПеречисления;НомерЭлементаПеречисления = ВозможныеЗначения.Индекс(ВозможныеЗначения.Найти(Соединение.XMLString(ЭлементПеречисления)));Если НомерЭлементаПеречисления = 0 Тогда Сообщить(“ЗначениеПеречисления1”);ИначеЕсли НомерЭлементаПеречисления = 1 Тогда Сообщить(“ЗначениеПеречисления2”);

Получение объекта через COM по идентификатору

Через менеджеры объектов конфигурации получаем com объект, например :

ДокументCOM = Соединение.Документы.ИмяДокумента;//Затем получаем строку уникального идентификатора :СтрокаУИД = Соединение.string(ДокументCOM.УникальныйИдентификатор());//Затем в базе данных можно найти по ссылке нужный документ, таким образомИдентификатор = Новый УникальныйИдентификатор(СтрокаУИД);СсылкаПоИдентификатору = Документы[ИмяДокумента].ПолучитьСсылку(Идентификатор);//Если нужно найти com объект по документ по идентификатору, то тогда нужно написать так:УидCOM = Соединение.NewObject(“УникальныйИдентификатор”,СтрокаУИД);СсылкаПоИдентификатору = Соединение.Документы[ИмяДокумента].ПолучитьСсылку(УидCOM);

Источник: http://okolokompa.ru/katalog/programmistam/1s-predprijatie-8/podkljuchenie-baze-1s-com-ole-soedineni/

Уникальный идентификатор в 1С область и некоторые особенности использования

Получение уникального идентификатора объекта в 1С

В самом названии «уникальный идентификатор» содержится два главных качества, которыми должен обладать данный объект:

  1. Он должен был уникальным;
  2. С его помощью можно легко определить, какой объект он идентифицирует.

Уникальность

Разговор про уникальность необходимо начинать с того, что такое GUID (Globally Unique Identifier) и как этот GUID формируется.

Событие, состоящее в выпадение двух абсолютно одинаковых чисел из последовательности, максимальный член которой имеет порядок 10 в 38 степени, очевидно, является маловероятным. Именно на этом и основан принцип глобального уникального идентификатора.

Каждый идентификатор содержит 128 бит информации, записанный в виде шестнадцатиричного числа ( в 1С имеет вид a96ca0cd-b164-11e6-80c2-00155d001fe4). Простенький код (Рис.1) позволяет получить УИ любого элемента базы данных.

Рис.1

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

Идентификация

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

Каждая ссылка в 1С на тот или иной объект данных состоит из двух частей, которые позволяют максимально полно его описать:

  • Уникальный идентификатор (УИ), можно называть его GUID;
  • Типа ссылки (описание объекта метаданных).

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

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

Область использования уникального идентификатора

Исходя из свойств этого поля, вырисовываются и направления его применения:

  1. Обмен данными между конфигурациями;
  2. Поиск необходимого объекта;
  3. Восстановление неправильно удаленных объектов.

Один интересный факт: до записи объекта в базу данных 1С он имеет идентификатор, состоящий из нолей (00000000-0000-0000-0000-000000000000).

Обмен данными

Если говорить об обмене данными между разными конфигурациями 1С8, то здесь существует регистр сведений Значения свойств объектов, который позволяет хранить практически любую дополнительную информацию. Задав для справочника «Номенклатура» дополнительное свойство «УИ 82», и присвоив ему тип «Строка» (рис.2), мы тем самым можем сохранить в него уникальный идентификатор из другой базы.

Рис.2

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

Поиск объекта

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

Восстановление объектов

Зачастую при формировании отчетов пользователи сталкиваются со строкой (рис.3).

Рис.3

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

  1. Несколько цифр до двоеточия;
  2. Шестнадцатеричный код после.

Последовательность действий по восстановлению:

  1. В первую очередь необходимо выяснить, какой тип данных у удаленного объекта. Для этого можно: уточнить тип поля у отчета, посмотреть, какие дополнительные отчеты открываются при щелчке по нему, попробовать сформировать подобный отчет на сохраненной копии. В нашем случае это элемент справочника «Номенклатура», в первичных документах у табличных частей будет вид (Рис.4); Рис.4
  2. Проверить в выгрузках, в старых копиях наличие удаленного элемента;
  3. Выгрузить его поля и табличные части в любой удобный для последующей загрузки формат (xml, dbf, xls);
  4. Загрузить данные в базу.

Очень важно понимать, что возможности по использованию уникального ID не ограничиваются этими тремя направлениями.

Источник: http://blog.it-terminal.ru/programmirovanie-1s/unikalnyj-identifikator.html

Коннектор к 1С. Обзор полезных обработок 1С для настройки интеграции и миграции

Получение уникального идентификатора объекта в 1С

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

Пример 2

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

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

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

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

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

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

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

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

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

  • Зарегистрировать все – включает все объекты плана обмена в узел. Действие необратимо;
  • Добавить регистрацию (по кнопке из контекстного меню объекта) – позволяет зарегистрировать в 1С конкретные записи;
  • Зарегистрировать по одному – удаляет все существующие регистрации и регистрирует в плане обмена по одному объекту каждого типа. Действие необратимо;
  • Удалить всю регистрацию – очищает сведения о регистрации узла плана обмена. Действие необратимо;
  •  – удаляет регистрацию произвольного объекта информационной базы. При этом можно создать запрос и удалить запись о регистрации всех объектов, полученных в результате его выполнения;
  •  – добавляет регистрацию произвольного объекта информационной базы. При этом можно создать запрос и добавить запись о регистрации всех объектов, полученных в результате его выполнения;
  • Показать изменения, зарегистрированные для данного типа – показывает объекты информационной базы, зарегистрированные в узле обмена. Перед нажатием кнопки нужно выбрать необходимый тип объектов;
  • Результат стандартной выгрузки – показывает, как будет выглядеть объект информационной базы, если его выгрузить в формате XML. Перед нажатием нужно выбрать необходимый объект:

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Источник: https://club.directum.ru/post/189365

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.