Имя: Пароль:
1C
 
Регистр накопления Остатки и обороты. Получить остатки за каждый месяц
0 dimoff
 
29.04.11
13:25
Сейчас при обращении к

РегистрНакопления.ИмяРегистра.ОстаткиИОбороты(&ДатаС, &ДатаПо, Месяц, , ) КАК ОстаткиОбороты

остатки считаются только по месяцам в которых были обороты, нет ли возможности получить виртуальную таблицу с остатками по всем месяцам независимо от наличия оборотов?

Внимание: интересует именно средствами таблицы Остатки и Обороты
1 Megas
 
29.04.11
13:26
СКД метод дополнения месяц
2 GROOVY
 
29.04.11
13:26
Запрос: выборка с указанием ключевого слова ВСЕ.
3 dimoff
 
29.04.11
13:30
(1) Где указывается?

(2) Пример пожалуйста, про ВСЕ слышал только вместо с ОБЪЕДИНИТЬ
4 73
 
29.04.11
13:32
5 dimoff
 
29.04.11
13:32
(1) На закладке Компановка данных в методе дополнения доступны только параметры
6 dimoff
 
29.04.11
13:33
(4) Мне не нужны итоги
7 Megas
 
29.04.11
13:34
На закладке настройки.
У поля твоего
Там есть НачальнаяДатапериода, КонечнаяДатаПериода, тип дополнения
8 GROOVY
 
29.04.11
13:35
(4) точно, спутал.

Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период","Все");
9 IronDemon
 
29.04.11
13:38
10 Megas
 
29.04.11
13:39
(8)Хрень какаято
11 IronDemon
 
29.04.11
13:41
(10) Нормальная хрень, рабочая.
12 dimoff
 
29.04.11
13:43
(9) Там много всего. Например

"У группировки "ПериодМесяц" (или как ты назвала) нужно указать тип дополнения "Месяц" и указать начальную и конечную дату периода"

Где указать тип дополнения месяц для группировки?
13 GROOVY
 
29.04.11
13:43
(12) При описании настроек варианта отчета, в свойствах группировки.
14 GROOVY
 
29.04.11
13:44
(10) К чему выпад?



   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    ОстаткиТоваровОстаткиИОбороты.Период КАК Период,
   |    ОстаткиТоваровОстаткиИОбороты.Номенклатура,
   |    ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток,
   |    ОстаткиТоваровОстаткиИОбороты.КоличествоПриход,
   |    ОстаткиТоваровОстаткиИОбороты.КоличествоРасход,
   |    ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток
   |ИЗ
   |    РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(, , Месяц, , ) КАК ОстаткиТоваровОстаткиИОбороты
   |ИТОГИ ПО
   |    Период ПЕРИОДАМИ(МЕСЯЦ, , )";
   РезультатЗапроса = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период", "Все");
   Пока РезультатЗапроса.Следующий() Цикл
       
   КонецЦикла;
15 Megas
 
29.04.11
13:45
(14) Наверное я тупой... просто по описанию в СП не похоже что оно делает как надо. А если делает то я каюсь!
16 dimoff
 
29.04.11
13:45
(13) Нашел. Начальную дату периода и конечную дату периода можно приравнять к параметрам виртуальной таблицы?
17 GROOVY
 
29.04.11
13:47
(15) Зачастую СП читать надо на астральном уровне...
18 dimoff
 
29.04.11
13:48
Не получилось. Попробую подробней

Вот текст запроса

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

В настройках период зафигачен в колонки. Для него указал метод дополнения Месяц, результат тот же. Что ещё нужно сделать?
19 GROOVY
 
29.04.11
13:49
(16) Можно.

(18) Ты СКД делаешь?
20 IronDemon
 
29.04.11
13:50
21 dimoff
 
29.04.11
13:51
(19) Да. То есть сами периоды он может и выводит, но мне нужны периоды с остатками. А у меня полчается что по тем месяцам где были движения остатки указываются, по остальным нет.
22 IronDemon
 
29.04.11
13:55
>> (17) Действительно :) Существенным оказалось то, что нужно выбирать все поля, за исключением ОБОРОТА ! :) Спасибо большое!
23 GROOVY
 
29.04.11
13:59
(21) Сча, погодь я тебе ролик пришлю.
24 dimoff
 
29.04.11
14:03
(20) Вроде делаю все то же, но месяца выводятся без остатков. Все месяца из периода но без остатков, хотя остатки конечно же есть.
25 GROOVY
 
29.04.11
14:03
26 dimoff
 
29.04.11
14:03
То есть ощущение что это дополнение никак не связано с виртуальной таблицей, может таки надо в параметрах виртуальной таблицы что-то ещё указать?
27 GROOVY
 
29.04.11
14:09
(26) ДвиженияИГраницыПериода? Так вроде оно по дефолту...
28 DrHiHi
 
29.04.11
14:14
(0) ща наваяю
29 Shurjk
 
29.04.11
14:15
В КЗ по этому поводу есть статья.
30 dimoff
 
29.04.11
14:44
(25) Всё делаю в точности как на видео. за исключение того что у меня период в вирт. таблице задан датаС и датаПо, но остатки не выводит, только пустые месяца.

Всем большое спасибо, попробую сам разобраться
31 DrHiHi
 
29.04.11
14:55
(0) разбирай на досуге

ВЫБРАТЬ
   НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачДата, МЕСЯЦ, aa.a * 10 + bb.b), МЕСЯЦ) КАК ПериодМесяц
ПОМЕСТИТЬ ВТОсьВремени
ИЗ
   (ВЫБРАТЬ
       0 КАК a
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       1
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       2
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       3
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       4
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       5
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       6
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       7
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       8
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       9) КАК aa
       ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           0 КАК b
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           1
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           4
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           5
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           6
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           7
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           8
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           9) КАК bb
       ПО (ИСТИНА)
ГДЕ
   ДОБАВИТЬКДАТЕ(&НачДата, МЕСЯЦ, aa.a * 10 + bb.b) < &КонДата
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТРег.Период КАК ПериодС,
   МИНИМУМ(ЕСТЬNULL(ДОБАВИТЬКДАТЕ(ВТРег1.Период, МЕСЯЦ, -1), ВТРег.Период)) КАК ПериодПо,
   ВТРег.Склад,
   ВТРег.Номенклатура,
   ВТРег.ХарактеристикаНоменклатуры,
   ВТРег.СерияНоменклатуры,
   ВТРег.Качество,
   ВТРег.КоличествоНачальныйОстаток,
   ВТРег.КоличествоКонечныйОстаток,
   ВТРег.КоличествоОборот,
   ВТРег.КоличествоПриход,
   ВТРег.КоличествоРасход
ПОМЕСТИТЬ ВТПериодыРег
ИЗ
   ВТРег КАК ВТРег
       ЛЕВОЕ СОЕДИНЕНИЕ ВТРег КАК ВТРег1
       ПО ВТРег.Склад = ВТРег1.Склад
           И ВТРег.Номенклатура = ВТРег1.Номенклатура
           И ВТРег.ХарактеристикаНоменклатуры = ВТРег1.ХарактеристикаНоменклатуры
           И ВТРег.СерияНоменклатуры = ВТРег1.СерияНоменклатуры
           И ВТРег.Качество = ВТРег1.Качество
           И ВТРег.Период < ВТРег1.Период

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТОсьВремени.ПериодМесяц,
   ВТПериодыРег.Склад,
   ВТПериодыРег.Номенклатура,
   ВТПериодыРег.ХарактеристикаНоменклатуры,
   ВТПериодыРег.СерияНоменклатуры,
   ВТПериодыРег.Качество,
   ВЫБОР
       КОГДА ВТОсьВремени.ПериодМесяц = ВТПериодыРег.ПериодС
           ТОГДА ВТПериодыРег.КоличествоНачальныйОстаток
       ИНАЧЕ ВТПериодыРег.КоличествоКонечныйОстаток
   КОНЕЦ КАК КоличествоНачальныйОстаток,
   ВТПериодыРег.КоличествоКонечныйОстаток,
   ВЫБОР
       КОГДА ВТОсьВремени.ПериодМесяц = ВТПериодыРег.ПериодС
           ТОГДА ВТПериодыРег.КоличествоОборот
       ИНАЧЕ 0
   КОНЕЦ КАК КоличествоОборот,
   ВЫБОР
       КОГДА ВТОсьВремени.ПериодМесяц = ВТПериодыРег.ПериодС
           ТОГДА ВТПериодыРег.КоличествоПриход
       ИНАЧЕ 0
   КОНЕЦ КАК КоличествоПриход,
   ВЫБОР
       КОГДА ВТОсьВремени.ПериодМесяц = ВТПериодыРег.ПериодС
           ТОГДА ВТПериодыРег.КоличествоРасход
       ИНАЧЕ 0
   КОНЕЦ КАК КоличествоРасход
ИЗ
   ВТПериодыРег КАК ВТПериодыРег
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОсьВремени КАК ВТОсьВремени
       ПО (ВТОсьВремени.ПериодМесяц МЕЖДУ ВТПериодыРег.ПериодС И ВТПериодыРег.ПериодПо)
32 dimoff
 
29.04.11
15:07
(31) Найду на досуге более интересные занятия чем эту фигню разбирать. Но спасибо за старания.
33 DrHiHi
 
29.04.11
15:08
(32) зато работает эта фигня ;))
34 dimoff
 
29.04.11
15:18
(33) Верю.
35 dimoff
 
29.04.11
15:42
Дошло, в запросе должно быть выбрано хотя бы одно поле оборотов, даже если оно наафик не сдалось.

Ещё раз всем огромное спасибо, особенно Megas-у, IronDemon-у и особенно преособенно GROOVY за терпение.
36 dimoff
 
29.04.11
15:53
Соврал, не поле оборотов, а к конечному остатку ещё и начальный остаток. Так работает.

То есть подводя итог:

если выбрано только поле Конечный Остаток то остаток не выводится по месяцам где не было оборотов, если к конечному остатку добавить начальный то все волшебным образом работает.
Независимо от того, куда вы едете — это в гору и против ветра!