Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
common_all:priemyraboty:rabotacherezcom [2016/05/24 11:47]
alexander
common_all:priemyraboty:rabotacherezcom [2016/05/24 11:53]
alexander
Строка 1: Строка 1:
 {{ :​common_pics:​1c_128.png?​nolink&​128|}} {{ :​common_pics:​1c_128.png?​nolink&​128|}}
-====== COM, OLE... ​======+====== ​Некоторая работа с данными через ​COM ======
  
 [[common_all:​priemyraboty:​ole|назад]] [[common_all:​priemyraboty:​ole|назад]]
 ---- ----
  
-Некоторая работа с данными через COM + 
-Опубликовал wowik в раздел Программирование - Практика программирования+Опубликовал ​[[http://​infostart.ru/​profile/​46144/​|wowik]] в раздел Программирование - Практика программирования 
 +---- 
  
 В статье приведены примеры работы с Платформой 8.X через COM (точнее,​ через объект COMConnector). ​ В статье приведены примеры работы с Платформой 8.X через COM (точнее,​ через объект COMConnector). ​
Строка 16: Строка 18:
  
 При подключении с использованием COM, в подключенной базе есть некоторые ограничения:​ не работают события связанные с интерфейсом(модуль управляемого приложения,​ модуль сеанса),​ но работают события модуля внешнего соединения. ​ При подключении с использованием COM, в подключенной базе есть некоторые ограничения:​ не работают события связанные с интерфейсом(модуль управляемого приложения,​ модуль сеанса),​ но работают события модуля внешнего соединения. ​
 +----
  
 +Создание com подключения к базе:
  
-Начнем. 
- 
- 
-Создание com подключения к базе: 
 <​code>​Процедура ПодключениеКБазе1С(ПутьКБазе,​ Пользователь,​ Пароль = "",​ Сервер,​ БазаДанных) ​   ​ <​code>​Процедура ПодключениеКБазе1С(ПутьКБазе,​ Пользователь,​ Пароль = "",​ Сервер,​ БазаДанных) ​   ​
         СтрокаПодключения = "";​         СтрокаПодключения = "";​
Строка 32: Строка 32:
        ​COMCоединение ​           = cntr.Connect(СтрокаПодключения);​        ​COMCоединение ​           = cntr.Connect(СтрокаПодключения);​
 КонецПроцедуры</​code>​ КонецПроцедуры</​code>​
- +----
  
  
- +Получение типа "​ДокументСсылка.ПриходнаяНакладная"​ из подключенной базы:
-Получение типа "​ДокументСсылка.ПриходнаяНакладная"​ из подключенной базы+
  
 <​code>​Тип = COMCоединение.NewObject("​ОписаниеТипов","​ДокументСсылка.ПриходнаяНакладная"​).Типы().Получить(0);</​code>​ <​code>​Тип = COMCоединение.NewObject("​ОписаниеТипов","​ДокументСсылка.ПриходнаяНакладная"​).Типы().Получить(0);</​code>​
 +----
  
  
Строка 44: Строка 44:
  
 <​code>​Тип = COMCоединение.NewObject("​ОписаниеТипов","​СправочникСсылка.Номенклатура"​).Типы().Получить(0);</​code>​ <​code>​Тип = COMCоединение.NewObject("​ОписаниеТипов","​СправочникСсылка.Номенклатура"​).Типы().Получить(0);</​code>​
 +----
  
-Создание объекта "​Запрос"​+ 
 +Создание объекта "​Запрос"​:
  
 <​code>​Запрос = COMCоединение.NewObject("​Запрос"​);</​code>​ <​code>​Запрос = COMCоединение.NewObject("​Запрос"​);</​code>​
 +----
  
-Создание объекта "​Структура"​+ 
 +Создание объекта "​Структура"​:
  
 Вариант 1. Вариант 1.
Строка 58: Строка 62:
  
 <​code>​ПараметрыПоиска ​ = COMCоединение.NewObject("​Структура"​);​ ПараметрыПоиска.Вставить("​КлючСвязиСерийныхНомеров",​123);</​code>​ <​code>​ПараметрыПоиска ​ = COMCоединение.NewObject("​Структура"​);​ ПараметрыПоиска.Вставить("​КлючСвязиСерийныхНомеров",​123);</​code>​
 +----
  
  
-Создание объекта "​СписокЗначений"​+Создание объекта "​СписокЗначений"​:
  
 <​code>​СЗ = COMCоединение.NewObject("​СписокЗначений"​);</​code>​ <​code>​СЗ = COMCоединение.NewObject("​СписокЗначений"​);</​code>​
 +----
  
  
- +Создание таблицы значений:
-Создание таблицы значений+
  
 <​code>​ИтоговаяТаблица = COMCоединение.NewObject("​ТаблицаЗначений"​);</​code>​ <​code>​ИтоговаяТаблица = COMCоединение.NewObject("​ТаблицаЗначений"​);</​code>​
 +----
  
  
-Добавление колонок таблицы значений+Добавление колонок таблицы значений:
  
 <​code>​ИтоговаяТаблица.Колонки.Добавить("​Номенклатура",​ COMCоединение.NewObject("​ОписаниеТипов","​СправочникСсылка.Номенклатура"​));</​code>​ <​code>​ИтоговаяТаблица.Колонки.Добавить("​Номенклатура",​ COMCоединение.NewObject("​ОписаниеТипов","​СправочникСсылка.Номенклатура"​));</​code>​
 +----
  
  
- +Получение ссылки на документ если известен уникальный идентификатор:
-Получение ссылки на документ если известен уникальный идентификатор+
  
 <​code>​Документ1С = COMCоединение.Документы.ПриходнаяНакладная.ПолучитьСсылку(COMCоединение.NewObject("​УникальныйИдентификатор",​ УникальныйИдентификаторДокументаВВидеСтроки));</​code>​ <​code>​Документ1С = COMCоединение.Документы.ПриходнаяНакладная.ПолучитьСсылку(COMCоединение.NewObject("​УникальныйИдентификатор",​ УникальныйИдентификаторДокументаВВидеСтроки));</​code>​
 +----
 +
  
 Проверка что ссылка не пустая и не "​битая":​ Проверка что ссылка не пустая и не "​битая":​
  
 <​code>​Если Найти(COMCоединение.String(Документ1С),"​не найден"​) = 0 Тогда ​  //​документ найден</​code>​ <​code>​Если Найти(COMCоединение.String(Документ1С),"​не найден"​) = 0 Тогда ​  //​документ найден</​code>​
 +----
  
  
- +Проверка реквизита справочника с типом "​Перечисление"​на соответствие определенному значению:
-Проверка реквизита справочника с типом "​Перечисление"​на соответствие определенному значению+
  
 <​code>​COMCоединение.XMLстрока(Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий) =  "​ЭкземплярТовара";</​code>​ <​code>​COMCоединение.XMLстрока(Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий) =  "​ЭкземплярТовара";</​code>​
 +----
  
  
 +Сравнение ссылок объектов (при сравнении ссылочных Com-объектов,​ как показывает практика,​ нужно сравнивать их по коду или по ссылке,​ а не напрямую):​
  
-Сравнение ссылок объектов (при сравнении ссылочных Com-объектов, как показывает практика, нужно сравнивать ​их по коду или по ссылке, а не напрямую)+<​code>​COMCоединение.xmlстрока(НоменклатураСсылка.НаборУпаковок) = COMCоединение.xmlстрока(COMCоединение.Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)</​code>​
  
-<​code>​COMCоединение.xmlстрока(НоменклатураСсылка.НаборУпаковок) = COMCоединение.xmlстрока(COMCоединение.Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры) ​вместо  +вместо 
-НоменклатураСсылка.НаборУпаковок = COMCоединение.Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры</​code>​+ 
 +<​code>​НоменклатураСсылка.НаборУпаковок = COMCоединение.Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры</​code>​ 
 +----