Имя: Пароль:
1C
1С v8
В отчете по ОстаткамИОборотам нужны группировки по периодам
,
0 Надежда25
 
08.10.12
12:30
Добрый день!
Удалось побороть большие расхождения с реальностью в отчете, когда стала использовать ПериодСекунда. Статью http://a.imageshack.us/img405/476/73796797.jpg прочитала, полезно.
Но мне нужны группировки по Году и Месяцу. Проверяю: вдруг в каком-то из месяцев начальный остаток текущего месяца не равен конечному остатку предыдущего месяца. Разница небольшая, но она есть! Верен Конечный остаток, т. к. есть еще один отчет с группировкой по Контрагентам без группировок Месяц и Год, там все работает правильно. Как с этим быть?
Вот код:
ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодСекунда,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень КАК Дата,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодМесяц КАК Месяц,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодГод КАК Год,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток КАК НачальныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрПриход КАК СтоимостьРеализации,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрРасход КАК СуммаОплаты,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток КАК КонечныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.ДокументОснование.Ссылка КАК ОснованиеПлатежа,
   СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаСчета
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Контрагент.Родитель.Код = "000000005") КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
       ПО (СчетНаОплатуПокупателю.Ссылка = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.ДокументОснование.Ссылка)
1 Надежда25
 
08.10.12
13:36
Нет вариантов?
Вообще-то и Конечный остатк иногда расходится.
2 Надежда25
 
08.10.12
14:53
В третий раз закинул старик невод в море...
Где-то на форуме читала, что ПериодСекунда надо преобразовать в Месяц и Год и тогда их использовать? В Вычисляемых полях?
3 shuhard
 
08.10.12
14:53
(1) без фотки их и быть  не может
4 sanja26
 
08.10.12
15:06
(0) Не выбирай регистратор
5 Надежда25
 
08.10.12
15:16
Группировки:
Год
 Месяц
    Детальные записи
А если я хочу в Детальных записях уточнить по какому документу были Приход и Расход (+ промотр этого документа из отчета)?
6 sanja26
 
08.10.12
16:02
(5) зачем здесь вообще соединение?
может параметры еще косячат
7 pumbaEO
 
08.10.12
16:04
Контрагент.Родитель.Код = "000000005" - только фото без бикини
8 Надежда25
 
08.10.12
16:16
Есть второй такой же отчет с группировкой по Контрагенту, поля Детальных записей - те же. В запросе нет полей Месяц и Год. Все работает верно. Вот код:
ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодСекунда,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень КАК Дата,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток КАК НачальныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрПриход КАК СтоимостьРеализации,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрРасход КАК СуммаОплаты,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток КАК КонечныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.ДокументОснование.Ссылка КАК ОснованиеПлатежа,
   СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаСчета
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Контрагент.Родитель.Код = "000000005") КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
       ПО (СчетНаОплатуПокупателю.Ссылка = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.ДокументОснование.Ссылка)
9 aka AMIGO
 
08.10.12
16:25
"ВЫБРАТЬ
   |    ОстаткиИОбороты.Субконто2 КАК ЗаЧто,
   |    ОстаткиИОбороты.Субконто1.Наименование КАК Житель,
   |    ОстаткиИОбороты.Субконто1.ИНН КАК Участок,
   |    ОстаткиИОбороты.Период КАК Период,
   |    ОстаткиИОбороты.СуммаНачальныйОстаток КАК НачОст,
   |    ОстаткиИОбороты.СуммаОборотДт КАК ОборотДт,
   |    ОстаткиИОбороты.СуммаОборотКт КАК ОборотКт,
   |    ОстаткиИОбороты.СуммаКонечныйОстаток КАК КонОст
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, Месяц, , Счет В ИЕРАРХИИ (&Счет7609), , ) КАК ОстаткиИОбороты
   |
   |УПОРЯДОЧИТЬ ПО
   |    Житель, Период, ЗаЧто
   |ИТОГИ
   |    СУММА(НачОст),
...
10 sanja26
 
08.10.12
16:30
(9) периодичность месяц )
(8) так там в день, наверно по одному регистратору на контрагента..
11 aka AMIGO
 
08.10.12
16:31
(10)угу, мне так проще, ибо других требований не было :)
12 Надежда25
 
08.10.12
16:35
Все перечисленные поля мне нужны, и Регистратор тоже. А при периодичности Месяц его нет.
13 DrShad
 
08.10.12
16:38
ну выложила бы фотку и сразу бы тебе рассказали как сделать месяц и год
14 Надежда25
 
08.10.12
16:57
Складывается впечатление, что в СКД можно использовать помимо ПериодСекунда еще только один Период. Сделала так:
ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодСекунда КАК Дата,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодМесяц КАК Месяц,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток КАК НачальныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрПриход КАК СтоимостьРеализации,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрРасход КАК СуммаОплаты,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток КАК КонечныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.ДокументОснование.Ссылка КАК ОснованиеПлатежа,
   СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаСчета
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Контрагент.Родитель.Код = "000000005") КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
       ПО (СчетНаОплатуПокупателю.Ссылка = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.ДокументОснование.Ссылка)
То есть убрала ПериодДень, взамен добавила ПериодМесяц - работает! Добавляю ПериодГод - не работает!
15 IronDemon
 
08.10.12
17:03
А порядок полей Период* правильный указываешь?
16 Надежда25
 
08.10.12
17:09
ДА.Регистратор - 1, ПериодСекунда - 2, ПериодМесяц -3, периодГод -4, все без галочки Доп. Я уже прочитала в "115 полезностей от Буравова Андрея по курсу СКД Евгения Гилёва": "Неделя + Месяц (и бо?льшие периодичности) будет давать неправильные остатки. Это особенность системы." Так что, наверное, ничего не остается, как придумывать как выражать Год. Хотя при группировке по Контрагенту все работает.
17 IronDemon
 
08.10.12
17:13
Так у тебя недели то нет. Трабл только с ней.

На месяце и годе Доп поставь.
18 Надежда25
 
08.10.12
17:18
Поставила. Доп. не помогло, с годом не работает.
19 sanja26
 
08.10.12
17:24
(18) так выбери все возможные периоды
20 IronDemon
 
08.10.12
17:26
(5) И сколько времени он формируется?
21 IronDemon
 
08.10.12
17:29
А зачем в запросе соединение, да еще с ".Ссылка"?
22 IronDemon
 
08.10.12
17:34
У меня все цифры сходятся за 4 года.
ЧЯДНТ?
23 Надежда25
 
09.10.12
09:43
К сожалению, вчера ушла.
(21)Соединение - чтобы взять сумму счета. Изменила, теперь строка
ПО (СчетНаОплатуПокупателю.Ссылка = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.ДокументОснование). Честно говоря, ускорения не заметила.
(22) Нет, у меня в некоторых месяцах Нач.остаток текущего месяца не совпадает с Кон.остатком предыдущего. Или если разбить месяц, например, с 5 по 16, тоже бывает.
(18) И час, и неделю, и квартал? Многовато получается.
24 Надежда25
 
09.10.12
12:05
Не сказала сразу, что у меня приведенный выше запрос объединялся с таким запросом:
ВЫБРАТЬ
   0 КАК Поле1,
   0 КАК Поле2,
   СчетНаОплатуПокупателю.Дата,
   НАЧАЛОПЕРИОДА(СчетНаОплатуПокупателю.Дата, МЕСЯЦ) КАК Месяц,
   НАЧАЛОПЕРИОДА(СчетНаОплатуПокупателю.Дата, ГОД) КАК Год,
   СчетНаОплатуПокупателю.Контрагент,
   0 КАК Поле3,
   0 КАК Поле4,
   0 КАК Поле5,
   0 КАК Поле6,
     СчетНаОплатуПокупателю.Ссылка КАК ОснованиеПлатежа,
   СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаСчета
ИЗ
   Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
ГДЕ
   НЕ СчетНаОплатуПокупателю.Ссылка В
               (ВЫБРАТЬ
                   ПлатежноеПоручениеВходящее.ДокументОснование
               ИЗ
                   Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее)
   И НЕ СчетНаОплатуПокупателю.ПометкаУдаления
   И СчетНаОплатуПокупателю.Дата >= &НачалоПериода
   И СчетНаОплатуПокупателю.Дата <= &КонецПериода
Когда его убрала, все заработало. Видно, что-то здесь не так.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший