Имя: Пароль:
1C
1С v8
Помогите сформировать запрос
,
0 KuJIT
 
29.01.14
14:22
Такие дела: Есть документ "Медицинский документ", у него есть реквизит1, реквизит2 и дата. У меня есть параметр, которому должен быть равен реквизит1, при этом мне нужны только документы с различными Реквизитами2 (из тех, что с одинаковым Реквизитом2 выбираю тот, у которого дата позже). Можно такой запрос сделать? И как?
1 vicof
 
29.01.14
14:24
Можно, 5000 р.
2 Beduin
 
29.01.14
14:24
Группируй по дате относительно реквизит2. Короче тупая задача по валюте. Смотри как у Гилева.
3 Ненавижу 1С
 
гуру
29.01.14
14:24
можно, 4900
4 butterbean
 
29.01.14
14:25
МАКСИМУМ(Дата) + СГРУППИРОВАТЬ ПО Реквизит2
5 Enders
 
29.01.14
14:25
Можно, 700 грн
6 Classic
 
29.01.14
14:26
300$
7 salvator
 
29.01.14
14:26
Да, 1000 евро
8 Beduin
 
29.01.14
14:26
Где то есть сайт, там автор за самый лучший ответ деньги пересылает.
9 KuJIT
 
29.01.14
14:35
(8) Лол. Это явно не он)
10 KuJIT
 
29.01.14
14:42
(4) Не очень понятно. Как модифицировать
    Запрос.Текст =  "ВЫБРАТЬ
                    |    МедицинскийДокумент.ТелоМедицинскогоДокумента,
                    |    МедицинскийДокумент.Дата
                    |ИЗ
                    |    Документ.МедицинскийДокумент КАК МедицинскийДокумент
                    |ГДЕ
                    |    МедицинскийДокумент.МедицинскаяКарта.Ссылка = &МКСсылка"
11 salvator
 
29.01.14
14:44
(10)
Открой конструктор и сгруппируй по ТелоМедицинскогоДокумента, с максимум по дате
12 Ненавижу 1С
 
гуру
29.01.14
14:48
пример:

ВЫБРАТЬ
    ЗаказПокупателя.СкладГруппа,
    МАКСИМУМ(ЗаказПокупателя.Дата) КАК Дата
ПОМЕСТИТЬ Временная
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ЗаказПокупателя.Контрагент = &Контрагент

СГРУППИРОВАТЬ ПО
    ЗаказПокупателя.СкладГруппа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаказПокупателя.Ссылка,
    Временная.СкладГруппа,
    Временная.Дата
ИЗ
    Временная КАК Временная
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
        ПО Временная.СкладГруппа = ЗаказПокупателя.СкладГруппа
            И Временная.Дата = ЗаказПокупателя.Дата
ГДЕ
    ЗаказПокупателя.Контрагент = &Контрагент
13 WildSery
 
29.01.14
14:54
(12) Задача решена неверно, не выполнено условие "при этом мне нужны только документы с различными Реквизитами2"
Необходимо добавить
ИМЕЮЩИЕ НЕ МАКСИМУМ(ЗаказПокупателя.Дата) = МИНИМУМ(ЗаказПокупателя.Дата)
14 WildSery
 
29.01.14
14:55
И группировать, разумеется, не по складу, а по заказу.
15 Ненавижу 1С
 
гуру
29.01.14
14:57
(13) не тупи
я думаю, я правиьно понял автора
16 KuJIT
 
29.01.14
14:58
Запрос.Текст =  "ВЫБРАТЬ
                    |    МедицинскийДокумент.ТелоМедицинскогоДокумента,
                    |    МАКСИМУМ(МедицинскийДокумент.Дата) КАК Дата
                    |ИЗ
                    |    Документ.МедицинскийДокумент КАК МедицинскийДокумент
                    |ГДЕ
                    |    МедицинскийДокумент.МедицинскаяКарта.Ссылка = &МКСсылка
                    |
                    |СГРУППИРОВАТЬ ПО
                    |    МедицинскийДокумент.ТелоМедицинскогоДокумента"
                    ;
Так? Так ругается, что "Недопустимое поле для групировки"
17 Ненавижу 1С
 
гуру
29.01.14
15:01
(16) чукча писатель?
18 WildSery
 
29.01.14
15:02
(15) Я не вижу признаков, что правильно.
19 Ёпрст
 
29.01.14
15:03
(18) огласите первичные признаки "правильности"
20 WildSery
 
29.01.14
15:05
(19) Описание задачи автором плюс обоснованные умозаключения.
21 Ёпрст
 
29.01.14
15:06
(20) огласите обоснованные умозаключения
22 WildSery
 
29.01.14
15:12
(21) В данной теме я умозаключений не делал.
(15) Пожалуй, соглашусь, что туплю. Простая группировка скорее всего именно то, что нужно автору.
23 Simbad
 
29.01.14
15:15
750 руб
24 Ненавижу 1С
 
гуру
29.01.14
15:16
(23) согласен, высылай
25 Simbad
 
29.01.14
15:17
(24) деньги вперед
26 Зойч
 
29.01.14
15:18
Так это же срез последних )))
27 KuJIT
 
29.01.14
15:21
Так срез последних не в регистрах только?
28 KuJIT
 
29.01.14
15:22
(17) Что это значит? В чем косяк?
29 Ненавижу 1С
 
гуру
29.01.14
15:31
(28) см (12)
30 Simbad
 
29.01.14
15:36
Ладно шутка шуткой, стандартная задача на списание по партиям плюс Максимальный док по дате уже нужно выбрать в запросе а не просто отсортировать

code+
ВЫБРАТЬ
    ИсполнительныйЛист.Получатель КАК Получатель,
    МАКСИМУМ(ИсполнительныйЛист.Дата) КАК Дата
ПОМЕСТИТЬ ВТ
ИЗ
    Документ.ИсполнительныйЛист КАК ИсполнительныйЛист
ГДЕ
    ИсполнительныйЛист.Физлицо = &ФЛ

СГРУППИРОВАТЬ ПО
    ИсполнительныйЛист.Получатель

ИНДЕКСИРОВАТЬ ПО
    Получатель,
    Дата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Получатель КАК Получатель,
    ВТ.Дата,
    ИсполнительныйЛист.Ссылка
ИЗ
    Документ.ИсполнительныйЛист КАК ИсполнительныйЛист
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
        ПО ИсполнительныйЛист.Получатель = ВТ.Получатель
            И ИсполнительныйЛист.Дата = ВТ.Дата

УПОРЯДОЧИТЬ ПО
    Получатель
code-
31 Simbad
 
29.01.14
15:40
(16) ns jn,bhfto ljrevtyn f yt rfrjqnnj htrdbpbn gj eckjdb. ns abkmnh yfrkflsdfti yf ytrbq htrdbpbn
32 Simbad
 
29.01.14
15:41
(31) Извините, по условию ты накладываешь фильтр на реквизит а в запросе это сам документ
33 KuJIT
 
29.01.14
16:31
(32) Не понял =/ Если не затруднит, не могли бы Вы изменить мой запрос, чтобы он выполнял поставленную задачу? Бо примеры типа (30) Слишком страшные. =)
34 WildSery
 
29.01.14
16:32
(33) Вы слишком пугливы, пример можно сказать азбучный.
35 13_Mult
 
29.01.14
16:40
(33) Ёпрст, тебе готовый запрос дали. Подставь туда свой док и всё.
36 KuJIT
 
29.01.14
16:46
(35) Окау
37 hhhh
 
29.01.14
17:18
похоже ТелоМедицинскогоДокумента - не группируется
38 KuJIT
 
30.01.14
08:48
(37) И что в таком случае делать?
39 KuJIT
 
30.01.14
09:04
И вообще

{ВнешняяОбработка.МедкнижкаПечать.МодульОбъекта(166,6)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')
                    <<?>>|СГРУППИРОВАТЬ ПО (Проверка: Сервер)
40 KuJIT
 
30.01.14
09:05
Если закомментить

                    //|СГРУППИРОВАТЬ ПО
                    //|    МедицинскийДокумент.Ссылка
                    //|ИНДЕКСИРОВАТЬ ПО
                    //|    Ссылка,    
                    //|    Дата"

Тогда нет ошибки.
41 Ёпрст
 
30.01.14
09:21
(35) никто мне ничего не давал
42 KuJIT
 
30.01.14
09:21
(12) Я создаю запрос1 с текстом первым, задаю параметр, делаю выборку?
Как вообще с временными таблицами работать?
43 Ёпрст
 
30.01.14
09:22
(42) а в чем проблема работы с временными таблицами ?
44 KuJIT
 
30.01.14
09:24
(43) В том, что я чайник.
45 Ёпрст
 
30.01.14
09:26
(44) дык почитай книжки, стань не чайником..
46 KuJIT
 
30.01.14
09:26
Пишк текст первого запроса, устанавливаю параметр, выполняю - таблица сформирована. Создаю 2й запрос, устанавливаю текст, параметр, делаю выборку - профит. Так?
47 Wobland
 
30.01.14
09:26
(42) на 414й странице букваря вижу использование ВТ
48 KuJIT
 
30.01.14
09:27
(47) Букваря?
49 Wobland
 
30.01.14
09:28
(48) Радченко М.Г., Хрусталева Е.Ю. 1С Предприятие 8.2. Практическое пособие разработчика (2009)
50 Ёпрст
 
30.01.14
09:29
(46) пишешь пакетный запрос, например, первый запрос выгребает что-то во временную табличку, второй, третий,..n-ый запрос может выгребать данные из этой таблички.. всё собственно.
51 KuJIT
 
30.01.14
09:32
В любом случае, не группируется по нужному мне полю =/
52 KuJIT
 
30.01.14
09:38
"Недопустимое поле для групировки"
53 salvator
 
30.01.14
09:39
Запрос скинь полностью.
54 KuJIT
 
30.01.14
09:43
Запрос.Текст = "ВЫБРАТЬ
                      |    МедицинскийДокумент.ТелоМедицинскогоДокумента,
                   |    МАКСИМУМ(МедицинскийДокумент.Дата) КАК Дата
                   |ПОМЕСТИТЬ Временная
                   |ИЗ
                   |    Документ.МедицинскийДокумент КАК МедицинскийДокумент
                   |ГДЕ
                      |    МедицинскийДокумент.МедицинскаяКарта = &МедицинскаяКарта
                   |СГРУППИРОВАТЬ ПО
                   |    МедицинскийДокумент."
                   ;
    Запрос.УстановитьПараметр("МедицинскаяКарта", МассивОбъектов[0]);
    Запрос.Выполнить();
    
    Запрос2 = Новый Запрос;
    Запрос2.Текст = "
            |        ВЫБРАТЬ
            |        МедицинскийДокумент.Ссылка,
            |        Временная.ТелоМедицинскогоДокумента,
            |        Временная.Дата
            |    ИЗ
            |        Временная КАК Временная
            |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.МедицинскийДокумент КАК МедицинскийДокумент
            |            ПО Временная.ТелоМедицинскогоДокумента = МедицинскийДокумент.ТелоМедицинскогоДокумента
            |                И Временная.Дата = МедицинскийДокумент.Дата
            |    ГДЕ
            |        МедицинскийДокумент.МедицинскаяКарта = &МедицинскаяКарта"
            ;
55 KuJIT
 
30.01.14
09:43
Собсно ошибка появляется, когда пытается выполнить Запрос.Выполнить();
56 salvator
 
30.01.14
09:47
(55) Точку убери в имени поля группировки.
И пользуйся конструктором, коли не умеешь писать руками.
Там и научишься писать запросы со временными таблицами, заодно.
57 KuJIT
 
30.01.14
09:54
(56) Так не в точке дело) Я прочто при копипасте не все скопипастил, видимо. По примеру там должно быть "МедицинскийДокумент.ТелоМедицинскогоДокумента"
58 Мимохожий Однако
 
30.01.14
09:56
Опиши типы реквизитов. Погадаю: ТелоМедицинскогоДокумент с типом Строка неограниченной длины.
59 KuJIT
 
30.01.14
10:01
Ну, я тоже гуглил =)
ТелоМедицинскогоДокумента имеет тип "хранилище значений", что, вероятно, то же самое. Вообще в нем хранится xml-строка.
60 13_Mult
 
30.01.14
10:49
(43) Ух ты ж, это же надо как бывает ))).
Независимо от того, куда вы едете — это в гору и против ветра!