![]() |
|
Не найдено дополнительное типизирующее поле | ☑ | ||
---|---|---|---|---|
0
Холст
11.10.13
✎
02:02
|
ТекстЗапроса = "
|SELECT | J.iddoc as [Док$Документ] |,J.IDDocDef as [Док_вид] |,J.DocNo as Номер |,J.date_time_iddoc as Дата | FROM _1SJourn as J | "; я же указал типизирующее поле, что не так ? |
|||
1
Холст
11.10.13
✎
02:03
|
запрос sql
|
|||
2
КонецЦикла
11.10.13
✎
02:21
|
Попробуй красиво написать
| J.iddoc as [Док $Документ] |,J.IDDocDef as [Док_вид $ВидДокумента] может пробел не поставил... |
|||
3
Холст
11.10.13
✎
02:22
|
данные из sql запроса выводятся в ТП
полный код Пост=СоздатьОбъект("ODBCDataProvider.MSSQL"); База=СоздатьОбъект("ODBCDatabase"); Пост.БазаДанных=База; ТекстЗапроса = " |SELECT | J.iddoc as [Док $Документ] |,J.IDDocDef Док_вид |,J.DocNo as Номер |,J.date_time_iddoc as Дата | FROM _1SJourn as J | "; Пост.Отладка(1); Пост.УстТекстЗапроса(ТекстЗапроса); Пост.УстИДПоле("Док"); Пост.УстКлючПорядка("Дата"); ТП_ДобавитьКолонку("Докк", "Документ",35); ТП_ДобавитьКолонку("Дата",,20); ТП_ДобавитьКолонку("Время",,20); ТП_ДобавитьКолонку("Номер",,30); ТП.ПоставщикДанных=Пост; ТП.ОбновитьСтроки(); |
|||
4
Холст
11.10.13
✎
02:24
|
и с пробелом и без пробела пробовал
|
|||
5
Холст
11.10.13
✎
02:24
|
отлладка сообщает
select top 44 J.date_time_iddoc as Дата, J.iddoc as Док, J.DocNo as Номер from _1SJourn as J order by J.date_time_iddoc |
|||
6
Холст
11.10.13
✎
02:25
|
непонятоно куда из отладки девается строка
|,J.IDDocDef Док_вид |
|||
7
Холст
11.10.13
✎
02:27
|
совместное указание полей
Пост.УстИДПоле("Док,Док_вид"); дает {R:\ТП_Ж_АВИАБИЛЕТЫА.ERT(80)}: Недопустимое указание поля. |
|||
8
Холст
11.10.13
✎
02:30
|
|SELECT
| J.iddoc as [Док $Документ] |,J.IDDocDef as [Док_вид $ВидДокумента] |,J.DocNo as Номер |,J.date_time_iddoc as Дата | FROM _1SJourn as J | "; это тоже для типизации поля "Док", не найдено дополнительное типизирующее поле |
|||
9
КонецЦикла
11.10.13
✎
02:32
|
Давай от простого к сложному :)
Выполни его отдельно, не в качестве поставщика данных А вообще если ничего нет специфического лучше класс готовый юзать |
|||
10
Холст
11.10.13
✎
02:35
|
(9) готовый класс Поставщик данных не осилил пока, не понимаю как в нем указывать для произвольных документов журнал
|
|||
11
КонецЦикла
11.10.13
✎
02:37
|
Документ одного вида там будет?
|
|||
12
Холст
11.10.13
✎
02:40
|
(11) трех видов документы, они не принадлежат одному журналу
дополнительный журнал не хочется заводить |
|||
13
Rie
11.10.13
✎
02:44
|
А какая версия 1С++?
А то ведь было http://www.1cpp.ru/bugs/show_bug.cgi?id=3993 |
|||
14
Холст
11.10.13
✎
02:48
|
на разных машинах
версия 3.2.4.0 bf2 версия 3.0.1.22 |
|||
15
Холст
11.10.13
✎
02:51
|
версия 3.2.2.0
тоже проверил та же ошибка |
|||
16
Rie
11.10.13
✎
02:56
|
Так а если выполнить запрос отдельно - ошибка возникает?
|
|||
17
Холст
11.10.13
✎
03:02
|
(16) не на чем выполнить, нет консоли под рукой
|
|||
18
Злопчинский
11.10.13
✎
03:07
|
ну капец, код напиши на худой случай
|
|||
19
Rie
11.10.13
✎
03:07
|
(17) А зачем консоль?
Просто выполнить, без разницы, что он вернёт. Самый интересный момент - в (6). |
|||
20
Холст
11.10.13
✎
03:44
|
ТекстЗапроса = "
|SELECT | Жур.row_id as row_id, | Жур.Date_Time_IDDoc as Позиция, | | CASE | WHEN Жур.IsMark = 1 THEN 6 | WHEN Жур.Closed & 1 = 1 THEN 1 | ELSE 0 END as Картинка, | | Жур.IDDoc as Документ , | Жур.IDDocDef as Документ_вид | FROM _1SJourn as Жур (NOLOCK) | "; Пост.Отладка(1); Пост.УстТекстЗапроса(ТекстЗапроса); Пост.УстИДПоле("Документ"); Пост.УстКлючПорядка("row_id"); ТП_ДобавитьКолонку("Документ", "Документ",35); ТП_ДобавитьКолонку("Дата",,20); ТП_ДобавитьКолонку("Документ_вид",,20); ТП_ДобавитьКолонку("Позиция",,30); выполнил этот код, в колонку ТП Документ_вид заполнилось десятичными цифрами только, может десятичные надо во чтото преобразовать ? |
|||
21
Rie
11.10.13
✎
03:48
|
(20) Так а если теперь типизировать Документ?
И сказать Отладка(1)? |
|||
22
Холст
11.10.13
✎
03:50
|
заработал в результате такой код
Пост=СоздатьОбъект("ODBCDataProvider.MSSQL"); База=СоздатьОбъект("ODBCDatabase"); Пост.БазаДанных=База; Поле = Пост.Поля.Добавить("Док"); ТекстЗапроса = " |SELECT | Жур.row_id as row_id, | Жур.Date_Time_IDDoc as Позиция, | | CASE | WHEN Жур.IsMark = 1 THEN 6 | WHEN Жур.Closed & 1 = 1 THEN 1 | ELSE 0 END as Картинка, | | Жур.IDDoc as [Документ $Документ], | Жур.IDDocDef as Документ_вид | FROM _1SJourn as Жур (NOLOCK) | "; Пост.Отладка(1); Пост.УстТекстЗапроса(ТекстЗапроса); Пост.УстИДПоле("Документ"); Пост.УстКлючПорядка("row_id"); ТП_ДобавитьКолонку("Документ", "Документ",35); ТП_ДобавитьКолонку("Дата",,20); ТП_ДобавитьКолонку("Документ_вид",,20); ТП_ДобавитьКолонку("Позиция",,30); ТП.ПоставщикДанных=Пост; ТП.ОбновитьСтроки(); хотя типизация и раньше была |
|||
23
Rie
11.10.13
✎
03:53
|
(22) А для интереса - перемести запятые в SELECT начало строк.
Метапарсер иногда излишне чувствителен к подобным деталям. |
|||
24
Холст
11.10.13
✎
04:00
|
сек
|
|||
25
Холст
11.10.13
✎
04:11
|
итак, вроде нашел где порылась собака
Пост=СоздатьОбъект("ODBCDataProvider.MSSQL"); База=СоздатьОбъект("ODBCDatabase"); Пост.БазаДанных=База; Поле = Пост.Поля.Добавить("Док"); ТекстЗапроса = " |SELECT | Жур.row_id as row_id, | Жур.Date_Time_IDDoc as Позиция, | SUBSTRING(Жур.Date_Time_IDDoc,1,8) as [Дата $Дата], | CASE | WHEN Жур.IsMark = 1 THEN 6 | WHEN Жур.Closed & 1 = 1 THEN 1 | ELSE 0 END as Картинка, | Жур.DocNo as Номер, | | Жур.IDDoc as [Документ $Документ], | Жур.IDDocDef as Документ_вид | FROM _1SJourn as Жур (NOLOCK) | "; Пост.Отладка(1); Пост.УстТекстЗапроса(ТекстЗапроса); Пост.УстИДПоле("Документ"); Пост.УстКлючПорядка("row_id"); ТП_ДобавитьКолонку("Документ_вид",,0); ТП_ДобавитьКолонку("Дата",,10); ТП_ДобавитьКолонку("Время",,10); ТП_ДобавитьКолонку("Номер",,14); ТП.ПоставщикДанных=Пост; ТП.ОбновитьСтроки(); вот такой код работает а если в нем закомментировать строку ТП_ДобавитьКолонку("Документ_вид",,0); то не формируется и выдает ошибку из (0) |
|||
26
Злопчинский
11.10.13
✎
05:13
|
ну дык наверное и правильно что не работает если "Документ_вид" - непонятно какого типа - к чему ипизировать то надо..?
|
|||
27
ADirks
11.10.13
✎
06:47
|
(26) Документ_вид абсолютно понятно какого типа - int. У ТС совершенно другая проблема, а именно: парсер запросов в ТП выкидывает доп. колонку с целью оптимизации, а потом жалуется на её отсутствие :) Я бы для начала обновил бы 1С++ до последней версии. Ещё возможно, что колонка 'Документ_вид' воспринимается как доп., а вот '[Документ_вид]' - не воспринимается.
Топикстартеру же рекомендую почитать http://www.script-coding.com/v77tables.html там много полезного |
|||
28
Rie
11.10.13
✎
06:50
|
(27) У ТС достаточно свежая версия 1С++. Проблема у него была в том, что не только в запросе, но и в ТП требовалась типизирующая колонка - (25).
|
|||
29
ADirks
11.10.13
✎
07:20
|
(28) на кой дьявол оно в ТП то?
Поставщик.Поля.Добавить("Документ_вид"); и всех делов, даже автоудаление не надо выключать |
|||
30
Rie
11.10.13
✎
07:25
|
(29) И действительно.
(По ночам надо спать :-) |
|||
31
Холст
11.10.13
✎
11:03
|
"парсер запросов в ТП выкидывает доп. колонку с целью оптимизации"
печально, из-за отсутствия этого знания вчера мной потрачено 4 часа |
|||
32
ADirks
11.10.13
✎
12:12
|
(31) лучше бы эти 4 часа на чтение документации потратил, а то ведь в следующий раз опять на что-нибудь такое наступишь
|
|||
33
trad
11.10.13
✎
12:23
|
(29) а точно автоудаление не нужно выключать?
|
|||
34
ADirks
11.10.13
✎
12:28
|
(33) я проверил - тоже сначала думал, что надо
|
|||
35
trad
11.10.13
✎
12:30
|
(34) видимо с лохматых времен что то изменилось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |