powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Где увидеть полный список классов, методов и свойств V82.COMConnector ?
29 сообщений из 29, показаны все 2 страниц
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624757
Всем добрый день.

у нас стоит задача извлекать данные из 1С путем использования COM объекта V82.COMConnector
в своем приложении на C#.

Здесь http://habrahabr.ru/post/191660/ пример показали.
И он работает.

Но пример примером, а вот найти ПОЛНЫЙ ТОЛКОВЫЙ ХЕЛП по классам/методам/свойствам не могу.

Как пример, покажу что ищу: давайте посмотрим сюда . Вот если интересует класс FileStream - все четко и красиво разложили по полочкам, вот вам список всего, что в классе.

Существует ли что-то подобное по V82.COMConnector?
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624768
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Бобак,
существует. Но Вам будет недоступно точно так же, как многим недоступна приведенная Вами ссылка.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624773
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычная помошь 1с. Использование можно все кроме тех у кого написано что в коме не работают.
Запрос (Query)
Запрос (Query)
Свойства:

МенеджерВременныхТаблиц (TempTablesManager)
Параметры (Parameters)
Текст (Text)

Методы:

Выполнить (Execute)
ВыполнитьПакет (ExecuteBatch)
НайтиПараметры (FindParameters)
УстановитьПараметр (SetParameter)

Конструкторы:

На основании текста запроса

Описание:

Предназначен для выполнения запросов к базе данных.

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

Сервер, толстый клиент , внешнее соединение.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624800
Sergey Sizov,

не совсем понял, какая ссылка вам недоступна?
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624811
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Бобак
V82.COMConnector - это ОБЕРТКА.
Через нее можно вызывать все методы 1с.
Соответственно обычно разработчик сначала пишет свой код в 1с, а потом переносит его на другой язык, используя COMConnector .

Потому весь список методов - в справке 1с.
Примеров использования ком коннектора - много, ищите.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624813
Zerroобычная помошь 1с. Использование можно все кроме тех у кого написано что в коме не работают.
Запрос (Query)
Запрос (Query)
Свойства:

МенеджерВременныхТаблиц (TempTablesManager)
Параметры (Parameters)
Текст (Text)

Методы:

Выполнить (Execute)
ВыполнитьПакет (ExecuteBatch)
НайтиПараметры (FindParameters)
УстановитьПараметр (SetParameter)

Конструкторы:

На основании текста запроса

Описание:

Предназначен для выполнения запросов к базе данных.

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

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

Где эта "обычная помощь"? Я вот при запущенном 1С вошел в "Помощь", и что-то мне не видно там ни пункта "Помощь для разработчиков", ни "помощь по программированию 1С экспорта/импорта", ни чего-то подобного.

Вот Вы тут привели какую-то информацию о методах ВыполнитьПакет, НайтиПараметры и т.д.
Вопрос: где это ТОЛКОМ написано? где страница в интернете с ПОЛНЫМ СПИСКОМ этих методов?
Вот Вы лично откуда изъяли эту информацию?

Буду очень признателен, если кто-то даст ссылку.
А что касается конкретных методов и свойств - то мы уже как-то сами справимся с чтением хелпа. Нам бы знать где этот хелп.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624829
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь БобакSergey Sizov,

не совсем понял, какая ссылка вам недоступна?Ссылка на MSDN. Она не всем доступна. Так же не всем доступны ссылки на 1c-овский ITS, в котором, как и в MSDN, есть документация по продуктам 1С.
К тому же, у самого коннектора всего пара свойств в и методов и все они описаны в Синтакс-помощнике.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624834
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь БобакZerroобычная помошь 1с. Использование можно все кроме тех у кого написано что в коме не работают.
Запрос (Query)
Запрос (Query)
Свойства:

МенеджерВременныхТаблиц (TempTablesManager)
Параметры (Parameters)
Текст (Text)

Методы:

Выполнить (Execute)
ВыполнитьПакет (ExecuteBatch)
НайтиПараметры (FindParameters)
УстановитьПараметр (SetParameter)

Конструкторы:

На основании текста запроса

Описание:

Предназначен для выполнения запросов к базе данных.

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

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

Где эта "обычная помощь"? Я вот при запущенном 1С вошел в "Помощь", и что-то мне не видно там ни пункта "Помощь для разработчиков", ни "помощь по программированию 1С экспорта/импорта", ни чего-то подобного.

Вот Вы тут привели какую-то информацию о методах ВыполнитьПакет, НайтиПараметры и т.д.
Вопрос: где это ТОЛКОМ написано? где страница в интернете с ПОЛНЫМ СПИСКОМ этих методов?
Вот Вы лично откуда изъяли эту информацию?

Буду очень признателен, если кто-то даст ссылку.
А что касается конкретных методов и свойств - то мы уже как-то сами справимся с чтением хелпа. Нам бы знать где этот хелп.

откройте хелп из конфигуратора
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624841
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Бобак,
вот, изучайте:
Внешнее соединение (External connection)
Методы:

NewObject (NewObject)
String (String)

Описание:

В общем и целом работа с 1С:Предприятием 8 через внешнее соединение подобна работе с 1С:Предприятием в режиме Automation сервера. Основные отличия заключаются в следующем:
В случае Automation сервера запускается полноценное приложение 1С:Предприятия 8, а в случае внешнего соединения запускается относительно небольшой внутрипроцессный COM-сервер.
При работе через внешнее соединение не доступны функциональные возможности, так или иначе связанные с организацией пользовательского интерфейса 1С:Предприятия 8;
При работе внешнего соединения не используется модуль управляемого приложения (модуль обычного приложения) конфигурации 1С:Предприятия 8. Его роль при работе с внешним соединением играет модуль внешнего соединения.
При использовании внешнего соединения имеются следующие преимущества по сравнению с использованием Automation сервера:
Более быстрая установка соединения, так как не требуется создания отдельного процесса операционной системы, а все действия производятся в рамках вызывающего процесса;
Более быстрое обращение к свойствам и методам объектов 1C:Предприятия, так как для организации обращения не требуется организации межпроцессной коммуникации;
Меньший расход ресурсов операционной системы.
Для организации доступа к данным 1С:Предприятия 8 через внешнее соединение, выполняется следующая последовательность действий:
создается менеджер COM-соединений, с помощью которого производится установка соединения;
производится обращение к методу Connect менеджера COM-соединений. Метод Connect возвращает внешнее соединение с информационной базой 1С:Предприятия 8;
через внешнее соединение производится обращение к допустимым методам, свойствам и объектам информационной базы, с которой установлено соединение.
Важно! В связи с отсутствием пользовательского интерфейса не все объекты, а также свойства и методы можно использовать во внешнем соединении.
Внешнее соединение предоставляет полный доступ к своему глобальному контексту. Поэтому внешнее соединение в качестве своих методов может иметь: системные константы, значения заданных в Конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры), а также переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.

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

Интеграция.
Пример:

// Создание объекта-коннектора
cntr = Новый COMObject("V83.COMConnector");
// создается объект COM-соединение
connection = cntr.Connect("File=""c:\InfoBases\Trade"";Usr=""Director"";");
СпрКонтрагенты = connection.Справочники.Контрагенты;
Выборка = СпрКонтрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;

// Пример на языке MS Visual Basic
Sub Excel_to_trade()
Dim cntr As Object
Dim trade As Object
Dim Товар As Object
Set cntr = CreateObject("V83.COMConnector")
Set trade = cntr.Connect("File=""c:\InfoBases\Trade""; Usr=""Director"";")
Set Товар = trade.Справочники.Товары
Группа = Товар.СоздатьГруппу()
Группа.Наименование = "***** Экспорт из Excel ******"
Группа.Записать()
N = 100 'Количество строк в документе
For Count = 1 To N
Элемент = Товар.СоздатьЭлемент()
Элемент.Наименование = Application.Cells(Count, 2).Value
Элемент.Розн_Цена = Application.Cells(Count, 3).Value
Элемент.Мел_Опт_Цена = Application.Cells(Count, 4).Value
Элемент.Опт_Цена = Application.Cells(Count, 5).Value
Элемент.Родитель = Группа.Ссылка
Элемент.Записать()
Next Count
End Sub


См. также:

Соединение с рабочим процессом, метод Connect
Менеджер COM-соединений, метод Connect
Глобальный контекст, метод ПолучитьСообщенияПользователю

Обратите внимание, что про коннектор тут только первые две строки кода.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624843
Sergey SizovСсылка на MSDN. Она не всем доступна.

На самом деле для того, чтобы доступиться до MSDN, надо немного - завести почту на hotmail или на msn,
и вы получите live id (аналог google-идентификатора, он же ваша gmail почта, под ним входите на youtube, google+).

Дальше надо войти под live id в сайт - и вы получаете весь MSDN.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624844
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь БобакВот если интересует класс FileStream - все четко и красиво разложили по полочкам, вот вам список всего, что в классе.

Существует ли что-то подобное по V82.COMConnector?

В синтакстис-помощнике вам будет доступно все методы 1с видимые для внешнего соединения:

Запрос.МенеджерВременныхТаблиц (Query.TempTablesManager)
Запрос (Query)
МенеджерВременныхТаблиц (TempTablesManager)
Использование:

Чтение и запись.
Описание:

Тип: МенеджерВременныхТаблиц.
Содержит менеджер временных таблиц, в котором будут создаваться временные таблицы.

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

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

YouTube Video
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624852
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так вообще обязательно к com присасываться? там потенциальных грабель много раскидано...
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624861
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь БобакSergey SizovСсылка на MSDN. Она не всем доступна.

На самом деле для того, чтобы доступиться до MSDN, надо немного - завести почту на hotmail или на msn,
и вы получите live id (аналог google-идентификатора, он же ваша gmail почта, под ним входите на youtube, google+).

Дальше надо войти под live id в сайт - и вы получаете весь MSDN.На самом деле чтобы получить доступ к ИТС надо просто купить на него подписку.
Доступ на MSDN у меня есть. Речь о необходимости получать доступ, а не о легкости его получения.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624915
Коллеги, где хелп - понял. Внимательно изучаю.

Но не вижу пока что ответа на один вопрос: как получить все значения перечисления, при этом надо получить их названия, порядковые номера и GUID-ы ?

Делаю вот так
Код: c#
1.
2.
3.
4.
5.
            Console.WriteLine(Connection.Перечисления.ЮрФизЛицо.Количество);
            foreach (dynamic v in Connection.Перечисления.ЮрФизЛицо)
            {
                Console.WriteLine(v.ЧТО_ТУТ_ДОЛЖНО_БЫТЬ?);
            }



Если читать в синтакс-справочнике, то видно, что свойство "ЮрФизЛицо" будет иметь тип ПеречислениеМенеджер.<Имя перечисления>

В хелпе написано такое -
Код: sql
1.
2.
3.
4.
5.
Элементы коллекции:

ПеречислениеСсылка
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к значению перечисления посредством оператора [...]. В качестве аргумента передается индекс значения перечисления в перечислении (нумерация с 0).



Значит мой foreach, который бежит по этой коллекции, присваивает в переменную v значения типа "ПеречислениеСсылка"
Читаем хелп для него:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Методы:

Метаданные (Metadata)
Пустая (IsEmpty)

Описание:

Представляет собой ссылку на значение перечисления. Используется для ссылки на значение перечисления в реквизитах объектов базы данных и переменных встроенного языка.
Может быть создан с использованием функциональной формы оператора Новый. 
Например, ВидыТоваров = Новый(Тип("ПеречислениеСсылка.ВидыТоваров"));

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

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. 
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/enterprise/current-config}. Имя типа XDTO: ПеречислениеСсылка.<Имя перечисления> 



В нем нет свойств ни Name, ни Caption, ни GUID, ничего, что я бы ожидал тут увидеть.

Кто знает куда копать?
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624946
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь БобакКоллеги, где хелп - понял. Внимательно изучаю.

Но не вижу пока что ответа на один вопрос: как получить все значения перечисления, при этом надо получить их названия, порядковые номера и GUID-ы ?

...

В нем нет свойств ни Name, ни Caption, ни GUID, ничего, что я бы ожидал тут увидеть.А теперь расскажите на каком основании Вы это все ожидаете? Особенно GUID.

А если бы сразу правильно вопрос формулировали, то сразу бы получили более адекватный ответ. А именно: ключевое слово - Метаданные.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624972
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжение предыдущего поста.

А зачем Вам понадобились все эти сведения? Вы собрались работать с конфигой неизвестной структуры? Собрались рисовать свои формы для 1с-овских объектов? Где и зачем собираетесь использовать ожидаемые данные?
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624976
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь БобакКоллеги, где хелп - понял. Внимательно изучаю.

Но не вижу пока что ответа на один вопрос: как получить все значения перечисления, при этом надо получить их названия, порядковые номера и GUID-ы ?

Делаю вот так
Код: c#
1.
2.
3.
4.
5.
            Console.WriteLine(Connection.Перечисления.ЮрФизЛицо.Количество);
            foreach (dynamic v in Connection.Перечисления.ЮрФизЛицо)
            {
                Console.WriteLine(v.ЧТО_ТУТ_ДОЛЖНО_БЫТЬ?);
            }



Если читать в синтакс-справочнике, то видно, что свойство "ЮрФизЛицо" будет иметь тип ПеречислениеМенеджер.<Имя перечисления>

В хелпе написано такое -
Код: sql
1.
2.
3.
4.
5.
Элементы коллекции:

ПеречислениеСсылка
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к значению перечисления посредством оператора [...]. В качестве аргумента передается индекс значения перечисления в перечислении (нумерация с 0).



Значит мой foreach, который бежит по этой коллекции, присваивает в переменную v значения типа "ПеречислениеСсылка"
Читаем хелп для него:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Методы:

Метаданные (Metadata)
Пустая (IsEmpty)

Описание:

Представляет собой ссылку на значение перечисления. Используется для ссылки на значение перечисления в реквизитах объектов базы данных и переменных встроенного языка.
Может быть создан с использованием функциональной формы оператора Новый. 
Например, ВидыТоваров = Новый(Тип("ПеречислениеСсылка.ВидыТоваров"));

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

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. 
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/enterprise/current-config}. Имя типа XDTO: ПеречислениеСсылка.<Имя перечисления> 



В нем нет свойств ни Name, ни Caption, ни GUID, ничего, что я бы ожидал тут увидеть.

Кто знает куда копать?

ммм... перечисления - пример несколько специфичный...
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624985
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38624998
Оъясняю задачу.

Мы занимаемся бизнес-аналитикой - строим хранилище данных.
Одной из учетных систем у заказчика есть 1С.
Надо сделать SSIS-пакет (SQL Server Intergation Services), который вытягивает данные из 1С базы.

"По культурному" мы это строим так:
- 1С программист заказчика делает обработку, целью которой есть выгрузка данных куда-то в "промежуточное место" (csv файлы, sql-таблицы - не важно). Назовем это "буфером"
- наш SSIS-пакет делает вытягивание из буфера и вставку в хранилище.


Но это "по культурному". Однако бывают заказчики, с которыми это не проходит. Они не могут или не хотят выделить 1С-специалиста, который сделает обработку для выгрузки в буфер, а хотят чтобы мы сами путем SQL запросов вытягивали данные.

Так вот, вытянуть SQL-запросами мы можем все, кроме енумов (потому что названий нет в таблицах _Enum123 и т.д.).
Для енумов надо писать кусок кода на C# который их вытянет с помощью COM Interop.

Кто знает более умный способ как получить все значения перечислений извне - буду благодарен на идеи.

У нас работает вот такой код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
 foreach (dynamic catalog in Connection.Metadata.Enums)
            {
                xml.WriteStartElement("catalog");
                xml.WriteAttributeString("name", catalog.Name);
                dynamic query = Connection.NewObject("Query");
                query.Text = "select * from enum." + catalog.Name;
                dynamic items = query.Execute().Unload();
                for (int i = 0; i < items.Count(); i++)
                {
                    xml.WriteStartElement("item");
                    for (int j = 0; j < items.Columns.Count(); j++)
                    {
                        xml.WriteStartElement("attribute");
                        xml.WriteAttributeString("name", items.Columns.Get(j).Name);
                        dynamic temp = items.Get(i);
                        if (temp != null)
                        {
                            dynamic temp2 = temp.Get(j);
                            if (temp2 != null)
                            {
                                string s = "EXCEPTION";
                                try
                                {
                                    s = Connection.XMLString(temp2);
                                }
                                catch { };
                                xml.WriteAttributeString("value", s);
                            }
                        }
                        xml.WriteEndElement();
                    }
                    xml.WriteEndElement();
                }
                xml.WriteEndElement();
            }



Как видите, он запускает запросы типа

select * from enum.ЮрФизЛицо

для всех возможных перечислений, и вытягивает оттуда все данные. Но вот проблема:


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  <catalog name="ЮрФизЛицо">
    <item>
      <attribute name="Ссылка" value="ЮрЛицо" />
      <attribute name="Порядок" value="0" />
    </item>
    <item>
      <attribute name="Ссылка" value="ФизЛицо" />
      <attribute name="Порядок" value="1" />
    </item>
  </catalog>



не вижу я почему-то поля, которое соответствует _IDRRef в таблице _Enum256...

Вот в связи с этим вопрос: могу ли я на 100% положится на свойство "Порядок" для осуществления связки?
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625013
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь БобакВот в связи с этим вопрос: могу ли я на 100% положится на свойство "Порядок" для осуществления связки?


100% - нет... значение перечисления можно гонять в пределах коллекции как раз полем порядок...

т.е. для 1с собственно пофигу с точки зрения прямого пользования по назначению какой порядок будет: Юрлицо;Физлицо или Физлицо;Юрлицо - а у вас будут траблы...

перечисление - это часть конфигурации, нет под них отдельных таблиц

http://www.gilev.ru/forum/viewtopic.php?f=9&t=264
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625075
Хорошо. Тогда какой 1С запрос надо написать - типа

Код: sql
1.
ВЫБРАТЬ  Ссылка, Порядок,  _КАК_ВЗЯТЬ_IDRREF???_   ИЗ  Перечисление.ФизЮрЛицо



можете подсказать?
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625134
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь БобакХорошо. Тогда какой 1С запрос надо написать - типа

Код: sql
1.
ВЫБРАТЬ  Ссылка, Порядок,  _КАК_ВЗЯТЬ_IDRREF???_   ИЗ  Перечисление.ФизЮрЛицо



можете подсказать?В запросе никак. В скд можно.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625136
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка - гуид перечисления никак вообще.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625195
Программист 1сВ запросе никак. В скд можно.
Если вы имели в виду "в sql можно", то ответ: да, можно. Но можно вытянуть IDRRef и Порядок. Однако нельзя вытянуть имя.

Я проверил лично: в таблицах _Enum* значение поля "порядок" успешно меняется после того, как в конфигураторе поменять порядок.

Если тянуть sql запросом из _Enum* таблиц - получим IDRRef и Порядок, если тянуть с помощью C# кода - то вытягивается порядок и название. По полю "порядок" объединили - и проблема закрыта.

У нас на блоге детально описал нюансы, кому интересно - приаттачил туда и обработки, и саму програмку, вытягивающую все перечисления.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625208
autsaider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь БобакХорошо. Тогда какой 1С запрос надо написать - типа

Код: sql
1.
ВЫБРАТЬ  Ссылка, Порядок,  _КАК_ВЗЯТЬ_IDRREF???_   ИЗ  Перечисление.ФизЮрЛицо



можете подсказать?


Игорь БобакХорошо. Тогда какой 1С запрос надо написать - типа

Код: sql
1.
ВЫБРАТЬ  Ссылка, Порядок,  _КАК_ВЗЯТЬ_IDRREF???_   ИЗ  Перечисление.ФизЮрЛицо



можете подсказать?

Создайте вьюхи на все объекты:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE VIEW Перечисление_ЮридическоеФизическоеЛицо AS
SELECT 
	_IDRRef AS Ссылка
	, _EnumOrder AS Порядок
	, case  _EnumOrder  when 0 then 'ЮридическоеЛицо' when 1 then 'ФизическоеЛицо' end  AS Значение
	, case  _EnumOrder  when 0 then 'Юридическое лицо' when 1 then 'Физическое лицо' end  AS Синоним
	, case  _EnumOrder  when 0 then '' when 1 then '' end  AS Комментарий
FROM _Enum776



Получите

Код: sql
1.
2.
3.
4.
5.
6.
select * from Перечисление_ЮридическоеФизическоеЛицо

Ссылка                             Порядок      Значение        Синоним          Комментарий 
---------------------------------- ------------ --------------- ---------------- ----------- 
0xBB79F968D50D327D4E9FAF911312F787 0            ЮридическоеЛицо Юридическое лицо 
0xBB78FA4A49F84317408A568CE3EA3F3B 1            ФизическоеЛицо  Физическое лицо  



Ну и надо не забывать пересоздавать вьюхи после реструктуризации БД.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625239
autsaiderСоздайте вьюхи на все объекты:

CREATE VIEW Перечисление_ЮридическоеФизическоеЛицо AS
SELECT
_IDRRef AS Ссылка
, _EnumOrder AS Порядок
, case _EnumOrder when 0 then 'ЮридическоеЛицо' when 1 then 'ФизическоеЛицо' end AS Значение
, case _EnumOrder when 0 then 'Юридическое лицо' when 1 then 'Физическое лицо' end AS Синоним
, case _EnumOrder when 0 then '' when 1 then '' end AS Комментарий
FROM _Enum776
...
Ну и надо не забывать пересоздавать вьюхи после реструктуризации БД.

У вас хардкод получается.
Вот в том то и дело, что надо пересоздавать вьюхи после реструктуризации, что очень плохо:
я откуда могу знать какие они засунут туда значения завтра?

Так что для того, чтобы было гибко, я ничего лучшего не придумал кроме как вытягивания всех значений своей прогой.
Код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
using System;
using System.Data;
using System.Data.SqlClient;

namespace _1CEnumParser
{
    class Program
    {
        /// <summary>
        /// Пробегается по всем перечислениям и заполняет таблицу с тремя полями: название перечисления, название значения, порядок
        /// </summary>
        private  static void DataTableFill(DataTable aTable, dynamic a1CConn)
        {
            foreach (dynamic catalog in a1CConn.Metadata.Enums)
            {
                string enumName = catalog.Name;
                dynamic query = a1CConn.NewObject("Query");
                query.Text = "select * from enum." + enumName;
                dynamic items = query.Execute().Unload();
                // бежим по строкам
                for (int i = 0; i < items.Count(); i++)
                {
                    string enumValue = null;
                    int enumOrder = -1;
                    for (int j = 0; j < items.Columns.Count(); j++)
                    {
                        string colName = items.Columns.Get(j).Name;
                        dynamic colValue;
                        try
                        {
                            colValue = a1CConn.String(items.Get(i).Get(j));
                        }
                        catch
                        {
                            colValue = "-1";
                        }
                        switch (colName.ToLower())
                        {
                            case "ссылка":
                                enumValue = colValue.ToString();
                                break;
                            case "порядок":
                                enumOrder = int.Parse(colValue.ToString());
                                break;
                            default:
                                throw new ApplicationException("unknown column name in enum.recordset: " + colName);
                        }
                    }
                    // получили  3 заполненные значения:  enumName, enumValue, enumOrder. вставка в таблицу
                    aTable.Rows.Add(new object[] {enumName, enumValue, enumOrder});
                }
            }
        }

        /// <summary>
        /// Устанавливает все соединения, заполняет DataTable с перечислениями, записывает в БД
        /// </summary>
        /// <param name="aConnectionString1C"></param>
        /// <param name="aConnectionStringSQL"></param>
        /// <param name="aTableName"></param>
        private static void ConnectAndFill(string aConnectionString1C, string aConnectionStringSQL, string aTableName)
        {
            // входим в SQL базу и удаляем все из таблицы
            var connSQL = new SqlConnection(aConnectionStringSQL);
            connSQL.Open();
            // входим в 1С
            var connector1C = new V82.COMConnector();
            dynamic conn1C = connector1C.Connect(aConnectionString1C);
            // удаляем из таблицы все данные
            var command = new SqlCommand("delete from " + aTableName, connSQL);
            command.ExecuteNonQuery();
            // заполняем таблицу
            var da = new SqlDataAdapter("select EnumName, EnumValue, EnumOrder from " + aTableName, connSQL);
            var thisBuilder = new SqlCommandBuilder(da);
            var ds = new DataSet();
            da.Fill(ds);
            DataTableFill(ds.Tables[0], conn1C);
            da.Update(ds);
            // закрываем коннект
            connSQL.Close();  
        }

        static void Main()
        {
            string[] args  = Environment.GetCommandLineArgs();
            string aConnectionString1C =  args[1];
            string aConnectionStringSQL = args[2];
            string aTableName = args[3];
            ConnectAndFill(aConnectionString1C, aConnectionStringSQL, aTableName);
        }
    }
}
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625271
autsaider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь БобакУ вас хардкод получается.
Вот в том то и дело, что надо пересоздавать вьюхи после реструктуризации, что очень плохо:
я откуда могу знать какие они засунут туда значения завтра?


В чем проблема вьюхи пересоздавать регламентным заданием несколько раз в сутки?
Или перед запуском вашего обмена производить верификацию вьюх и пересоздавать нужные при необходимости.

С COMConnector-ом тоже не все всегда гладко. После установки нового релиза платформы выясняется, что зарегистрирован COMConnector от старого релиза или зарегистрирована x64 версия, когда нужна x86 или что-нибудь в таком духе.
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38625464
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
autsaiderС COMConnector-ом тоже не все всегда гладко. После установки нового релиза платформы выясняется, что зарегистрирован COMConnector от старого релиза или зарегистрирована x64 версия, когда нужна x86 или что-нибудь в таком духе.

+ доменная авторизация/права (от кого запущено)... в принципе все это решаемо, но гиморой иногда доставляет
...
Рейтинг: 0 / 0
Где увидеть полный список классов, методов и свойств V82.COMConnector ?
    #38626496
autsaiderВ чем проблема вьюхи пересоздавать регламентным заданием несколько раз в сутки?
Или перед запуском вашего обмена производить верификацию вьюх и пересоздавать нужные при необходимости.

Есть два варианта:
1) регламентное задание будет перезаполнять таблицу с полями EnumName, EnumValue, EnumOrder, вычитывая из 1С программно все енумы (приведенный выше код)
2) регламентное задание будет вычитывать енумы, генерировать код вьюх, запускать alter скрипты на базе

И какая разница что будет делать регламентное задание?
Ему всеравно надо вычитать все перечисления - от этого не убежишь.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / [игнор отключен] [закрыт для гостей] / Где увидеть полный список классов, методов и свойств V82.COMConnector ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]