|
обработка результата запроса по СОМ-соединению | ☑ | ||
---|---|---|---|---|
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
|
не пойму таки почему не могу взять наименование...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |