Имя: Пароль:
1C
1С v8
запрос свежих документов
0 PiotrLoginov
 
25.04.13
17:32
Набросал вот так:

   Запрос.Текст = "ВЫБРАТЬ
                  |    ЗаказКлиента.Ссылка,
                  |    ЗаказКлиентаДополнительныеРеквизиты.НомерСтроки
                  |ИЗ
                  |    Документ.ЗаказКлиента КАК ЗаказКлиента
                  |        ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
                  |        ПО (ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ЗаказКлиента.Ссылка)
                  |ГДЕ
                  |    ЗаказКлиента.Дата >= ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ, -7)
                  |    И ЗаказКлиента.Проведен = ЛОЖЬ";

При попытке выполнить конфигуратор зависает. Консоль запросов пишет Ошибки:
--------------------------------------------------------------------------------
25.04.2013 17:31:56
Ошибка СУБД:
Ошибка SQL: Поле не найдено 'T4.IDRRef'
по причине:
Ошибка SQL: Поле не найдено 'T4.IDRRef'

Что делаю не так? Заранее благодарен неописуемо.
1 Нуф-Нуф
 
25.04.13
17:34
имхо твоя база медленно накрывается медной звездой
2 zak555
 
25.04.13
17:35
что за запрос такой ?
3 PiotrLoginov
 
25.04.13
17:57
(1) ТиИ проблем не выявляют
(2) Ну вообще изначально задача получить выборку свежих документов
4 drcrasher
 
25.04.13
17:59
выпили полное соединение и работай только с Документ.ЗаказКлиента.ДополнительныеРеквизиты
5 DrHiHi
 
25.04.13
18:00
(0) почитай немного о соединении ;)) может поможет ;))
6 PiotrLoginov
 
25.04.13
18:06
Да Бог с ними пока,с дополнительными реквизитами. Уже убрал. Я документы за последнюю неделю вообще правильно получаю?
7 PiotrLoginov
 
25.04.13
18:16
Упростил:

   Запрос.Текст = "ВЫБРАТЬ
                  |    ЗаказКлиента.Ссылка
                  |ИЗ
                  |    Документ.ЗаказКлиента КАК ЗаказКлиента
                  |ГДЕ
                  |    ЗаказКлиента.Дата >= &ТекДата
                  |    И ЗаказКлиента.Проведен = ЛОЖЬ";
   Запрос.УстановитьПараметр("ТекДата", ТекущаяДата());

В итоге результат запроса пуст. Хотя непроведенные документы за сегодня точно есть.
8 zak555
 
25.04.13
18:20
(7) херовый запрос
9 serega2671
 
25.04.13
18:22
может не ТекущаяДата()?
10 serega2671
 
25.04.13
18:26
НачалоДня(ТекущаяДата()) хотя бы
11 PiotrLoginov
 
25.04.13
18:27
(8) Поправь если не трудно
12 PiotrLoginov
 
25.04.13
18:30
(10) Помогло. СП читал. Нигде не сказано, что ТекущаяДата() само по себе не работает... Спасибо за подсказку. А как правильно получить последние семь дней ?
13 PiotrLoginov
 
25.04.13
18:32
(10) Кажется начинаю догадываться. Текущая дата - мало. Нужно было дать запросу дату и время
14 PiotrLoginov
 
25.04.13
18:34
Супер. И ДОБАВИТЬКДАТЕ заработало. Вопрос закрыт
15 Rie
 
25.04.13
18:35
Почему-то мне кажется, что сообщения об ошибках в (0) к ТекущаяДата() не имеют ни малейшего отношения. Зато имеют отношение к (1).
16 serega2671
 
25.04.13
18:39
(13) "Текущая дата - мало" --- ТекущаяДата() - МНОГО=))
17 PiotrLoginov
 
25.04.13
18:40
(15) Ну ... как знать. База - файловый вариант. 6 гигов. Сто лет не сжимавшася. Помеченных на удаление элементов тьма. Плюс пользователи там, плюс обмен недоделанный...

(16) :)
18 PiotrLoginov
 
25.04.13
18:41
Про пользователей к тому, что есть товарищи, способные наворотить делов.
19 Rie
 
25.04.13
18:43
(17) IDRRef - так называется поле, в котором хранится Ссылка. Если оно не найдено - становится немного нервно.
20 PiotrLoginov
 
25.04.13
18:49
(19) Да Вы что... Сейчас еще раз попробовал, но уже на рабочей базе - та же ошибка при попытке получить запросом табличную часть ДополнительныеРеквизиты. Но там ведь не у всех этих документов есть строки в этой ТЧ. Где-то заполнено, где-то - нет
21 Umga2002
 
25.04.13
18:52
Э-Эх семерочники!
22 palpetrovich
 
25.04.13
18:55
(20) а так не судьба?
ВЫБРАТЬ
ЗаказКлиентаДополнительныеРеквизиты.Ссылка,
ЗаказКлиентаДополнительныеРеквизиты.НомерСтроки
ИЗ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
23 palpetrovich
 
25.04.13
18:57
+22 зачем какие-то соединения здесь? ...у табчасти тоже есть ссылка есичё :)
24 PiotrLoginov
 
25.04.13
18:58
(22) Понятно )  Ларчик просто открывался. Сейчас попробую... А то уже "становилось немного нервно", ибо попытка получить ТЧ доп. реквизитов документа, где строка точно есть, также привела к ошибке IDRRef
25 Rie
 
25.04.13
18:58
(20) У тебя ПОЛНОЕ СОЕДИНЕНИЕ? Вот где не заполнена ТЧ - становится весело.
26 PiotrLoginov
 
25.04.13
18:59
(23) Да мне на самом деле сама ТЧ не нужна. Я примерялся к ней потому, что планировал далее взяться за выборку документов, не имеющих строк в ТЧ Дополнительные реквизиты.
27 PiotrLoginov
 
25.04.13
19:01
(25) Рассуждал так: Мне нужны ВСЕ документы - как имеющие строки в этой ТЧ, так и не имеющие. А затем я посмотрю, как мне отсеять те, где доп. реквизиты заполнены. Ну и плюс хотелось глянуть в запросе на ВСЕ строки ТЧ. Для наглядности. Поэтому полное соединение. Не пинайте )
28 Rie
 
25.04.13
19:03
(27) Ну, для этого достаточно было левого соединения. Однако если соединение - левое (правое) или полное, то надо бы предвидеть, что в нём и NULL может встретиться.
29 PiotrLoginov
 
25.04.13
19:05
Вот-вот, проверка на NULL наверное и поможет мне получить доки, в которых нет строк ТЧ ДополнительныеРеквизиты. Правда, я еще не докумекал, как это можно будет сделать
30 Rie
 
25.04.13
19:08
(29)
ВЫБРАТЬ
   ЗаказКлиента.Ссылка
ИЗ
   Документ.ЗаказКлиента КАК ЗаказКлиента
   ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
       ПО ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ЗаказКлиента.Ссылка
ГДЕ
   ЗаказКлиентаДополнительныеРеквизиты.Ссылка ЕСТЬ NULL
выдаст те, у кого дополнительных реквизитов нет.
31 PiotrLoginov
 
25.04.13
19:11
(30) Сегодня просто праздник какой-то ) Спасибо.
32 palpetrovich
 
26.04.13
10:06
(30) хм, если
ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ЗаказКлиента.Ссылка
и
ЗаказКлиентаДополнительныеРеквизиты.Ссылка ЕСТЬ NULL
тогда
ЗаказКлиента.Ссылка ЕСТЬ NULL

...че-т не то кажись ;)
33 Rie
 
26.04.13
13:14
(30) С хренов ли? ЗаказКлиента.Ссылка - вполне себе не NULL.
А вот ЗаказКлиентаДополнительныеРеквизиты.Ссылка - может быть NULL, поскольку ЛЕВОЕ СОЕДИНЕНИЕ.
34 GANR
 
26.04.13
13:18
Банальная ошибка - слишком много записей, соответствующих условию соединения ПОЛНОЕ СОЕДИНЕНИЕ. У самих из-за подобной ерунды сервак падал при попытке провести самопальный документ "Закрытие месяца".
35 GANR
 
26.04.13
13:20
Хм, а ТИИ пробовали?
36 GANR
 
26.04.13
13:27
Вероятная причина - полю IDRRef (Ссылка, то есть) во многих документах почему-то было присвоено  о д и н а к о в о е  (возможно, пустое) значение.