|
v7: Как обработать запрос полученный из 8 ки | ☑ | ||
---|---|---|---|---|
0
StackOverflow
28.05.18
✎
09:30
|
По OLE сделал запрос к 8 ке, получил OLE объект, а как его обработать, подскажите плз.
Запрос отработал, данные я так понял там есть. Сейчас получилось что то типа того. ВыборкаБД = ЗапросБД.Выполнить().Выбрать(); У меня отдельная внешняя обработка под это дело, хотел вывести полученное в таблицу на форме обработке. Но как на ней сделать колонки так и не нашел. В 8 ке то понятно как, а как в 7 ке? И как вообще посмотреть что у меня в запросе на данный момент? Как обратится к данным оттуда? По идее надо его циклом обрабатывать, но что то не соображу как. Думаю что как то так: Пока ВыборкаБД.Следующий()=1 Цикл как то обратиться к данным этой выборки КонецЦикла; |
|||
1
hhhh
28.05.18
✎
09:39
|
ВыборкаБД.Данное
|
|||
2
StackOverflow
28.05.18
✎
09:42
|
(1) я перобовал так и выводить в сообщение но выдавало пустоту, и в отладчике тоже
|
|||
3
Ёпрст
28.05.18
✎
09:48
|
(2) Показывай, что выводил и как.
Если че, можно "увидеть" только простые типы - строку/дату/число |
|||
4
Ёпрст
28.05.18
✎
09:48
|
остальное будет как ole-объект
|
|||
5
StackOverflow
28.05.18
✎
09:50
|
Даже дело вот в чем: когда делаю так:
ВыборкаБД = ЗапросБД.Выполнить().Выбрать(); Пока ВыборкаБД.Следующий()=1 Цикл Сообщить(ВыборкаБД.Номер); КонецЦикла; Она в цикл не заходит, а когда так ВыборкаБД = ЗапросБД.Выполнить(); Пока ВыборкаБД.Следующий()=1 Цикл Сообщить(ВыборкаБД.Номер); КонецЦикла; Ругается: Поле агрегатного объекта не обнаружено (Следующий) |
|||
6
StackOverflow
28.05.18
✎
09:51
|
Сам запрос я в 8 ке проверил, данные выводятся, так что я склонен считать что косяк не в самом запросе.
|
|||
7
Владимир1С
28.05.18
✎
09:55
|
(6) Все методы к запросу из 8х через точку после объекта OLE.
|
|||
8
НЕА123
28.05.18
✎
10:06
|
(5)
ВыборкаБД.Следующий() тип булево. в 7 нет такого. отладчиком бы глянуть. |
|||
9
Franchiser
гуру
28.05.18
✎
10:09
|
Попробуй по-английски методы писать
|
|||
10
StackOverflow
28.05.18
✎
10:11
|
(7) (8) (9) Спасибо за ответы. Сейчас попробую)
|
|||
11
StackOverflow
28.05.18
✎
10:13
|
А какой тип данных у этого:
ВыборкаБД = ЗапросБД.Выполнить().Выбрать(); или ВыборкаБД = ЗапросБД.Выполнить(); OLE объект вроде или Таблица значений? Просто чтоб знать какие методы к нему применять? |
|||
12
Михаил Козлов
28.05.18
✎
10:18
|
(11) OLE
|
|||
13
hhhh
28.05.18
✎
10:25
|
(10) походу параметры неправильно передаешь. Раз в семерке запрос пустой.
|
|||
14
Мимохожий Однако
28.05.18
✎
10:27
|
(0) Что внутри ЗапросБД? Как получил?
|
|||
15
StackOverflow
28.05.18
✎
10:29
|
(14)
<code> ЗапросБД = РезультатПодключения.NewObject("Запрос"); ЗапросБД.Текст = "ВЫБРАТЬ |ОтражениеЗарплатыВБухучете.Ссылка КАК НаимДок, |ОтражениеЗарплатыВБухучете.ВерсияДанных КАК ВерсияДанных, |ОтражениеЗарплатыВБухучете.ПометкаУдаления КАК ПометкаУдаления, |ОтражениеЗарплатыВБухучете.Номер КАК Номер, |ОтражениеЗарплатыВБухучете.Дата КАК Дата, |ОтражениеЗарплатыВБухучете.Проведен КАК Проведен, |ОтражениеЗарплатыВБухучете.ПериодРегистрации КАК ПериодРегистрации, |ОтражениеЗарплатыВБухучете.Организация КАК Организация, |ОтражениеЗарплатыВБухучете.ЗарплатаОтраженаВБухучете КАК ЗарплатаОтраженаВБухучете, |ОтражениеЗарплатыВБухучете.Бухгалтер КАК Бухгалтер, |ОтражениеЗарплатыВБухучете.КраткийСоставДокумента КАК КраткийСоставДокумента, |ОтражениеЗарплатыВБухучете.Ответственный КАК Ответственный, |ОтражениеЗарплатыВБухучете.Комментарий КАК Комментарий, |ОтражениеЗарплатыВБухучете.НачисленнаяЗарплатаИВзносы.( |Ссылка КАК Ссылка, |НомерСтроки КАК НомерСтроки, |ФизическоеЛицо КАК ФизическоеЛицо, |Подразделение КАК Подразделение, |ВидОперации КАК ВидОперации, |СтатьяФинансирования КАК СтатьяФинансирования, |СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете, |ОблагаетсяЕНВД КАК ОблагаетсяЕНВД, |ВидНачисленияОплатыТрудаДляНУ КАК ВидНачисленияОплатыТрудаДляНУ, |ПериодПринятияРасходов КАК ПериодПринятияРасходов, |Сумма КАК Сумма, |ПФРПоСуммарномуТарифу КАК ПФРПоСуммарномуТарифу, |ПФРДоПредельнойВеличины КАК ПФРДоПредельнойВеличины, |ПФРСПревышения КАК ПФРСПревышения, |ПФРСтраховая КАК ПФРСтраховая, |ПФРНакопительная КАК ПФРНакопительная, |ФСС КАК ФСС, |ФФОМС КАК ФФОМС, |ТФОМС КАК ТФОМС, |ПФРНаДоплатуЛетчикам КАК ПФРНаДоплатуЛетчикам, |ПФРНаДоплатуШахтерам КАК ПФРНаДоплатуШахтерам, |ПФРЗаЗанятыхНаПодземныхИВредныхРаботах КАК ПФРЗаЗанятыхНаПодземныхИВредныхРаботах, |ПФРЗаЗанятыхНаТяжелыхИПрочихРаботах КАК ПФРЗаЗанятыхНаТяжелыхИПрочихРаботах, |ФССНесчастныеСлучаи КАК ФССНесчастныеСлучаи, |ПФРЗаЗанятыхНаПодземныхИВредныхРаботахБезСпецОценки КАК ПФРЗаЗанятыхНаПодземныхИВредныхРаботахБезСпецОценки, |ПФРЗаЗанятыхНаПодземныхИВредныхРаботахСпецОценка КАК ПФРЗаЗанятыхНаПодземныхИВредныхРаботахСпецОценка, |ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахБезСпецОценки КАК ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахБезСпецОценки, |ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахСпецОценка КАК ПФРЗаЗанятыхНаТяжелыхИПрочихРаботахСпецОценка, |МестоВСтруктуреПредприятия КАК МестоВСтруктуреПредприятия |) КАК НачисленнаяЗарплатаИВзносы, |ОтражениеЗарплатыВБухучете.НачисленныйНДФЛ.( | Ссылка КАК Ссылка, | НомерСтроки КАК НомерСтроки, | ФизическоеЛицо КАК ФизическоеЛицо, | ВидОперации КАК ВидОперации, | СтатьяФинансирования КАК СтатьяФинансирования, | КодПоОКАТО КАК КодПоОКАТО, | КодПоОКТМО КАК КодПоОКТМО, | КПП КАК КПП, | КодНалоговогоОргана КАК КодНалоговогоОргана, | Сумма КАК Сумма |) КАК НачисленныйНДФЛ, |ОтражениеЗарплатыВБухучете.УдержаннаяЗарплата.( | Ссылка КАК Ссылка, | НомерСтроки КАК НомерСтроки, | ФизическоеЛицо КАК ФизическоеЛицо, | Подразделение КАК Подразделение, | ВидОперации КАК ВидОперации, | СтатьяФинансирования КАК СтатьяФинансирования, | Контрагент КАК Контрагент, | Сумма КАК Сумма, | МестоВСтруктуреПредприятия КАК МестоВСтруктуреПредприятия |) КАК УдержаннаяЗарплата, |ОтражениеЗарплатыВБухучете.УдалитьОценкаОбязательствИФормированиеРезервов.( | Ссылка КАК Ссылка, | НомерСтроки КАК НомерСтроки, | ФизическоеЛицо КАК ФизическоеЛицо, | ВидОперации КАК ВидОперации, | СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете, | ФОТОценочногоОбязательства КАК ФОТОценочногоОбязательства, | СтраховыеВзносыСФОТОценочногоОбязательстваРезерва КАК СтраховыеВзносыСФОТОценочногоОбязательстваРезерва, | КоличествоНакопленныхДнейОтпуска КАК КоличествоНакопленныхДнейОтпуска, | ОстатокОтпуска КАК ОстатокОтпуска, | СреднийЗаработок КАК СреднийЗаработок |) КАК УдалитьОценкаОбязательствИФормированиеРезервов, |ОтражениеЗарплатыВБухучете.ВыплатаОтпусковЗаСчетРезерва.( | Ссылка КАК Ссылка, | НомерСтроки КАК НомерСтроки, | Сотрудник КАК Сотрудник, | ВидОперации КАК ВидОперации, | Сумма КАК Сумма, | СтраховыеВзносы КАК СтраховыеВзносы, | ФССНесчастныеСлучаи КАК ФССНесчастныеСлучаи, | СтатьяФинансирования КАК СтатьяФинансирования |) КАК ВыплатаОтпусковЗаСчетРезерва, |ОтражениеЗарплатыВБухучете.ФизическиеЛица.( | Ссылка КАК Ссылка, | НомерСтроки КАК НомерСтроки, | ФизическоеЛицо КАК ФизическоеЛицо |) КАК ФизическиеЛица, |ОтражениеЗарплатыВБухучете.Представление КАК Представление, |ОтражениеЗарплатыВБухучете.МоментВремени КАК МоментВремени |ИЗ | Документ.ОтражениеЗарплатыВБухучете КАК ОтражениеЗарплатыВБухучете |ГДЕ | ОтражениеЗарплатыВБухучете.Дата МЕЖДУ &НачДата И &КонДата"; ЗапросБД.УстановитьПараметр("НачДата",НачДата); ЗапросБД.УстановитьПараметр("КонДата",КонДата); </code> |
|||
16
StackOverflow
28.05.18
✎
10:32
|
В консоле запросов выводит документ со всеми данными, но смущает надпись на макете сверху:
Запрос: Документ.ОтражениеЗарплатыВБухучете (Записей в результате: 0) А под ним уже идет таблица с данными где документ и все данные. Вроде все нормально. |
|||
17
Dotoshin
28.05.18
✎
10:34
|
(15) Попробуй вместо ЗапросБД = РезультатПодключения.NewObject("Запрос");
написатьЗапросБД = РезультатПодключения.NewObject("Query"); Вместо УстановитьПараметр - SetParameter, ну и т.д. То есть вместо русскоязычных имен использовать англоязычные |
|||
18
StackOverflow
28.05.18
✎
10:36
|
(17) Сейчас попробую
|
|||
19
hhhh
28.05.18
✎
10:42
|
(18) ЗапросБД.УстановитьПараметр("КонДата",КонДата);
вот тут проверьте. в семерке дата без секунд. выражение МЕЖДУ тут не прокатит |
|||
20
StackOverflow
28.05.18
✎
10:44
|
По англ не работает.
Ругается что Поле агрегатного объекта не обнаружено (next) Как правильнее? Мне кажется первый вариант. Но тогда странно почему он цикл игнорит, значит в выборку ничего не попадает получается? <code> ВыборкаБД = ЗапросБД.Выполнить().Выбрать(); Пока ВыборкаБД.Следующий()=1 Цикл Сообщить(ВыборкаБД.Номер); КонецЦикла; Она в цикл не заходит, а когда так ВыборкаБД = ЗапросБД.Выполнить(); Пока ВыборкаБД.Следующий()=1 Цикл Сообщить(ВыборкаБД.Номер); КонецЦикла; Ругается: Поле агрегатного объекта не обнаружено (Следующий) </code> |
|||
21
hhhh
28.05.18
✎
10:46
|
(20) следующий() работает только после Выбрать()
заканчивайте чудить. |
|||
22
hhhh
28.05.18
✎
10:48
|
(20) Она в цикл не заходит
это нормально, значит пустая выборка |
|||
23
hhhh
28.05.18
✎
10:50
|
(20) значит у вас нет ни одного документа
МЕЖДУ &НачДата И &КонДата все документы в других периодах расположены |
|||
24
StackOverflow
28.05.18
✎
10:51
|
(22) (23) спасибо, тоже уже стал думать в сторону корявого запроса
|
|||
25
StackOverflow
28.05.18
✎
12:35
|
Обнаружил то что даже самые простые запросы не обрабатываются и соответственно в 7 ку возвращается пустота. Может следует писать запрос в 8ку с директивой на Сервере? Если да то как это сделать?
Попробовал такой простейший запрос "ВЫБРАТЬ |ВедомостьПрочихДоходовВБанк.Ссылка КАК Ведомость |ИЗ |Документ.ВедомостьПрочихДоходовВБанк КАК ВедомостьПрочихДоходовВБанк"; В 8 ке все ок а через ole возращается пустота. Так же пробовал просто ссылки документов в запросе простом получить в 7 ку и тоже не фига. Хотя документы есть. Я даже в запросе период не указываю а выбираю тупо все что есть. Может еще конечно проблема в самом коннекторе БазаОЛЕ=СоздатьОбъект("V83.COMConnector") хз. Пытался через БазаОЛЕ=СоздатьОбъект("V83.Aplication") но ругается что нужен пакет обновления sp3 ставить. |
|||
26
Ёпрст
28.05.18
✎
12:36
|
(25) может того, для начала хотя бы представление объекта будешь получать в тексте запроса, а не его ссылку ?
|
|||
27
Ёпрст
28.05.18
✎
12:36
|
ну или там, дату/номер
|
|||
28
НЕА123
28.05.18
✎
12:47
|
||||
29
StackOverflow
28.05.18
✎
12:50
|
(27) (28) спасибо за наставления, буду ковырять дальше
|
|||
30
olegves
28.05.18
✎
12:51
|
ЗапросБД.УстановитьПараметр("КонДата",РезультатПодключения.Дата(здесь укажи числовые значения даты и времени));
|
|||
31
StackOverflow
28.05.18
✎
13:58
|
Стал пробовать не через запрос а через выборку документов, та же история.
Процедура Выгрузить() НовыйПодключенныйОбъект = СоздатьОбъект("V83.COMConnector"); v8 = НовыйПодключенныйОбъект.Connect("File=""" + СокрЛП(ПутьПодключения) + """; Usr=""" + СокрЛП(Пользователь) + """; Pwd=""" + СокрЛП(Пароль) + """"); Если v8=0 Тогда Сообщить("Ошибка открытия базы!", "!"); СтатусВозврата(0); Иначе Сообщить("База удачно подключена"); КонецЕсли; ДокВыборка = v8.Документы.ОтражениеЗарплатыВБухучете.Выбрать('20170101','20181231'); Пока ДокВыборка.Следующий() =1 Цикл ДокОбразец = ДокВыборка.ПолучитьОбъект(); Сообщить(ДокОбразец.Номер); КонецЦикла; Сообщить("Конец операции"); КонецПроцедуры |
|||
32
StackOverflow
28.05.18
✎
14:21
|
А может быть так что на стороне клиента этих данных попросту нет и надо делать запрос с директивой обработки на сервере? Я же обращаюсь к ЗУП которая на управляемых формах? Как считаете? Или херню написал?
Если я прав как в таком случае в запрос передать эту директиву обработки? |
|||
33
НЕА123
28.05.18
✎
14:22
|
даже (30) не сделал.
и все-таки, что выдает сообщить(ДокВыборка.Следующий()) |
|||
34
StackOverflow
28.05.18
✎
14:24
|
(33) Я попробовал у меня не получилось.
А циклы выборки тупо пропускаются как будто бы там ничего неть. |
|||
35
StackOverflow
28.05.18
✎
14:25
|
Я и через запрос пробовал и через выборку документов без запроса. И одна и та же фигня, хотя документы сто пудова есть и к базе обращаюсь к которой надо. Я уже все досконально проверил.
|
|||
36
StackOverflow
28.05.18
✎
14:31
|
(33) и все-таки, что выдает
сообщить(ДокВыборка.Следующий()) Выдает 0 |
|||
37
olegves
28.05.18
✎
14:47
|
(36) ищи или ошибка в строке подключения, или в запросе
|
|||
38
olegves
28.05.18
✎
14:48
|
или права пользователя
|
|||
39
StackOverflow
28.05.18
✎
14:51
|
(37) (38) спасибо за наводки, буду разбираться
|
|||
40
Михаил Козлов
28.05.18
✎
14:51
|
Получите запросом все документы (без фильтра по датам) и сообщите их количество.
|
|||
41
StackOverflow
28.05.18
✎
14:53
|
(40) Тоже опроую, спасибо
|
|||
42
StackOverflow
28.05.18
✎
15:55
|
Сделал такой запрос, без даты, просто за весь период по этому типу документа
ЗапросБД = РезультатПодключения.NewObject("Запрос"); ЗапросБД.Текст = "ВЫБРАТЬ |ОтражениеЗарплатыВБухучете.Ссылка КАК Ссылка, |ОтражениеЗарплатыВБухучете.Номер КАК Номер, |ОтражениеЗарплатыВБухучете.Дата КАК Дата |ИЗ | Документ.ОтражениеЗарплатыВБухучете КАК ОтражениеЗарплатыВБухучете"; сообщить(ВыборкаБД.Следующий()); Пока ВыборкаБД.Следующий()=1 Цикл Сообщить(ВыборкаБД.Номер); КонецЦикла; В цикл оно не зашло, но вот это сообщить(ВыборкаБД.Следующий()); сообщило как -1 |
|||
43
StackOverflow
28.05.18
✎
15:56
|
перед выборкой пропустил строку еще в коде выше
ВыборкаБД = ЗапросБД.Выполнить().Выбрать(); |
|||
44
Михаил Козлов
28.05.18
✎
15:58
|
Сообщить("Количество документов = "+выборкаБД.Количество());
|
|||
45
StackOverflow
28.05.18
✎
15:58
|
(44) сейчас попробую
|
|||
46
StackOverflow
28.05.18
✎
15:59
|
(44) Количество документов = 1
|
|||
47
Franchiser
гуру
28.05.18
✎
16:06
|
У меня в 7ке так сделано:
Данные = Соединение.GetData(НачДата,КонДата, 1, Толщина, Шаг, Потери) |
|||
48
Franchiser
гуру
28.05.18
✎
16:11
|
Процедура ЗаполнитьТаблицу(ДанныеТаблицы)
КолтчествоКолонок = ДанныеТаблицы.Columns.Count()-1; КоличествоСтрок = ДанныеТаблицы.Count()-1; Для Счетчик = 0 по КоличествоСтрок Цикл Состояние("Обработано - " + Формат(Счетчик*100/КоличествоСтрок,"Ч5.2")+"%"); ТаблицаДанных.НоваяСтрока(); Для СчетчикКолонок = 0 По КолтчествоКолонок Цикл ТаблицаДанных.УстановитьЗначение(ТаблицаДанных.НомерСтроки,СчетчикКолонок+1,ДанныеТаблицы.Get(Счетчик).Get(СчетчикКолонок)); КонецЦикла КонецЦикла; КонецПроцедуры |
|||
49
Михаил Козлов
28.05.18
✎
16:13
|
(46) А на самом деле?
В цикл должен попадать. |
|||
50
Franchiser
гуру
28.05.18
✎
16:15
|
НУ или пиши пока ВыборкаБД.Следующий()=-1.
Что-то с курсором не то. |
|||
51
StackOverflow
28.05.18
✎
16:17
|
(49) чесн слово Количество документов = 1 пишет
|
|||
52
StackOverflow
28.05.18
✎
16:21
|
(49) Но цикл упорно игнорирует
Сообщить("Количество документов = "+ ВыборкаБД.Количество()); Пока ВыборкаБД.Следующий() = 1 Цикл Сообщить(ВыборкаБД.Номер); КонецЦикла; |
|||
53
StackOverflow
28.05.18
✎
16:21
|
(50) попробую сейчас
|
|||
54
StackOverflow
28.05.18
✎
16:24
|
перед циклом у меня есть такие сообщения
Сообщить("Выборка БД следующий = "+ ВыборкаБД.Следующий()); Сообщить("Количество документов = "+ ВыборкаБД.Количество()); Первое пишет -1 Второе 1 |
|||
55
Михаил Козлов
28.05.18
✎
16:25
|
ВыборкаБД.Следующий() не нужно.
|
|||
56
StackOverflow
28.05.18
✎
16:30
|
(50) Пока ВыборкаБД.Следующий() = -1 тоже цикл игнорит
|
|||
57
hhhh
28.05.18
✎
16:32
|
(56) ты де 2 раза делаешь следующий() Значит только если 2 документа, войдет в цикл
|
|||
58
StackOverflow
28.05.18
✎
16:38
|
(57) не понял.
ЗапросБД = РезультатПодключения.NewObject("Запрос"); ЗапросБД.Текст = "ВЫБРАТЬ |ОтражениеЗарплатыВБухучете.Ссылка КАК Ссылка, |ОтражениеЗарплатыВБухучете.Номер КАК Номер, |ОтражениеЗарплатыВБухучете.Дата КАК Дата |ИЗ | Документ.ОтражениеЗарплатыВБухучете КАК ОтражениеЗарплатыВБухучете"; ВыборкаБД = ЗапросБД.Выполнить().Выбрать(); Сообщить("Количество документов = "+ ВыборкаБД.Количество()); Пока ВыборкаБД.Следующий() = 1 Цикл Сообщить(ВыборкаБД.Номер); КонецЦикла; Сообщить("Документ получен"); КонецПроцедуры |
|||
59
Михаил Козлов
28.05.18
✎
16:39
|
(58) Так заходит в цикл или нет?
|
|||
60
Ёпрст
28.05.18
✎
16:41
|
(58) так пробуй
Пока ВыборкаБД.Следующий() = -1 Цикл Сообщить(ВыборкаБД.Номер); КонецЦикла; |
|||
61
StackOverflow
28.05.18
✎
16:41
|
(59) не заходит. пропускает, зараза. не пойму почему
|
|||
62
StackOverflow
28.05.18
✎
16:42
|
(60) я пробовал, тоже пропускает цикл
|
|||
63
StackOverflow
28.05.18
✎
16:42
|
(60) о, сработало
|
|||
64
StackOverflow
28.05.18
✎
16:43
|
хотя до этого пробовал 2 раза. странно конечно. но спасибо. хоть какой то сдвиг
|
|||
65
StackOverflow
28.05.18
✎
16:44
|
Спасибо братцы, вроде заработало.
Всех благодарю! |
|||
66
Сияющий в темноте
29.05.18
✎
10:13
|
Пока Следующий()<>0 цикл
ну нет булево в семерке и -1 не всегда булево,а вот False всегда 0! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |