Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вывод в ПолеТабличногоДокумента
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
sanytch
Доброго времени суток форумчане! Имею:
1. 1С:Предприятие 8.3 (8.3.10.2505)
2. Бухгалтерия сельскохозяйственного предприятия для Украины, редакция 1.2 Разработка конфигурации: ЧП "ИН-АГРО", 2016 (1.2.36.2)

Внешний отчет. Запросом делаю выборку данных. Т.к. результат запроса приходится еще сортировать и сворачивать, то вывести его сразу нельзя. Сразу скажу что если отсортировать можно непосредственно и прямо в запросе, то свернуть так как мне нужно запросом не получается(не утверждаю что сделать это вообще нельзя, может это у меня не получилось). Далее выгружаю результат в ТаблицуЗначений(ТабЗнач), можно и в ТабличныйДокумент(ТабДок). После всех манипуляций с запросом хочу его вывести в ПолеТабличногоДокумента на форме. НО куда бы я не выгружал результат запроса, хоть в ТабЗнач, хоть в ТабДок - вывести в ПолеТабличногоДокумента никак не могу. Возможно ли это и если да, то как именно. Спасибо за помощь.
предполагал что как то так, но...

необходимо зарегистрироваться для просмотра ссылки
    ТабЗнач = Новый ТаблицаЗначений;
    
// текст собственно самого запроса

    РезультатЗапроса = Запрос.Выполнить();
    
    ТабЗнач = РезультатЗапроса.Выгрузить();
    ТабЗнач.Сортировать("Пайщик Возр");
    ТабЗнач.Свернуть("Сельсовет, Пайщик", "Сумма, Удержано, КВыдаче");    
    
    ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТабЗнач);//ВОТ ЗДЕСЬ и вся проблема. Выдает ошибку: {ВнешнийОтчет.ВнешнийОтчет1.Форма.ФормаОтчета.Форма(68)}: Ошибка при вызове метода контекста (Вывести)
                                                                                                      //ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТабЗнач);
                                                                                                      //по причине:
                                                                                                      //Несоответствие типов (параметр номер '1')
pablo
Попытайтесь запустить в коде через контекстное меню Конструктор запроса с обработкой результата и скопируйте в конструктор текст запроса. Посмотрите, сколько кода Вам вывалит конструктор и сравните со своей 1 строчкой.
salton
Цитата(sanytch @ 26.09.17, 12:08) необходимо зарегистрироваться для просмотра ссылки
ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТабЗнач);

А на форме точно есть "ПолеТабличногоДокумента"? Табличное поле с названием "ПолеТабличногоДокумента" присутствует?
sava1
Цитата(sanytch @ 26.09.17, 12:08) необходимо зарегистрироваться для просмотра ссылки
ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТабЗнач);

В этом случае ТабЗнач долно быть Табличным Документом. :

ТабДок = Новый ТабличныйДокумент;
//  тут заполняем ТабДок из ТабЗнач
ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТабДок);


типо так....
sanytch
salton @ Сегодня, 12:33 необходимо зарегистрироваться для просмотра ссылки ,
да, есть.
sanytch
sava1 @ Сегодня, 13:12 необходимо зарегистрироваться для просмотра ссылки ,
пытался и из ТабличногоДокумента вывести данные в ПолеТабличногоДокумента - никак. Правда я заполнял его не из ТабЗнач, а прям результатами запроса, потом сортировал и сворачивал... Думаю что это не принципиально как заполнил. Все равно не выводит sad.gif
podcast
sanytch @ Сегодня, 16:45 необходимо зарегистрироваться для просмотра ссылки ,
Добавьте колонки такие как у вас в запросе, и должно заполнить.
sanytch
sava1 @ Сегодня, 13:12 необходимо зарегистрироваться для просмотра ссылки ,
Прошу прощения. Получилось. Вывел. Получилась чисто таблица. Попутно на быструю руку состряпал ВнешнийОтчет без форм - только СхемаКомпоновкиДанных.
Здесь есть Группировка что мне необходимо, но без свертки получаю дубли записей.

Может подскажите как их убрать? Данные получаю через вот такой запрос
ВЫБРАТЬ
    Контрагенты.Наименование КАК Пайщик,
    Контрагенты.Родитель КАК Сельсовет,
    NULL КАК Сумма,
    NULL КАК Удержано,
    NULL КАК КВыдаче
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.Родитель В ИЕРАРХИИ(&Пайщики)
    И Контрагенты.ЭтоГруппа = ЛОЖЬ

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    ИНАГРО_НачислениеПоПаямТовары.Контрагент,
    ИНАГРО_НачислениеПоПаямТовары.Контрагент.Родитель,
    СУММА(ИНАГРО_НачислениеПоПаямТовары.Сумма),
    СУММА(ИНАГРО_НачислениеПоПаямТовары.Удержано + ИНАГРО_НачислениеПоПаямТовары.УдержаноВЗ + ИНАГРО_НачислениеПоПаямТовары.Алименты),
    СУММА(ИНАГРО_НачислениеПоПаямТовары.КВыдаче)
ИЗ
    Документ.ИНАГРО_НачислениеПоПаям.Товары КАК ИНАГРО_НачислениеПоПаямТовары
ГДЕ
    ИНАГРО_НачислениеПоПаямТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

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

УПОРЯДОЧИТЬ ПО
    Пайщик

Понятно что если у контрагента-пайщика нет начислений по паям то напротив его фамилии пусто (получаю из первого запроса), а если у пайщика были начисления то получаю 2 строки, и из первого с пустыми значениями и из второго с начислениями. Для этого придумал свернуть но тогда нужно выгружать в ТабДок, сворачивать и из него выгружать в ПолеТабличногоДокумента, но тогда пропадает группировка по Сельсовету. Может на уровне СКД можно либо запрос грамотнее построить или есть возможность свернуть его результаты "без танцев с бубнами". Заранее спасибо.

podcast @ Сегодня, 17:13 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо за ответ. Пробовал и так. Не помню правда то ли ошибку то ли пустоту выдавал.
pablo
как-то так на колене получается:
ВЫБРАТЬ     Контрагенты.Наименование КАК Пайщик,
Контрагенты.Ссылка как контрагент,  
   Контрагенты.Родитель КАК Сельсовет
Поместить Пайщики
ИЗ     Справочник.Контрагенты КАК Контрагенты
ГДЕ     Контрагенты.Родитель В ИЕРАРХИИ(&Пайщики)    
И Контрагенты.ЭтоГруппа = ЛОЖЬ;
ВЫБРАТЬ    
Пайщики.Пайщик,    
Пайщики.Сельсовет,
     СУММА(ЕСТЬNULL(ЕИНАГРО_НачислениеПоПаямТовары.Сумма,0)),
     СУММА(ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.Удержано,0) + ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.УдержаноВЗ,0) + ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.Алименты,0)),
     СУММА(ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.КВыдаче,0))
ИЗ     Пайщики как Пайщики левое соединение Документ.ИНАГРО_НачислениеПоПаям.Товары КАК ИНАГРО_НачислениеПоПаямТовары
по Пайщики.Контрагент=ИНАГРО_НачислениеПоПаямТовары.Контрагент
ГДЕ     ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.Ссылка.Дата,&НачалоПериода) МЕЖДУ &НачалоПериода И &КонецПериода  
СГРУППИРОВАТЬ ПО  
Пайщики.Пайщик,  
  Пайщики.Сельсовет
sanytch
pablo @ Вчера, 17:54 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо большое, ход мысли я понял: Временная таблица со ВСЕМИ нужными контрагентами а потом через левое соединение для каждого либо 0 если нет его в документе либо числа из соответствующих полей табчасти документа.
С колена у Вас получилось почти правильно, подправил пару мелочей и вышло так:
ВЫБРАТЬ
    Контрагенты.Ссылка КАК Пайщик,
    Контрагенты.Наименование,
    Контрагенты.Родитель КАК Сельсовет
ПОМЕСТИТЬ Пайщики
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.Родитель В ИЕРАРХИИ(&Пайщики)
    И Контрагенты.ЭтоГруппа = ЛОЖЬ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Пайщики.Пайщик,
    Пайщики.Сельсовет,
    СУММА(ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.Сумма, 0)) КАК Начислено,
    СУММА(ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.Удержано, 0) + ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.УдержаноВЗ, 0) + ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.Алименты, 0)) КАК Удержано,
    СУММА(ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.КВыдаче, 0)) КАК КВыдаче
ИЗ
    Пайщики КАК Пайщики
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИНАГРО_НачислениеПоПаям.Товары КАК ИНАГРО_НачислениеПоПаямТовары
        ПО Пайщики.Пайщик = ИНАГРО_НачислениеПоПаямТовары.Контрагент.Ссылка
ГДЕ
    ЕСТЬNULL(ИНАГРО_НачислениеПоПаямТовары.Ссылка.Дата, &НачалоПериода) МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
    Пайщики.Пайщик,
    Пайщики.Сельсовет

Соединение по ссылкам только нужно устанавливать, если просто по наименованиям то выводит всех контрагентов а вот цифр пусто...
Огромное спасибо всем откликнувшимся и особенно pablo!!!
sanytch
pablo @ Вчера, 17:54 необходимо зарегистрироваться для просмотра ссылки ,
В предыдущем запросе нашелся изъян и данные выводились не совсем в полном объёме. решил переделать с вложенным запросом, работает отлично, получилось вот так:
ВЫБРАТЬ
    Контрагенты.Родитель,
    Контрагенты.Наименование,
    Начисления.Сумма,
    Начисления.Удержано + Начисления.Алименты + Начисления.УдержаноВЗ КАК Удержано,
    Начисления.КВыдаче
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ИНАГРО_НачислениеПоПаямТовары.Контрагент КАК Контрагент,
            ИНАГРО_НачислениеПоПаямТовары.Сумма КАК Сумма,
            ИНАГРО_НачислениеПоПаямТовары.Удержано КАК Удержано,
            ИНАГРО_НачислениеПоПаямТовары.Алименты КАК Алименты,
            ИНАГРО_НачислениеПоПаямТовары.УдержаноВЗ КАК УдержаноВЗ,
            ИНАГРО_НачислениеПоПаямТовары.КВыдаче КАК КВыдаче
        ИЗ
            Документ.ИНАГРО_НачислениеПоПаям.Товары КАК ИНАГРО_НачислениеПоПаямТовары
        ГДЕ
            ИНАГРО_НачислениеПоПаямТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода) КАК Начисления
        ПО Контрагенты.Наименование = Начисления.Контрагент.Наименование
ГДЕ
    Контрагенты.Родитель В ИЕРАРХИИ(&Пайщики)
    И Контрагенты.ЭтоГруппа = ЛОЖЬ

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.