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) Спасибо большое за терпеливые подсказки. Вы мне очень помогли. Все работает.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Консультант ERP-систем
Москва
Временный (на проект)

Студент (стажер) 1С
Нижний Новгород
зарплата от 25 000 руб.
Полный день

Бизнес-аналитик 1С
Москва
зарплата от 90 000 руб. до 150 000 руб.
Полный день

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

Программист 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день