Имя: Пароль:
1C
 
СКД соединить в запросе таблицу остатков и оборотов
0 RetZet
 
15.07.10
12:41
Суть в следующем. необходимо вывести остатки по регистру накопления до регистратора. При этом возможна ситуация, когда по номенклатуре остатка нет, а по регистратору есть. Например приход выполнен одним регистратором, а списано другим. В этом случае, если делать запрос к вирт. таблице "ОстаткиИОбороты" с периодичностью "Регистратор", то эти остатки выводятся, хотя в целом по номеклатуре остаток=0.
Что-то туплю и не могу понять, как соединить в запросе таблицу остатков и таблицу ОстатакиИОбороты, чтобы номенклатура, у которой остаток = 0 не выводилась. Или выводился только регистратор с остатком, равным остатку по номенклатуре.

Сам запросец (конфа УПП):
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
   ТоварыПереданные.Организация КАК Организация,
   ТоварыПереданные.Контрагент КАК Контрагент,
   ТоварыПереданные.Номенклатура КАК Номенклатура,
   ТоварыПереданные.Регистратор КАК Регистратор,
   СУММА(ТоварыПереданные.КоличествоКонечныйОстаток) КАК Количество,
   СУММА(ТоварыПереданные.СуммаВзаиморасчетовКонечныйОстаток) КАК Сумма,
   ТоварыПереданные.Регистратор.Подразделение КАК Подразделение
{ВЫБРАТЬ
   Организация.*,
   Контрагент.*,
   Номенклатура.*,
   Регистратор.*,
   Количество,
   Сумма,
   Подразделение.*}
ИЗ
   РегистрНакопления.ТоварыПереданные.ОстаткиИОбороты(, &ДатаОтчета, Регистратор, , ) КАК ТоварыПереданные

СГРУППИРОВАТЬ ПО
   ТоварыПереданные.Организация,
   ТоварыПереданные.Контрагент,
   ТоварыПереданные.Номенклатура,
   ТоварыПереданные.Регистратор,
   ТоварыПереданные.Регистратор.Подразделение
1 IronDemon
 
15.07.10
12:48
ВЫБРАТЬ
   ТоварыПереданныеОстаткиИОбороты.ДоговорКонтрагента,
   ТоварыПереданныеОстаткиИОбороты.Номенклатура,
   СУММА(ТоварыПереданныеОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   СУММА(ТоварыПереданныеОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
   СУММА(ТоварыПереданныеОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
   СУММА(ТоварыПереданныеОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
   ТоварыПереданныеОстаткиИОбороты.Регистратор
ИЗ
   РегистрНакопления.ТоварыПереданные.Остатки({(&КонецПериода)}, ) КАК ТоварыПереданныеОстатки
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыПереданные.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Авто, , ) КАК ТоварыПереданныеОстаткиИОбороты
       ПО ТоварыПереданныеОстатки.Номенклатура = ТоварыПереданныеОстаткиИОбороты.Номенклатура
           И ТоварыПереданныеОстатки.ДоговорКонтрагента = ТоварыПереданныеОстаткиИОбороты.ДоговорКонтрагента

СГРУППИРОВАТЬ ПО
   ТоварыПереданныеОстаткиИОбороты.ДоговорКонтрагента,
   ТоварыПереданныеОстаткиИОбороты.Номенклатура,
   ТоварыПереданныеОстаткиИОбороты.Регистратор

ИМЕЮЩИЕ
   СУММА(ТоварыПереданныеОстатки.КоличествоОстаток) > 0
2 RetZet
 
15.07.10
13:18
(1)
Все регистраторы выводит.
Т.е. получается так:
Номенкл/Регистратор   КонОст   НачОст Приход Расход

МояНоменкл                1      0     2        1
  Регистратор1           1      0     1        0
  Регистратор2           1      0     1        0
  Регистратор3           0      1     0        1

А мне надо:

МояНоменкл                1      0     2        1
  Регистратор2           1      0     1        0
 
Т.е. чтобы выводился последний не закрытый регистратор. (все это в запросе надо сделать, поскольку это СКД) Вот не могу добиться.
3 RetZet
 
15.07.10
16:27
Что-то тишина...
4 RetZet
 
16.07.10
09:35
Делается все на СКД. Регистр ТоварыПереданные в УПП. Нужно вывести остатки в разрезе группировок влоть до регистратора. Регистр двигают разные регистраторы. РТУ пишет в приход (товар отдаем на комиссию). РеализацияОтгруженныхТоваров пишет в расход по регистру. В результате в регистре по товару например нуль по остаткам, а по регистраторам есть остаток. Если запрос строить на остнове вирт. таблицы ТоварыПереданныеОстаткиИОбороты, то вываливает все остатки порегистраторам.
А мне нужны остатки по товару в разрезе незакрытых остатков по регистратору.
Например был приход двух РТУ по 5 шт., итого 10 шт. РОТ списало 5 шт.(они делаются на основании РТУ). Остаток по товару 5 шт. А реально в регистре по регистраторам 2*5 и 1*-5. Поэтому приходится остатки по номенклатуре брать из вирт.таблицы ТоварыПереданныеОстатки, а регистратор надо найти в вирт.таблице ТоварыПереданныеОстаткиИОбороты с периодичностью "Регистратор".
Теперь полученные таблицы надо соединить таким образом, чтобы в вышеприведенном примере, вывелся остаток =5 по номенклатуре, и последний не закрытый регистратор.
5 RetZet
 
16.07.10
12:00
В общем, решение такое:
Заюзать регистр ПартииТоваровПереданныеБухгалтерскийУчет, и вместо регистратора использовать ДокументПередачи, т.е. партию. И все замечательно получается на самом простеньком запросе.
Всем спасибо, тема закрыта.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс