Имя: Пароль:
1C
1С v8
Как построить запрос
,
0 bahtik
 
06.12.12
17:49
Есть три простых регистра накопления (все вида "остатки"):
1) ЗаявкиНаОбеспечение - хранит информацию о заявках от удаленных складов центральному складу на обеспечение материалами. Измерения: Номенклатура, ЗаявкаНаОбеспечение. Ресурс: Количество;
2) ОстаткиНоменклатуры - хранит то, что в названии. Измерения: Склад, Номенклатура. Ресурс: Количество;
3) ЗаявкиНаЗакупку - хранит информацию о заявках центрального склада отделу обеспечения на закупку материалов.

Теперь нужно построить отчет для центрального склада, который покажет, сколько нужно заказать к закупке материалов, чтобы обеспечить текущие заявки на обеспечение. С помощью СКД без особых проблем:

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


В итоге получаем примерно такой отчет:

| Номенклатура | По заявкам | По остаткам | Уже заказано | Нужно заказать |
| Краска       |     350    |     100     |      50      |     200         |

Поле "Нужно заказать" - пользовательское поле, указанное в настройках.
Теперь, собственно, вопрос. Допустим, количество по заявкам состоит из 3-х разных заявок. Можно ли как-то построить запрос так, чтоб в отчете под строкой по Номенклатуре выводились расшифровки по заявкам (по ним из должно показываться только поле "По заявкам")?
1 ДайтеДайте Сказать
 
06.12.12
17:50
это сложно, много букв
2 Жан Пердежон
 
06.12.12
17:55
Можно
3 bahtik
 
06.12.12
18:03
Как? Хотя бы в общем.
4 lxndr
 
06.12.12
18:05
(0) Что ты хочешь видеть в колонке "По остаткам" напротив каждого заказа?
5 bahtik
 
06.12.12
18:06
Ничего.
6 rincewind
 
06.12.12
18:06
(3) В общем - сдается мне, что тебе пригодится таблица ОстаткиИОбороты, и разворот по Регистратору.
7 bahtik
 
06.12.12
18:06
По заявкам нужно видеть только "По заявкам"
8 bahtik
 
06.12.12
18:07
Просто я не понимаю, нужно использовать вложенный запрос, или временную таблицу... С помощью чего это можно сделать и проще сделать?
9 bahtik
 
06.12.12
18:07
Отдельно построить этот запрос - проще простого. Но вот как втиснуть его в этот?
10 rincewind
 
06.12.12
18:09
Как вариант, вложенный запрос.
Результат второго запроса соединяй с первым Левым соединением.
11 bahtik
 
06.12.12
18:11
(10) Так пробовал, но тогда получается бред. Остатки номенклатуры суммируются, заказанное количество суммируется...
12 lxndr
 
06.12.12
18:16
(11) для ресурса остатков убери расчет по группировке заказ
13 Жан Пердежон
 
06.12.12
18:18
(3) можно либо создать новый набор данных и соединить его со свои набором, либо изменить свой запрос и кучу настроек в скд
14 rincewind
 
06.12.12
18:18
Щас вспомнил, подобную задачу решил так: вторым запросом, не вложенным, получал обороты, и при построении отчета после строки с общим числом выводил в детализации результаты из второго запроса, где номенклатура совпадает с результатом из первого.
15 bahtik
 
06.12.12
18:30
Ща будем пробовать...
16 bahtik
 
06.12.12
19:15
(12) Имеешь в виду, на закладке "Ресурсы", в колонке "Рассчитывать по" указать флажок только для поля "Номенклатура"? Указал, но почему-то считает все равно, как сумму.
17 bahtik
 
06.12.12
19:16
+(16) Т.е. результат такой же.