Некоторая работа с данными через COM

03.10.18

Разработка - Механизмы платформы 1С

В статье приведены примеры работы с Платформой 8.X через COM (точнее, через объект COMConnector). Примеры кода были использованы при реализации прикладных задач в процессе трудовой деятельности.

Скачать исходный код

Наименование Файл Версия Размер
Все обработки от wowik на infostart.ru до 01.10.2018
.zip 59,98Kb
7
.zip 59,98Kb 7 Скачать

Работать с использованием COM можно между базами работающими на платформе 8.Х одного релиза (подключаться можно только к той платформе, которая имеет тот же  релиз, что и текущая, и никак иначе, т.к. при данном виде подключения используются интерфейсы текущей базы). Правда, стоит отметить, можно обойти момент с релизами: например, подключаемся из  8.2.13 к 8.2.14, заменив библиотеку "comcntr.dll" из папки "bin" платформы 8.2.14 на аналогичную из 8.2.13 - но получается не вся функциональность, а "некоторая", с кучей ошибок).

Статей по технологии COM достаточно много, в данной статье приведены примеры, которые можно сразу скопировать и вставить в свою конфигурацию.

При подключении с использованием COM, в подключенной базе есть некоторые ограничения: не работают события связанные с интерфейсом(модуль управляемого приложения, модуль сеанса), но работают события модуля внешнего соединения.

Почитать про COM можно здесь

 

Начнем.


Создание com подключения к базе:
  

  

Процедура ПодключениеКБазе1С(ПутьКБазе, Пользователь, Пароль = "", Сервер, БазаДанных)    
        СтрокаПодключения = "";
        Если Не ПустаяСтрока(Сервер)  Тогда
                 СтрокаПодключения = "Srvr=""" + Сервер + """;Ref=""" + БазаДанных + """;Usr=""" + Пользователь + """;Pwd=""" + Пароль + """";
        Иначе    
                  СтрокаПодключения = "File=""" + ПутьКБазе + """;Usr=""" + Пользователь + """;Pwd=""" + Пароль + """";
        КонецЕсли;
       cntr = Новый COMObject("v82.COMConnector");
       COMCоединение            = cntr.Connect(СтрокаПодключения);
КонецПроцедуры

 

 

Получение типа "ДокументСсылка.ПриходнаяНакладная" из подключенной базы

Тип = COMCоединение.NewObject("ОписаниеТипов","ДокументСсылка.ПриходнаяНакладная").Типы().Получить(0);

 

Получение типа "СправочникСсылка.Номенклатура" из подключенной базы

Тип = COMCоединение.NewObject("ОписаниеТипов","СправочникСсылка.Номенклатура").Типы().Получить(0);


Создание объекта "Запрос"

Запрос = COMCоединение.NewObject("Запрос");


Создание объекта "Структура"

Вариант 1.

ПараметрыПоиска  = COMCоединение.NewObject("Структура","КлючСвязиСерийныхНомеров",123);


Вариант 2.

ПараметрыПоиска  = COMCоединение.NewObject("Структура"); ПараметрыПоиска.Вставить("КлючСвязиСерийныхНомеров",123);

 

Создание объекта "СписокЗначений"

СЗ = COMCоединение.NewObject("СписокЗначений");


 

Создание таблицы значений

ИтоговаяТаблица = COMCоединение.NewObject("ТаблицаЗначений");

 

Добавление колонок таблицы значений

ИтоговаяТаблица.Колонки.Добавить("Номенклатура", COMCоединение.NewObject("ОписаниеТипов","СправочникСсылка.Номенклатура"));




Получение ссылки на документ если известен уникальный идентификатор

Документ1С = COMCоединение.Документы.ПриходнаяНакладная.ПолучитьСсылку(COMCоединение.NewObject("УникальныйИдентификатор", УникальныйИдентификаторДокументаВВидеСтроки));


Проверка что ссылка не пустая и не "битая":

Если Найти(COMCоединение.String(Документ1С),"не найден") = 0 Тогда   //документ найден




Проверка реквизита справочника с типом "Перечисление"на соответствие определенному значению

COMCоединение.XMLстрока(Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий) =  "ЭкземплярТовара";


 

Сравнение ссылок объектов (при сравнении ссылочных Com-объектов, как показывает практика, нужно сравнивать их по коду или по ссылке, а не напрямую)

COMCоединение.xmlстрока(НоменклатураСсылка.НаборУпаковок) = COMCоединение.xmlстрока(COMCоединение.Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры) вместо 
НоменклатураСсылка.НаборУпаковок = COMCоединение.Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры



Статья навеяна курсами с сайта spec8.ru.

Спасибо.

См. также

Сервисы интеграции без Шины и интеграции

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2560    dsdred    16    

59

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    5893    dsdred    53    

83

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5845    YA_418728146    25    

68

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6963    dsdred    36    

113

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    19051    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12761    human_new    27    

76

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    9382    YA_418728146    6    

143

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6524    sebekerga    54    

95