Имя: Пароль:
1C
1C 7.7
v7: кривые запросы (продолжаю тупить)
,
0 e-9
 
27.10.14
12:51
//в справочнике Сотрудники есть периодический реквизит ФормаТруда:
мд=СоздатьОбъект("MetaDataWork");
ИДРеквизита=мд.ИДОбъекта(метаданные.Справочник("Сотрудники").Реквизит("ФормаТруда"));
//надо по нему найти все записи из 1sconst:
        ТекстЗапроса = "
        |select T1.ID, T1.date, T1.value, T1.docid, T1.OBJID
        |from 1sconst AS T1
        |where T1.ID=:ФТ
        |order by T1.date desc";
        Запрос.УстановитьТекстовыйПараметр("ФТ", Строка(ИДРеквизита));
- в отладчике запроса вижу, что ИД рекивизта = '1230':
select T1.ID, T1.date, T1.value, T1.docid, T1.OBJID
from 1sconst AS T1
where T1.ID='1230'
order by T1.date desc

В результате - 0 записей. Пошто?!...У каждого сотрудника задана форма труда, и по нескольку раз!

ps. сначала вместо Строка(ИДРеквизита) было просто ИДРеквизита (как везде в инетах пишут), но получал "Operator/operand type mismatch."
1 МихаилМ
 
27.10.14
12:54
тут есть зависимость от к-с либо файловая.
в одном из вариатов нужно дополнять пробелами.
в каком - не помню.
2 dk
 
27.10.14
12:58
а не проще через последнеезначение?

SELECT
    $ПоследнееЗначение.Контрагенты.Глубина(Контрагенты.ID, :ВыбДата) Глубина
    , Контрагенты.ID [Ссылка $Справочник.Контрагенты]
FROM $Справочник.Контрагенты AS Контрагенты With (NOLOCK)
3 e-9
 
27.10.14
12:59
ой, забыл - DBF
...кстати: сначала пытался узнать ИД ФормаТруда без  MetaDataWork - методом научного тыка вывел, что  отображается как Y6 (делал так:
|select top 10 T1.ID, T1.date, T1.value, T1.docid, T1.OBJID
        |from 1sconst AS T1
        |order by T1.date desc";
редактировал кому-то ФормаТруда и смотрел, что запросом выводится).

..Как это упаковать в мозгу??? 1230 - или Y6?
Да, пробовал напрямую подставлять в запрос и 1230, и 'Y6', ' Y6 ' (при этом в дебаггере запроса пробелы обрезались)
4 Ёпрст
 
27.10.14
12:59
(0)

//|where T1.ID=:ФТ
|where T1.ID=$ИсторияРеквизита.Сотрудники.ФормаТруда
5 e-9
 
27.10.14
13:02
(4) Ёпрст, горячо благодарю!!!!!!.......
6 e-9
 
27.10.14
13:06
...и теперь вижу в дебаггере, что ИД выглядит как '  Y6'.
...имеет ли вообще смысл пытаться расковырять - ПОЧЕМУ?!!
Почему с прямыми запросами под дбф так все грустно: роешь-роешь, куришь форумы и мануалы - и раз за разом убеждаешься в неработоспособности большей части образцов:((( Если бы не Ёпрст - не знаю, когда бы я добрался еще и до такой конструкции....
7 e-9
 
27.10.14
15:20
...а как по виду документа фильтровать, подскажите, плиз?
попробовал по аналогии:) не получилось (SELECT...from 1sconst AS T1 inner join 1sjourn AS T2 on (T1.docid = T2.iddoc) WHERE ... AND T2.IDDOCDEF = $Документы.КадровоеПеремещение)
8 Ёпрст
 
27.10.14
15:21
IDDOCDEF = $ВидДокумента.КадровоеПеремещение
9 e-9
 
27.10.14
15:23
(8) спс!!..
10 e-9
 
27.10.14
15:25
+Ёпрст, подскажи, плиз, какой-нить толковый список этих "волшебных слов", а? я имею в виду "ВидДокумента", "ИсторияРеквизита" и т.п. - все то, что понимает метапарсер (для дбф)
11 Ёпрст
 
27.10.14
15:28
почти всё, что и для одбс (и несколько своих конструкций, типа iif и т.д)
http://www.1cpp.ru/docum/html/ODBC.html
12 Ёпрст
 
27.10.14
15:29
13 Ёпрст
 
27.10.14
15:30
ну и это почитай

http://www.1cpp.ru/forumfiles/Attachments/mod_002.zip

ну и самое главное, при пользовании оледб:

http://www.1cpp.ru/forum/YaBB.pl?num=1184317705
14 e-9
 
27.10.14
15:43
...Ура великому Ёпрст'у!! С его помощью я создал нетленный запрос:
        |delete T1
        |from 1sconst AS T1 inner join 1sjourn AS T2 on (T1.docid = T2.iddoc)
        |where T1.ID=$ИсторияРеквизита.Сотрудники.ФормаТруда
        |AND T1.date>={^2014-07-31}
        |AND T2.IDDOCDEF = $ВидДокумента.КадровоеПеремещение";

(которым прибиваю все, что не менее нетленным образом - с помощью кадровых перемещений - нафигачил в периодический реквизит ФормаТруда, начиная с августа сего года)!!
Спасибо:))
15 Ёпрст
 
27.10.14
15:44
Проще надо, проще
truncate table 1sconst
и все делов
:)
16 e-9
 
27.10.14
15:47
(15) Ёпрст, ты понимаешь, что нас могут читать дети??...
Дети, не слушайте его!!!
17 e-9
 
27.10.14
16:07
...кстати, такой вопрос: не хочу подключать срр к боевой базе; корректно ли будет взять 1sconst.dbf, почистить его на тестовой (вышеупомянутым запросом) и скопировать обратно?..
18 Looser-1c
 
27.10.14
16:11
(17) А зачем так извращаться?
19 Ёпрст
 
27.10.14
16:12
(17) да. Только еще переиндексировать надо (или вместе с индексным файлом заменить)
20 e-9
 
27.10.14
16:13
ну, не рассчитал немного поначалу, и понаписал всякого в историю реквизита - документами, поэтому почистить никак, только прямыми запросами (перепроведение не катит - слишком многое цепляет)
21 e-9
 
27.10.14
16:13
(19) так и думал, сенкс!
2 + 2 = 3.9999999999999999999999999999999...