1. AndrewUs 10 21.05.19 09:56 Сейчас в теме

Печать строк табличной части документа.

Здравствуйте!
Конфигурация на УФ. Есть документ с ТЧ.
К этому документу сделана печатная форма. Подскажите, пожалуйста, как можно вывести на макет строки тч так:
<Строка1>
<Строка2>
<Строка3> и т.д., т.е. строки ТЧ на печать нужно выводить фиксированно, определенная строка ТЧ выводится в указанный параметр ПФ?
Простите за путанное объяснение.
Спасибо.
Найденные решения
9. mrx2012 21.05.19 10:33 Сейчас в теме
(8)

Сч = 1;
Для каждого Стр Из Выборка.ЗаданиеВодителю Цикл
ОбластьЛицевая.Параметры["СтрокаЗВ"+Сч] = Стр.Место;

Сч = Сч+1;
КонецЦикла
AndrewUs; +1 Ответить
11. mrx2012 21.05.19 11:10 Сейчас в теме
(10) Лучше убрать из запроса табличную часть и получить ее отдельным запросом.

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслуг.Номер КАК Номер,
		|	РеализацияТоваровУслуг.Дата КАК Дата
		|ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|ГДЕ
		|	РеализацияТоваровУслуг.Ссылка = &Ссылка
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
		|	РеализацияТоваровУслугТовары.КоличествоМест КАК КоличествоМест,
		|	РеализацияТоваровУслугТовары.Цена КАК Цена,
		|	РеализацияТоваровУслугТовары.Сумма КАК Сумма
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
		|ГДЕ
		|	РеализацияТоваровУслугТовары.Ссылка = &Ссылка";
	
	РезультатЗапроса = Запрос.ВыполнитьПакет();
	ДанныеШапки = РезультатЗапроса[0].Выбрать;
	ДанныеТЧ = РезультатЗапроса[1].Выгрузить;
Показать
AndrewUs; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. mrx2012 21.05.19 10:07 Сейчас в теме
Доброе утро.

Самое простое воспользоваться конструктором запросов.


	Макет = ВнешниеОбработки.ВнешняяОбработка1.ПолучитьМакет("Макет");
		
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслугТовары.НомерСтроки КАК НомерСтроки,
		|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
		|	ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура) КАК НоменклатураПредставление,
		|	РеализацияТоваровУслугТовары.КоличествоМест КАК КоличествоМест,
		|	РеализацияТоваровУслугТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
	ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
	
	ТабДок.Очистить();

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


Если процедура будет в форме , то надо макет получать так:

Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
Прикрепленные файлы:
3. AndrewUs 10 21.05.19 10:14 Сейчас в теме
(2) Есть ТЧ, в ней, например, строки:

1. Номенклатура 1
2. Номенклатура 2
3. Номенклатура 3
...
n. Номенклатура n

а в печатной форме сделано всего лишь 5 строк:
<Строка1>
<Строка2>
<Строка3>
<Строка4>
<Строка5>
Следовательно, остальные строки на печать попадать не должны.
Получается нужно вывести, например, первые пять позиций ТЧ.
Сомневаюсь, что конструктор такое сможет сделать.
4. mrx2012 21.05.19 10:21 Сейчас в теме
Было бы нагляднее увидеть макет.
А так :

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 5
		|	РеализацияТоваровУслугТовары.НомерСтроки КАК НомерСтроки,
		|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
		|	ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура) КАК НоменклатураПредставление,
		|	РеализацияТоваровУслугТовары.КоличествоМест КАК КоличествоМест,
		|	РеализацияТоваровУслугТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
	
	ТабДок.Очистить();

	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ОбластьДетальныхЗаписей.Параметры["Номерклатура" + ВыборкаДетальныеЗаписи.НомерСтроки]

	КонецЦикла;
		ТабДок.Вывести(ОбластьДетальныхЗаписей);
Показать
AndrewUs; +1 Ответить
5. AndrewUs 10 21.05.19 10:25 Сейчас в теме
(4) Сам макет
Прикрепленные файлы:
6. AndrewUs 10 21.05.19 10:26 Сейчас в теме
На нем параметры СтрокаЗВ1, СтрокаЗВ2, СтрокаЗВ3, СтрокаЗВ4, СтрокаЗВ5. В данных полях должны появляться строки тч по номерами 1, 2, 3, 4, 5 соответственно.
7. mrx2012 21.05.19 10:26 Сейчас в теме
Тогда этот вариант подойдет:
Сч= 1;
Для каждого Стр Из ТабличнаяЧастьДокумента Цикл

ОбластьДетальныхЗаписей.Параметры["Строка3В" + Сч];
Сч= Сч+1;
КонецЦикла;
8. AndrewUs 10 21.05.19 10:27 Сейчас в теме
Сам запрос:
//{{_КОНСТРУКТОР_ПЕЧАТИ(Грузовой)
	Макет = Документы.ПутевойЛист.ПолучитьМакет("Грузовой");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ПутевойЛист.Водитель1.Наименование КАК Наименование1,
	|	ПутевойЛист.Водитель1.Код КАК Код1,
	|	ПутевойЛист.Водитель2.Наименование КАК Наименование2,
	|	ПутевойЛист.Водитель2.Код КАК Код2,
	|	ПутевойЛист.ВозвращениеВГараж КАК ВозвращениеВГараж,
	|	ПутевойЛист.Врач КАК Врач,
	|	ПутевойЛист.ВыдалДиспетчер КАК ВыдалДиспетчер,
	|	ПутевойЛист.ВыездИзГаража КАК ВыездИзГаража,
	|	ПутевойЛист.ВыпустилМеханик КАК ВыпустилМеханик,
	|	ПутевойЛист.Дата КАК Дата,
	|	ПутевойЛист.ДействителенДо КАК ДействителенДо,
	|	ПутевойЛист.Задание,
	|	ПутевойЛист.Номер КАК Номер,
	|	ПутевойЛист.ПринялДиспетчер,
	|	ПутевойЛист.ПринялМеханик КАК ПринялМеханик,
	|	ПутевойЛист.ТС.Марка КАК ТСМарка,
	|	ПутевойЛист.ТС.ГосНомер КАК ТСГосНомер,
	|	ПутевойЛист.ГорючееОсновное КАК ГорючееОсновное,
	|	ПутевойЛист.ВыданоОсновное КАК ВыданоОсновное,
	|	ПутевойЛист.ОстатокВыездОсновное КАК ОстатокВыездОсновное,
	|	ПутевойЛист.ОстатокВозвращениеОсновное КАК ОстатокВозвращениеОсновное,
	|	ПутевойЛист.СданоОсновное КАК СданоОсновное,
	|	ПутевойЛист.ГорючееДополнительное КАК ГорючееДополнительное,
	|	ПутевойЛист.ВыданоДополнительное КАК ВыданоДополнительное,
	|	ПутевойЛист.ОстатокВыездДополнительное КАК ОстатокВыездДополнительное,
	|	ПутевойЛист.ОстатокВозвращениеДополнительное КАК ОстатокВозвращениеДополнительное,
	|	ПутевойЛист.СданоДополнительное КАК СданоДополнительное,
	|	ПутевойЛист.ОдометрВыезд КАК ОдометрВыезд,
	|	ПутевойЛист.ОдометрВозвращение КАК ОдометрВозвращение,
	|	ПутевойЛист.ЗаданиеВодителю.(
	|		НомерСтроки,
	|		Место,
	|		ВремяПрибытия,
	|		Погрузка,
	|		Разгрузка,
	|		Груз,
	|		КоличествоЕздок,
	|		Расстояние,
	|		Тоннаж
	|	)
	|ИЗ
	|	Документ.ПутевойЛист КАК ПутевойЛист
	|ГДЕ
	|	ПутевойЛист.Ссылка В (&Ссылка)";
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();

	ОбластьЛицевая = Макет.ПолучитьОбласть("Лицевая");
	
	ОбластьОборотная = Макет.ПолучитьОбласть("Оборотная");
	ТабДок.Очистить();

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

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

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

		ВставлятьРазделительСтраниц = Истина;
		ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
		ТабДок.АвтоМасштаб = Истина;

	КонецЦикла;
	//}}
Показать
9. mrx2012 21.05.19 10:33 Сейчас в теме
(8)

Сч = 1;
Для каждого Стр Из Выборка.ЗаданиеВодителю Цикл
ОбластьЛицевая.Параметры["СтрокаЗВ"+Сч] = Стр.Место;

Сч = Сч+1;
КонецЦикла
AndrewUs; +1 Ответить
10. AndrewUs 10 21.05.19 10:49 Сейчас в теме
(9) Итератор для значения не определен
Для каждого Стр Из Выборка.ЗаданиеВодителю Цикл
11. mrx2012 21.05.19 11:10 Сейчас в теме
(10) Лучше убрать из запроса табличную часть и получить ее отдельным запросом.

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслуг.Номер КАК Номер,
		|	РеализацияТоваровУслуг.Дата КАК Дата
		|ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|ГДЕ
		|	РеализацияТоваровУслуг.Ссылка = &Ссылка
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
		|	РеализацияТоваровУслугТовары.КоличествоМест КАК КоличествоМест,
		|	РеализацияТоваровУслугТовары.Цена КАК Цена,
		|	РеализацияТоваровУслугТовары.Сумма КАК Сумма
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
		|ГДЕ
		|	РеализацияТоваровУслугТовары.Ссылка = &Ссылка";
	
	РезультатЗапроса = Запрос.ВыполнитьПакет();
	ДанныеШапки = РезультатЗапроса[0].Выбрать;
	ДанныеТЧ = РезультатЗапроса[1].Выгрузить;
Показать
AndrewUs; +1 Ответить
12. AndrewUs 10 21.05.19 13:36 Сейчас в теме
(11) Спасибо большое за терпеливые подсказки. Вы мне очень помогли. Все работает.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Москва
зарплата от 130 000 руб. до 200 000 руб.
Полный день

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день

Консультант-методолог 1С
Краснодар
зарплата от 110 000 руб.
Полный день

Консультант 1 С
Краснодар
зарплата от 50 000 руб. до 150 000 руб.
Полный день