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

Хранилище

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

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



> COMобъекты Запрос и получение значений результата , Как задать Запрос через COM соединение и получение результата значений          
DmitryPushkarev Подменю пользователя
сообщение 16.08.20, 14:17
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Версия 8.3.7.1845
Бухгалтерия для Беларуси 1.6
Доброго времени суток. Делаю запрос и получаю COM объект в значениях.
Как получить сами значения из запроса, то есть не COMобъекты, а цифры строки и т.д.?

ЗапросВТорг = База.NewObject("Запрос");
    ЗапросВТорг.Текст = "ВЫБРАТЬ
                        |    ПеремещениеТоваров.Ссылка,
                        |    ПеремещениеТоваров.ВерсияДанных,
                        |    ПеремещениеТоваров.ПометкаУдаления,
                        |    ПеремещениеТоваров.Номер,
                        |    ПеремещениеТоваров.Дата,
                        |    ПеремещениеТоваров.Проведен,
                        |    ПеремещениеТоваров.Автомобиль,
                        |    ПеремещениеТоваров.ВидОперации,
                        |    ПеремещениеТоваров.ОтражатьВНалоговомУчете,
                        |    ПеремещениеТоваров.Владелец,
                        |    ПеремещениеТоваров.Водитель,
                        |    ПеремещениеТоваров.ДоверенностьДата,
                        |    ПеремещениеТоваров.ДоверенностьНомер,
                        |    ПеремещениеТоваров.ДоверенностьФИО,
                        |    ПеремещениеТоваров.Сделка,
                        |    ПеремещениеТоваров.Заказчик,
                        |    ПеремещениеТоваров.КоличествоСтрокНаСтраницеПриложения,
                        |    ПеремещениеТоваров.Комментарий,
                        |    ПеремещениеТоваров.КомуВыданыТМЦ,
                        |    ПеремещениеТоваров.СчетСписанияНДСНУ,
                        |    ПеремещениеТоваров.СубконтоСписанияНДСНУ1,
                        |    ПеремещениеТоваров.СубконтоСписанияНДСНУ2,
                        |    ПеремещениеТоваров.СубконтоСписанияНДСНУ3,
                        |    ПеремещениеТоваров.НДСвСтоимостиТоваров,
                        |    ПеремещениеТоваров.НомерНакладной,
                        |    ПеремещениеТоваров.Организация,
                        |    ПеремещениеТоваров.ОснованиеОтпуска,
                        |    ПеремещениеТоваров.Ответственный,
                        |    ПеремещениеТоваров.ОтпускПроизвел,
                        |    ПеремещениеТоваров.ОтпускРазрешил,
                        |    ПеремещениеТоваров.ПереданыДокументы,
                        |    ПеремещениеТоваров.ПечататьНаОдинЛист,
                        |    ПеремещениеТоваров.ПринялПолучатель,
                        |    ПеремещениеТоваров.Прицеп,
                        |    ПеремещениеТоваров.ПунктПогрузки,
                        |    ПеремещениеТоваров.ПунктРазгрузки,
                        |    ПеремещениеТоваров.ПутевойЛист,
                        |    ПеремещениеТоваров.РучнаяКорректировка,
                        |    ПеремещениеТоваров.СдалОтправитель,
                        |    ПеремещениеТоваров.СерияБланка,
                        |    ПеремещениеТоваров.СкладОтправитель,
                        |    ПеремещениеТоваров.СкладПолучатель,
                        |    ПеремещениеТоваров.СубконтоСписанияНДС1,
                        |    ПеремещениеТоваров.СубконтоСписанияНДС2,
                        |    ПеремещениеТоваров.СубконтоСписанияНДС3,
                        |    ПеремещениеТоваров.СчетСписанияНДС,
                        |    ПеремещениеТоваров.ТипЦен,
                        |    ПеремещениеТоваров.Транспорт,
                        |    ПеремещениеТоваров.Франко,
                        |    ПеремещениеТоваров.ВидПеревозки,
                        |    ПеремещениеТоваров.Грузоотправитель,
                        |    ПеремещениеТоваров.Грузополучатель,
                        |    ПеремещениеТоваров.ЦельПриобретения,
                        |    ПеремещениеТоваров.Экспедитор,
                        |    ПеремещениеТоваров.ВидимостьТабличнойЧастиСписаниеБСО,
                        |    ПеремещениеТоваров.ТипБСО,
                        |    ПеремещениеТоваров.АвтоЗаполнениеПриОбмене,
                        |    ПеремещениеТоваров.КоличествоЕздок,
                        |    ПеремещениеТоваров.Товары.(
                        |        Ссылка,
                        |        НомерСтроки,
                        |        Номенклатура,
                        |        КоличествоМест,
                        |        ЕдиницаИзмерения,
                        |        Коэффициент,
                        |        Количество,
                        |        Цена,
                        |        СчетУчетаБУ,
                        |        СчетУчетаНУ,
                        |        НовыйСчетУчетаБУ,
                        |        НовыйСчетУчетаНУ,
                        |        ЦенаВРознице,
                        |        СуммаВРознице,
                        |        СтавкаНДСВРознице,
                        |        ДокументОприходования,
                        |        Партия,
                        |        ВидТары,
                        |        КоличествоВМесте,
                        |        Масса,
                        |        ГрузоДокументы,
                        |        Протокол,
                        |        Прейскурант,
                        |        СтавкаНПВРознице,
                        |        Сертификат,
                        |        СтранаПроисхождения,
                        |        ЦенаИзготовителя,
                        |        Сделка,
                        |        СтавкаНП,
                        |        Контрагент,
                        |        ДоговорКонтрагента,
                        |        ЦенаВРубляхБезНДС,
                        |        Номенклатура.Код КАК КодНоменклатуры
                        |    ),
                        |    ПеремещениеТоваров.ТоварыНаКомиссии.(
                        |        Ссылка,
                        |        НомерСтроки,
                        |        Номенклатура,
                        |        КоличествоМест,
                        |        ЕдиницаИзмерения,
                        |        Коэффициент,
                        |        Количество,
                        |        Цена,
                        |        СчетУчетаБУ,
                        |        СчетУчетаНУ,
                        |        НовыйСчетУчетаБУ,
                        |        НовыйСчетУчетаНУ,
                        |        Номенклатура.Код КАК КодНоменклатуры
                        |    ),
                        |    ПеремещениеТоваров.ВозвратнаяТара.(
                        |        Ссылка,
                        |        НомерСтроки,
                        |        Номенклатура,
                        |        Количество,
                        |        СчетУчетаБУ,
                        |        СчетУчетаНУ,
                        |        НовыйСчетУчетаБУ,
                        |        НовыйСчетУчетаНУ,
                        |        Партия,
                        |        ЕдиницаИзмерения,
                        |        ЦенаВРубляхБезНДС,
                        |        Номенклатура.Код КАК КодНоменклатуры
                        |    ),
                        |    ПеремещениеТоваров.НомераБСО.(
                        |        Ссылка,
                        |        НомерСтроки,
                        |        Организация,
                        |        ТипХранения,
                        |        Номенклатура,
                        |        Партия,
                        |        Склад,
                        |        Сотрудник,
                        |        ТипБСО,
                        |        СерияБСО,
                        |        НомерБланка,
                        |        Количество,
                        |        Сумма,
                        |        ТипСписания,
                        |        Основной,
                        |        Номенклатура.Код КАК КодНоменклатуры
                        |    )
                        |ИЗ
                        |    Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
                        |ГДЕ
                        |    ПеремещениеТоваров.Дата МЕЖДУ &Дата1 И &Дата2";    
                        
    ЗапросВТорг.УстановитьПараметр("Дата1",Дата(ЭтотОбъект.Дата1));
    ЗапросВТорг.УстановитьПараметр("Дата2",Дата(ЭтотОбъект.Дата2));
                        
    РезультатВыбора = ЗапросВТорг.Выполнить().Выбрать();
    Счетчик = 0;
    СчетчикНеудачПоКоду =0;
    СчетчикНеудачПоНаименванию= 0;
    СчетчикОтсутсвияНоменклатуры = 0;
    СчетчикДокументов = 0;
    Пока РезультатВыбора.Следующий() Цикл
        
        Предмет = Справочники.Номенклатура.НайтиПоКоду(РезультатВыбора.Товары.Columns.КодНоменклатуры);    
        НаименованиеПредмета = Справочники.Номенклатура.НайтиПоНаименованию( РезультатВыбора.Товары.Columns.Номенклатура, Истина);
        Если ЗначениеЗаполнено(Предмет)И ЗначениеЗаполнено (НаименованиеПредмета )   Тогда
            Счетчик = Счетчик +1;              
        ИначеЕсли ЗначениеЗаполнено(Предмет) И НЕ ЗначениеЗаполнено (НаименованиеПредмета )   Тогда    
            СчетчикНеудачПоНаименванию = СчетчикНеудачПоНаименванию +1;    
        ИначеЕсли НЕ ЗначениеЗаполнено(Предмет) И ЗначениеЗаполнено (НаименованиеПредмета )   Тогда    
            СчетчикНеудачПоКоду = СчетчикНеудачПоКоду +1;
        ИначеЕсли НЕ ЗначениеЗаполнено(Предмет) И НЕ ЗначениеЗаполнено (НаименованиеПредмета )   Тогда    
            СчетчикОтсутсвияНоменклатуры = СчетчикОтсутсвияНоменклатуры + 1;
        КонецЕсли;
        СчетчикДокументов = СчетчикДокументов + 1;
    КонецЦикла;
     Сообщить ("Было проверено " + СчетчикДокументов + " документов"+" с " + Формат(Дата(ЭтотОбъект.Дата1), "ДФ=dd.MM.yyyy")
     + " по " + Формат(Дата(ЭтотОбъект.Дата2), "ДФ=dd.MM.yyyy"));
     Сообщить ("Было " +Счетчик + " попаданий");
     Сообщить ("Было промахов по причине кода " + СчетчикНеудачПоКоду);
     Сообщить ("Было неудач по наименованию " + СчетчикНеудачПоНаименванию);
     Сообщить ("Не было найдено номенклатуры ни по коду, ни по наименованию " + СчетчикОтсутсвияНоменклатуры);

TohaMonster Подменю пользователя
сообщение 17.08.20, 7:39
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 67
Спасибо сказали: 28 раз
Рейтинг: 28

Что-то как-то Вы неправильно с вложенными таблицами в Запросе работаете. Рекомендую почитать, например, [необходимо зарегистрироваться для просмотра ссылки]

Выражение
РезультатВыбора.Товары.Columns.КодНоменклатуры

вернет Вам колонку результата запроса, которая в Вашем случае будет COM-объектом

Вам нужно что-то вроде
...
  Пока РезультатВыбора.Следующий() Цикл
        
  // здесь должна быть выборка по строкам таб. части Товары - обходим строки данной таб. части
    ВыборкаТовары = РезультатВыбора.Товары.Выбрать();

    Пока ВыборкаТовары.Следующий() Цикл

      КодНоменклатуры = ВыборкаТовары.КодНоменклатуры;  // вот ето значение примитивного типа, по нему можете осуществлять поиск в текущей Базе

      НоменклатураCOM = ВыборкаТовары.Номенклатура;  // а ето Номенклатура из COM-базы. То есть, COM-объект

      НоменклатураНаименование = НоменклатураCOM.Наименование;  //  ето также значение примитивного типа, по нему можно осуществлять поиск

      НоменклатураUID = НоменклатураCOM.УникальныйИдентификатор();  //  а вот по етой позиции лучше всего искать ссылку, если у Вас идет синхронизация обмена по внутреннему идентификатору

      ...

    КонецЦикла;

    СчетчикДокументов = СчетчикДокументов + 1;
  КонецЦикла;

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

DmitryPushkarev Подменю пользователя
сообщение 20.08.20, 7:17
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Появился еще вопрос по теме. Есть реквизит в документе ссылка на перечисление, получаю тоже как комобъект, возможно ли получить значение этого реквизита?

   |    ПеремещениеТоваров.НДСвСтоимостиТоваров,



denis84 Подменю пользователя
сообщение 20.08.20, 7:43
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

DmitryPushkarev @ Сегодня, 8:17 * ,
Добрый день! Я когда импртировал справочник ТМЦ из 1С 7 в 1с 8 по ОЛЕ, то использовал вот такой код:

V77 = Новый COMОбъект("V77.Application");

V77.глрасшифровка = СпрОле.ВидТМЦ;       //получение представления идентификатора Перечисления.ВидыТМЦ
Вид = V77.EvalExpr("Строка(глРасшифровка)");
ЭлементПоиска = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(Вид);
Если ЭлементПоиска.Пустая() Тогда
    ЭлементПоиска = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
    ЭлементПоиска.Наименование = Вид;
    Если Вид = "Услуга" Тогда
        ЭлементПоиска.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга;
    Иначе
        ЭлементПоиска.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
    КонецЕсли;
    ЭлементПоиска.Записать();
Иначе
    Сообщить("Такой вид ТМЦ уже есть!");
КонецЕсли;


Сообщение отредактировал denis84 - 20.08.20, 7:44

DmitryPushkarev Подменю пользователя
сообщение 21.08.20, 13:28
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(DmitryPushkarev @ 20.08.20, 8:17) *
Появился еще вопрос по теме. Есть реквизит в документе ссылка на перечисление, получаю тоже как комобъект, возможно ли получить значение этого реквизита?

   |    ПеремещениеТоваров.НДСвСтоимостиТоваров,


Нашел решение в Запросе найти
ПРЕДСТАВЛЕНИЕ (ПеремещениеТоваров.НДСвСтоимостиТоваров)
,вроде бы является одним из возможных решений.

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


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

 

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