8.х Отчет в СКД

Тема в разделе "Система компоновки данных (СКД)", создана пользователем xxx949, 8 дек 2014.

  1. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Здравствуйте уважаемые программисты!
    Помогите разобраться, задача следующая, есть регистр бухгалтерии Хозрасчетный.ОстаткиИОбороты, я от туда вытаскиваю табличку (Контрагент, Договор, Остаток). Все нормально.

    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
        ОстаткиИОбороты.Субконто1 КАК Контрагент,
        ОстаткиИОбороты.Субконто2.Номер КАК Договор,
        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОстаткиИОбороты.Счет) КАК Счет,
        СУММА(ОстаткиИОбороты.СуммаКонечныйОстатокДт - ОстаткиИОбороты.СуммаКонечныйОстатокКт) КАК Остаток
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ОстаткиИОбороты
    
    СГРУППИРОВАТЬ ПО
        ОстаткиИОбороты.Субконто1,
        ОстаткиИОбороты.Субконто2.Номер
    
    УПОРЯДОЧИТЬ ПО
        Контрагент,
        Договор
    Далее есть у меня справочник "Настройки интервалов", в котором есть табличная часть с интервалами:

    2014-12-08_141151.png

    Так вот мне в СКД нужно присоединить справочник, т.е. к основных столбикам отчета, добавить еще 4 столбика, по дням ("не более 7 дней", "от 8 до 14 дней" и т.д.), в этих столбиках мне нужно считать сумму реализаций, т.е. от даты отчета взять 7 дней, сложить сумму всех реализаций и цифру вывести в определенную колонку, естественно реализации брать с фильтром по контрагенту и договору.

    И вообще подскажите, пожалуйста, возможно ли такое вообще в СКД. Спасибо большое.
  2. XXL
    Offline

    XXL Профессионал в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.281
    Симпатии:
    25
    Баллы:
    54
    Выложите пример того, что должно получиться.
  3. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Вот результат, что должно быть, этот отчет я сделал не через СКД, а вручную. Но пользователи хотят в СКД, чтобы можно было настройками управлять, сортировкой, группировкой, добавлением, удалением колонок и т.д.

    2014-12-08_142924.png
  4. XXL
    Offline

    XXL Профессионал в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.281
    Симпатии:
    25
    Баллы:
    54
    Думаю можно, через временные таблицы провернуть - выбираете во временную данные из справочника, выбираете во временные реализации по дням с учётом ваших интервалов и потом в общую - я как-то так вижу.
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Можно. Даже думя способами
    1.Используйте только соединение наборов в СКД, через параметр.
    Ну по идее у вас должен быть один набор это запрос + Ваша данные из справочника - это ТЧ элемента справочника. Второй набор это остатки к регистру Из первого вы получает общий итог и передает параметр во второй (параметр это дата (ну которая расчитана период + дней колонки)) и на эту дату получаете остаток.
    2. Это через набор данных. Т.е вы описываете в СКД набор данных, берете ваш отчет, его выполняете, выгружате результат в ТЗ и эту ТЗ передаете в СКД ка кнабор данных, а дальше дела техники.
  6. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Спасибо, т.е.:
    1. Делаю 2 набора данных: первый - Запрос по реализации + Запрос по ТЧ интервалов справочника. Реализацию вывожу построчно, интервалы вывожу по колонкам. Но я пока не знаю, как сумму раскидать по колонкам ((( Второй набор данных - Запрос по регистру.
    2. Теперь нужно эти два набора данных связать. Вот я пока остановился на том, чтобы правильно написать запрос, который выыедет реализацию с интервалами по колонкам (((
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Если у Вас сейчас реализовано все это простом отчете то я бы Вам для начала предложил использовать второй вариант.
    Вы создадите набор данных с описанием полей (те поля которые бцдет СКД выводить) Затем в коде вставите свой код, который все счтает и передадите его в наюор данных СКД,а СКД его выведет.

    через запрос, то как сказал
    в первом наборе Вам надо получить просто Итоги в разрезе Интервалов
    т.е что бы вам запрос выдавал что то вроде
    Контрагент Договор ОстатокИтого Интервал 1
    Контрагент Договор ОстатокИтого Интервал 2
    Контрагент Договор ОстатокИтого Интервал 3
    Контрагент1 Договор1 ОстатокИтого1 Интервал 1
    Контрагент1 Договор1 ОстатокИтого1 Интервал 2
    Контрагент1 Договор1 ОстатокИтого1 Интервал 3

    Причем тут Интервал - это дата ну посчитанная от текущей + Дней в зависиомти от строки в элементе справочника интервалы

    Второй набор это остатки в разрезе контрагентов и договоров на дату

    Потом соединяете два этих набора в СКД, через параметр Интервал, который является датой накоторые получаете остатки во втором наборе

    В итоге вы получаете картину типа

    Контрагент Договор ОстатокИтого Интервал 1 ОстатокНадату1
    Контрагент Договор ОстатокИтого Интервал 2 ОстатокНадату2
    Контрагент Договор ОстатокИтого Интервал 3 ОстатокНадату3
    Контрагент1 Договор1 ОстатокИтого1 Интервал 1 ОстатокНадату11
    Контрагент1 Договор1 ОстатокИтого1 Интервал 2 ОстатокНадату12
    Контрагент1 Договор1 ОстатокИтого1 Интервал 3 ОстатокНадату13

    Который выводите в виде крос таблице. Ну а заголловки интервалом можно через выражение представление подправить
    xxx949 нравится это.
  8. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Спасибо большое, первый набор сделал, работает замечательно. Теперь может подскажите одну вещь:

    Код:
    ВЫБРАТЬ
        РеализацияТоваровУслуг.Контрагент КАК Контрагент,
        РеализацияТоваровУслуг.ДоговорКонтрагента.Номер,
        СУММА(РеализацияТоваровУслуг.СуммаДокумента) КАК СуммаДокумента,
        НастройкаИнтерваловТабличнаяЧасть.Подпись,
        ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.НачалоИнтервала) КАК НачалоИнтервала,
        ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.КонецИнтервала) КАК КонецИнтервала
    ИЗ
        Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг,
        Справочник.НастройкаИнтервалов.ТабличнаяЧасть КАК НастройкаИнтерваловТабличнаяЧасть
    ГДЕ
        РеализацияТоваровУслуг.Проведен = ИСТИНА
        И НастройкаИнтерваловТабличнаяЧасть.Ссылка = &Интервал
    
    СГРУППИРОВАТЬ ПО
        РеализацияТоваровУслуг.Контрагент,
        РеализацияТоваровУслуг.ДоговорКонтрагента.Номер,
        НастройкаИнтерваловТабличнаяЧасть.Подпись,
        ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.КонецИнтервала),
        ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.НачалоИнтервала)
    
    УПОРЯДОЧИТЬ ПО
        Контрагент,
        НачалоИнтервала УБЫВ
    Это код запроса, в котором выводятся документы реализации, сгруппированные по контрагенту и договору, а также общая сумма этих документов, также выводятся интервалы с уже подсчитанными датами от текучей. Как мне сумму документа выводить согласно этим датам!? Я сначала пробовал в условие засунуть, но это бред получается, к тому же там не прицепиться к интервалу построчно. Я так полагаю, что нужно условие как-то засунуть в ВЫБРАТЬ, но как это сделать, что-то вертится в голове. Понимаю, что это как-то возможно, но пока не знаю как. Спасибо.
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Во вложении пример, думаю поможет.
    Там в первом наборе из Производственого календаря получаем даты за период (это у вас в вашем наборе есть - даты интервалов)
    Во втором наборе остатки склада на дату (ну ввашем случае это будут остатки взаиморасчетв на дату интервала)
    а потом на вкладке связи наборов посмотрите как чере зпараметр соединяется. и тогда получается что из первого набора дата залетает во второй и на нее остаток получаем.
    Ну у вас еще в связах там обавиться равенство на контрагента и договор.
    Ду думаю смысл поймете.

    Вложения:

  10. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Спасибо, я уже сделал два набора, первый набор отрабатывает отлично, так как нужно, а из второго набора я запрос:

    Код:
    ВЫБРАТЬ
        РеализацияТоваровУслуг.Контрагент КАК Контрагент,
        РеализацияТоваровУслуг.ДоговорКонтрагента.Номер,
        НастройкаИнтерваловТабличнаяЧасть.Подпись,
        ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.НачалоИнтервала) КАК ДатаНачала,
        КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.КонецИнтервала), ДЕНЬ) КАК ДатаКонца,
        СУММА(ВЫБОР
                КОГДА РеализацияТоваровУслуг.Дата МЕЖДУ ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.НачалоИнтервала) И ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.КонецИнтервала)
                    ТОГДА РеализацияТоваровУслуг.СуммаДокумента
            КОНЕЦ) КАК СуммаДокумента
    ИЗ
        Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг,
        Справочник.НастройкаИнтервалов.ТабличнаяЧасть КАК НастройкаИнтерваловТабличнаяЧасть
    ГДЕ
        РеализацияТоваровУслуг.Проведен = ИСТИНА
        И НастройкаИнтерваловТабличнаяЧасть.Ссылка = &Интервал
    
    СГРУППИРОВАТЬ ПО
        РеализацияТоваровУслуг.Контрагент,
        РеализацияТоваровУслуг.ДоговорКонтрагента.Номер,
        НастройкаИнтерваловТабличнаяЧасть.Подпись,
        ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.НачалоИнтервала),
        КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -НастройкаИнтерваловТабличнаяЧасть.КонецИнтервала), ДЕНЬ)
    тестировал через консоль запросов, тоже все отработал отлично, затем я этот рабочий запрос вставил в СКД во второй набор, связал эти два набора по трем полям (Контрагент, Договор и Интервал), получил результат НЕ такой как получал через консоль запросов, т.е. выводится общая сумма по документам, без разбивки по периодам, но где-то все-же как ни странно разбивку он сделал, но абсолютно не правильно, вот разбираюсь... Может быть я не правильно соединил эти два набора данных, ведь по отдельности они правильно работают :(
  11. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Ну так уже сложно сказать, надо смотреть во очую и тестировать и смотреть. может где ресурсы не так настроены или еще что.
    Идею то я понял, что вы осознали, а дальше ужде так трудно сказать
  12. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Ок, спасибо. Просмотрел я ваш отчет, разница в том, что у меня в связях не был указан параметр у НачалоПериода и КонецПериода, параметр указал, теперь отчет вообще висит и не формируется, может так долго рассчитывает, подожду результата.

    или может как вариант попробовать сделать через один набор данных
  13. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Ну в связях у Вас там в одном месте только параметр будет. там где период
    т.е три строки - 1 по периоду с параметром
    2, 3 просто на равенство контрагент - и договор
    xxx949 нравится это.
  14. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    ну вот 1 с периодом параметр ставлю, программа виснет. параметр убрал, отчет формирует быстро. А еще я дико извиняюсь, дал ложную информацию, отчет на самом деле все точно формирует и по периодам раскладывает, сейчас только сверил цифры :) огромное спасибо за помощь. Ставлю плюсик.
  15. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Ну вот видите. Сказал же что на СКД все возможно. СКД - вещь - ну если знать - так что учите. Успехов
  16. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Еще один вопросик, чет вообще не соображаю сегодня, строки выводятся, интервалы по колонкам выводятся, куда засунуть сумму нужно, чтобы она под интервалами выводилась, если ее оставить в строках, то она выводится построчно, если засунуть в колонки,, то он добавляет космическое количество колонок с суммами, а вот как чтобы под каждым интервалом не выходит :(

    :( нервно читаю Хрусталеву
  17. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    НУ как я предполагал Общая сумма - этьо у Вас будет реквизит, аналогично Контрагент и договор, а вот сумма в интервале - ресурс
    т.е у Вас крос таблица
    в строках Контрагент, Договор, ИтоговаяСумма
    в Колонках интрвалы, а вот сумма интревала - ресурс - на перечечении строки и колонки.

    По Хрусталевой, там вместе со чтением надо еще пробвать, так более быстрее вьезжаешь
    xxx949 нравится это.
  18. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Всё получилось :)
  19. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    961
    Баллы:
    204
    Молодцы.