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