|   |   | 
| 
 | обработка результата запроса по СОМ-соединению | ☑ | ||
|---|---|---|---|---|
| 0
    
        Black Dragon 13.12.13✎ 14:45 | 
        Доброго дня!
 Есть такой код: ConnectString = "File=" + ПутьИнфБазы + ";" + "Usr=" + ИмяПользователя + ";" + "Pwd=" + ПарольПользователя; V82 = Новый COMObject("V82.COMConnector"); Попытка Соединение = V82.Connect(ConnectString); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Сообщить("Соединение успешно установлено!"); ЗапросСОМ = Соединение.newObject("Запрос"); ЗапросСОМ.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ХозрасчетныйОбороты.* |ИЗ"; СписокСубконто = Новый СписокЗначений; Если ЗначениеЗаполнено(ВыбСчет) Тогда Если ЗначениеЗаполнено(ЭлементыФормы.Субконто1.Значение) Тогда СписокСубконто.Добавить(ЭлементыФормы.Субконто1.Значение); КонецЕсли; Если ЗначениеЗаполнено(ЭлементыФормы.Субконто2.Значение) Тогда СписокСубконто.Добавить(ЭлементыФормы.Субконто2.Значение); КонецЕсли; Если ЗначениеЗаполнено(ЭлементыФормы.Субконто3.Значение) Тогда СписокСубконто.Добавить(ЭлементыФормы.Субконто3.Значение); КонецЕсли; Если СписокСубконто.Количество() > 0 Тогда ЗапросСОМ.УстановитьПараметр("Списоксубконто",СписокСубконто); ЗапросСОМ.Текст = ЗапросСОМ.Текст + " | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода,&КонецПериода,Регистратор,Счет.Код = &Счет.Код,) КАК ХозрасчетныйОбороты"; Иначе ЗапросСОМ.Текст = ЗапросСОМ.Текст + " | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода,&КонецПериода,Регистратор,Счет В ИЕРАРХИИ (&Счет),) КАК ХозрасчетныйОбороты"; КонецЕсли; Иначе ЗапросСОМ.Текст = ЗапросСОМ.Текст + " | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода,&КонецПериода,Регистратор,) КАК ХозрасчетныйОбороты"; КонецЕсли; ЗапросСОМ.УстановитьПараметр("НачалоПериода",Дата1); ЗапросСОМ.УстановитьПараметр("КонецПериода", Дата2); СчетСОМ = Соединение.ПланыСчетов.Хозрасчетный.НайтиПоКоду(ВыбСчет.Код); ЗапросСОМ.УстановитьПараметр("Счет", СчетСОМ); ВыборкаСОМ = ЗапросСОМ.Выполнить().Выбрать(); Сообщить("Получено " + ВыборкаСОМ.Количество() + " записей!"); ТабРезультатов2.Колонки.Добавить("Период"); ТабРезультатов2.Колонки.Добавить("Организация"); ТабРезультатов2.Колонки.Добавить("Счет"); ТабРезультатов2.Колонки.Добавить("Субконто1"); ТабРезультатов2.Колонки.Добавить("Субконто2"); ТабРезультатов2.Колонки.Добавить("Субконто3"); ТабРезультатов2.Колонки.Добавить("КорСчет"); ТабРезультатов2.Колонки.Добавить("КорСубконто1"); ТабРезультатов2.Колонки.Добавить("КорСубконто2"); ТабРезультатов2.Колонки.Добавить("КорСубконто3"); ТабРезультатов2.Колонки.Добавить("КоличествоОборот"); ТабРезультатов2.Колонки.Добавить("КоличествоОборотДт"); ТабРезультатов2.Колонки.Добавить("КоличествоОборотКт"); ТабРезультатов2.Колонки.Добавить("СуммаОборот"); ТабРезультатов2.Колонки.Добавить("СуммаОборотДт"); ТабРезультатов2.Колонки.Добавить("СуммаОборотКт"); Пока ВыборкаСОМ.Следующий() Цикл НоваяСтрока = ТабРезультатов2.Добавить(); НоваяСтрока.Период = ВыборкаСОМ.Period; НоваяСтрока.Организация = ВыборкаСОМ.Организация.НаименованиеСокращенное; НоваяСтрока.Счет = ВыборкаСОМ.Account.Code; НоваяСтрока.Субконто1 = ВыборкаСОМ.ExtDimension1.Name; НоваяСтрока.Субконто2 = ВыборкаСОМ.ExtDimension2.Name; НоваяСтрока.Субконто3 = ВыборкаСОМ.ExtDimension3.Name; НоваяСтрока.КорСчет = ВыборкаСОМ.BalancedAccount.Code; НоваяСтрока.КорСубконто1 = ВыборкаСОМ.BalancedDimension1.Name; НоваяСтрока.КорСубконто2 = ВыборкаСОМ.BalancedDimension2.Name; НоваяСтрока.КорСубконто3 = ВыборкаСОМ.BalancedDimension3.Name; НоваяСтрока.КоличествоОборот = ВыборкаСОМ.КоличествоTurnover; НоваяСтрока.КоличествоОборотДт = ВыборкаСОМ.КоличествоTurnoverDr; НоваяСтрока.КоличествоОборотКт = ВыборкаСОМ.КоличествоTurnoverCr; НоваяСтрока.СуммаОборот = ВыборкаСОМ.СуммаTurnover; НоваяСтрока.СуммаОборотДт = ВыборкаСОМ.СуммаTurnoverDr; НоваяСтрока.СуммаОборотКт = ВыборкаСОМ.СуммаTurnoverCr; КонецЦикла; ...и тут ошибка при добавлении колонки с именем Период! Однако при выполнении подобного запроса с локальной базой все отрабатывает нормально, и колонка период присутствует! В чем подвох может быть? | |||
| 1
    
        Black Dragon 13.12.13✎ 14:52 | 
        Еще важное, наверное, замечание:
 ТабРезультатов2 - элемент формы, форма обычная, неуправляемая, платформа 8.2.18.82, конфиг КА 1.1.29.1 | |||
| 2
    
        hhhh 13.12.13✎ 14:55 | 
        ошибка-то какая?     | |||
| 3
    
        Black Dragon 13.12.13✎ 14:59 | 
        Оопс! это другая! сорри!
 {Форма.Форма.Форма(206)}: Поле объекта не обнаружено (Name) НоваяСтрока.Субконто1 = ВыборкаСОМ.ExtDimension1.Name; | |||
| 4
    
        Black Dragon 13.12.13✎ 15:07 | 
        А как реквизит Наименование будет? Description это что?     | |||
| 5
    
        hhhh 13.12.13✎ 15:09 | 
        (3) ну 
 Если ЗначениеЗаполнено(ВыборкаСОМ.ExtDimension1) Тогда НоваяСтрока.Субконто1 = ВыборкаСОМ.ExtDimension1.Name; КонецЕсли; | |||
| 6
    
        hhhh 13.12.13✎ 15:10 | 
        но всё равно там пусто будет, потому что вы строку пытаетесь в субконто запихнуть.     | |||
| 7
    
        Black Dragon 13.12.13✎ 15:11 | 
        Где субконто? это же колонка таблицы значений, причем не типизированная!     | |||
| 8
    
        hhhh 13.12.13✎ 15:14 | 
        ну тогда ладно     | |||
| 9
    
        Black Dragon 13.12.13✎ 15:16 | 
        Странно как-то получается = была ошибка добавления колонки в ТЗ с именем Период, а теперь все нормально! И дважды добавляться не должны были колонки!     | |||
| 10
    
        hhhh 13.12.13✎ 15:16 | 
        а такие вещи как 
 ВыборкаСОМ.ExtDimension1.Name надо в запросе вытаскивать. А так у вас типичные запросы в цикле получаются, значения через 2 точки | |||
| 11
    
        Black Dragon 13.12.13✎ 15:19 | 
        (10) ???
 это же объект со своими реквизитами! какой еще типичный запрос в цикле? | |||
| 12
    
        Black Dragon 13.12.13✎ 15:22 | 
        где про это написано? чего почитать?     | |||
| 13
    
        hhhh 13.12.13✎ 15:24 | 
        ВыборкаСОМ.ExtDimension1 это ссылка, а не объект, поля Name нету в нем.
 Когда пишете ВыборкаСОМ.ExtDimension1.Name программа фигачит запрос к базе и уже достает объект. А так как у вас это в цикле, то 1с это назвала "запросы в цикле". И за это сразу расстреливает на экзамене по спецу. | |||
| 14
    
        Black Dragon 13.12.13✎ 15:26 | 
        интересно! поля нету! зато есть другое поле Наименование! по ссылке есть доступ к реквизитам!     | |||
| 15
    
        Black Dragon 13.12.13✎ 15:27 | 
        сертификат получал недавно?     | |||
| 16
    
        hhhh 13.12.13✎ 15:30 | 
        (14) доступ - это вообще из другой оперы. ОН есть, этот доступ, но ссылка - это ГУИД просто, 2 байта, адрес, никаких полей в ней нет и быть не может.     | |||
| 17
    
        Black Dragon 13.12.13✎ 15:36 | 
        если бы разрабы типовых конф так писали - счастье бы наступило еще вчера!     | |||
| 18
    
        Михаил Козлов 13.12.13✎ 15:53 | 
        Вызывает подозрение "ЗапросСОМ.УстановитьПараметр("Списоксубконто",СписокСубконто);": списокСубконто не COM объект.     | |||
| 19
    
        Black Dragon 13.12.13✎ 16:15 | 
        (18) я этим не пользуюсь - копипаст лакального запроса :)     | |||
| 20
    
        wowik 13.12.13✎ 16:18 | 
        (18) +100     | |||
| 21
    
        wowik 13.12.13✎ 16:19 | ||||
| 22
    
        Black Dragon 13.12.13✎ 16:19 | 
        кто подскажет как проверить заполненность СОМ-объекта? то что тут предлагалось вида 
 Если ЗначениеЗаполнено(ВыборкаСОМ.ExtDimension1) Тогда НоваяСтрока.Субконто1 = ВыборкаСОМ.ExtDimension1.Name; КонецЕсли; нельзя использовать - мутабельное значение! | |||
| 23
    
        Михаил Козлов 13.12.13✎ 16:21 | 
        Если не NULL, то скорее всего Ссылка.     | |||
| 24
    
        wowik 13.12.13✎ 16:24 | 
        Соединение.ЗначениеЗаполнено(...     | |||
| 25
    
        Black Dragon 13.12.13✎ 16:47 | 
        BalancedDimension = КоррСубконто? да?     | |||
| 26
    
        Black Dragon 13.12.13✎ 16:47 | 
        не пойму таки почему не могу взять наименование...     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |