Невелика інструкція з прикладами - як працювати з OLE
Коротка довідка по використанню OLE в 1С-Підприємство.
Для запуску системи 1С-Підприємства як OLE Automation сервера з зовнішнього застосування виконується наступна послідовність дій:
- Створюється об'єкт з OLE ідентифікатором (реєстр символів непринциповий):
- V1CEnterprise.Application - версія незалежний ключ;
- V77.Application - версія залежний ключ;
- V77S.Application - версія залежний ключ, SQL версія;
- V77L.Application - версія залежний ключ, локальна версія;
- V77M.Application - версія залежний ключ, мережева версія.
- Виконується ініціалізація системи 1С-Підприємство методом Initialize ().
- Викликаються атрибути і методи системи 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. Константи, перерахування, елементи довідників.
Для порівняння значень агрегатних типів даних в базі, відкритої через Оле, використовувати стандартний алгоритм з використання знаків одно і нерівно (=,<>) не виходить. Вихід простий. Необхідно перейти від порівняння агрегатних типів даних до простих типів даних - дата, рядок і число.
Звідси висновок: ми порівнюємо не власними елементи, а їх унікальні атрибути. Наприклад, для елементів довідника - це код (якщо він є), або найменування. Для перерахування використовується метод Ідентифікатор (). Ось два приклади: