Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 сен 2021, 00:19

Вывод на печать Табличную часть документа

Автор Кот_Леопольд, 23 янв 2019, 08:31

0 Пользователей и 1 гость просматривают эту тему.

Кот_Леопольд

Всем добрый день. Форма управляемая конфигурация не типовая. Подскажите пожалуйста как вывести на печать отдельные столбцы из Табличной части. А именно есть Табличная часть в ней столбцы ОбъектИследования и  Количество, необходимо что бы на печать вышло в одну строчку ОбъектИследованияИКоличество = Элемент.ОбъектИследования+", кол-во: "+ Элемент.Количество;
И еще возможно ли при выводе на печать объедение ячейки если элементы ОбъектИследвания равны между собой, а количество сложить???
На данный момент вот что у меня получается:
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.ПриложениеКДоговору.ПолучитьМакет("Приложение");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриложениеКДоговору.Калькуляция.(
| НомерСтроки КАК НомерСтроки,
| ОбъектИследования КАК ОбъектИследования,
| Показатель КАК Показатель,
| Количество КАК Количество,
| Кратность КАК Кратность,
| Цена КАК Цена,
| Сумма КАК Сумма
| ) КАК Калькуляция
|ИЗ
| Документ.ПриложениеКДоговору КАК ПриложениеКДоговору
|ГДЕ
| ПриложениеКДоговору.Ссылка В(&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Объект.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьКалькуляцияШапка = Макет.ПолучитьОбласть("КалькуляцияШапка");ОбластьКалькуляция = Макет.ПолучитьОбласть("Калькуляция");
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьКалькуляцияШапка);
ВыборкаКалькуляция = Выборка.Калькуляция.Выбрать();
Пока ВыборкаКалькуляция.Следующий() Цикл
ОбластьКалькуляция.Параметры.Заполнить(ВыборкаКалькуляция);
ТабДок.Вывести(ОбластьКалькуляция, ВыборкаКалькуляция.Уровень());
КонецЦикла;
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;


Кот_Леопольд

Почти разобрался. В одну строчку понял как вывести, только не пойму почему число в строчку не "Преобразование значения к типу Число не может быть выполнено" ОбластьКалькуляция.Параметры.ОбъектИследованияИКоличество = ВыборкаКалькуляция.ОбъектИследования+", количество: "+ Строка(ВыборкаКалькуляция.Количество);
Ну и по прежнему еще нужно объединить строки. Кто может помогите?!

LexaK


ОбластьКалькуляция.Параметры.ОбъектИследованияИКоличество = ВыборкаКалькуляция.ОбъектИследования+", количество: "+ Строка(ВыборкаКалькуляция.Количество);

с этим все просто, попробуйте так

ОбластьКалькуляция.Параметры.ОбъектИследованияИКоличество = "" + ВыборкаКалькуляция.ОбъектИследования+", количество: "+ Строка(ВыборкаКалькуляция.Количество);



а с этим

Ну и по прежнему еще нужно объединить строки. Кто может помогите?!

все так сложно, ни чего не понятно :dfbsdfbsdf:
ответ Понравился? (в смысле пригодился?)

Кот_Леопольд

[quote author=LexaK link=topic=72711.msg205872#msg205872 date=1548246657]


все так сложно, ни чего не понятно :dfbsdfbsdf:
[/quote]

возможно ли при выводе на печать объедение ячейки если элементы ОбъектИследвания равны между собой, а количество сложить???Например Вода питьевая кол-во 5 и Вода питьевая кол-во 4 Объединились и получилось Вода питьевая кол-во 9

LexaK


возможно ли при выводе на печать объедение ячейки если элементы ОбъектИследвания равны между собой, а количество сложить???Например Вода питьевая кол-во 5 и Вода питьевая кол-во 4 Объединились и получилось Вода питьевая кол-во 9


да возможно, но эти все свертки(и сложения) надо сделать ДО вывода макета а не ПРИ выводе

например
КакаяТоТЗ.Свернуть("Номенклатура,Артикул","Кличество,Сумма");
ответ Понравился? (в смысле пригодился?)

Кот_Леопольд



да возможно, но эти все свертки(и сложения) надо сделать ДО вывода макета а не ПРИ выводе

например
КакаяТоТЗ.Свернуть("Номенклатура,Артикул","Кличество,Сумма");
[/quote]
Как понять ДО вывода? Вы имеете в виду на форме документа?
Добавлено: 23 янв 2019, 17:08


Цитата: LexaK от 23 янв 2019, 15:46

возможно ли при выводе на печать объедение ячейки если элементы ОбъектИследвания равны между собой, а количество сложить???Например Вода питьевая кол-во 5 и Вода питьевая кол-во 4 Объединились и получилось Вода питьевая кол-во 9


да возможно, но эти все свертки(и сложения) надо сделать ДО вывода макета а не ПРИ выводе

например
КакаяТоТЗ.Свернуть("Номенклатура,Артикул","Кличество,Сумма");
Что  то все равно не получается, создал команду
&НаСервере
Функция ГруппировкаСтрок()
ТЗ = Новый ТаблицаЗначений;
     ТЗ = Объект.Калькуляция.Выгрузить();
     ТЗ.Свернуть("ОбъектИследования", "Количество");
     Объект.Калькуляция.Загрузить(ТЗ);
Возврат ТЗ;
КонецФункции

&НаКлиенте
Процедура Объединить(Команда)
ГруппировкаСтрок();
КонецПроцедуры

Ошибка:
{Документ.ПриложениеКДоговору.Форма.ФормаДокумента.Форма(20)}: Ошибка при вызове метода контекста (ГруппировкаСтрок)
ГруппировкаСтрок();
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'


Luzer1C

Таблицу значений можно обрабатывать только &НаСервере. А что мешает свернуть строки в запросе?
Халамбалам.

Кот_Леопольд

Цитата: Luzer1C от 24 янв 2019, 04:36
Таблицу значений можно обрабатывать только &НаСервере. А что мешает свернуть строки в запросе?
Отсутствие такова опыта, ну буду побывать, так данный метод все равно сворачивает строки на форме документа, а мне нужно на печатной форме.
Добавлено: 24 янв 2019, 07:07


Подскажите у меня есть вот такая функция:
&НаСервере
Функция ПечатьНаСервере()


ТабДок = Новый ТабличныйДокумент;

Макет = Документы.ПриложениеКДоговору.ПолучитьМакет("Приложение");


//ОбластьМакета = Макет.ПолучитьОбласть("Калькуляция");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриложениеКДоговору.Калькуляция.(
| НомерСтроки КАК НомерСтроки,
| ОбъектИследования КАК ОбъектИследования,
| Показатель КАК Показатель,
| Количество КАК Количество,
| Кратность КАК Кратность,
| Цена КАК Цена,
| Сумма КАК Сумма
| ) КАК Калькуляция,
| ПриложениеКДоговору.Контрагент.Наименование КАК КонтрагентНаименование,
| ПриложениеКДоговору.Контрагент.АдресЮридический КАК КонтрагентАдресЮридический,
| ПриложениеКДоговору.Контрагент.ИНН КАК КонтрагентИНН,
| ПриложениеКДоговору.Контрагент.КПП КАК КонтрагентКПП,
| ПриложениеКДоговору.Контрагент.РасчетныйСчет КАК КонтрагентРасчетныйСчет,
| ПриложениеКДоговору.Контрагент.КорреспондентскийСчет КАК КонтрагентКорреспондентскийСчет,
| ПриложениеКДоговору.Контрагент.Банк КАК КонтрагентБанк,
| ПриложениеКДоговору.Контрагент.БИК КАК КонтрагентБИК,
| ПриложениеКДоговору.Контрагент.Телефон КАК КонтрагентТелефон,
| ПриложениеКДоговору.Контрагент.ПочтовыйЯщик КАК КонтрагентПочтовыйЯщик,
| ПриложениеКДоговору.Контрагент.ФИОРуководитель КАК КонтрагентФИОРуководитель,
| ПриложениеКДоговору.Контрагент.ФИОРуководитель.Должность КАК КонтрагентФИОРуководительДолжность,
| ПриложениеКДоговору.Организация.Наименование КАК ОрганизацияНаименование,
| ПриложениеКДоговору.Организация.АдресЮридический КАК ОрганизацияАдресЮридический,
| ПриложениеКДоговору.Организация.ИНН КАК ОрганизацияИНН,
| ПриложениеКДоговору.Организация.КПП КАК ОрганизацияКПП,
| ПриложениеКДоговору.Организация.РасчетныйСчет КАК ОрганизацияРасчетныйСчет,
| ПриложениеКДоговору.Организация.КорреспондентскийСчет КАК ОрганизацияКорреспондентскийСчет,
| ПриложениеКДоговору.Организация.Банк КАК ОрганизацияБанк,
| ПриложениеКДоговору.Организация.БИК КАК ОрганизацияБИК,
| ПриложениеКДоговору.Организация.Телефон КАК ОрганизацияТелефон,
| ПриложениеКДоговору.Организация.ПочтовыйЯщик КАК ОрганизацияПочтовыйЯщик,
| ПриложениеКДоговору.Организация.ФИОРуководитель КАК ОрганизацияФИОРуководитель,
| ПриложениеКДоговору.Организация.ФИОРуководитель.Должность КАК ОрганизацияФИОРуководительДолжность
|ИЗ
| Документ.ПриложениеКДоговору КАК ПриложениеКДоговору
|ГДЕ
| ПриложениеКДоговору.Ссылка В(&Ссылка)";

Запрос.Параметры.Вставить("Ссылка", Объект.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьКалькуляцияШапка = Макет.ПолучитьОбласть("КалькуляцияШапка");
ОбластьОбъект = Макет.ПолучитьОбласть("Объект");
ОбластьКалькуляция = Макет.ПолучитьОбласть("Калькуляция");
ОбластьИтоговаяСумма = Макет.ПолучитьОбласть("ИтоговаяСумма");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
ОбластьПодпись = Макет.ПолучитьОбласть("Подпись");


ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;


ФорматнаяСтрока=Формат(Объект.Дата,"ДЛФ=DD");
    ФорматнаяСтрока=Сред(ФорматнаяСтрока,Найти(ФорматнаяСтрока," ")+1,СтрДлина(ФорматнаяСтрока));
    ФорматнаяСтрока=Сред(ФорматнаяСтрока,1, Найти(ФорматнаяСтрока," "));
    ОбластьЗаголовок.Параметры.Заголовок = "ПРИЛОЖЕНИЕ № " + Объект.НомерПриложения;
ОбластьЗаголовок.Параметры.Заголовок1 = "к договору возмездного оказания услуг №" +Формат(Объект.Дата,"ДФ=yyyy")+"/"+ Объект.НомерДоговора+"/" + Объект.ТипДоговора+" от "+  Строка(День(Объект.Дата))+" " +СокрЛП(ФорматнаяСтрока)+" " +Формат(Объект.Дата,"ДФ=yyyy")+ " года";
ОбластьЗаголовок.Параметры.Дата = Строка(День(Объект.Дата))+" " +СокрЛП(ФорматнаяСтрока)+" " +Формат(Объект.Дата,"ДФ=yyyy")+" года" ;

ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьКалькуляцияШапка);
ОбластьОбъект.Параметры.МестоПроведениеРабот = Объект.МестоПроведениеРабот;
ТабДок.Вывести(ОбластьОбъект);



ВыборкаКалькуляция = Выборка.Калькуляция.Выбрать();
Пока ВыборкаКалькуляция.Следующий() Цикл

ОбластьКалькуляция.Параметры.ОбъектИследованияИКоличество =" " + ВыборкаКалькуляция.ОбъектИследования+", количество: "+ Строка(ВыборкаКалькуляция.Количество);
ОбластьКалькуляция.Параметры.Заполнить(ВыборкаКалькуляция);

ТабДок.Вывести(ОбластьКалькуляция, ВыборкаКалькуляция.Уровень());
КонецЦикла;


ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;

ОбластьИтоговаяСумма.Параметры.СтоимостьУслуг=Объект.СуммаДокумента;
ОбластьИтоговаяСумма.Параметры.Итого=Объект.СуммаДокумента;
ТабДок.Вывести(ОбластьИтоговаяСумма);

СуммаПропись = ЧислоПрописью(Объект.СуммаДокумента,, "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");
СуммаПропись =СокрЛП(СуммаПропись);
    СуммаПропись =Нрег(СуммаПропись);
    ОбластьИтого.Параметры.СуммаИтого = Строка(Цел(Объект.СуммаДокумента))+ " руб. " + Строка((Объект.СуммаДокумента-Цел(Объект.СуммаДокумента))*100)+" коп. (" + СуммаПропись+")";
ТабДок.Вывести(ОбластьИтого);

ОбластьРеквизиты.Параметры.Заказчик = Выборка.КонтрагентНаименование;
ОбластьРеквизиты.Параметры.ЗаказчикАдрес = Выборка.КонтрагентАдресЮридический;
ОбластьРеквизиты.Параметры.ЗаказчикИННКПП ="ИНН " + Выборка.КонтрагентИНН + ", КПП " + Выборка.КонтрагентКПП;
ОбластьРеквизиты.Параметры.ЗаказчикРасчетныйСчетКорреспондентскийСчет = "Р/с " + Выборка.КонтрагентРасчетныйСчет+", К/с " +Выборка.КонтрагентКорреспондентскийСчет;
ОбластьРеквизиты.Параметры.ЗаказчикБанкБИК = Выборка.КонтрагентБанк+", БИК "+Выборка.КонтрагентБИК;
// ОбластьРеквизиты.Параметры.Телефон = Выборка.Телефон;
// ОбластьРеквизиты.Параметры.ПочтовыйЯщик = Выборка.ПочтовыйЯщик;

    ОбластьРеквизиты.Параметры.Организация = Выборка.ОрганизацияНаименование;
ОбластьРеквизиты.Параметры.ОрганизацияАдрес = Выборка.ОрганизацияАдресЮридический;
ОбластьРеквизиты.Параметры.ОрганизацияИННКПП ="ИНН " + Выборка.ОрганизацияИНН + ", КПП " + Выборка.ОрганизацияКПП;
ОбластьРеквизиты.Параметры.ОрганизацияРасчетныйСчетКорреспондентскийСчет = "Р/с " + Выборка.ОрганизацияРасчетныйСчет+", К/с " +Выборка.ОрганизацияКорреспондентскийСчет;
ОбластьРеквизиты.Параметры.ОрганизацияБанкБИК = Выборка.ОрганизацияБанк+", БИК "+Выборка.ОрганизацияБИК;
ОбластьРеквизиты.Параметры.ОрганизацияТелефонПочтовыйЯщик ="тел: "+ Выборка.ОрганизацияТелефон +", e-mail: " + Выборка.ОрганизацияПочтовыйЯщик;

ТабДок.Вывести(ОбластьРеквизиты);

ОбластьПодпись.Параметры.ЗаказчикФИО = Выборка.КонтрагентФИОРуководитель;
ОбластьПодпись.Параметры.ЗаказчикДолжность = Выборка.КонтрагентФИОРуководительДолжность;
ОбластьПодпись.Параметры.ОрганизацияФИО = Выборка.ОрганизацияФИОРуководитель;
ОбластьПодпись.Параметры.ОрганизацияДолжность = Выборка.ОрганизацияФИОРуководительДолжность;
ТабДок.Вывести(ОбластьПодпись);

Возврат ТабДок

КонецФункции

Я могу сюда добавить запрос такой:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|ПриложениеКДоговору.Калькуляция.(
|  НомерСтроки КАК НомерСтроки,
|  ОбъектИследования КАК ОбъектИследования,
|  Показатель КАК Показатель,
|  Количество КАК Количество,
|  Кратность КАК Кратность,
|  Цена КАК Цена,
|  Сумма КАК Сумма
|) КАК Калькуляция,
|ИЗ
| Документ.ПриложениеКДоговору КАК ПриложениеКДоговору
|ГДЕ
| ПриложениеКДоговору.Ссылка В(&Ссылка)"
|ИТОГИ ПО
|  ОбъектИследования";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

Если да то в какую часть функции его нужно вставить, если нет то как нужно его реализовать.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск