1с 7.7 Бухгалтерия Подскажите как заполнить значениями таблицу Печатной формы?

Новая тема
Показывать по 10 20 40 сообщений
А зачем? у меня не возникло проблем с получением данных, проблема в их ВЫВОДЕ в печатную форму, тут видишь как первый цикл должен идти по строкам второй по колонкам(колонки должны быть в шапке) причем колонки не должны повторяться и количество должно ставиться на пересечении контрагента и товара!!Не могу допетрить как так завернуть:(
>
> но должно быть так:
>
>               Номенклатура1 Номенклатура2 Номенклатура3 Номенклатура4 Номенклатура5 ...
> контрагент1        Кол-во      Кол-во
> контрагент2                    Кол-во                                    Кол-во
> контрагент3                                                Кол-во
> контрагент4
> контрагент5                                                              Кол-во
>  ...
>


запросом, вот обработка : http://slil.ru/27898655
"а вот сам текст:

Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
//|Без итогов;
|Контрагент = Документ.РасходнаяНакладная.Контрагент;
|Товар = Документ.РасходнаяНакладная.Товар;
|Количество = Документ.РасходнаяНакладная.Количество;
|ТекДок = Документ.РасходнаяНакладная.ТекущийДокумент;
|Функция Сумма_ = Сумма(Количество);
|Группировка Контрагент без групп;
|Группировка Товар без Групп все ВошедшиеВЗапрос;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок|КонтДок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
СЗ_СуммПервогоПрохода = СоздатьОбъект("СписокЗначений");
ДатаДок = """";
ФлагПервогоПрохода = 1;
Пока Запрос.Группировка(1) = 1 Цикл
Контрагент = Запрос.Контрагент;
Если ФлагПервогоПрохода = 0 Тогда
Таб.ВывестиСекцию("Сформировать|КонтДок");    
КонецЕсли;
Пока Запрос.Группировка(2) = 1 Цикл
Сумма = Запрос.Сумма_;
Если ФлагПервогоПрохода = 1 Тогда
Товар = Запрос.Товар;
Таб.ПрисоединитьСекцию("Заголовок|Товар");
СЗ_СуммПервогоПрохода.ДобавитьЗначение(Сумма);
Иначе
Таб.ПрисоединитьСекцию("Сформировать|Товар");
КонецЕсли;

КонецЦикла;
Если ФлагПервогоПрохода = 1 Тогда
   ФлагПервогоПрохода = 0;
Таб.ВывестиСекцию("Сформировать|КонтДок");
Для н = 1 по СЗ_СуммПервогоПрохода.РазмерСписка() Цикл
Сумма = СЗ_СуммПервогоПрохода.ПолучитьЗначение(н);
Таб.ПрисоединитьСекцию("Сформировать|Товар");
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", """");
КонецПроцедуры"
Ты на самом деле мозг, мне еще многому надо учиться) хорошо что такие люди есть на форуме -_-
Этот вариант мне подходит, конечно нужно еще кое что исправить, но главное что есть концепция.
Еще есть вопрос, ты эту обработку сделал полностью в конструкторе или вручную дописывал?
> Ты на самом деле мозг, мне еще многому надо учиться) хорошо что такие люди есть на форуме -_-
> Этот вариант мне подходит, конечно нужно еще кое что исправить, но главное что есть концепция.
> Еще есть вопрос, ты эту обработку сделал полностью в конструкторе или вручную дописывал?
время ушло 10 мин

конструктор и дописки
Сам запрос с помощью конструктора тоже составлял, а вот нижнюю часть кода я пока не допетрил.
> Сам запрос с помощью конструктора тоже составлял, а вот нижнюю часть кода я пока не допетрил.

я просто сделал вывод в один проход, иначе пришлось бы два раза
1. В личку напиши номер телефона, в благодарность тебе на баланс закину.
2. Получилось так что в запросе по каждому контрагенту выводятся данные сразу по всем документам за весь период, а как сделать что бы выводилось отдельно по каждому документу(1 документ = 1 строка) с датой документа? и еще сумму в низу под каждым товаром?
просто иначе ника не проверить точностьданных.
"> 1. В личку напиши номер телефона, в благодарность тебе на баланс закину.
это хорошо! ушло...


> 2. Получилось так что в запросе по каждому контрагенту выводятся данные сразу по всем документам за весь период, а как сделать что бы выводилось отдельно по каждому документу(1 документ = 1 строка) с датой документа? и еще сумму в низу под каждым товаром?
так вопрос был:
сделать вниз контрагент, вбок - товар

> просто иначе ника не проверить точностьданных.
всё там нормально! ;-)
проверял на демо базе...

"
"если док хочешь, замени строку

|Контрагент = Документ.РасходнаяНакладная.ТекущийДокумент;"
Читают тему
(гостей: 1)

Быстрый переход