1с 7.7 Бухгалтерия Подскажите как заполнить значениями таблицу Печатной формы?
13.08.2009
13:48
#11
А зачем? у меня не возникло проблем с получением данных, проблема в их ВЫВОДЕ в печатную форму, тут видишь как первый цикл должен идти по строкам второй по колонкам(колонки должны быть в шапке) причем колонки не должны повторяться и количество должно ставиться на пересечении контрагента и товара!!Не могу допетрить как так завернуть:(
13.08.2009
14:13
#12
>
> но должно быть так:
>
> Номенклатура1 Номенклатура2 Номенклатура3 Номенклатура4 Номенклатура5 ...
> контрагент1 Кол-во Кол-во
> контрагент2 Кол-во Кол-во
> контрагент3 Кол-во
> контрагент4
> контрагент5 Кол-во
> ...
>
запросом, вот обработка :
> но должно быть так:
>
> Номенклатура1 Номенклатура2 Номенклатура3 Номенклатура4 Номенклатура5 ...
> контрагент1 Кол-во Кол-во
> контрагент2 Кол-во Кол-во
> контрагент3 Кол-во
> контрагент4
> контрагент5 Кол-во
> ...
>
запросом, вот обработка :
13.08.2009
14:14
#13
"а вот сам текст:
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
//|Без итогов;
|Контрагент = Документ.РасходнаяНакладная.Контрагент;
|Товар = Документ.РасходнаяНакладная.Товар;
|Количество = Документ.РасходнаяНакладная.Количество;
|ТекДок = Документ.РасходнаяНакладная.ТекущийДокумент;
|Функция Сумма_ = Сумма(Количество);
|Группировка Контрагент без групп;
|Группировка Товар без Групп все ВошедшиеВЗапрос;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок|КонтДок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
СЗ_СуммПервогоПрохода = СоздатьОбъект("СписокЗначений");
ДатаДок = """";
ФлагПервогоПрохода = 1;
Пока Запрос.Группировка(1) = 1 Цикл
Контрагент = Запрос.Контрагент;
Если ФлагПервогоПрохода = 0 Тогда
Таб.ВывестиСекцию("Сформировать|КонтДок");
КонецЕсли;
Пока Запрос.Группировка(2) = 1 Цикл
Сумма = Запрос.Сумма_;
Если ФлагПервогоПрохода = 1 Тогда
Товар = Запрос.Товар;
Таб.ПрисоединитьСекцию("Заголовок|Товар");
СЗ_СуммПервогоПрохода.ДобавитьЗначение(Сумма);
Иначе
Таб.ПрисоединитьСекцию("Сформировать|Товар");
КонецЕсли;
КонецЦикла;
Если ФлагПервогоПрохода = 1 Тогда
ФлагПервогоПрохода = 0;
Таб.ВывестиСекцию("Сформировать|КонтДок");
Для н = 1 по СЗ_СуммПервогоПрохода.РазмерСписка() Цикл
Сумма = СЗ_СуммПервогоПрохода.ПолучитьЗначение(н);
Таб.ПрисоединитьСекцию("Сформировать|Товар");
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", """");
КонецПроцедуры"
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
//|Без итогов;
|Контрагент = Документ.РасходнаяНакладная.Контрагент;
|Товар = Документ.РасходнаяНакладная.Товар;
|Количество = Документ.РасходнаяНакладная.Количество;
|ТекДок = Документ.РасходнаяНакладная.ТекущийДокумент;
|Функция Сумма_ = Сумма(Количество);
|Группировка Контрагент без групп;
|Группировка Товар без Групп все ВошедшиеВЗапрос;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок|КонтДок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
СЗ_СуммПервогоПрохода = СоздатьОбъект("СписокЗначений");
ДатаДок = """";
ФлагПервогоПрохода = 1;
Пока Запрос.Группировка(1) = 1 Цикл
Контрагент = Запрос.Контрагент;
Если ФлагПервогоПрохода = 0 Тогда
Таб.ВывестиСекцию("Сформировать|КонтДок");
КонецЕсли;
Пока Запрос.Группировка(2) = 1 Цикл
Сумма = Запрос.Сумма_;
Если ФлагПервогоПрохода = 1 Тогда
Товар = Запрос.Товар;
Таб.ПрисоединитьСекцию("Заголовок|Товар");
СЗ_СуммПервогоПрохода.ДобавитьЗначение(Сумма);
Иначе
Таб.ПрисоединитьСекцию("Сформировать|Товар");
КонецЕсли;
КонецЦикла;
Если ФлагПервогоПрохода = 1 Тогда
ФлагПервогоПрохода = 0;
Таб.ВывестиСекцию("Сформировать|КонтДок");
Для н = 1 по СЗ_СуммПервогоПрохода.РазмерСписка() Цикл
Сумма = СЗ_СуммПервогоПрохода.ПолучитьЗначение(н);
Таб.ПрисоединитьСекцию("Сформировать|Товар");
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", """");
КонецПроцедуры"
13.08.2009
14:41
#14
Ты на самом деле мозг, мне еще многому надо учиться) хорошо что такие люди есть на форуме -_-
Этот вариант мне подходит, конечно нужно еще кое что исправить, но главное что есть концепция.
Еще есть вопрос, ты эту обработку сделал полностью в конструкторе или вручную дописывал?
Этот вариант мне подходит, конечно нужно еще кое что исправить, но главное что есть концепция.
Еще есть вопрос, ты эту обработку сделал полностью в конструкторе или вручную дописывал?
13.08.2009
14:44
#15
> Ты на самом деле мозг, мне еще многому надо учиться) хорошо что такие люди есть на форуме -_-
> Этот вариант мне подходит, конечно нужно еще кое что исправить, но главное что есть концепция.
> Еще есть вопрос, ты эту обработку сделал полностью в конструкторе или вручную дописывал?
время ушло 10 мин
конструктор и дописки
> Этот вариант мне подходит, конечно нужно еще кое что исправить, но главное что есть концепция.
> Еще есть вопрос, ты эту обработку сделал полностью в конструкторе или вручную дописывал?
время ушло 10 мин
конструктор и дописки
13.08.2009
14:52
#16
Сам запрос с помощью конструктора тоже составлял, а вот нижнюю часть кода я пока не допетрил.
13.08.2009
14:56
#17
> Сам запрос с помощью конструктора тоже составлял, а вот нижнюю часть кода я пока не допетрил.
я просто сделал вывод в один проход, иначе пришлось бы два раза
я просто сделал вывод в один проход, иначе пришлось бы два раза
13.08.2009
18:34
#18
1. В личку напиши номер телефона, в благодарность тебе на баланс закину.
2. Получилось так что в запросе по каждому контрагенту выводятся данные сразу по всем документам за весь период, а как сделать что бы выводилось отдельно по каждому документу(1 документ = 1 строка) с датой документа? и еще сумму в низу под каждым товаром?
просто иначе ника не проверить точностьданных.
2. Получилось так что в запросе по каждому контрагенту выводятся данные сразу по всем документам за весь период, а как сделать что бы выводилось отдельно по каждому документу(1 документ = 1 строка) с датой документа? и еще сумму в низу под каждым товаром?
просто иначе ника не проверить точностьданных.
14.08.2009
10:44
#19
"> 1. В личку напиши номер телефона, в благодарность тебе на баланс закину.
это хорошо! ушло...
> 2. Получилось так что в запросе по каждому контрагенту выводятся данные сразу по всем документам за весь период, а как сделать что бы выводилось отдельно по каждому документу(1 документ = 1 строка) с датой документа? и еще сумму в низу под каждым товаром?
так вопрос был:
сделать вниз контрагент, вбок - товар
> просто иначе ника не проверить точностьданных.
всё там нормально!
проверял на демо базе...
"
это хорошо! ушло...
> 2. Получилось так что в запросе по каждому контрагенту выводятся данные сразу по всем документам за весь период, а как сделать что бы выводилось отдельно по каждому документу(1 документ = 1 строка) с датой документа? и еще сумму в низу под каждым товаром?
так вопрос был:
сделать вниз контрагент, вбок - товар
> просто иначе ника не проверить точностьданных.
всё там нормально!
проверял на демо базе...
"
1C8.2 УПП 1.3: Ошибка СУБД: Не удалось привязать составной идентификатор - что делать?Установка локальной 1С 7.7 на Windows 7 64bit Home Edition
Читают тему
(гостей: 1)