ПроверитьВывод() Проблема разделения по страницам.

1. non1ka 30 16.09.10 20:09 Сейчас в теме
Доброго времени суток господа программисты.

Стоит задача: Для экономии места на листе А4. Организовать печать в следующем исполнениии.

Сначала формируется «заголовок», «таблица», «подвал» (микро-таблица), потом проверяется а эта микро-таблица помещается по вертикали втабличный документ(мини-таблица), если помещается тогда мы присоединяем к ней еще одну микро -таблицу и проверяем а помещается ли теперь ……..

И так до тех пор пока она не поместится, если не помещается мы воводим эту мини-таблицу (состоящую из нескольких микро -таблиц) на лист, (было бы все просто если нам нужно было просто поместить на лист и все, но на лист нужно присоеденить еще одну мини-таблицу (состоящую из еще одного соединения микро-таблиц).

И вот когда у нас на листе будет 2 мини-таблицы прикрепленные друг к другу и состоящие из нескольких микро-таблиц, тогда мы должны проверить а помещается ли 3я мини-таблица на лист, если не помещается мы должна создать новый лист и начать все заново.

Короче можете не пытаться осмыслить. Я постараюсь нарисовать как должно быть

………Заголовок……… ……Заголовок………
/////Строка///// /////Строка/////
//// Строка ///// ***Подвал*****
//// Строка ///// ………Заголовок………
***Подвал***** /////Строка/////
………Заголовок……… /////Строка/////
/////Строка///// /////Строка/////
//// Строка ///// /////Строка/////
***Подвал***** //// Строка /////
………Заголовок……… ***Подвал*****
/////Строка///// ………Заголовок………
//// Строка ///// //// Строка /////
//// Строка ///// ***Подвал*****
//// Строка /////
***Подвал*****
==========НОВАЯ СТРАНИЦА===========
………Заголовок……… ……Заголовок………
/////Строка///// /////Строка/////
//// Строка ///// ***Подвал*****
//// Строка ///// ………Заголовок………
***Подвал***** /////Строка/////
………Заголовок……… /////Строка/////
/////Строка///// /////Строка/////
//// Строка ///// /////Строка/////
***Подвал***** //// Строка /////
………Заголовок……… ***Подвал*****
/////Строка///// ………Заголовок………
//// Строка ///// //// Строка /////
//// Строка ///// ***Подвал*****
//// Строка /////
***Подвал*****

У меня почти все получилось, кроме параметров печати. У меня почему то при первой проверки на вертикальное положение, система считает что еще можно 2 строчки поместить, а на самом деле при выводе на печать их переносит на новую страницу, у меня есть подозрение, что ИмяПараметровПечати не чего не значит, в случае если параметры печати используются для другой таблицы.
Ниже приведен мною написанный листинг, надеюсь на любую помощь. Заранее спаисбо за внимание.

Процедура СформироватьМакет (ТаблицаОстатков, ИтоговаяТаблица,  общТаблицаОтгрузок, общТаблицаПриемок, ДатаОкончания, ДатаНачала, НаДату = Истина) Экспорт
	
Макет 						= Обработки.прОборотыТоваров.ПолучитьМакет("Макет");
Заголовок 					= Макет.ПолучитьОбласть("Заголовок");
СтрокаТаблицы 				= Макет.ПолучитьОбласть("Строчка");
Подвал 						= Макет.ПолучитьОбласть("Подвал");
ИтоговыйТабличныйДокумент	= Новый ТабличныйДокумент;
ЗаполненнаяСтраница			= Новый ТабличныйДокумент;
ВыводимыйТабличныйДокумент 	= Новый ТабличныйДокумент;
ВыводимыйТабличныйДокумент.ИмяПараметровПечати = ПараметрыПечати_ОборотныйОтчет";
ИтоговыйТабличныйДокумент.ИмяПараметровПечати  = ВыводимыйТабличныйДокумент.ИмяПараметровПечати;
ЗаполненнаяСтраница.ИмяПараметровПечати		   = ВыводимыйТабличныйДокумент.ИмяПараметровПечати;

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = ВыводимыйТабличныйДокумент.ИмяПараметровПечати;
				  
			
Заголовок.Параметры.Номенклатура 	= Строка(СтрокаОстаток.Номенклатура);
Заголовок.Параметры.Дата 		= ?(НаДату, Строка("На "  + Формат(ДатаНачала, "ДЛФ=Д")), 
ТабДокумент.Вывести(Заголовок);			 												
 СтрокаТаблицы.Параметры.НомерЗаявки 		= Строка.НомерЗаявки;
 СтрокаТаблицы.Параметры.Контрагент  		= Строка.Контрагент;
 СтрокаТаблицы.Параметры.КоличествоПриход 	= Строка.Приход_;
 СтрокаТаблицы.Параметры.КоличествоРасход 	= Строка.Расход_;
					 
 ТабДокумент.Вывести(СтрокаТаблицы);
Подвал.Параметры.Итог = Строка("Начал.: "  + ОстатокНаНачалоПериода 
				+ " Приход: " + ПриходЗаПериод
										+ " Расход: " + РасходЗаПериод
										+ " Конеч.: "	+ ОстатокНаКонецПериода);
										
ТабДокумент.Вывести(Подвал);
			

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


Я удалил из кода расчеты, оставил только места где я реально работаю с табличными документами

В результате несколько строк переносятся на новую страницу, вот я выкладываю файл как получается.



Причем, я сейчас заметил, что пока я в режиме просмотра табличного документа, все впорядке разделители там где нужно, а когда вывожу на печать, тогда эти разывы на 2 - 5 строчек выше. :(
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. non1ka 30 16.09.10 21:57 Сейчас в теме
Все господа спасибо. Нашел проблему, проверять функцией ПроверитьВывод() лучше не ТабличныйДокумент а массив содержащий области табличного документа. Тема закрыта.
user712426; +1 Ответить
3. katrineKA 20.07.11 13:44 Сейчас в теме
Поднимаю тему :)

Использую функцию ПроверитьВывод() предварительно добавив в массив необходимые области.
Но при выводе на печать, видно что на одном из листов не получается правильный разделить по страницам.
Возможно проблема в том что я делаю объединение ячеек. Выкладываю проверку на вывод.

Если Не ТабДокумент.ПроверитьВывод(СтрокаМассив) Тогда
Колонка = Новый Массив;
Колонка.Добавить(2);Колонка.Добавить(3);Колонка.Добавить(4);

ИмяОбласти = "Строка2"; ///выше определены координаты (Обл.Верх) Области "Строка1"
Обл = ТабДокумент.Область(ИмяОбласти);
Низ = Обл.Низ;
Если Верх > Обл.Низ Тогда
Низ = Верх;
КонецЕсли;

Для Каждого Стр Из Колонка Цикл
Обл = ТабДокумент.Область(ИмяОбласти);
НужнаяОбласть = ТабДокумент.Область(Верх, Стр, Низ, Стр);
НужнаяОбласть.Объединить();
ТабДокумент.Область(Верх, Стр, Низ, Стр).ВертикальноеПоложение = ВертикальноеПоложение.Центр;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
НужнаяОбласть.Обвести(Линия, Линия, Линия, Линия);
КонецЦикла;

ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ВторойЛист);
КонецЕсли;
4. 6есик 52 25.08.11 14:09 Сейчас в теме
Такая ситуация еще имеет место, в случае, когда при печати вы устанавливаете ручками автомасштаб.
Тогда, что бы корректно выводило, нужно

ТабДок.АвтоМасштаб = Истина;


устанавливать до проверки на вывод.
BigRig; user712426; SilverFalconi; user779781; OLI48; shevelyov; DanilaDru; iris_reda; IlyaAndr; FReIM; +10 Ответить
11. pvl_mksv 20 24.07.14 16:25 Сейчас в теме
(4)а вот и не решила (
С проверкой выводит 15-17 строк, без проверки 30-60 в зависимости лист с шапкой(первый), ну и середина соотвественно.
14. shevelyov 87 14.03.16 18:08 Сейчас в теме
(4) 6есик, спасибо, тоже долго не мог понять, в чём дело.
28. SilverFalconi 30.03.20 10:47 Сейчас в теме
(4)+ Спасибо ОГРОМНОЕ! Помогло.
5. FReIM 8 12.05.12 11:20 Сейчас в теме
Спасибо тебе добрый человек. А то с переносами проблема была. Особенно видно когда в ячейке получается 3-4 строчки.

От себя еще дополню что желательно еще и ориентацию страницы проставить заранее.
10. iris_reda 52 24.06.14 04:19 Сейчас в теме
(5) FReIM, присоединяюсь к благодарностям. Одна строчка, а столько проблем решила.
6. alexusiv 21.05.12 12:44 Сейчас в теме
Не корректно отрабатывала функция ПроверитьВывод() при заданных полях отступа и сохраненных параметрах печати.
8. krosaf4eg 46 04.12.12 17:27 Сейчас в теме
(6) alexusiv, а подпробнее можно? тоже столкнулся с этой проблемой
9. krosaf4eg 46 04.12.12 23:17 Сейчас в теме
(8) krosaf4eg, проблема решилась выходом/заходом пользователя на сервере терминалов, под которым возникла проблема
7. IlyaAndr 06.06.12 19:48 Сейчас в теме
Не получается разбить на страницы, макет выводиться номрально но на печать отрезается 2 строки.
12. dvv01 120 31.07.14 10:34 Сейчас в теме
Сталкивался с данной проблемой: динамически меняются число строк/столбцов (высота/ширина таблицы, автомасштаб). IMHO, "ПроверитьВывод" проверяет исходя из размера исходного макета.
Подогнал макет по ширине - все работает как задумано. Добавляется столбец - автомасштаб сжимает - снизу пустое место. Второе, в макете высота ячейки подгоняется под автоперенос строк - на выходе за границы на второй лист. В общем, побороть не удалось, или ставлю разделитель листов програмно, или подгоняю макет под 100% ширины без автомасштаба, фиксирую высоту строк таблицы.
Есть еще возможность пихать шапку и итоги таблицы в колонтитулы (отдельный документ-лист под титул, отдельно многостраничная таблица, отдельно итоги и подписи. Много гимора и коряво.

PS. В типовых Комплексной, Торговле в ведомостях инвентаризации аналогичноая проблема - без автомасштаба красиво по высоте, но несколько листов вширь, или заполнено только треть листа сверху. т.к. 1с сей трабл не решила (так же использует "ПроверитьВывод" :) то приходится подстраиваться "as is", иными словами, нерешаемо.
13. pvl_mksv 20 31.07.14 15:03 Сейчас в теме
Решено! Дело было не в бобине... Народ, внимательно, ОЧЕНЬ ВНИМАТЕЛЬНО смотрите на то, что суете в массив для проверки, а главное В КАКОЙ ИМЕННО МАССИВ.
Всем спасибо, долгая лета Инфостарту !!!
15. Di_Denis 32 04.04.16 16:29 Сейчас в теме
Может кто поможет!? У меня вот такая ситуация
Процедура МХ1_ПолучитьОблатьСтрока(ТабДок, Макет, ВыгружаемыйДокумент)
	
	//ОблМакетаШапкаПервойСтраницы    = Макет.ПолучитьОбласть("ШапкаПервойСтраницы");
	ОблМакетаШапкаТаблицы 			= Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОблМакетаСтрока           		= Макет.ПолучитьОбласть("Строка");
	ОблМакетаИтого  				= Макет.ПолучитьОбласть("Итого"); 
	
	ОблМакетаПодвал 			  	= Макет.ПолучитьОбласть("ПодвалРаботыУслуги");
	ОблСтраница2 		            = Макет.ПолучитьОбласть("Страница2");

	ТабДок.Вывести(ОблМакетаШапкаТаблицы);
	
	МассивОбластей = новый Массив;
	СтраницаНомер = 1;
	СтоимостьПоСтранице = 0;
	ИтогоКоличествоНаСтранице = 0;
	ИтогоКоличество = 0;
	ЭтоПервая = Истина;
	
	Для Каждого Стр ИЗ ВыгружаемыйДокумент.Комплектация Цикл
		
       	
		//МассивОбластей.Добавить(ОблМакетаПодвал);
		МассивОбластей.Очистить();
		МассивОбластей.Добавить(ОблМакетаСтрока);
       	МассивОбластей.Добавить(ОблМакетаИтого);
		//МассивОбластей.Добавить(ОблМакетаПодвал);


		Если Не ТабДок.ПроверитьВывод(ТабДок) Тогда
			
			 
			ОблМакетаИтого.Параметры.КоличествоПоСтранице = Формат(ИтогоКоличествоНаСтранице, "ЧДЦ=2");
			ОблМакетаИтого.Параметры.СтоимостьПоСтранице  = Формат(СтоимостьПоСтранице, "ЧДЦ=2");
			ОблМакетаИтого.Параметры.НомерСтраницы = "Страница: " + СтраницаНомер;		
			ТабДок.Вывести(ОблМакетаИтого);
			
			
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); 
			
			
			
			ТабДок.Вывести(ОблСтраница2);
			ТабДок.Вывести(ОблМакетаШапкаТаблицы);
			СтраницаНомер = СтраницаНомер + 1;
		КонецЕсли;

		
		ТолщинаОбода = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Дополнительные свойства");
		НомерЗавода = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Номер завода изготовителя");
		ГодИзготовления = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Год изготовления");

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


		ТабДок.Вывести(ОблМакетаСтрока);
				
	КонецЦикла;
	
    ОблМакетаИтого.Параметры.КоличествоПоСтранице = Формат(ИтогоКоличествоНаСтранице, "ЧДЦ=2");
	ОблМакетаИтого.Параметры.СтоимостьПоСтранице  = Формат(СтоимостьПоСтранице, "ЧДЦ=2");
	ОблМакетаИтого.Параметры.НомерСтраницы = "Страница: " + СтраницаНомер;  
	ТабДок.Вывести(ОблМакетаИтого);
	
	Область = Макет.ПолучитьОбласть("Итого2");
	Область.Параметры.ИтогоКоличество = Формат(ИтогоКоличество, "ЧДЦ=2");;
	Область.Параметры.СтоимостьИтог   = ВыгружаемыйДокумент.Комплектация.Итог("Сумма");
	ТабДок.Вывести(Область);

		
КонецПроцедуры
Показать


Почему то когда делаю ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
то у меня вроде в макете делает все хорошл, а на печать выходит одно пустая страница.
То есть первая страница нормальная как положена с итогами по странице, вторая страница Пустая, а третья тоже нормальная с итогами по странице и по документу, и нумерация страниц правильная. Не могу совладать с ненужной пустой страницей.
16. bmk74 234 04.04.16 16:35 Сейчас в теме
(15) По вашему коду вообще не понятно что вы хотите сделать и что вы проверяете на вывод ?...зачем то массив областей заполняете ? при том нигде его не используя...вы кажется не совсем понимаете работу метода Проверитьвывод()...почитайте справку по нему...
17. Di_Denis 32 04.04.16 16:54 Сейчас в теме
(16) bmk74, ой не успел исправить
ТабДок.ПроверитьВывод(МассивОбластей)


Метод я понимаю и делал его уже не раз.
в грубой форме, заполняю области и проверяю влезет ли у меня на страницу еще одна строка и итог по странице, если не выходит, то значит сразу вывожу итог по странице и ставлю разделитель страницы. Далее на новом листе продолжаю все это, но проблема в том что поле ВывестиГоризонтальныйРазделительСтраниц() у меня каким то образом после разделителя, у меня вылазит пустой лист.
18. 6есик 52 04.04.16 17:04 Сейчас в теме
Денис у вас лишний разделитель страниц, вы его на следующую страницу в самом начале выводите и перескакиваете на 3ю страницу, уберите его и все.
19. Di_Denis 32 04.04.16 17:18 Сейчас в теме
(18) 6есик, Блин что то я ослеп и не вижу, один вроде разделитель стоит, после итога и все, если я его убераю, то у меня после итога сразу выводится следующая область, без разрыва.
20. Di_Denis 32 04.04.16 17:24 Сейчас в теме
Блин вот не могу понять, у меня есть антологичный код
Для Каждого Стр ИЗ ВыгружаемыйДокумент.Состав Цикл
		
				
		Если Стр.Количество=0 Тогда
			Продолжить;
		КонецЕсли;
		
		МассивОблостей.Очистить();
		МассивОблостей.Добавить(ОблМакетаСтрока);
        МассивОблостей.Добавить(ОблМакетаИтогоСтр);
		
		Если Не ТабДок.ПроверитьВывод(МассивОблостей) Тогда
			
			ОблМакетаИтогоСтр.Параметры.ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице;
			ОблМакетаИтогоСтр.Параметры.Сумма = Стоимость;
			ТабДок.Вывести(ОблМакетаИтогоСтр);

			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

			
			ТабДок.Вывести(ОблМакетаШапкаТаблицы);
						
			
			ИтогоКоличествоНаСтранице = 0;
			Стоимость = 0;
			///Сообщить(СтраницаНомер);
			СтраницаНомер = СтраницаНомер + 1;
		КонецЕсли;


		
		ТолщинаОбода = КРОН_ОбщегоНазначения.ПолучитьДополнительныеСвойства(Стр.Номенклатура,"Дополнительные свойства");
		НомерЗавода = КРОН_ОбщегоНазначения.ПолучитьДополнительныеСвойства(Стр.Номенклатура,"Номер завода изготовителя");
		ГодИзготовления = КРОН_ОбщегоНазначения.ПолучитьДополнительныеСвойства(Стр.Номенклатура,"Год изготовления");
		
Показать


который я делал и каторый работает исправно, что я сейчас не могу сделать не понимаю.
А из за макета может быть?
22. 6есик 52 04.04.16 17:32 Сейчас в теме
(20) Di_Denis, Да это скорее всего из за макета и есть - другая высота строк и в конечном счете видимо сам разделитель не влазит и потому переносится на другую страницу.
23. Di_Denis 32 04.04.16 17:42 Сейчас в теме
(22) 6есик, не что то тут не то, я добавил пустую область для проверки (и не выводил ее) но результат тот же

25. bmk74 234 04.04.16 18:34 Сейчас в теме
(23)Сначала области заполните параметрами. потом в массив их добавляйте, так как могут быть переносы строк при заполнении параметров и область увеличится может, а вы проверку на пустую область делаете, и у вас получается что вы вставляете разрыв и автоматом еще и сама система вставляет разрыв, отсюда и пустая страница..как вариант попробуйте настройки ТабДока поиграть, Автомасштаб главное уберите, и для проверки попробуйте в массив допустим еще область добавить, ну например туже строку еще один раз....и помотреть на результат.
21. 6есик 52 04.04.16 17:28 Сейчас в теме
Да , разделитель один, тебе с областями и проверкой играться нужно - что бы разделитель не попадал на следующую страницу.
24. 6есик 52 04.04.16 18:33 Сейчас в теме
Тяжеловато угадывать, но я бы убрал разделитель страниц , и делал бы без него - вот только нужно обязательно что бы по высоте ОблСтраница2 была не меньше чем ОблМакетаСтрока.
26. Di_Denis 32 05.04.16 05:11 Сейчас в теме
Блин, не чего не получается. Я тут поделал макет, поправил чуть код, у меня теперь итог вылазить на другой лист, хотя для него места и на первом есть.
то есть при выводе, система сама делает разрыв, потом я вывожу область, делаю сам разрыв, а дальше все нормально.

провывал убирать мой разрыв, тогда система автоматом не чего не делает, а просто "полностью, причем по самые края заполняет область" вот код.
Функция НапечататьДокументМХ3(ТабДок) Экспорт 
	
	Результат = Неопределено;
	
	УстановитьПривилегированныйРежим(Истина);
	
	ВыгружаемыеДанные = НапечататьМХ3(ЭтотОбъект,ТабДок);
	
	Возврат ВыгружаемыеДанные;
	
	
КонецФункции

Функция НапечататьМХ3(ВыгружаемыйДокумент,ТабДок)
	
	Макет = ПолучитьМакет("МХ3");
	МХ1_ПолучитьОблатьШапка(ТабДок, Макет, ВыгружаемыйДокумент);
	МХ1_ПолучитьОблатьСтрока(ТабДок, Макет, ВыгружаемыйДокумент);
	МХ1_ПолучитьОблатьПодвал(ТабДок, Макет, ВыгружаемыйДокумент); 
	
	Возврат ТабДок;
	
КонецФункции

Процедура МХ1_ПолучитьОблатьШапка(ТабДок, Макет, ВыгружаемыйДокумент) 
	
	Область = Макет.ПолучитьОбласть("ШапкаПервойСтраницы");
	Структура = Новый Структура;
	СведенияОПоставщике       = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ВыгружаемыйДокумент.Грузополучатель);
	СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ВыгружаемыйДокумент.Контрагент);

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

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

Процедура МХ1_ПолучитьОблатьСтрока(ТабДок, Макет, ВыгружаемыйДокумент)
	
	СтруктураОбластей = Новый Структура;
	СтруктураОбластей.Вставить("ОблМакетаШапкаТаблицы",Макет.ПолучитьОбласть("ШапкаТаблицы"));
	СтруктураОбластей.Вставить("Строка",               Макет.ПолучитьОбласть("Строка"));
	СтруктураОбластей.Вставить("Итого",                Макет.ПолучитьОбласть("ИтогоПоСтранице"));
	СтруктураОбластей.Вставить("ПодвалРаботыУслуги",   Макет.ПолучитьОбласть("ПодвалРаботыУслуги"));
	СтруктураОбластей.Вставить("Страница2",            Макет.ПолучитьОбласть("Разрыв"));
	СтруктураОбластей.Вставить("ПодвалРаботыУслуги",   Макет.ПолучитьОбласть("ПодвалРаботыУслуги"));

	
	ТабДок.Вывести(СтруктураОбластей.ОблМакетаШапкаТаблицы);
	
		
	СтраницаНомер = 1;
	СтоимостьПоСтранице = 0;
	ИтогоКоличествоНаСтранице = 0;
	ИтогоКоличество = 0; 
	
	
	
	Для Каждого Стр ИЗ ВыгружаемыйДокумент.Комплектация Цикл
		
       	
		МассивОбластей = новый Массив;
		МассивОбластей.Добавить(СтруктураОбластей.Строка);
        МассивОбластей.Добавить(СтруктураОбластей.Итого);
	    //  МассивОбластей.Добавить(СтруктураОбластей.Страница2);
		
		
		Если Не (ТабДок.ПроверитьВывод(МассивОбластей)) Тогда 
			
			МХ1_ПолучитьОблатьИтогПоСтранице(ТабДок,СтруктураОбластей,ИтогоКоличествоНаСтранице,СтоимостьПоСтранице,СтраницаНомер);
			
			МассивОбластей.Очистить();			
			СтраницаНомер = СтраницаНомер + 1;
			
		КонецЕсли;

		МХ1_ПолучитьОблатьСтрокаВГруппе(ТабДок,СтруктураОбластей,Стр);
		
				
		ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице +  Стр.Количество;
        ИтогоКоличество = ИтогоКоличество + Стр.Количество;
		СтоимостьПоСтранице = СтоимостьПоСтранице + Стр.Сумма;


						
	КонецЦикла;
	
	
	
    СтруктураОбластей.Итого.Параметры.КоличествоПоСтранице = Формат(ИтогоКоличествоНаСтранице, "ЧДЦ=2");
	СтруктураОбластей.Итого.Параметры.СтоимостьПоСтранице  = Формат(СтоимостьПоСтранице, "ЧДЦ=2");
	СтруктураОбластей.Итого.Параметры.НомерСтраницы = "Страница: " + СтраницаНомер;  
	ТабДок.Вывести(СтруктураОбластей.Итого);
	
	Область = Макет.ПолучитьОбласть("Итого2");
	Область.Параметры.ИтогоКоличество = Формат(ИтогоКоличество, "ЧДЦ=2");;
	Область.Параметры.СтоимостьИтог   = ВыгружаемыйДокумент.Комплектация.Итог("Сумма");
	ТабДок.Вывести(Область);

		
КонецПроцедуры

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

Процедура МХ1_ПолучитьОблатьИтогПоСтранице(ТабДок,СтруктураОбластей,ИтогоКоличествоНаСтранице,СтоимостьПоСтранице,СтраницаНомер)
		
	СтруктураОбластей.Итого.Параметры.КоличествоПоСтранице = Формат(ИтогоКоличествоНаСтранице, "ЧДЦ=2");
	СтруктураОбластей.Итого.Параметры.СтоимостьПоСтранице  = Формат(СтоимостьПоСтранице, "ЧДЦ=2");
	СтруктураОбластей.Итого.Параметры.НомерСтраницы = "Страница: " + СтраницаНомер;		
	ТабДок.Вывести(СтруктураОбластей.Итого); 			
	
	ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); 		
	
	ТабДок.Вывести(СтруктураОбластей.Страница2);
	ТабДок.Вывести(СтруктураОбластей.ОблМакетаШапкаТаблицы);


	
КонецПроцедуры

Процедура МХ1_ПолучитьОблатьСтрокаВГруппе(ТабДок,СтруктураОбластей,Стр)

		ТолщинаОбода = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Дополнительные свойства");
		НомерЗавода = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Номер завода изготовителя");
		ГодИзготовления = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Год изготовления");

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


КонецПроцедуры
Показать
27. 1Cynep4eJIoBek 27.12.18 11:13 Сейчас в теме
у меня была проблема может кому то поможет, сам за 12 лет столкнулся с таким (решение типовое 1С УПП 1.3), у пользователя Иванова Ивана в печатной форме 3-5, перемещение ТМЗ, вылетал разделитель после второй строки, пробовал многое , никак не мог победить, у других пользователей всё нормально.
Так вот...
Как "победилась" проблема. Изменил в у Пользовтеля имя добавив "1" и в справочнике Пользователи тоже самое, разделитель исчез, меняешь обратно появляется. Кэш чистил, поиск ссылок на объект ничего не дало, т.к. ссылка по сути не менялась, менялся код в справочнике Пользователей. с чем связано хто знает?
29. Азверин 3 06.05.20 15:44 Сейчас в теме
(27) Попробуйте у проблемного пользователя удалить сохраненную настройку по этому объекту: РС.СохраненныеНастройки и затем заново задать параметры печати.
Оставьте свое сообщение

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