Ole в 1с-підприємство

Невелика інструкція з прикладами - як працювати з OLE

Коротка довідка по використанню OLE в 1С-Підприємство.

Для запуску системи 1С-Підприємства як OLE Automation сервера з зовнішнього застосування виконується наступна послідовність дій:

  1. Створюється об'єкт з OLE ідентифікатором (реєстр символів непринциповий):
    • V1CEnterprise.Application - версія незалежний ключ;
    • V77.Application - версія залежний ключ;
    • V77S.Application - версія залежний ключ, SQL версія;
    • V77L.Application - версія залежний ключ, локальна версія;
    • V77M.Application - версія залежний ключ, мережева версія.
  2. Виконується ініціалізація системи 1С-Підприємство методом Initialize ().
  3. Викликаються атрибути і методи системи 1С-Підприємства як OLE Automation сервера.

1С-Підприємство як OLE Automation сервера має 4 методу:

  • Initialize () - виконати ініціалізацію системи 1С-Підприємство.
  • CreateObject () - Створює об'єкт агрегатного типу даних 1С-Підприємства і повертає посилання на нього.
  • EvalExpr () - Обчислити вираз системи 1С-Підприємство.
  • ExecuteBatch () - Виконати послідовність операторів системи 1С-Підприємство.

1. Initialize () - відкрити базу.

Синтаксис методу такий:

Initialize (<Имя объекта>.RMTrade, <Командная строка>, <Пустая строка>)

<Имя объекта>.RMTrade - ім'я змінної і ключове слово RMTrade.
<Командная строка> - командний рядок, в якій можна прописати шлях до бази, ІМФ користувача і пароль.
<Пустая строка>) - або порожній рядок, або "NO_SPLASH_SHOW" - щоб не показувати заставку при завантаженні.

Для того, щоб відкрити базу через OLE - необхідно створити об'єкт з ідентифікатором OLE, виконати ініціалізацію бази і перевірити успішність виконання ініціалізації. У своєму прикладі я не вказую ніяких додаткових параметрів, тому відкривається квадратне віконце вибору бази, пропонується вибрати користувача і ввести пароль.

2. CreateObject () - створити об'єкт агрегатного типу.

Цей метод створює об'єкт агрегатного типу даних системи 1С-Підприємства і повертає посилання на нього.

Синтаксис методу такий:

<ИмяАгрегатногоТипа> - рядковий вираз, значення якого містить ім'я агрегатного типу даних, заданого в конфігураторі. Наприклад: "Справочнік.Номенклатура", "Документ.ПріходнаяНакладная".

3. EvalExpr () - обчислити вираз.

Синтаксис методу такий:

<СтрокаВыражения> - рядковий вираз, записане на вбудованій мові 1С-Підприємства.

Результатом виразу може бути число, рядок, дата або значення будь-якого агрегатного типу даних. Результат з невизначеним типом перетворюється до строковому типу.

4. ExecuteBatch () - виконати послідовність операторів.

Синтаксис методу такий:

<СтрокаОператоров> - рядковий вираз, текст програми на вбудованій мові 1С-підприємства.

Повертає значення логічного типу: TRUE, якщо послідовність операторів виконана успішно, FALSE, якщо немає. В OLE Automation TRUE і FALSE мають відповідно значення -1 (мінус одиниця) і 0.

Приклад: створення документа в іншій базі, відкритої через OLE.

Вивантаження відбувається з обробки. ВибДокумент - документ, вибраний користувачем для вивантаження в іншу базу.

Цей приклад на 100% робочий. Використовується у мене для вивантаження документів з однієї конфігурації в іншу.

Порівняння в базі OLE. Константи, перерахування, елементи довідників.

Для порівняння значень агрегатних типів даних в базі, відкритої через Оле, використовувати стандартний алгоритм з використання знаків одно і нерівно (=,<>) не виходить. Вихід простий. Необхідно перейти від порівняння агрегатних типів даних до простих типів даних - дата, рядок і число.

Звідси висновок: ми порівнюємо не власними елементи, а їх унікальні атрибути. Наприклад, для елементів довідника - це код (якщо він є), або найменування. Для перерахування використовується метод Ідентифікатор (). Ось два приклади: