Имя: Пароль:
1C
 
Получить запросом последний документ
0 bebibo
 
12.04.24
16:02
Здравствуйте!
Подскажите пожалуйста.
Запросом получаю все продажи (регистр) ,вытаскиваю оттуда номенклатуру ,сумму и количество.
Далее мне нужно получить из документа "Поступление товаров и услуг" ставку НДС по данной номенклатуре. И получить нужно не на дату продажи, а на самую последнюю дату.
то есть было поступление товара 10.04 со ставкой 18% ,и было поступление 11.04 со ставкой 20% ндс. Мне нужен документ от 11.04, со ставкой 20%
Вот подскажите, как мне взять этот самый последний документ?
1 maxab72
 
12.04.24
16:03
ВЫБРАТЬ ПЕРВЫЕ 1
СОРТИРОВАТЬ ПО МойДокумент.Дата УБЫВ
2 Кондер
 
12.04.24
16:07
Бессмысленно, нужна партия
3 bebibo
 
12.04.24
16:08
(1) не работает. Выбрать первые берет 1 позицию. А у меня продаж то не одна строка
4 maxab72
 
12.04.24
16:10
(3) А сколько надо? Задавайте правильный вопрос - получите требуемый ответ.
5 yopQua
 
12.04.24
16:12
(0) максимум по дате, потом соединение
6 bebibo
 
12.04.24
16:23
(5) всё равно несколько строк выдаёт. Было 2 поступления, 2 строки и выдает
7 bebibo
 
12.04.24
16:24
(4) нужен последний документ по номенклатуре каждой
8 arsik
 
гуру
12.04.24
16:30
(7) Вот как то так :)
https://imgur.com/z71r9az
9 youalex
 
12.04.24
16:31
(6) у поступлений одинаковая дата?
показывай запрос
10 Мультук
 
гуру
12.04.24
16:31
(0)

1) Запрос в цикле, да плохо - mista высказывает своё фу, но позволяет получить результат,
после оценки которого произойдет сюжетный твист в тех.задании (если оно конечно есть)


2) Можно построить сначала временную таблицу ВТ_ПОСЛЕДНИЕ_ПОСТУПЛЕНИЯ с колонками:
Номенклатура
СтавкаНДС
ДокуменПоступленияЧистоЧтобыБыл

В (5) подсказали как,  но...

3) Что будешь делать если например на 31.03.2023 23:59:59 по номенклатуре "НекийТовар"
Будет три поступления
БезНДС
18%
20%

Какая из ставок будет "правильная" ?
11 arsik
 
гуру
12.04.24
16:35
(10)
3) Что будешь делать если например на 31.03.2023 23:59:59 по номенклатуре "НекийТовар"
Будет три поступления
БезНДС
18%
20%

И ежу понятно, что такого быть не может
12 СвинТуз
 
12.04.24
16:37
(0)
Примерно такое часто спрашивают на собеседованиях.
Хорошо бы понять как делается.
13 СвинТуз
 
12.04.24
16:39
(0)
У Радченко насколько я помню подобный пример был
в его самой массовой книге.
14 bebibo
 
12.04.24
16:47
(9) данный запрос в первой таблице выдаёт все поступления по выбранной номенклатуре. Во второй таблице получается получить последний документ по дате, но когда я добавляю после ставка, строки становится две.
Третий пакет соответственно дублирует всё по 2 раза.

ВЫБРАТЬ
  ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура,
  ПоступлениеТоваровТовары.СтавкаНДС КАК СтавкаНДС,
  ПоступлениеТоваровТовары.Ссылка.Дата КАК Дата
ПОМЕСТИТЬ втПоступления
ИЗ
  Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
ГДЕ
  ПоступлениеТоваровТовары.Номенклатура = &Номенклатура
;

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

СГРУППИРОВАТЬ ПО
  втПоступления.Номенклатура,
  втПоступления.СтавкаНДС
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
  втПоступления.Номенклатура КАК Номенклатура,
  втПоступления.СтавкаНДС КАК СтавкаНДС
ИЗ
  втПоступления КАК втПоступления
    внутреннее СОЕДИНЕНИЕ втПоследниеДокументы КАК втПоследниеДокументы
    ПО втПоступления.Номенклатура = втПоследниеДокументы.Номенклатура
15 bebibo
 
12.04.24
16:51
Вот вроде заработало
ВЫБРАТЬ
  ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура,
  ПоступлениеТоваровТовары.СтавкаНДС КАК СтавкаНДС,
  ПоступлениеТоваровТовары.Ссылка.Дата КАК Дата
ПОМЕСТИТЬ втПоступления
ИЗ
  Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
ГДЕ
  ПоступлениеТоваровТовары.Номенклатура = &Номенклатура
;

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

СГРУППИРОВАТЬ ПО
  втПоступления.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
  втПоступления.Номенклатура КАК Номенклатура,
  втПоступления.СтавкаНДС КАК СтавкаНДС
ИЗ
  втПоступления КАК втПоступления
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоследниеДокументы КАК втПоследниеДокументы
    ПО (втПоступления.Номенклатура = втПоследниеДокументы.Номенклатура
        И втПоступления.Дата = втПоследниеДокументы.Дата)
16 bebibo
 
12.04.24
16:52
Только теперь сейчас попробую всё это связать с регистром продаж
17 СвинТуз
 
12.04.24
16:54
(0)
Я Вам сейчас в Ваш документ две строки помещу
номенклатуры с разными ставками НДС.
Что делать будете?

Еще одного взломали.
Не верю что после 5 лет можно такое писать.
18 СвинТуз
 
12.04.24
16:55
(15)
Таки открыли Радченко? Как оттуда срисовано.
19 d4rkmesa
 
гуру
12.04.24
17:00
(3) Мне кажется, это намек на коррелируемый запрос.
20 СвинТуз
 
12.04.24
17:01
(15) (17)
Только видимо номенклатура должна быть в каком то списке.
И то что в (15) может двоить строки потенциально.
Если в документе будет две строки по одной номенклатуре с разными ставками.

А так ... БИНГО!
21 СвинТуз
 
12.04.24
17:03
(20)
И ... Дата это не комильфо.
По одной дате можно больше одного документа получить.
Это Вам не регистр сведений.
22 СвинТуз
 
12.04.24
17:04
А так же признак проведения. Или хотя бы отсутствие пометки удаления.

Средней паршивости код.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.