Имя: Пароль:
1C
1С v8
Получение данных из регистра Хозрасчетный в соединении с ним же с условием
0 Oleg_Kag
 
12.10.12
14:40
БП 2.0 (Сумбурно, пятнично)

Вводная: бухи часто путают склады и счета учета и на 10 счете имеем бардак. В целом БЕЗ учета склад и (или) счета номенклатура сворачиваться в ноль (то есть остаток нет)

Необходимо написать отчет СКД, который будет выводить данные в виде:

Субконто1 (суть есть Номенклатура)
Субконто2 (суть есть Склад)
Счет      (суть субсчет 10 счета)
КолОстаток(остаток на счете в количественном выражении по складу и номенклатуре)

Но...Условие: выводится должны ТЕ и ТОЛЬКО ТЕ номенклатуры у которых хотя бы 1 остаток в разрезе Склада и Счета меньше нуля.

В первом запросе выбираю данные, причем так что бы он не "свернулись" и помещаю их во временную таблицу.

Во втором запросе выбираю из временной таблицы 1 поле и пытаюсь сделать еще 1 запрос к регистру уже с условием по этому Субконто1.

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
   ХозрасчетныйОстатки.Счет,
   ХозрасчетныйОстатки.Субконто2
ПОМЕСТИТЬ Отрицательные
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатков, Счет В ИЕРАРХИИ (&Счет10), , ) КАК ХозрасчетныйОстатки
ГДЕ
   ХозрасчетныйОстатки.КоличествоОстаток < 0

ИНДЕКСИРОВАТЬ ПО
   Субконто1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ХозрасчетныйОстатки.Счет,
   ХозрасчетныйОстатки.Субконто1,
   ХозрасчетныйОстатки.Субконто2,
   ХозрасчетныйОстатки.КоличествоОстаток
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатков, Счет В ИЕРАРХИИ (&Счет10), , ) КАК ХозрасчетныйОстатки
ГДЕ
   ХозрасчетныйОстатки.Субконто1 В
           (ВЫБРАТЬ РАЗЛИЧНЫЕ
               Субконто1
           ИЗ
               Отрицательные)

Казалось бы, но не все данные выводятся (не все номенклатуры)

наставьте на путь истинный пожалуста
1 Oleg_Kag
 
15.10.12
12:31
Гхм попробую по другому...помогите "свернуть" в один запрос (СКД) вот эту писанину:

ЗапросПоМинусам=Новый Запрос;
   ЗапросПоМинусам.Текст="ВЫБРАТЬ
                   |    ХозрасчетныйОстатки.Счет,
                   |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
                   |    ХозрасчетныйОстатки.Субконто2
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, Счет В ИЕРАРХИИ (&Счет10), , ) КАК ХозрасчетныйОстатки
                   |ГДЕ
                   |    ХозрасчетныйОстатки.КоличествоОстаток < 0";
   ЗапросПоМинусам.УстановитьПараметр("Счет10",ПланыСчетов.Хозрасчетный.Материалы);
   ЗапросПоМинусам.УстановитьПараметр("ДатаОтчета", ТекущаяДата());
   НоменклатураСМинусами=ЗапросПоМинусам.Выполнить().Выгрузить().ВыгрузитьКолонку("Субконто1");
   
   ЗапросПоОстаткам=Новый Запрос;
   ЗапросПоОстаткам.Текст= "ВЫБРАТЬ
                     |    ХозрасчетныйОстатки.Счет,
                     |    ХозрасчетныйОстатки.Субконто1,
                     |    ХозрасчетныйОстатки.Субконто2,
                     |    ХозрасчетныйОстатки.КоличествоОстаток
                     |ИЗ
                     |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОтчета, Счет В ИЕРАРХИИ (&Счет10), , Субконто1 В (&Номенклатура)) КАК ХозрасчетныйОстатки";
   ЗапросПоОстаткам.УстановитьПараметр("Счет10",ПланыСчетов.Хозрасчетный.Материалы);
   ЗапросПоОстаткам.УстановитьПараметр("ДатаОтчета", ТекущаяДата());
   ЗапросПоОстаткам.УстановитьПараметр("Номенклатура", НоменклатураСМинусами);
   ВыборкаНоменклатуры=ЗапросПоОстаткам.Выполнить().Выбрать();
2 Oleg_Kag
 
15.10.12
18:22
Уважаемые ... Вы хоть что-нибудь напишите пожалуйста...
3 DrHiHi
 
15.10.12
18:29
не понял суть %))... то есть нужно вывести позиции в которых в свернутом виде по номенклатуре покажет 0, а в развернутом есть остатки
4 Oleg_Kag
 
15.10.12
18:37
Вот именно.. Путают склады и (или) счета. Оборотка по 10 счету имеет примерно такой вид:

10.01 Пельмени    Арочнный    -3
10.01 Пельмени    Основной     3

Если сделать Запрос по номенклатуре и счету учета, то в Оборотке будет красоваться 0 (ноль) и только разворачивая по складам можно увидеть такой бардак.

Аналогично получается и по счетам учета. Остаток на 10.01, списывают с 10.06 (игнорирую предупреждения "Для целей учета НДС не списано...")
5 DrHiHi
 
15.10.12
18:39
ВЫБРАТЬ
   Счет,
   Субконто1,
   Субконто2,
   КоличествоОстаток
ПОМЕСТИТЬ ВТВрем
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатков, Счет В ИЕРАРХИИ (&Счет10), , )
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТВрем.*
ИЗ
   ВТВРем
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ (    ВЫБРАТЬ
                               *
                           ИЗ
                               ВТВрем
                           ГДЕ
                               КоличествоОстаток < 0) КАК ВложенныйЗапрос
   ПО ВТВрем.Счет = ВложенныйЗапрос.Счет
   И ВТВрем.Субконто1 = ВложенныйЗапрос.Субконто1
6 DrHiHi
 
15.10.12
18:39
группировку сам добавишь ;))
7 Oleg_Kag
 
15.10.12
18:42
(6) Вот спасибо... значит все таки "Внутреннее"
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший