Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 21:48

Вариант интеграции с 1с8.2

Автор Vitaly1954, 08 окт 2012, 15:11

0 Пользователей и 1 гость просматривают эту тему.

Vitaly1954

Прошу помощи по такому варианту интеграции.

Есть билинговая система - выполняет расчет за услуги связи(написана на PowerBuilder). Раньше результат расчетов писался в 1С7.7
напрямую  в таблицы SQL - сервера. Способ хороший, если четко знаешь внутреннее устройство базы.
На 7.7 пришлось повозиться.
Предстоит переход на 1С8.2. Хочется через COM с использованием готовых функций, чтобы без сюрпризов.
Проверил, работает.
Но мне важна взаимосвязь двух баз. Раньше я после экспорта любого объекта(записи справочника, документа) в 1С сохранял в своей базе ссылку на него
в виде ID записи. Потом использовал эти ссылки для изменения/удаления из 1С при пересчетах, синхронизации  и т.д.
Можно ли получить этот ID средствами 1С и можно ли его использовать как и раньше?
Ссылка() не проходит, т.к. возвращает объект, а не код.
Есть варианты?
В крайнем случае могу поменять базы местами, т.е. созранять свой ID в базе 1С, но не хотелось бы, переработка большая.


MuI_I_Ika

Вас, видимо, интересует функция ссылки объекта УникальныйИдентификатор()

Синтаксис:

УникальныйИдентификатор()
Возвращаемое значение:

Тип: УникальныйИдентификатор.

Описание:

Получает уникальный идентификатор ссылки.
Ссылка может быть получена из уникального идентификатора с помощью метода менеджера ПолучитьСсылку.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

Vitaly1954

Вот так работает

OLEObject spr, record, s_ref // соответсвущий тип данных в Power Builder

spr = connection_v82.Справочники.Контрагенты;
record = spr.Выбрать();
s_ref = record.Ссылка().УникальныйИдентификатор()

Реально в базе ключи имеют тип binary(16).
Пока неясно,что это дает.


MuI_I_Ika

Ну так по этому идентификатору вы потом можете найти элемент в базе 1С. И делать с ним все что нужно. Я так понял, именно такая задача и стоит.

MuI_I_Ika

Для поиска по ссылке у менеджера справочника есть функция ПолучитьСсылку()

Синтаксис:

ПолучитьСсылку(<УникальныйИдентификатор>)
Параметры:

<УникальныйИдентификатор> (необязательный)

Тип: УникальныйИдентификатор.
Уникальный идентификатор, из которого будет формироваться ссылка.
Возвращаемое значение:

Тип: СправочникСсылка.

Описание:

Формирует ссылку из значения типа УникальныйИдентификатор.
Данный уникальный идентификатор может быть в дальнейшем получен из ссылки методом УникальныйИдентификатор.

Vitaly1954

Загвоздка в том, как преобразовать OleObject в varbinary и обратно.
Здесь типы клиентской и серверной частей разъехались.
А так все понятно.
Я кстати не программист 1С.
Просто при регистрации других вариантов не нашел.
Поэтому трудновато как-то.


MuI_I_Ika

Вы можете преобразовать УникальныйИдентификатор в строку функцией СокрЛП() и дальше крутить ей как угодно.

MuI_I_Ika

Обратно соответственно конструктором Новый УникальныйИдентификатор(<Строка>)

Vitaly1954

А как вызывать функции 1С в среде PowerBuilder?
Нужно их как-то заворачивать, чтобы не было синтаксической ошибки.
Вызов типа obj1C.СокрЛП (), obj1C.Вычислить (...) выдает ошибку - нет такого метода.
В 7.7 есть метод  EvalExpr, который позволяет это делать, например так:
s = "Справочник.Контрагенты"
spr = obj1C.EvalExpr('СоздатьОбъект("' + s + '")').

Вот нашел старенькую статью, как эмулировать EvalExpr
http://doc-prg.narod.ru/art_00011/art_00011.htm

Другие варианты есть ?


MuI_I_Ika

Там описан хороший метод, но для него нужно править конфигурацию 1с.
Для того чтобы это не делать можно использовать метод com соединения NewObject("ИмяОбъекта")

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

Пример создания таблицы значений:

ТЗ = COM.NewObject("ТаблицаЗначений");

Касательно вашего вопроса.

Для получения строки из уникального идентификатора подойдет метод String()

Строка = COM.String(УникальныйИдентификатор);


Теги: интеграция 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск