Имя: Пароль:
1C
1С v8
Как отобрать по последнему регистратору???
0 axell
 
04.06.12
15:52
ВЫБРАТЬ
   ПланыЗакупокОбороты.Номенклатура КАК Номенклатура,
   ПланыЗакупокОбороты.КоличествоОборот КАК КоличествоОборот,
   ПланыЗакупокОбороты.СтоимостьОборот КАК СтоимостьОборот,
   МАКСИМУМ(ПланыЗакупокОбороты.Регистратор.Дата) КАК РегистраторДата,
   ПланыЗакупокОбороты.Регистратор.Ссылка КАК РегистраторСсылка
ИЗ
   РегистрНакопления.ПланыЗакупок.Обороты(
           &НачПериода,
           &КонПериода,
           Регистратор,
           Проект = &Проект
               И Сценарий = &Сценарий) КАК ПланыЗакупокОбороты

СГРУППИРОВАТЬ ПО
   ПланыЗакупокОбороты.Номенклатура,
   ПланыЗакупокОбороты.КоличествоОборот,
   ПланыЗакупокОбороты.СтоимостьОборот,
   ПланыЗакупокОбороты.Регистратор.Ссылка
Ребята помогите с запросом никак не могу выбрать данные из регистра накопления план закупок по последнему регистратору!
1 sapphire
 
04.06.12
15:53
(0) Насильник :)
2 LouRENs
 
04.06.12
15:55
максимум(дата) в группировке ?
3 sapphire
 
04.06.12
15:55
+(1) Бред редкостный в (0) :)))
Что именно надо получить на выходе?
последний регистратор с его оборотами по заданному критерию?
4 axell
 
04.06.12
15:58
(2)Да
(3)То что упало в регистр последним регистратором
Ребята ситуация следующая в месяце заводится док. план закупок н-количество. Каждый последний является корректирующим, т.е актуальным. Вот и нужно на выходе получить номенклатуру и количество по последнему регистратору
5 shuhard
 
04.06.12
16:06
(4)решение задачи зависит от того, могут ли быть в одну секунду два регистратора
если нет - сначала найди максимальную дату
а по ней возьми движения регистратора
6 LouRENs
 
04.06.12
16:09
ВЫБРАТЬ
   ПланыЗакупокОбороты.Регистратор.Ссылка,
   ПланыЗакупокОбороты.Регистратор.Дата,
   ПланыЗакупокОбороты.ХарактеристикаНоменклатуры,
   ПланыЗакупокОбороты.Номенклатура,
   ПланыЗакупокОбороты.КоличествоОборот,
   ПланыЗакупокОбороты.СтоимостьОборот
ИЗ
   РегистрНакопления.ПланыЗакупок.Обороты(, , Регистратор, ) КАК ПланыЗакупокОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ПланыЗакупокОбороты.Номенклатура КАК Номенклатура,
           ПланыЗакупокОбороты.КоличествоОборот КАК КоличествоОборот,
           ПланыЗакупокОбороты.СтоимостьОборот КАК СтоимостьОборот,
           МАКСИМУМ(ПланыЗакупокОбороты.Регистратор.Дата) КАК РегистраторДата,
           ПланыЗакупокОбороты.Регистратор.Ссылка КАК РегистраторСсылка
       ИЗ
           РегистрНакопления.ПланыЗакупок.Обороты(
                   &НачПериода,
                   &КонПериода,
                   Регистратор,
                   Проект = &Проект
                       И Сценарий = &Сценарий) КАК ПланыЗакупокОбороты
       
       СГРУППИРОВАТЬ ПО
           ПланыЗакупокОбороты.Номенклатура,
           ПланыЗакупокОбороты.КоличествоОборот,
           ПланыЗакупокОбороты.СтоимостьОборот,
           ПланыЗакупокОбороты.Регистратор.Ссылка) КАК ВложенныйЗапрос
       ПО ПланыЗакупокОбороты.Регистратор = ВложенныйЗапрос.РегистраторСсылка
7 shuhard
 
04.06.12
16:14
(6)[ВЫБРАТЬ
           ПланыЗакупокОбороты.Номенклатура КАК Номенклатура,
           ПланыЗакупокОбороты.КоличествоОборот КАК КоличествоОборот,
           ПланыЗакупокОбороты.СтоимостьОборот КАК СтоимостьОборот,
           МАКСИМУМ(ПланыЗакупокОбороты.Регистратор.Дата) КАК РегистраторДата,
           ПланыЗакупокОбороты.Регистратор.Ссылка КАК РегистраторСсылка
       ИЗ
           РегистрНакопления.ПланыЗакупок.Обороты(
                   &НачПериода,
                   &КонПериода,
                   Регистратор,
                   Проект = &Проект
                       И Сценарий = &Сценарий) КАК ПланыЗакупокОбороты
       
       СГРУППИРОВАТЬ ПО
           ПланыЗакупокОбороты.Номенклатура,
           ПланыЗакупокОбороты.КоличествоОборот,
           ПланыЗакупокОбороты.СтоимостьОборот,
           ПланыЗакупокОбороты.Регистратор.Ссылка]


не взлетит
8 axell
 
04.06.12
16:21
(6)Антон все равно нихера не понял, ну да я осел.... то ли соединение выводится на одну номенклатуру большое количество строк
(7)а как взлетит???
9 shuhard
 
04.06.12
16:22
(8) ещё раз:
в одну секунду может быть два регистратора или нет ?
10 axell
 
04.06.12
16:24
(9)Нет
11 shuhard
 
04.06.12
16:28
(10) ВЫБРАТЬ
   МАКСИМУМ(ПланыЗакупокОбороты.Регистратор.Дата) КАК РегистраторДата
ПОМЕСТИТЬ ДатаПоследнегоРегистратора
ИЗ
   РегистрНакопления.ПланыЗакупок.Обороты(, , Регистратор, ) КАК ПланыЗакупокОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПланыЗакупокОбороты.Номенклатура,
   ПланыЗакупокОбороты.КоличествоОборот,
   ПланыЗакупокОбороты.СтоимостьОборот
ИЗ
   РегистрНакопления.ПланыЗакупок.Обороты(, , Регистратор, ) КАК ПланыЗакупокОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатаПоследнегоРегистратора КАК ДатаПоследнегоРегистратора
       ПО ПланыЗакупокОбороты.Регистратор.Дата = ДатаПоследнегоРегистратора.РегистраторДата
12 shuhard
 
04.06.12
16:33
(11) если есть в одну секунду, то можно по номеру отсортировать, хотя это явная условность:
ВЫБРАТЬ
   МАКСИМУМ(ПланыЗакупокОбороты.Регистратор.Дата) КАК РегистраторДата
ПОМЕСТИТЬ ДатаПоследнегоРегистратора
ИЗ
   РегистрНакопления.ПланыЗакупок.Обороты(, , Регистратор, ) КАК ПланыЗакупокОбороты
;

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

УПОРЯДОЧИТЬ ПО
   ПланыЗакупокОбороты.Регистратор.Номер УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПланыЗакупокОбороты.Регистратор,
   ПланыЗакупокОбороты.Номенклатура,
   ПланыЗакупокОбороты.КоличествоОборот,
   ПланыЗакупокОбороты.СтоимостьОборот
ИЗ
   РегистрНакопления.ПланыЗакупок.Обороты(, , Регистратор, ) КАК ПланыЗакупокОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ КрайнийРегистратор КАК КрайнийРегистратор
       ПО ПланыЗакупокОбороты.Регистратор = КрайнийРегистратор.Регистратор
13 sapphire
 
04.06.12
16:39
(10) Врешь, может
14 sapphire
 
04.06.12
16:42
(9) Что им мешает быть одновременно? Регистратор - это измерение. Стало быть, от периода не зависит.
15 shuhard
 
04.06.12
16:44
(14) с точки зрения УПП мешать может дописка
с точки зрения бизнес-процессов - административный регламент

случай сферического коня изучен в (12)
16 sapphire
 
04.06.12
16:45
(0) У тебя регистратор (тип документа) ТОЛЬКО один, или еще есть?
17 acsent
 
04.06.12
16:45
(11) зачем тут использовать вт обороты?
18 acsent
 
04.06.12
16:45
и если вдруг не бывает движений другой датой, то лучше брать макс(период)
19 shuhard
 
04.06.12
16:46
(17) чтобы не проверять возможность движений не проведённого документа
20 sapphire
 
04.06.12
16:47
(12) Можно и без времянок обойтись и уж тем паче, незачем использовать виртуальную таблицу
21 shuhard
 
04.06.12
16:47
(18) чей период - плана ?
не годится
22 sapphire
 
04.06.12
16:47
(18) согласен с (21).
23 sapphire
 
04.06.12
16:48
(19) Если такое имеет место быть то проще наложить собственные условия, нежели гнать в виртуалку.
24 shuhard
 
04.06.12
16:51
(23) тебе с шашечками или ехать =) ?
25 ILM
 
гуру
04.06.12
16:54
(0) В постановке у вас батенька ошибочка.
[Каждый последний регистратор корректирующий] - То есть вы получите данные только по последнему документу? Тогда у вас регистр в 0 не сведется. Корректировка должна быть с минусом предыдущего, и плюсом последнего. Тогда текущие остатки регистра будут планом. А иначе разные номенклатуры введенные разными документами, дадут разную картину плана и тогда в (12) придется отбирать все последние регистраторы за период, и номенклатуру выбирать не из одного последнего регистратора, а из всех разных последних регистраторов.

Если правильно вводить корректировку, то текущий остаток и будет последним планом.
26 axell
 
05.06.12
09:30
(23)Спасибо за запрос, ну вот в чем беда запрос получает последний регистратор в регистре и по нему смотрит то что упало в регистр, но ведь есть за период и другая номенклатура для которой есть свой последний регистратор в периоде.
27 hhhh
 
05.06.12
10:16
(26) ну там так и есть. Для каждой номенклатуры свой последний регистратор.
28 axell
 
05.06.12
10:39
(27)ты про (12)???
29 shuhard
 
05.06.12
12:33
(26) ну и что мешает добавить группировку  по номенклатуре ?
30 axell
 
05.06.12
13:35
(29)Я окончательный баран и лечению не поддаюсь смотри
http://www.screencast.com/t/Wxc8wIOmuKEA
результат запроса т.е запрос в самом начале
ВЫБРАТЬ
   МАКСИМУМ(ПланыЗакупокОбороты.Регистратор.Дата) КАК РегистраторДата
ПОМЕСТИТЬ ДатаПоследнегоРегистратора
ИЗ
   РегистрНакопления.ПланыЗакупок.Обороты(
           ,
           ,
           Регистратор,
           Сценарий = &Сценарий
               И Проект = &Проект) КАК ПланыЗакупокОбороты
;

получаем самый последний по дате регистратор

потом

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

УПОРЯДОЧИТЬ ПО
   ПланыЗакупокОбороты.Регистратор.Номер УБЫВ

получаем на него ссылку

и в заключении выбираем все из регистра по ссылке последнего регистратора

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

А как  методом (29) изменить я так и не понял
31 shuhard
 
05.06.12
14:40
(30) ну и что мешает добавить группировку  по номенклатуре:


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

СГРУППИРОВАТЬ ПО
   ПланыЗакупокОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПланыЗакупокОбороты.Регистратор,
   ДатаПоследнегоРегистратора.РегистраторДата,
   ПланыЗакупокОбороты.Номенклатура,
   ПланыЗакупокОбороты.КоличествоОборот
ИЗ
   РегистрНакопления.ПланыЗакупок.Обороты(, , Регистратор, ) КАК ПланыЗакупокОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатаПоследнегоРегистратора КАК ДатаПоследнегоРегистратора
       ПО ПланыЗакупокОбороты.Регистратор.Дата = ДатаПоследнегоРегистратора.РегистраторДата
           И ПланыЗакупокОбороты.Номенклатура = ДатаПоследнегоРегистратора.Номенклатура
32 axell
 
05.06.12
16:24
Ребята всем большое спасибо! Вразумили!
(31)Персонально большое спасибо! Теперь все стало понятнее и яснее!