горизонтальное пересечение областей в макете 1с

1. user1299321 03.06.21 14:27 Сейчас в теме
есть типовой макет ПКО. в нем выводиться только одна строка. мне нужно чтобы выводилось несколько строк в разрезе аналитики. в функции печати в запросе добавила пакет для вывода нужных строк. при выводе в форме строки встают в самом верху, хотя вставляю в середине вывода области шапки. подскажите почему так может быть?

		ОбластьРасшифровка = Макет.ПолучитьОбласть("СтрокаРасшифровка"); 
		
		Пока Расшифровка.Следующий() Цикл
			ОбластьРасшифровка.Параметры.Заполнить(Расшифровка);
			ОбластьРасшифровка.Параметры.КодДебета = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета( ,Расшифровка.КФО,Расшифровка.Счет,,,);
			ОбластьРасшифровка.Параметры.СубСчет = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета( ,Расшифровка.КФО,Расшифровка.КорСчет,Расшифровка.КЭК,,);
			ОбластьРасшифровка.Параметры.КодПодразделения = Расшифровка.КодПодразделения;
			ОбластьРасшифровка.Параметры.КодАналитическогоУчета = Расшифровка.КодАналитическогоУчета;
			ОбластьРасшифровка.Параметры.КодЦелевогоНазначения = Расшифровка.КодЦелевогоНазначения;
			ОбластьРасшифровка.Параметры.СуммаСНазваниемВалюты = Формат(Расшифровка.Сумма, "ЧЦ=15; ЧДЦ=2; ЧРД=-; ЧГ=0") + ?(Шапка.ВалютаДокумента = ВалютаРегламентированногоУчета, "", " " + Шапка.ВалютаДокумента);
		 ТабличныйДокумент.Вывести(ОбластьРасшифровка);
			
		КонецЦикла;

Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. M_A_D 184 03.06.21 14:35 Сейчас в теме
(1)
шапку я бы разделил на шапка и футер, а уже между ними сделал строки.
думаю у вас в функции снала вызывается:
ТабличныйДокумент.Вывести(ОбластьРасшифровка);

а уже потом где-то дальше
ТабличныйДокумент.Вывести(ОбластьШапки);

Именно поэтому вы и получаете, что сначала у вас выводятся строки а только потом шапка.
svetanik; +1 Ответить
2. user1299321 03.06.21 14:28 Сейчас в теме
не прикрепила макет
Прикрепленные файлы:
3. FatPanzer 03.06.21 14:30 Сейчас в теме
Не важно, где вы её заполняете - в середине алгоритма или в конце. Не важно, где область расположена в макете - в начале или в конце.
Важно - где вы её выводите методом Вывести().
4. soft_wind 03.06.21 14:32 Сейчас в теме
(1) Всю процедуру печати выкладывайте, тогда можно будет найти ошибку
6. user1299321 03.06.21 14:56 Сейчас в теме
(4)
Функция ПечатьКО1(МассивОбъектов, ОбъектыПечати) Экспорт
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	
	ТабличныйДокумент.ИмяПараметровПечати = "ПараметрыПечати_КО1";
	
	Макет = ПолучитьМакет("ПФ_MXL_КО1");
	
	Запрос=Новый Запрос;
	Запрос.Текст="ВЫБРАТЬ
	|	ПриходныйКассовыйОрдер.Номер КАК Номер,
	|	ПриходныйКассовыйОрдер.Дата КАК ДатаДокумента,
	|	ПриходныйКассовыйОрдер.Организация.НаименованиеПолное КАК ПолноеНаименованиеОрганизации,
	|	ВЫБОР
	|		КОГДА ПриходныйКассовыйОрдер.Организация.ИспользоватьВПлатежныхДокументахСокращенноеНаименование = ИСТИНА
	|			ТОГДА ПриходныйКассовыйОрдер.Организация.НаименованиеСокращенное
	|		ИНАЧЕ ПриходныйКассовыйОрдер.Организация.НаименованиеПолное
	|	КОНЕЦ КАК ПредставлениеОрганизации,
	|	ПриходныйКассовыйОрдер.Организация.НаименованиеСокращенное КАК СокращенноеНаименованиеОрганизации,
	|	ВЫБОР
	|		КОГДА ПриходныйКассовыйОрдер.Подразделение.НаименованиеПолное = """"
	|			ТОГДА ПриходныйКассовыйОрдер.Подразделение
	|		ИНАЧЕ ПриходныйКассовыйОрдер.Подразделение.НаименованиеПолное
	|	КОНЕЦ КАК ПредставлениеПодразделения,
	|	ПриходныйКассовыйОрдер.ПодразделениеКор КАК ПодразделениеКор,
	|	ПриходныйКассовыйОрдер.СуммаДокумента КАК СуммаДокумента,
	|	ПриходныйКассовыйОрдер.ГлБухгалтер КАК ГлБухгалтер,
	|	ПриходныйКассовыйОрдер.Кассир КАК Кассир,
	|	ПриходныйКассовыйОрдер.ПринятоОт КАК ПринятоОт,
	|	ПриходныйКассовыйОрдер.Основание КАК Основание,
	|	ПриходныйКассовыйОрдер.Приложение КАК Приложение,
	|	ПриходныйКассовыйОрдер.Ссылка КАК Ссылка,
	|	ПриходныйКассовыйОрдер.СтавкаНДС КАК СтавкаНДС,
	|	ПриходныйКассовыйОрдер.СуммаНДС КАК СуммаНДС,
	|	ПриходныйКассовыйОрдер.ВалютаДокумента КАК ВалютаДокумента,
	|	ПриходныйКассовыйОрдер.Организация.Префикс КАК ПрефиксОрганизации,
	|	ВЫБОР
	|		КОГДА ВложенныйЗапрос.КоличествоКФО = 1
	|			ТОГДА ВложенныйЗапрос.КФО
	|		ИНАЧЕ ""0""
	|	КОНЕЦ КАК КФО,
	|	ПриходныйКассовыйОрдер.Организация.КодОКПО КАК ОрганизацияПоОКПО,
	|	ЛОЖЬ КАК Фондовый,
	|	ПриходныйКассовыйОрдер.ПоступлениеВыручкиТорговойТочки КАК ПоступлениеВыручкиТорговойТочки
	|ИЗ
	|	Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Ссылка,
	|			МАКСИМУМ(ПриходныйКассовыйОрдерРасшифровкаПлатежа.КФО) КАК КФО,
	|			КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПриходныйКассовыйОрдерРасшифровкаПлатежа.КФО) КАК КоличествоКФО
	|		ИЗ
	|			Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
	|		ГДЕ
	|			ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка В(&МассивОбъектов)
	|		
	|		СГРУППИРОВАТЬ ПО
	|			ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка) КАК ВложенныйЗапрос
	|		ПО ПриходныйКассовыйОрдер.Ссылка = ВложенныйЗапрос.Ссылка
	|ГДЕ
	|	ПриходныйКассовыйОрдер.Ссылка В(&МассивОбъектов)
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ПриходныйОрдерФондовый.Номер,
	|	ПриходныйОрдерФондовый.Дата,
	|	ПриходныйОрдерФондовый.Организация.НаименованиеПолное,
	|	ВЫБОР
	|		КОГДА ПриходныйОрдерФондовый.Организация.ИспользоватьВПлатежныхДокументахСокращенноеНаименование = ИСТИНА
	|			ТОГДА ПриходныйОрдерФондовый.Организация.НаименованиеСокращенное
	|		ИНАЧЕ ПриходныйОрдерФондовый.Организация.НаименованиеПолное
	|	КОНЕЦ,
	|	ПриходныйОрдерФондовый.Организация.НаименованиеСокращенное,
	|	ВЫБОР
	|		КОГДА ПриходныйОрдерФондовый.Подразделение.НаименованиеПолное = """"
	|			ТОГДА ПриходныйОрдерФондовый.Подразделение
	|		ИНАЧЕ ПриходныйОрдерФондовый.Подразделение.НаименованиеПолное
	|	КОНЕЦ,
	|	ПриходныйОрдерФондовый.ПодразделениеКор,
	|	ПриходныйОрдерФондовый.СуммаДокумента,
	|	ПриходныйОрдерФондовый.ГлБухгалтер,
	|	ПриходныйОрдерФондовый.Кассир,
	|	ПриходныйОрдерФондовый.ПринятоОт,
	|	ПриходныйОрдерФондовый.Основание,
	|	ПриходныйОрдерФондовый.Приложение,
	|	ПриходныйОрдерФондовый.Ссылка,
	|	NULL,
	|	0,
	|	ВалютаРегламентированногоУчета.Значение,
	|	ПриходныйОрдерФондовый.Организация.Префикс,
	|	ВЫБОР
	|		КОГДА ВложенныйЗапрос.КоличествоКФО = 1
	|			ТОГДА ВложенныйЗапрос.КФО
	|		ИНАЧЕ ""0""
	|	КОНЕЦ,
	|	ПриходныйОрдерФондовый.Организация.КодОКПО,
	|	ИСТИНА,
	|	ЛОЖЬ
	|ИЗ
	|	Документ.ПриходныйОрдерФондовый КАК ПриходныйОрдерФондовый
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			ПриходныйОрдерФондовыйРасшифровка.Ссылка КАК Ссылка,
	|			МАКСИМУМ(ПриходныйОрдерФондовыйРасшифровка.КФО) КАК КФО,
	|			КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПриходныйОрдерФондовыйРасшифровка.КФО) КАК КоличествоКФО
	|		ИЗ
	|			Документ.ПриходныйОрдерФондовый.Расшифровка КАК ПриходныйОрдерФондовыйРасшифровка
	|		ГДЕ
	|			ПриходныйОрдерФондовыйРасшифровка.Ссылка В(&МассивОбъектов)
	|		
	|		СГРУППИРОВАТЬ ПО
	|			ПриходныйОрдерФондовыйРасшифровка.Ссылка) КАК ВложенныйЗапрос
	|		ПО ПриходныйОрдерФондовый.Ссылка = ВложенныйЗапрос.Ссылка,
	|	Константа.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета
	|ГДЕ
	|	ПриходныйОрдерФондовый.Ссылка В(&МассивОбъектов)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Номер
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ПриходныйКассовыйОрдерРасшифровкаПлатежа.КФО КАК КФО,
	|	ПриходныйКассовыйОрдер.Счет КАК Счет,
	|	ПриходныйКассовыйОрдер.КорСчет КАК КорСчет,
	|	ПриходныйКассовыйОрдерРасшифровкаПлатежа.КЭК КАК КЭК,
	|	ПриходныйКассовыйОрдер.КодАналитическогоУчета КАК КодАналитическогоУчета,
	|	ПриходныйКассовыйОрдер.КодЦелевогоНазначения.Код КАК КодЦелевогоНазначения,
	|	ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сумма КАК Сумма,
	|	ЕСТЬNULL(ПриходныйКассовыйОрдер.ПодразделениеКор.Код, """") КАК КодПодразделения
	|ИЗ
	|	Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
	|		ПО ПриходныйКассовыйОрдер.Ссылка = ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка
	|ГДЕ
	|	ПриходныйКассовыйОрдер.Ссылка В(&МассивОбъектов)";
	Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
	МассивРезультатов = Запрос.ВыполнитьПакет();
	Шапка = МассивРезультатов[0].Выбрать();
	Расшифровка = МассивРезультатов[1].Выбрать();
	ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
	
	ПервыйДокумент = Истина;

	Пока Шапка.Следующий() Цикл

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

				Если ДанныеСтавкиДокумента.ТаблицаПоСтавкам.Количество() = 0 Тогда
					СтруктураОбластьШапка.ВТомЧисле = "без налога (НДС)";
				Иначе
					СчетчикСтрок = 1;
					ВсегоСтрок = ДанныеСтавкиДокумента.ТаблицаПоСтавкам.Количество();
					ТекстДляНДС = "НДС";
					Для каждого ТекСтрока Из ДанныеСтавкиДокумента.ТаблицаПоСтавкам Цикл
						ТекстДляНДС = ТекстДляНДС + "(" + ТекСтрока.СтавкаНДС + ")" + РубКоп(ТекСтрока.СуммаНДС, Шапка.ВалютаДокумента);
						Если СчетчикСтрок < ВсегоСтрок Тогда
							ТекстДляНДС = СокрП(ТекстДляНДС) + "; ";
						КонецЕсли;	
						СчетчикСтрок = СчетчикСтрок + 1;	
					КонецЦикла;
					СтруктураОбластьШапка.ВТомЧисле = ТекстДляНДС;
				КонецЕсли;
			ИначеЕсли ДокументСсылка.ДокументыЧекаККМ.Количество() > 0 Тогда
				ДанныеСтавкиДокумента = ПодключаемоеОборудованиеБГУ.ЕдиныеСтавкиВДокументеОснованииЧекаККМ(ДокументСсылка);
				Если ДанныеСтавкиДокумента.ТаблицаПоСтавкам.Количество() = 0 Тогда
					СтруктураОбластьШапка.ВТомЧисле = "без налога (НДС)";
				Иначе
					СчетчикСтрок = 1;
					ВсегоСтрок = ДанныеСтавкиДокумента.ТаблицаПоСтавкам.Количество();
					ТекстДляНДС = "НДС";
					Для каждого ТекСтрока Из ДанныеСтавкиДокумента.ТаблицаПоСтавкам Цикл
						ТекстДляНДС = ТекстДляНДС + "(" + ТекСтрока.СтавкаНДС + ")" + РубКоп(ТекСтрока.СуммаНДС, Шапка.ВалютаДокумента);
						Если СчетчикСтрок < ВсегоСтрок Тогда
							ТекстДляНДС = СокрП(ТекстДляНДС) + "; ";
						КонецЕсли;	
						СчетчикСтрок = СчетчикСтрок + 1;	
					КонецЦикла;
					СтруктураОбластьШапка.ВТомЧисле = ТекстДляНДС;
				КонецЕсли;
			Иначе
				СтруктураОбластьШапка.ВТомЧисле = ?(Шапка.СуммаНДС > 0, " НДС(" + Шапка.СтавкаНДС + ")" + РубКоп(Шапка.СуммаНДС, Шапка.ВалютаДокумента), "без налога (НДС)");
			КонецЕсли;
			
		КонецЕсли;
		
		//СтруктураОбластьШапка.КодДебета = БухгалтерскийУчетПовтИсп.ПолучитьПредставлениеСчета(Шапка.Счет, , Шапка.КФО);
		//СтруктураОбластьШапка.СубСчет = БухгалтерскийУчетПовтИсп.ПолучитьПредставлениеСчета(Шапка.КорСчет, , Шапка.КФО); ,
		ОбластьРасшифровка = Макет.ПолучитьОбласть("СтрокаРасшифровка"); 
		
		Пока Расшифровка.Следующий() Цикл
			ОбластьРасшифровка.Параметры.Заполнить(Расшифровка);
			ОбластьРасшифровка.Параметры.КодДебета = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета( ,Расшифровка.КФО,Расшифровка.Счет,,,);
			ОбластьРасшифровка.Параметры.СубСчет = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета( ,Расшифровка.КФО,Расшифровка.КорСчет,Расшифровка.КЭК,,);
			ОбластьРасшифровка.Параметры.КодПодразделения = Расшифровка.КодПодразделения;
			ОбластьРасшифровка.Параметры.КодАналитическогоУчета = Расшифровка.КодАналитическогоУчета;
			ОбластьРасшифровка.Параметры.КодЦелевогоНазначения = Расшифровка.КодЦелевогоНазначения;
			ОбластьРасшифровка.Параметры.СуммаСНазваниемВалюты = Формат(Расшифровка.Сумма, "ЧЦ=15; ЧДЦ=2; ЧРД=-; ЧГ=0") + ?(Шапка.ВалютаДокумента = ВалютаРегламентированногоУчета, "", " " + Шапка.ВалютаДокумента);
		 ТабличныйДокумент.Вывести(ОбластьРасшифровка);
			
		КонецЦикла;

		СтруктураОбластьШапка.ФИОГлавногоБухгалтера=Справочники.Контрагенты.ФамилияИО(Шапка.ГлБухгалтер, Истина, Шапка.ДатаДокумента); 
		СтруктураОбластьШапка.ФИОКассира=Справочники.Контрагенты.ФамилияИО(Шапка.Кассир, Истина, Шапка.ДатаДокумента); 
		
		СтруктураОбластьШапка.НомерДокумента = ОбщегоНазначенияБГУ.ПолучитьНомерДляПечатиПоНастройке(Шапка.Ссылка,Шапка.Номер);
		СтруктураОбластьШапка.ДатаДокументаКв = Формат(Шапка.ДатаДокумента,"ДЛФ=DD");
		ОбластьШапка.Параметры.Заполнить(СтруктураОбластьШапка);
		ТабличныйДокумент.Вывести(ОбластьШапка);
		
		Если Шапка.Фондовый Тогда
			ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Объединить();
			Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 2);
			ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Обвести(Линия, Линия, Линия, Линия);
			ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Текст                   = "Ф О Н Д О В Ы Й";
			ЦветПечати                                              = Новый Цвет(83,114,187); 
			ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).ЦветТекста              = ЦветПечати;
			ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).ЦветРамки               = ЦветПечати;
			ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
			ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).ВертикальноеПоложение   = ВертикальноеПоложение.Центр;
			ЖирныйШрифт                                             = Новый Шрифт(ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Шрифт,, 11, Истина);
			ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Шрифт                   = ЖирныйШрифт;
		КонецЕсли;			
		// В табличном документе зададим имя области, в которую был 
		// выведен объект. Нужно для возможности печати покомплектно.
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 
		                                               НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
КонецФункции
Показать
7. Sashares 35 03.06.21 15:06 Сейчас в теме
(6) Все как вам сказали выше.
См. файл

UPD. Посмотрел макет. Не совсем так. Надо область Шапка разделить на 2 области.
1 - с начала до строки расшифровки - это и есть Шапка
2 - после строки расшифровки и до конца - назовем Подвал

Вывести первую область шапки, вывести расшифровку, вывести подвал.
Прикрепленные файлы:
8. soft_wind 03.06.21 16:11 Сейчас в теме
(6) прикольный код получается, попробуйте как есть заменить на эту процедуру
там в макете только убедиться что справа от строки расшифровки ни чего нет, будет же раздвигаться
по крайней мере у меня тест сработал, раздвигает (именно добавляет строчки внутри области!!!)
просьба отписаться получилось или нет
Функция ПечатьКО1(МассивОбъектов, ОбъектыПечати) Экспорт
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    
    ТабличныйДокумент.ИмяПараметровПечати = "ПараметрыПечати_КО1";
    
    Макет = ПолучитьМакет("ПФ_MXL_КО1");
    
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |    ПриходныйКассовыйОрдер.Номер КАК Номер,
    |    ПриходныйКассовыйОрдер.Дата КАК ДатаДокумента,
    |    ПриходныйКассовыйОрдер.Организация.НаименованиеПолное КАК ПолноеНаименованиеОрганизации,
    |    ВЫБОР
    |        КОГДА ПриходныйКассовыйОрдер.Организация.ИспользоватьВПлатежныхДокументахСокращенноеНаименование = ИСТИНА
    |            ТОГДА ПриходныйКассовыйОрдер.Организация.НаименованиеСокращенное
    |        ИНАЧЕ ПриходныйКассовыйОрдер.Организация.НаименованиеПолное
    |    КОНЕЦ КАК ПредставлениеОрганизации,
    |    ПриходныйКассовыйОрдер.Организация.НаименованиеСокращенное КАК СокращенноеНаименованиеОрганизации,
    |    ВЫБОР
    |        КОГДА ПриходныйКассовыйОрдер.Подразделение.НаименованиеПолное = """"
    |            ТОГДА ПриходныйКассовыйОрдер.Подразделение
    |        ИНАЧЕ ПриходныйКассовыйОрдер.Подразделение.НаименованиеПолное
    |    КОНЕЦ КАК ПредставлениеПодразделения,
    |    ПриходныйКассовыйОрдер.ПодразделениеКор КАК ПодразделениеКор,
    |    ПриходныйКассовыйОрдер.СуммаДокумента КАК СуммаДокумента,
    |    ПриходныйКассовыйОрдер.ГлБухгалтер КАК ГлБухгалтер,
    |    ПриходныйКассовыйОрдер.Кассир КАК Кассир,
    |    ПриходныйКассовыйОрдер.ПринятоОт КАК ПринятоОт,
    |    ПриходныйКассовыйОрдер.Основание КАК Основание,
    |    ПриходныйКассовыйОрдер.Приложение КАК Приложение,
    |    ПриходныйКассовыйОрдер.Ссылка КАК Ссылка,
    |    ПриходныйКассовыйОрдер.СтавкаНДС КАК СтавкаНДС,
    |    ПриходныйКассовыйОрдер.СуммаНДС КАК СуммаНДС,
    |    ПриходныйКассовыйОрдер.ВалютаДокумента КАК ВалютаДокумента,
    |    ПриходныйКассовыйОрдер.Организация.Префикс КАК ПрефиксОрганизации,
    |    ВЫБОР
    |        КОГДА ВложенныйЗапрос.КоличествоКФО = 1
    |            ТОГДА ВложенныйЗапрос.КФО
    |        ИНАЧЕ ""0""
    |    КОНЕЦ КАК КФО,
    |    ПриходныйКассовыйОрдер.Организация.КодОКПО КАК ОрганизацияПоОКПО,
    |    ЛОЖЬ КАК Фондовый,
    |    ПриходныйКассовыйОрдер.ПоступлениеВыручкиТорговойТочки КАК ПоступлениеВыручкиТорговойТочки
    |ИЗ
    |    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Ссылка,
    |            МАКСИМУМ(ПриходныйКассовыйОрдерРасшифровкаПлатежа.КФО) КАК КФО,
    |            КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПриходныйКассовыйОрдерРасшифровкаПлатежа.КФО) КАК КоличествоКФО
    |        ИЗ
    |            Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
    |        ГДЕ
    |            ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка В(&МассивОбъектов)
    |        
    |        СГРУППИРОВАТЬ ПО
    |            ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка) КАК ВложенныйЗапрос
    |        ПО ПриходныйКассовыйОрдер.Ссылка = ВложенныйЗапрос.Ссылка
    |ГДЕ
    |    ПриходныйКассовыйОрдер.Ссылка В(&МассивОбъектов)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ПриходныйОрдерФондовый.Номер,
    |    ПриходныйОрдерФондовый.Дата,
    |    ПриходныйОрдерФондовый.Организация.НаименованиеПолное,
    |    ВЫБОР
    |        КОГДА ПриходныйОрдерФондовый.Организация.ИспользоватьВПлатежныхДокументахСокращенноеНаименование = ИСТИНА
    |            ТОГДА ПриходныйОрдерФондовый.Организация.НаименованиеСокращенное
    |        ИНАЧЕ ПриходныйОрдерФондовый.Организация.НаименованиеПолное
    |    КОНЕЦ,
    |    ПриходныйОрдерФондовый.Организация.НаименованиеСокращенное,
    |    ВЫБОР
    |        КОГДА ПриходныйОрдерФондовый.Подразделение.НаименованиеПолное = """"
    |            ТОГДА ПриходныйОрдерФондовый.Подразделение
    |        ИНАЧЕ ПриходныйОрдерФондовый.Подразделение.НаименованиеПолное
    |    КОНЕЦ,
    |    ПриходныйОрдерФондовый.ПодразделениеКор,
    |    ПриходныйОрдерФондовый.СуммаДокумента,
    |    ПриходныйОрдерФондовый.ГлБухгалтер,
    |    ПриходныйОрдерФондовый.Кассир,
    |    ПриходныйОрдерФондовый.ПринятоОт,
    |    ПриходныйОрдерФондовый.Основание,
    |    ПриходныйОрдерФондовый.Приложение,
    |    ПриходныйОрдерФондовый.Ссылка,
    |    NULL,
    |    0,
    |    ВалютаРегламентированногоУчета.Значение,
    |    ПриходныйОрдерФондовый.Организация.Префикс,
    |    ВЫБОР
    |        КОГДА ВложенныйЗапрос.КоличествоКФО = 1
    |            ТОГДА ВложенныйЗапрос.КФО
    |        ИНАЧЕ ""0""
    |    КОНЕЦ,
    |    ПриходныйОрдерФондовый.Организация.КодОКПО,
    |    ИСТИНА,
    |    ЛОЖЬ
    |ИЗ
    |    Документ.ПриходныйОрдерФондовый КАК ПриходныйОрдерФондовый
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            ПриходныйОрдерФондовыйРасшифровка.Ссылка КАК Ссылка,
    |            МАКСИМУМ(ПриходныйОрдерФондовыйРасшифровка.КФО) КАК КФО,
    |            КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПриходныйОрдерФондовыйРасшифровка.КФО) КАК КоличествоКФО
    |        ИЗ
    |            Документ.ПриходныйОрдерФондовый.Расшифровка КАК ПриходныйОрдерФондовыйРасшифровка
    |        ГДЕ
    |            ПриходныйОрдерФондовыйРасшифровка.Ссылка В(&МассивОбъектов)
    |        
    |        СГРУППИРОВАТЬ ПО
    |            ПриходныйОрдерФондовыйРасшифровка.Ссылка) КАК ВложенныйЗапрос
    |        ПО ПриходныйОрдерФондовый.Ссылка = ВложенныйЗапрос.Ссылка,
    |    Константа.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета
    |ГДЕ
    |    ПриходныйОрдерФондовый.Ссылка В(&МассивОбъектов)
    |
    |УПОРЯДОЧИТЬ ПО
    |    Номер
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    |    ПриходныйКассовыйОрдерРасшифровкаПлатежа.КФО КАК КФО,
    |    ПриходныйКассовыйОрдер.Счет КАК Счет,
    |    ПриходныйКассовыйОрдер.КорСчет КАК КорСчет,
    |    ПриходныйКассовыйОрдерРасшифровкаПлатежа.КЭК КАК КЭК,
    |    ПриходныйКассовыйОрдер.КодАналитическогоУчета КАК КодАналитическогоУчета,
    |    ПриходныйКассовыйОрдер.КодЦелевогоНазначения.Код КАК КодЦелевогоНазначения,
    |    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сумма КАК Сумма,
    |    ЕСТЬNULL(ПриходныйКассовыйОрдер.ПодразделениеКор.Код, """") КАК КодПодразделения
    |ИЗ
    |    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
    |        ПО ПриходныйКассовыйОрдер.Ссылка = ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка
    |ГДЕ
    |    ПриходныйКассовыйОрдер.Ссылка В(&МассивОбъектов)";
    Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
    МассивРезультатов = Запрос.ВыполнитьПакет();
    Шапка = МассивРезультатов[0].Выбрать();
    Расшифровка = МассивРезультатов[1].Выбрать();
    ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
    
    ПервыйДокумент = Истина;

    Пока Шапка.Следующий() Цикл

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

                Если ДанныеСтавкиДокумента.ТаблицаПоСтавкам.Количество() = 0 Тогда
                    СтруктураОбластьШапка.ВТомЧисле = "без налога (НДС)";
                Иначе
                    СчетчикСтрок = 1;
                    ВсегоСтрок = ДанныеСтавкиДокумента.ТаблицаПоСтавкам.Количество();
                    ТекстДляНДС = "НДС";
                    Для каждого ТекСтрока Из ДанныеСтавкиДокумента.ТаблицаПоСтавкам Цикл
                        ТекстДляНДС = ТекстДляНДС + "(" + ТекСтрока.СтавкаНДС + ")" + РубКоп(ТекСтрока.СуммаНДС, Шапка.ВалютаДокумента);
                        Если СчетчикСтрок < ВсегоСтрок Тогда
                            ТекстДляНДС = СокрП(ТекстДляНДС) + "; ";
                        КонецЕсли;    
                        СчетчикСтрок = СчетчикСтрок + 1;    
                    КонецЦикла;
                    СтруктураОбластьШапка.ВТомЧисле = ТекстДляНДС;
                КонецЕсли;
            ИначеЕсли ДокументСсылка.ДокументыЧекаККМ.Количество() > 0 Тогда
                ДанныеСтавкиДокумента = ПодключаемоеОборудованиеБГУ.ЕдиныеСтавкиВДокументеОснованииЧекаККМ(ДокументСсылка);
                Если ДанныеСтавкиДокумента.ТаблицаПоСтавкам.Количество() = 0 Тогда
                    СтруктураОбластьШапка.ВТомЧисле = "без налога (НДС)";
                Иначе
                    СчетчикСтрок = 1;
                    ВсегоСтрок = ДанныеСтавкиДокумента.ТаблицаПоСтавкам.Количество();
                    ТекстДляНДС = "НДС";
                    Для каждого ТекСтрока Из ДанныеСтавкиДокумента.ТаблицаПоСтавкам Цикл
                        ТекстДляНДС = ТекстДляНДС + "(" + ТекСтрока.СтавкаНДС + ")" + РубКоп(ТекСтрока.СуммаНДС, Шапка.ВалютаДокумента);
                        Если СчетчикСтрок < ВсегоСтрок Тогда
                            ТекстДляНДС = СокрП(ТекстДляНДС) + "; ";
                        КонецЕсли;    
                        СчетчикСтрок = СчетчикСтрок + 1;    
                    КонецЦикла;
                    СтруктураОбластьШапка.ВТомЧисле = ТекстДляНДС;
                КонецЕсли;
            Иначе
                СтруктураОбластьШапка.ВТомЧисле = ?(Шапка.СуммаНДС > 0, " НДС(" + Шапка.СтавкаНДС + ")" + РубКоп(Шапка.СуммаНДС, Шапка.ВалютаДокумента), "без налога (НДС)");
            КонецЕсли;
            
        КонецЕсли;
        
        //СтруктураОбластьШапка.КодДебета = БухгалтерскийУчетПовтИсп.ПолучитьПредставлениеСчета(Шапка.Счет, , Шапка.КФО);
        //СтруктураОбластьШапка.СубСчет = БухгалтерскийУчетПовтИсп.ПолучитьПредставлениеСчета(Шапка.КорСчет, , Шапка.КФО); ,
        ОбластьРасшифровка = Макет.ПолучитьОбласть("СтрокаРасшифровка"); 
		
	
		//прикольный код получается
		лкСмещение = ТипСмещенияТабличногоДокумента.БезСмещения;
        Пока Расшифровка.Следующий() Цикл
            ОбластьРасшифровка.Параметры.Заполнить(Расшифровка);
            ОбластьРасшифровка.Параметры.КодДебета = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета( ,Расшифровка.КФО,Расшифровка.Счет,,,);
            ОбластьРасшифровка.Параметры.СубСчет = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета( ,Расшифровка.КФО,Расшифровка.КорСчет,Расшифровка.КЭК,,);
            ОбластьРасшифровка.Параметры.КодПодразделения = Расшифровка.КодПодразделения;
            ОбластьРасшифровка.Параметры.КодАналитическогоУчета = Расшифровка.КодАналитическогоУчета;
            ОбластьРасшифровка.Параметры.КодЦелевогоНазначения = Расшифровка.КодЦелевогоНазначения;
            ОбластьРасшифровка.Параметры.СуммаСНазваниемВалюты = Формат(Расшифровка.Сумма, "ЧЦ=15; ЧДЦ=2; ЧРД=-; ЧГ=0") + ?(Шапка.ВалютаДокумента = ВалютаРегламентированногоУчета, "", " " + Шапка.ВалютаДокумента);
			
			//замена на вывод в Шапку
			//ТабличныйДокумент.Вывести(ОбластьРасшифровка);
			ОбластьШапка.ВставитьОбласть(
				ОбластьРасшифровка.Область("СтрокаРасшифровка"),
				ОбластьШапка.Область("СтрокаРасшифровка"),
				лкСмещение,
				Истина);
			лкСмещение = ТипСмещенияТабличногоДокумента.ПоВертикали;
			
        КонецЦикла;

        СтруктураОбластьШапка.ФИОГлавногоБухгалтера=Справочники.Контрагенты.ФамилияИО(Шапка.ГлБухгалтер, Истина, Шапка.ДатаДокумента); 
        СтруктураОбластьШапка.ФИОКассира=Справочники.Контрагенты.ФамилияИО(Шапка.Кассир, Истина, Шапка.ДатаДокумента); 
        
        СтруктураОбластьШапка.НомерДокумента = ОбщегоНазначенияБГУ.ПолучитьНомерДляПечатиПоНастройке(Шапка.Ссылка,Шапка.Номер);
        СтруктураОбластьШапка.ДатаДокументаКв = Формат(Шапка.ДатаДокумента,"ДЛФ=DD");
        ОбластьШапка.Параметры.Заполнить(СтруктураОбластьШапка);
        ТабличныйДокумент.Вывести(ОбластьШапка);
        
        Если Шапка.Фондовый Тогда
            ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Объединить();
            Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 2);
            ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Обвести(Линия, Линия, Линия, Линия);
            ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Текст                   = "Ф О Н Д О В Ы Й";
            ЦветПечати                                              = Новый Цвет(83,114,187); 
            ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).ЦветТекста              = ЦветПечати;
            ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).ЦветРамки               = ЦветПечати;
            ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
            ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).ВертикальноеПоложение   = ВертикальноеПоложение.Центр;
            ЖирныйШрифт                                             = Новый Шрифт(ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Шрифт,, 11, Истина);
            ТабличныйДокумент.Область(2+НомерСтрокиНачало-1, 2, 2+НомерСтрокиНачало-1, 4).Шрифт                   = ЖирныйШрифт;
        КонецЕсли;            
        // В табличном документе зададим имя области, в которую был 
        // выведен объект. Нужно для возможности печати покомплектно.
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 
                                                       НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
    КонецЦикла;
    
    Возврат ТабличныйДокумент;
КонецФункции
Показать
Sashares; svetanik; +2 Ответить
9. svetanik 5 04.06.21 01:18 Сейчас в теме
(8)
Интересное решение. Я бы тоже макет поделила, как в (7). А у Вас изящнее получилось.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот