Имя: Пароль:
1C
1С v8
Вывод табличной части формы в макет
0 katod
 
13.07.17
09:21
Здравствуйте!
Подскажите как лучше вывести в макет форму (см. рис)?
Если одной должности м.б. присвоены несколько позиций сиз (наименованиеСИЗ).
Пробую через секции. Но если сначала Вывести должность, затем Присоединить наименованиеСИЗ, то получается, что все наименованиеСИЗ сдвигаются правее от предыдущего наименованиеСИЗ по каждой должности..
Может быть вообще по-другому надо делать?
Конфа Управление производственным предприятием, редакция 1.3 (1.3.89.2) ОБЫЧНЫЕ ФОРМЫ
в строках может быть сколь угодно кратное повторение профессии и в любом порядке. Метод Объединить мне не подходит.
1 katod
 
13.07.17
09:22
2 FIXXXL
 
13.07.17
09:36
выводи просто построчно
если не нужно повторение должности - выводи только в первой строке
3 КонецЕсли
 
13.07.17
09:37
использовать вывести() для вывода строк и Объединить() для одинаковых ячеек
4 katod
 
13.07.17
13:11
Область = ТабДок.Область(2,2,3,3);
Область.Объединить();
Для Объединить надо знать координаты! А как я смогу узнать где начало/конец след должности и если их там куча..
5 katod
 
13.07.17
13:12
и вопрос: без этого метода Объединить() можно как-то обойтись??? Пожалуйста, помогите! уже чего только не творила.
6 lodger
 
13.07.17
13:14
переменная = "";
цикл
при выводе строки смотри выводилось ли раньше текущее значение.
если нет - вывести, запомнить в переменную.
конеццикла
7 FIXXXL
 
13.07.17
13:14
(4) заготовь в макете две области строки, Область1 с параметром "Должность", Область2- без

перебирай строки, проверяй совпадение должности,
совпадает - выводи Область2, иначе Область1
параметры области заполнить из строки цикла смогЁшь сам? :)
8 1dvd
 
13.07.17
13:16
тестовое задание при приеме?
9 katod
 
13.07.17
13:23
"при выводе строки смотри выводилось ли раньше текущее значение.
если нет - вывести, запомнить в переменную.
конеццикла"

так пыталась делать. но тогда выводит с новой строчки просто повторяющиеся сиз.
10 katod
 
13.07.17
13:24
Табл = Макет.ПолучитьОбласть("Табл");
    
    тз1 = ПереченьСИЗ.Выгрузить();
    тз1.ВыбратьСтроку();
    
    тз2 = тз1.Скопировать();
    тз2.сортировать("НаименованиеПрофессии, НаименованиеСИЗ");
    тзПодсчетаСтрок = тз2.Скопировать();
    тзПодсчетаСтрок.Колонки.Добавить("СколькоСизов");
    тзПодсчетаСтрок.ЗаполнитьЗначения(1,"СколькоСизов");
    тзподсчетастрок.Свернуть("НаименованиеПрофессии","СколькоСизов");
    тзподсчетастрок.ВыбратьСтроку();
    
    номерПП = 1;
    Для каждого стр из тзподсчетастрок цикл
        Табл.Параметры.номерПП = номерПП;
        Табл.Параметры.НаименованиеПрофессии = стр.НаименованиеПрофессии;
        //Табл.Параметры.НаименованиеТОН = стр.НаименованиеТОН;
        
        сотр = СокрЛП(стр.НаименованиеПрофессии);
        //ТабДок.Вывести(Табл);
        
        Для каждого стр1 из тз1 цикл
            Если СокрЛП(стр1.НаименованиеПрофессии) = сотр тогда
                Табл.Параметры.НаименованиеСИЗ = стр1.НаименованиеСИЗ;
                Табл.Параметры.Количество  = стр1.Количество;
                Табл.Параметры.ЕдИзм  = стр1.ЕдИзм;    
                
                Табл.Вывести(Табл);
            Иначе
                продолжить;    
            КонецЕсли;
        КонецЦикла;
        
        //ТабДок.Вывести(Табл);
        номерПП = номерПП +1;
                
    КонецЦикла;
11 katod
 
13.07.17
13:24
в догонку: не знаю как тут файл прикрепить??
12 1dvd
 
13.07.17
13:25
(11) нам не известно, знаешь ты или нет как файл прикрепить

мы-то знаем, что никак
13 katod
 
13.07.17
13:26
:-D жаль..
14 КонецЕсли
 
13.07.17
13:27
ТекущаяДолжность="";
НачалоОбласти=0;
Пока ЗдесьТаблицаВыборка.Следующий() Цикл
    ОбластьСтроки.Заполнить(ЗдесьТаблицаВыборка);
    ТабДокумент.Вывести(ОбластьСтроки);
    Если ТекущаяДолжность<>ЗдесьТаблицаВыборка.Должность Тогда
        НачалоОбласти=ТабДокумент.ВысотаТаблицы();
        ТекущаяДолжность=ЗдесьТаблицаВыборка.Должность;
    Иначе
        ТабДокумент.Область(НачалоОбласти,1,ТабДокумент.ВысотаТаблицы(),1).Объединить();
    КонецЕсли;
КонецЦикла;
15 katod
 
13.07.17
13:32
Опять это страшное Объединить()..
извините! просто интересно даже без него никак?? Оно же по сути затирает всю ту область и записывает свое значение.

И 2-е: у меня есть таблица. как я с нее выборку сделаю?
ЗдесьТаблицаВыборка
16 katod
 
13.07.17
13:34
"перебирай строки, проверяй совпадение должности,
совпадает - выводи Область2, иначе Область1 "
щас попробую так! спасибо!
отпишусь потом
17 katod
 
13.07.17
13:36
Хотя чисто теоретически тогда придется голову поломать с ГраницаСверху и ГраницаСнизу..
18 Ёпрст
 
13.07.17
13:41
(17) не надо там ничего "ломать"
19 Ёпрст
 
13.07.17
13:42
если устраивает, что твой сантехник будет только вверхней ячейке, то выводи через 2 области в макете.
20 Ёпрст
 
13.07.17
13:42
если нужон посередине - то объединяй после вывода.
21 katod
 
13.07.17
13:43
конечно устраивает что вверху!
через 2 области - это т.е. через секции? я правильно вас поняла?
22 КонецЕсли
 
13.07.17
13:43
(15) Да, страаашно.
23 Ёпрст
 
13.07.17
13:47
(21)
да.
Делаешь 2 секции в макете, ода с границами лево-право-вверх и с параметром, вторая без параметра и с границами лево и право.
Усё.

Делаешь группировку по своему сантехнику, выводишь первую область, потом вторые, пока сантехник не кончится, затем опять первую и вторые..
24 katod
 
13.07.17
13:47
не пужайтесь))
все поняла. через области!
это жара наверное так влияет..
25 Ёпрст
 
13.07.17
13:48
(24) где это у вас там жара ?
У нас октябрь на дворе
26 volfy
 
13.07.17
13:57
(25) :D
27 katod
 
13.07.17
14:41
сделала как советовали 2 области и отбор по должности (условие Если)- так работает!
Всем Огромное Спасибо за советы!
28 h-sp
 
13.07.17
15:26
(10) Табл.Вывести(Табл);     - круто.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.