Имя: Пароль:
1C
1С v8
1с 83 выбрать последний договор у всех контрагентов
0 buketovav
 
30.01.20
16:16
Добрый день, Дорогие Форумчане!
Что-то я совсем голову сломал: как выбрать у всех контрагентов последний договор?
ДОговор - справочник. В договоре есть дата. Регистров сведений с этими данными нет.
Делал одну таблицу с максимумом по дате и вторую с максимумом по ссылке, но это не работает.
Подскажите или поделитесь кодом рабочим.
Заранее благодарю
1 Timon1405
 
30.01.20
16:17
поделитесь нерабочим кодом, будет видно что именно не получается
2 dka80
 
30.01.20
16:18
Выбрать Ссылка, максимум(дата)
Поместить ВТ
из договоры группировать по ссылка
;
Выбрать ссылка из Договоры
Внутреннее соединение ВТ
По договоры.Дата=ВТ.Дата И Договоры.Ссылка=ВТ.ССылка
3 buketovav
 
30.01.20
16:23
(1) аналогично хотел выбрать последние приобретения товаров услуг

ВЫБРАТЬ
    МАКСИМУМ(ПриобретениеТоваровУслугТовары.Ссылка.Дата) КАК Дата,
    ПриобретениеТоваровУслугТовары.Ссылка КАК ПТУ
ПОМЕСТИТЬ ВТ_ПТУДатаМаксимум
ИЗ
    Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
ГДЕ
    ПриобретениеТоваровУслугТовары.Ссылка.Дата <= &ДатаОтчета

СГРУППИРОВАТЬ ПО
    ПриобретениеТоваровУслугТовары.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(ПриобретениеТоваровУслугТовары.Ссылка) КАК ПТУ2,
    ПриобретениеТоваровУслугТовары.Ссылка.Дата КАК Дата
ИЗ
    ВТ_ПТУДатаМаксимум КАК ВТ_ПТУДатаМаксимум
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
        ПО ВТ_ПТУДатаМаксимум.ПТУ = ПриобретениеТоваровУслугТовары.Ссылка
            И ВТ_ПТУДатаМаксимум.Дата = ПриобретениеТоваровУслугТовары.Ссылка.Дата

СГРУППИРОВАТЬ ПО
    ПриобретениеТоваровУслугТовары.Ссылка.Дата
4 buketovav
 
30.01.20
16:25
по ПриобретениюТоваровУслуг хотел получить последнюю закупочную цену
5 dka80
 
30.01.20
16:28
(3) теперь человеческим языком напиши, что ты выбираешь в первом запросе, а что во втором.
Потому что в первом запросе у тебя фигня, и как следствие во втором тоже
6 buketovav
 
30.01.20
16:31
брал пример (кажется) из Радченко и хотел реализовтаь что-то подобное для своих целей

ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура,
    МАКСИМУМ(ТоварыНаСкладах.Регистратор) КАК Регистратор
ИЗ
    (ВЫБРАТЬ
        ТоварыНаСкладах.Номенклатура КАК Номенклатура,
        МАКСИМУМ(ТоварыНаСкладах.Период) КАК Период
    ИЗ
        РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
    ГДЕ
        ТоварыНаСкладах.Период <= &ДатаОтчета И (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг)
    СГРУППИРОВАТЬ ПО
        ТоварыНаСкладах.Номенклатура
    ) КАК ВложенныйЗапрос
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ
        РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
    ПО
        ВложенныйЗапрос.Номенклатура = ТоварыНаСкладах.Номенклатура И ВложенныйЗапрос.Период = ТоварыНаСкладах.Период
ГДЕ
    (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг)
СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Номенклатура
7 buketovav
 
30.01.20
16:32
(5) вот и спрашиваю у Вас всех, как сделать правильно
8 hhhh
 
30.01.20
16:34
(7) как в (2) пробуй
9 Масянька
 
30.01.20
16:35
(6) Ну, написано же "человеческим языком"!
Словами, пальцами (а, нет, пальцев не видно) :)
10 unenu
 
30.01.20
16:35
11 buketovav
 
30.01.20
16:43
(9) не совсем понял, что Вы хотели этим сказать, поясните, пожалуйста
12 buketovav
 
30.01.20
16:43
(10) спасибо, почитаю
13 unenu
 
30.01.20
16:45
(11) женская логика прост, может у нее суп закипел или еще чего
14 Масянька
 
30.01.20
16:47
(11) В (5) написано "теперь человеческим языком напиши, что ты выбираешь в первом запросе, а что во втором. ".
А в (6) запрос.
(13) Про женскую логику говорят все и везде. Про мужскую молчат... А есть ли она?
15 dka80
 
30.01.20
16:50
(7) ты скажи, что ты хочешь в первом запросе выбрать? Я вот вижу, что в первом запросе у тебя выбираются все документы с датой меньше заданной и выбирается максимальная дата из все документов.
Т.е. из исходных данных
Реализация1  01.01.2019
Реализация2  01.02.2019
Реализация3  01.03.2019

у тебя будет результат

Реализация1  01.03.2019
Реализация2  01.03.2019
Реализация3  01.03.2019

Зачем он тебе?
16 unregistered
 
30.01.20
16:52

Выбрать Владелец КАК Владелец, максимум(дата)
Поместить ВТ
из договоры группировать по Владелец
;
Выбрать ВТ.Владелец КАК Контрагент, ссылка КАК Договор из Договоры
Внутреннее соединение ВТ
По договоры.Дата = ВТ.Дата И Договоры.Владелец = ВТ.Владелец


Если у контрагента договоров с одинаковой датой может быть несколько, то придется еще и по МАКСИМУМ(ссылка) группировать, чтобы отобрать только один договор для контрагента.
17 dka80
 
30.01.20
16:52
если ты хочешь получить последнюю закупочную цену, то тебе надо найти последний документ поступления КОНКРЕТНОЙ НОМЕНКЛАТУРЫ, а из него найти уже цену.
18 D_E_S_131
 
30.01.20
17:28
Что-то тема началась с "Договора, у которого есть дата", а уже из ТЧ документа "ПриобретениеТоваровУслуг" данные выбирают. Как так? :)
19 buketovav
 
31.01.20
09:22
(18) да не, тема в том, чтобы выбрать последние данные, если нет у тебя регистров сведений необходимых
20 DrWatson
 
31.01.20
09:32
(19) Тема разве не закрыта? В (16) написали же все.
Насчет регистров сведений - ты знаешь, что он просто хранит данные почти так же как справочник? Когда ты пишешь СрезПоследних, то платформа за тебя генерирует текст запроса с обычной выборкой и группировкой. Т.е. иметь РС не обязательно, это можно сделать самому. Разница только в скорости работы на очень больших объёмах.
21 buketovav
 
31.01.20
20:56
(20) да, все получилось, спасибо