Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отчет "Погашение ссуды"
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
Veizdem
Добрый день всем, помогите создать элементарный отчет, уже час бьюсь и что-то я не до конца понимаю. В общем, есть регистр сведений, в котором хранится информция по ссудам - фио, дата окончания, дата начала, месячный платеж и сумма ссуды. Что мне нужно получить: устанавливаем в отчете определенную дату, на которую хотим получить отчет, выбираем из регистра сведений только те записи, у которых дата окончания меньше, чем установленная (то есть дата отчета уже после окончания срока ссуды), получаем таким образом список фамилий. Далее, по этим фамилиям лезем в регистр бухгалтерии по остаткам, смотрим дебет остаток по этому пользователю (в регистре бухгалтерии это Субконто1) на определенную в том же отчете дату, если остаток 0, тогда в отчет нужно вывести этого сотрудника и связанный с ним регистратор из регистра сведений. В регистре сведений фамилии не повторяются. Уже голову сломал, понимаю что отчет элементарный, а докрутить как сделать схему компоновки данных для этого никак не могу (
Petre
Если есть текст запроса и описание того, что конкретно не получается, то надо бы об этом написать.
Veizdem
Цитата(Petre @ 28.10.14, 14:17) необходимо зарегистрироваться для просмотра ссылки
Если есть текст запроса и описание того, что конкретно не получается, то надо бы об этом написать.

Это все я делаю в отчете "Погашение ссуды", запросов получается 2: один к бух.регистру, второй к регистру сведений, по отдельности они работают.

Собственно говоря код запроса для получения остатка:
ВЫБРАТЬ
    БухучетОстатки.Субконто1
ИЗ
    РегистрБухгалтерии.Бухучет.Остатки(&ДатаОтчета, , , ) КАК БухучетОстатки
ГДЕ
    БухучетОстатки.Счет = &Счет
    И БухучетОстатки.СуммаОстатокДт = 0


и код запроса на получение сотрудника и регистратора:
ВЫБРАТЬ
    ПредоставлениеСсуды.Регистратор,
    ПредоставлениеСсуды.Сотрудник
ИЗ
    РегистрСведений.ПредоставлениеСсуды КАК ПредоставлениеСсуды
ГДЕ
    ПредоставлениеСсуды.ДатаОкончания < &ДатаОтчета


Вот загвозка вся в том что не могу понять как в схеме компоновки субконто1 из первого запроса воткнуть как отбор для второго запроса (чтоб выбрало по сотруднику).

Или там вообще не то что-то я делаю... Голова уже квадратная, каждые пять минут бегают спрашивают че, когда будет, а я мысли в кучу собрать никак не могу...

По сути нужно реализовать такую схему:
1. Делаем выборку Субконто1 из бухгалтерского по критериям: Период = Дате отчета, Счет = Нужному счету, ОстатокДт = 0
2. Делаем выборку Регистратора и Сторудника из регистра сведений ссуды по критериям: ДатаОкончания < Даты отчета, Сотрудник = Субконто1
sava1
Цитата(Veizdem @ 28.10.14, 15:41) необходимо зарегистрироваться для просмотра ссылки
субконто1 из первого запроса воткнуть как отбор для второго запроса


А ведь есть Соединения
Petre
К выборке из РС левым соединением по "Сотрудник = Субконто1" присоединяем выборку из БР. Параметры: "Дата отчета", "Счет". Отбор: "ОстатокДт = 0".
sava1
Ну я еще не понял какое нужно соединение - неясно что люди хотят видеть ?
Veizdem
В общем решил все одним запросом вида:
ВЫБРАТЬ
    Таб.Регистратор,
    Таб.Сотрудник,
    Таб.Остаток
ИЗ
    (ВЫБРАТЬ
        ПредоставлениеСсуды.Регистратор КАК Регистратор,
        ПредоставлениеСсуды.Сотрудник КАК Сотрудник,
        ЕСТЬNULL(БухучетОстатки.СуммаОстаток, 0) КАК Остаток
    ИЗ
        РегистрСведений.ПредоставлениеСсуды КАК ПредоставлениеСсуды
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Бухучет.Остатки(
                    &Период,
                    Счет = &Счет,
                    ,
                    Фирма.Код = 1
                        ИЛИ Фирма.Код = 2) КАК БухучетОстатки
            ПО ПредоставлениеСсуды.Сотрудник = БухучетОстатки.Субконто1
    ГДЕ
        ПредоставлениеСсуды.ДатаОкончания <= &ДатаОтчета) КАК Таб
ГДЕ
    Таб.Остаток = 0

А сложность возникла у меня потому, что рассуждал как для одного набора данных, а решить пытался почему-то двумя...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.