Макет вывести присоединить

1. user712426 12.07.17 11:28 Сейчас в теме
Здравствуйте!
Подскажите как лучше вывести в макет форму (см. рис)?
Если одной должности м.б. присвоены несколько позиций сиз (наименованиеСИЗ).
Пробую через секции. Но если сначала Вывести должность, затем Присоединить наименованиеСИЗ, то получается, что все наименованиеСИЗ сдвигаются правее от предыдущего наименованиеСИЗ..
М.б. вообще по-другому надо делать?
Конфа Управление производственным предприятием, редакция 1.3 (1.3.89.2) ОБЫЧНЫЕ ФОРМЫ
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. maxmax83 12.07.17 12:08 Сейчас в теме
Выводить в строке Должность и СИЗ как в форме. Затем объединить ячейки с одинаковыми должностями.
3. user712426 12.07.17 13:35 Сейчас в теме
(2)а если я заранее не знаю сколько будет позиций наименованиеСИЗ?

Область = ТабДок.Область(2,2,3,3);
Область.Объединить(); 



(2,2,3,3) -- это номера ячеек? R С :R С ?

и чем отличается Область.Сгруппировать???
пожалуйста, если не трудно - объясните вкратце!
5. r.moschenskiy 23 12.07.17 15:15 Сейчас в теме
(3)Так посчитай их при выводе СИЗ для одной должности. Объединение всё-равно после вывода будет делаться.
user712426; +1 Ответить
6. user712426 12.07.17 16:40 Сейчас в теме
(5)не совсем понимаю вас.
можете подробнее описать?
код для наглядности
	
	Табл = Макет.ПолучитьОбласть("Табл");
	//Табл123 = Макет.ПолучитьОбласть("R10C1:R10C3");
	//Табл45  = Макет.ПолучитьОбласть("R10C4:R10C5");
	
	тз1 = ПеречьСИЗ.Выгрузить();
	//тзДанных.Сортировать("НаименованиеПрофессии");
	тз1.ВыбратьСтроку();
	
	//тз1 = тзДанных.Скопировать();
	//тз1.Свернуть("НаименованиеПрофессии,НаименованиеТ");
	//тз1.ВыбратьСтроку();

	номерПП = 1; 	
	Для каждого стр1 из тз1 цикл
		Табл.Параметры.номерПП  = номерПП;
		Табл.Параметры.НаименованиеПрофессии = стр1.НаименованиеПрофессии;
		Табл.Параметры.НаименованиеТ = стр1.НаименованиеТ;
		
		Табл.Параметры.НаименованиеСИЗ = стр1.НаименованиеСИЗ;
		Табл.Параметры.Количество  = стр1.Количество;

		
		ТабДок.Вывести(Табл);
		номерПП = номерПП +1;
	КонецЦикла;

Показать
8. user712426 13.07.17 09:53 Сейчас в теме
(5) есть таблица. и из нее я могу посчитать просто полное количество строк. но как посчитать сколько позиций сиз да еще по каждой должности... это как можно реализовать. подскажите ПОЖАЛУЙСТА!!!
уже какой день сижу над этим несчастным вопросом. и кстати ФОРМА ОБЫЧНАЯ
9. корум 288 13.07.17 10:13 Сейчас в теме
(8) ок, таблица Должность СИЗ Количество.
- тз.сортировать(должность, сиз)
- тзПодсчетаСтрок =тз.Выгрузить("должность")
тзПодсчетаСтрок .новаяКолонка(СколькоСизов)
тзПодсчетаСтрок /pfgjkybnm(crjkmrjCbpjd?1)//в каждую строку СИЗ пишем 1
тзподсчетастрок.свернуть("должность","сколькоСиз")


в тзПодсчетаСтрок лежит инфа, сколько строк СИЗ приходится на должность.

//Выводим тз
текДолжность = "№%№№";
цикл по тз
если текдолжность <> тз.должность тогда
//пошла новая должность
текдолжность = тз.должность;
СколькоСтрок = (найти в тзподсчетастрок эту ТекДолжность и посмотреть СколькоСиз);

конецЦикла
Показать

Успехов.
user712426; +1 Ответить
10. user712426 13.07.17 11:05 Сейчас в теме
(9)
спасибо, добрый человек!
а то у меня идей не было уже..
Но! -- есть вопросы.
сделала так:
тз2 = тз1.Скопировать();
	тз2.сортировать("НаименованиеПрофессии, НаименованиеСИЗ"); 
	тзПодсчетаСтрок = тз2.Скопировать();
	тзПодсчетаСтрок.Колонки.Добавить("СколькоСизов"); 
	тзПодсчетаСтрок.ЗаполнитьЗначения(1,"СколькоСизов"); 
	тзподсчетастрок.Свернуть("НаименованиеПрофессии","СколькоСизов"); 
	тзподсчетастрок.ВыбратьСтроку();

а далее не совсем понятно как вы делаете:
//Выводим тз 
текДолжность = "№%№№"; 
цикл по тз 
если текдолжность <> тз.должность тогда 
//пошла новая должность 
текдолжность = тз.должность; 

СколькоСтрок = (найти в тзподсчетастрок эту ТекДолжность и посмотреть СколькоСиз);
4. user712426 12.07.17 15:11 Сейчас в теме
ну помогите разобраться!
я предполагаю что метод объединить не подойдет мне. т.к. в строках может быть сколь угодно кратное повторение профессии и в любом порядке (ссылаюсь на ум пользователя)
Прикрепленные файлы:
7. user712426 13.07.17 09:34 Сейчас в теме
11. user712426 13.07.17 11:35 Сейчас в теме
все равно не могу понять. ну узнаю я сколько сиз на кажд должность (см рис) а далее как программно описать вывод в макет???
Прикрепленные файлы:
13. корум 288 13.07.17 15:19 Сейчас в теме
(11)
узнаю я сколько сиз на кажд должность (см рис) а далее как

а далее
начОбъединения = табдокумент.высотаТаблицы();
для й=1 по сколькоСизов цикл
табдокумент.вывести(областьНачало)
табдокумент.присоединить(областьсизы)
конецЦикла

табдокумент. объединить() (смотри свой же пост (3), теперь тебе известно сколько строк объединять)
user712426; +1 Ответить
14. user712426 14.07.17 08:03 Сейчас в теме
(13)Спасибо вам!
Надо и так попробовать сделать. Я выкрутилась пока созданием 2 областей, сортировкой по должности и отбором если строка номер = 1 то --> вывод 1 области, если должность та же то --> 2 обл, если новая -->1 область.
12. пользователь 13.07.17 13:12
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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