Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> СОМ-Соедиенение и непонятный COMОбъект 2 страниц V  < 1 2          
Acid Подменю пользователя
сообщение 01.02.16, 14:15
Сообщение #21

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Petre @ Сегодня, 14:09 *,
Это для моего варианта.


Signature

Документируйте Код! мать вашу...


bizisoft Подменю пользователя
сообщение 01.02.16, 14:40
Сообщение #22

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Acid @ Сегодня, 15:02 *,
Я не создаю в подключаемой базе никаких объектов, мне нужно просто прочитать данные.
Если я правильно понимаю, то NewObject и CreateObject используются для создания каких-либо объектов в подключаемой базе.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Petre Подменю пользователя
сообщение 01.02.16, 14:48
Сообщение #23

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

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


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

bizisoft Подменю пользователя
сообщение 01.02.16, 15:00
Сообщение #24

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Цитата(Petre @ 01.02.16, 15:48) *
Попробуйте решить задачу через запрос.

Скажите пожалуйста, а при СОМ соединении запрос пишется обычным способом, или есть какие-то нюансы?


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Acid Подменю пользователя
сообщение 01.02.16, 15:04
Сообщение #25

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Цитата(bizisoft @ 01.02.16, 14:40) *
Если я правильно понимаю, то NewObject и CreateObject используются для создания каких-либо объектов в подключаемой базе.

Нет. Создаются экземпляры класса для работы с ними.

Запрос передается в виде текста. Пишите там чего угодно, потом получите только результат выборки.


Signature

Документируйте Код! мать вашу...


bizisoft Подменю пользователя
сообщение 01.02.16, 15:13
Сообщение #26

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Acid @ Сегодня, 16:04 *,
Я вас понял.
Спасибо.
Буду пробовать через запросы.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

bizisoft Подменю пользователя
сообщение 02.02.16, 9:38
Сообщение #27

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Сделал запросом, теперь можно получить через ссылочный объект его реквизиты.

        Запрос = Неопределено;
    Запрос = Подключение.NewObject("Запрос");   // А вот как раз и нюанс, который отличается от написания запроса при обычном режиме.
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Артикул,
        |    Номенклатура.Производитель,
        |    Номенклатура.Производитель.Наименование,
        |    Номенклатура.ЭтоГруппа
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура";

    Результат = Запрос.Выполнить();
    Товар = Результат.Выбрать();
    Пока Товар.Следующий() Цикл
        Если Товар.ЭтоГруппа = Ложь Тогда
          Сообщить(Строка(Товар.Артикул)+Символы.Таб+
                 Строка(Товар.Производитель)+Символы.Таб+           // Вот здесь выводит СОМОбъект
                 Строка(Товар.Производитель.Наименование));          // А здесь то что надо
        КонецЕсли;
    КонецЦикла;


Спасибо большое, буду дальше разбираться.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Acid Подменю пользователя
сообщение 02.02.16, 9:45
Сообщение #28

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Цитата(bizisoft @ 02.02.16, 9:38) *
| Номенклатура.Производитель,

Вот это убрать из запроса. Быстрее работать будет.


Signature

Документируйте Код! мать вашу...


bizisoft Подменю пользователя
сообщение 02.02.16, 9:50
Сообщение #29

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Acid @ Сегодня, 10:45 *,
Да это я конечно уберу - я выложил, что бы просто показать, что такая строка также выводит СОМОбъект, как и в предыдущих постах, а вторая строка выводит то что надо, когда предыдущие попытки этого не позволяли сделать.

Спасибо.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

bizisoft Подменю пользователя
сообщение 12.02.16, 22:53
Сообщение #30

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Нашел способ как можно работать с перечислениями через СОМ

Ном = COM_ОбъектБД.Перечисления.ВидыТМЦ.Индекс(COM_ЭлементСправочника.Перечисление);
Имя = COM_ОбъектБД.Метаданные().Перечисления.ВидПеречисления.EnumValues.Get(Ном).Name;


Получить значение перечисления
ИмяПеречисления = СсылкаНаПеречисление.Метаданные().Имя;
КоличествоЗначенийПеречисления=Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления.Количество();
КолекцияЗначенийПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления;
ИндексЗначенияПеречисления=Перечисления[ИмяПеречисления].Индекс(СсылкаНаПеречисление);
ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя
//Перебор коллекции значений перечисления
Для каждого знач из КолекцияЗначенийПеречисления Цикл
    Сообщить(знач.Имя);
КонецЦикла;
ПредставлениеПеречисления=Строка(СсылкаНаПеречисление); //синоним

//полезной будет функция:
Функция ПолучитьИмяЗначенияПеречисления(Ссылка) Экспорт

ИмяПеречисления = Ссылка.Метаданные().Имя;
Индекс = Перечисления[ИмяПеречисления].Индекс(Ссылка);

Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя;

КонецФункции // ПолучитьИмяЗначенияПеречисления()

// Альтернативный способ получения имени значения перечисления:
ИмяЗначенияПеречисления = XMLстрока(СсылкаНаПеречисление);

// Полезный прием для работы с перечислениями при COM соединении с другой ИБ 8.0 (например при обмене данных):
// надо передать ссылку на перечисление:
// Здесь
// V8 - COM объект "V8.Application" - ИБ внешнего соединения
// СсылкаНаПеречислениеCOM - COM объект - ссылка на перечисление в ИБ внешнего соединения
ИмяЗначенияПеречисленияCOM= V8.XMLString(СсылкаНаПеречислениеCOM);
ПредставлениеПеречисленияCOM= V8.String(СсылкаНаПеречислениеCOM); //синоним
ИмяПеречисленияCOM= СсылкаНаПеречислениеCOM.Метаданные().Имя;
СсылкаНаПеречисление = XMLЗначение(Тип("ПеречислениеСсылка."+ИмяПеречисленияCOM), ИмяЗначенияПеречисленияCOM);

// разумеется имена перечислений в обоих базах должны быть идентичными.

// Пример получения значений перечисления запросом
   Запрос=новый запрос;
   запрос.Текст="ВЫБРАТЬ
            |    ВидыОС.Ссылка,
            |    ВидыОС.Порядок КАК Индекс
            |ИЗ
            |    Перечисление.ВидыОС КАК ВидыОС";
   Выборка=Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() цикл
     Сообщить(""+Выборка.ссылка+" : "+Выборка.индекс);
   конецЦикла;  

// Пример для отбора на стороне COMсервера:
    Отбор = v8.Новый ("Структура");
    МД=v8.XMLTypeOf(v8.Перечисления[ИмяПеречисления].ПустаяСсылка());
    Отбор.Вставить("ВидДоговора", v8.XMLЗначение(v8.FromXMLType(МД),ИмяЗначенияПеречисления));


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V  < 1 2
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.04.24, 4:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!