|   |   | 
| 
 | СКД неправильно сворачивает суммы, увеличивает | ☑ | ||
|---|---|---|---|---|
| 0
    
        Coldboy 19.11.13✎ 17:02 | 
        Здравствуйте. Работаю в скд через набор данных, туда подаю таблицу, сама таблица верная, ее вывод идет не корректно, а именно некоторые суммы он затраивает, хотя я ставил поля группировки, вроде бы правильные, суммы не корректно у тех, у кого реквизиты еще ниже располагаются.     | |||
| 1
    
        mikecool 19.11.13✎ 17:03 | 
        проверяй, косяк твой     | |||
| 2
    
        Coldboy 19.11.13✎ 17:07 | 
        не спорю. но куда смотреть, таблица значений верные держит поля, думаю косяк в составление уже СКД самого отчета, но не пойму. как убрать затраивание или задваивание.     | |||
| 3
    
        acsent 19.11.13✎ 17:07 | 
        обычно задваивает в результате неверных (неоднозначных) соединений     | |||
| 4
    
        Пеппи 19.11.13✎ 17:07 | 
        а в группировках суммы верные?     | |||
| 5
    
        Artful Den 19.11.13✎ 17:14 | 
        (0) Выведи детальные записи и посмотри, что у тебя получается в результате запроса     | |||
| 6
    
        FidelBoom 19.11.13✎ 17:15 | 
        (5)+1 Начинай с малого, просто вытащи все записи с таблицы и выведи список в отчете. посмотри что там     | |||
| 7
    
        France 19.11.13✎ 17:15 | 
        есть группировки в запросе, потом по тем же полям делаются группировки в СКД - и вуаля, задвоенные и затроенные.     | |||
| 8
    
        Coldboy 20.11.13✎ 10:49 | 
        обрабатываю данные программно.
 ТЗ получается такого вида Колонка1 Колонка2 Колонка3 Сумма Сумма2 Даныые1 Данные2 Данные3 Число Число2 Вывожу в СКД колонки в следующем порядка Отчет Колонка1 Колонка2 Число*(КоличествоДанные в Колонке3) Колонка3 Число2 Корчое в группировках неправильно сворачивает или задваивает, ресурс Сумма(); | |||
| 9
    
        Coldboy 20.11.13✎ 10:53 | 
        (7) пихаю уже тз готовую.     | |||
| 10
    
        Coldboy 20.11.13✎ 11:16 | 
        up     | |||
| 11
    
        CHerypga 20.11.13✎ 11:23 | 
        Если подаешь таблицу, то СКД сама не может определить роль каждого из поданных реквизитов. То есть Измерение ли это, или же это Период и т.д. Роли в таком случае нужно настроить самому     | |||
| 12
    
        Coldboy 20.11.13✎ 11:26 | 
        ну я же сам указываю, что это ресурс или нет. а что значит роли?     | |||
| 13
    
        Coldboy 20.11.13✎ 11:30 | 
        у меня ресурс затраивается или задваивается.     | |||
| 14
    
        CHerypga 20.11.13✎ 11:32 | 
        (12) Это на вкладке Наборы данных когда выбираешь свой набор. В случае если скармливаешь таблицу то это набор данных объект. Внизу Имя объекта данных, а вверху таблица. И там у каждого поля есть Роль     | |||
| 15
    
        CHerypga 20.11.13✎ 11:33 | 
        Если же например делать набор данных запрос, то после написания запроса СКД сама сможет определить роли для всех полей. Попробуй сделать что-нибудь через запрос, посмотри какие роли там будут стоять. По аналогии сделаешь со своим набором     | |||
| 16
    
        Coldboy 20.11.13✎ 11:33 | 
        (14) я понял. тока что ставить я хз, если ресурс затраивается и задвивается, а нужно показать, что он принадлежит поступлению и не измерение это.     | |||
| 17
    
        CHerypga 20.11.13✎ 11:33 | 
        (16) Свою таблицу ты как-нибудь запросом можешь получить?     | |||
| 18
    
        Coldboy 20.11.13✎ 11:36 | 
        я ее програмно с помощью запрос и доп действий
 ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ТЗОплат",ТЗОплаченных); СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных); ДокументРезультат = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДАнныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ДокументРезультат.ОтображатьСетку = Ложь; ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0); ДокументРезультат.Показать(); | |||
| 19
    
        CHerypga 20.11.13✎ 11:40 | 
        (18) Программно быстро помочь не смогу, т.к редко пользуюсь этим. Вот как в мышкотыкательном интерфейсе сделать подсказать наверное смогу.
 Попробуй просто создать внешний отчет, забить свой запрос в набор данных там и посмотреть что получится. | |||
| 20
    
        Coldboy 20.11.13✎ 12:02 | 
        короче у меня вот такая вещь:
 Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОборотыДтКт.Регистратор, | ХозрасчетныйОборотыДтКт.СуммаОборот |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПериода, &КонПериода, Регистратор, , , СчетКт = &Счет6001, , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт |ГДЕ | ХозрасчетныйОборотыДтКт.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг"; Запрос.УстановитьПараметр("НачПериода",НачПериода); Запрос.УстановитьПараметр("КонПериода",КонецДня(КонПериода)); Запрос.УстановитьПараметр("Счет6001",ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01")); Запрос.УстановитьПараметр("Организация",Организация); ТЗ = Запрос.Выполнить().Выгрузить(); ТЗОплаченных = Новый ТаблицаЗначений; ТЗОплаченных.Колонки.Добавить("Контрагент"); ТЗОплаченных.Колонки.Добавить("ДоговорКонтрагента"); ТЗОплаченных.Колонки.Добавить("Поступление"); ТЗОплаченных.Колонки.Добавить("Оплата"); ТЗОплаченных.Колонки.Добавить("СуммаПоступления"); ТЗОплаченных.Колонки.Добавить("СуммаОплаты"); ТЗОплаченных.Колонки.Добавить("Просрочка"); ТЗОплаченных.Колонки.Добавить("МаксПросрочка"); ТЗОплаченных.Колонки.Добавить("Просрочка1"); //от 1 до 7 ТЗОплаченных.Колонки.Добавить("Просрочка2"); // от 8 до 14 ТЗОплаченных.Колонки.Добавить("Просрочка3"); // от 15 до 30 ТЗОплаченных.Колонки.Добавить("Просрочка4"); // уже платить Для каждого СтрокаТЗ из ТЗ Цикл Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОборотыДтКт.Регистратор, | ХозрасчетныйОборотыДтКт.СуммаОборот, | ХозрасчетныйОборотыДтКт.СубконтоКт3, | ХозрасчетныйОборотыДтКт.Период КАК Период |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт( | , | , | Регистратор, | СчетДт = &Счет6001, | , | , | , | Организация = &Организация | И СубконтоДт1 = &Контрагент | И СубконтоДт2 = &ДоговорКонтрагента | И СубконтоДт3 = &ДокументПоступления) КАК ХозрасчетныйОборотыДтКт |ГДЕ | ХозрасчетныйОборотыДтКт.Регистратор ССЫЛКА Документ.СписаниеСРасчетногоСчета | |УПОРЯДОЧИТЬ ПО | Период"; Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("Контрагент",СтрокаТЗ.Регистратор.Контрагент); Запрос.УстановитьПараметр("ДоговорКонтрагента",СтрокаТЗ.Регистратор.ДоговорКонтрагента); Запрос.УстановитьПараметр("ДокументПоступления",СтрокаТЗ.Регистратор); Выборка = ЗАпрос.Выполнить().Выгрузить(); Если Выборка.Количество()>0 Тогда СуммаОплат = Выборка.Итог("СуммаОборот"); ПоследняяОплата = Выборка[Выборка.Количество()-1].Период; РазницаДат = Окр((КонецДня(ТекущаяДата())-КонецДня(СтрокаТЗ.Регистратор.Дата))/86400,0); Для каждого пСтрокаТЗ из Выборка Цикл мСтрокаТЗ = ТЗОплаченных.Добавить(); мСтрокаТЗ.Контрагент = СтрокаТЗ.Регистратор.Контрагент; мСтрокаТЗ.ДоговорКОнтрагента = СТрокаТЗ.Регистратор.ДоговорКонтрагента; мСтрокаТЗ.Поступление = СтрокаТЗ.Регистратор; мСТрокаТЗ.Оплата = пСтрокаТЗ.Регистратор; мСтрокаТЗ.СуммаПоступления = СтрокаТЗ.СуммаОборот; мСтрокаТЗ.СуммаОплаты = пСтрокаТЗ.СуммаОборот; мСтрокаТЗ.Просрочка = Окр((КонецДня(пСтрокаТЗ.Регистратор.Дата)-КонецДня(СтрокаТЗ.Регистратор.Дата))/86400,0); мСтрокаТЗ.МаксПросрочка = СТрокаТЗ.Регистратор.ДоговорКонтрагента.СрокОплаты; Если (СтрокаТЗ.суммаОборот - СуммаОплат) >0 Тогда Если СТрокаТЗ.Регистратор.ДоговорКонтрагента.СрокОплаты = 0 Тогда мСтрокаТЗ.Просрочка4 = СтрокаТЗ.суммаОборот - СуммаОплат; Продолжить; КонецЕсли; РезультатПросрочки = (СТрокаТЗ.Регистратор.ДоговорКонтрагента.СрокОплаты-РазницаДат); Если РезультатПросрочки <= 0 Тогда мСтрокаТЗ.Просрочка4 = СтрокаТЗ.суммаОборот - СуммаОплат; ИначеЕсли РезультатПросрочки>14 Тогда мСтрокаТЗ.Просрочка3 = СтрокаТЗ.суммаОборот - СуммаОплат; ИначеЕсли РезультатПросрочки>7 Тогда мСтрокаТЗ.Просрочка2 = СтрокаТЗ.суммаОборот - СуммаОплат; ИначеЕсли РезультатПросрочки>0 Тогда мСтрокаТЗ.Просрочка1 = СтрокаТЗ.суммаОборот - СуммаОплат; КонецЕсли; КонецЕсли; КОнецЦикла; КонецЕсли; КонецЦикла; на выходе получаю ТЗ и загружаю ее в СКД, СуммаОплаты мне нужно выводить на уровне контрагент,договорконтрагента и поступление, тык вот при выводе поступления он ее умножает на то количество, скоко строчек с этим поступлением, а не группирует. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |