Имя: Пароль:
1C
1C 7.7
v7: Помогите с прямым запросом
,
0 Absurdus
 
09.06.16
13:58
Мета     = СоздатьОбъект("MetaDataWork");
    Запрос     = СоздатьОбъект("ODBCRecordSet");
    ДокЗак               = Мета.ИмяТаблицыШапки("ЗаявкаПокупателя");
    ДокЗакРеквШапкиТП = "SP" + Мета.ИДРеквизитаШапки("ЗаявкаПокупателя", "ТорговыйПредставитель");
    Операция           = "SP" + Мета.ИДРеквизитаШапки("ЗаявкаПокупателя", "ВидОперации");
    СпрТП               = Мета.ИмяТаблицыСправочника("ТорговыеПредставители");
    
    ТекстЗапроса =
    "SELECT
    |DokZak.IDDOC AS DOC,
    |DokZak.Date_Time_IDDoc as DataDok, //тут ошибка
    |DokZak." + Операция + " AS OPER    
    |FROM " + ДокЗак + " AS DokZak
    |left JOIN " + СпрТП + " AS SprTP ON (DokZak." +  ДокЗакРеквШапкиТП + " = SprTP.ID)
    |WHERE DokZak.IDDOC NOT IN
    |                            (
    |                            SELECT SUBSTRING(ParentDoc.PARENTVAL, 7, 9)
    |                            FROM _1SCRDOC As ParentDoc
    |                            ) AND
    |DokZak.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~";  //добавлен отбор по дате
                                
    Запрос.УстановитьТекстовыйПараметр("НачДата", ПолучитьДатуТА());
    Запрос.УстановитьТекстовыйПараметр("КонДата", ТекущаяДата() - 31);

В запросе надо добавить сторки, чтобы отбирать документы за послоедний 31 день. Добавляю - выходит ошибка: Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
{C:\USERS\O\DESKTOP\11.ERT(94)}: State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя столбца "Date_Time_IDDoc".
1 Ёпрст
 
09.06.16
14:01
пилять, зачем такое извращение ?
В 1cpp есть встроенный метапарсер имён
2 Mikeware
 
09.06.16
14:02
7 лет расстрела!
3 Ёпрст
 
09.06.16
14:02
И это, у шапки документа нет поля .Date_Time_IDDoc, оно есть только у _1sjourn
нужно делать соединение с _1sjourn по iddoc и там уже ставить фильтр на дату.
4 Absurdus
 
09.06.16
14:02
(1) Как было. Мне просто в это надо добавить отбор доков за послединй 31 день.
5 trad
 
09.06.16
14:08
Запрос.УстановитьТекстовыйПараметр("НачДата", ПолучитьДатуТА());
    Запрос.УстановитьТекстовыйПараметр("КонДата", ТекущаяДата() - 31);

и над этим надо еще немного подумать
6 Mikeware
 
09.06.16
14:16
(5) тут просто надо "взять и написать" нормально
7 Absurdus
 
09.06.16
14:21
Объясните мне хотя бы, что здесь отбирается?
|WHERE DokZak.IDDOC NOT IN
    |                            (
    |                            SELECT SUBSTRING(ParentDoc.PARENTVAL, 7, 9)
    |                            FROM _1SCRDOC As ParentDoc
    |                            )
8 Ёпрст
 
09.06.16
14:23
(7)
установлен отбор, для заявки покупателя нет подчиненных доков
9 Ёпрст
 
09.06.16
14:24
зачем там только соединения со справочником - хз.
10 Mikeware
 
09.06.16
16:55
(9) Видимо, для отбора по торговому представителю
11 Ёпрст
 
09.06.16
16:59
(10) дык нет ничего ни в условиях ни в полях запроса.
Да и весь код, непонятно зачем так писать было.
12 Mikeware
 
09.06.16
17:05
(11) см (2)