Имя: Пароль:
1C
1С v8
УФ, Табличный документ на форме
, , ,
0 Skif_asu
 
24.08.16
16:02
Есть обработка на урпавляемых формах.

Внутри нее создается отчет "Анализ начислений и удержаний", в дальнейшем расчетный листок для сотрудника выводится в табличный документ на форме.

Выводится так:
http://s018.radikal.ru/i507/1608/3b/a09e74370c8b.png

Как сделать, чтобы расчетный листок так не растягивался?
1 Горогуля
 
24.08.16
16:03
покрутить макет предлагать?
2 Numerus Mikhail
 
24.08.16
16:03
Задать ширину колонок макета?
3 Горогуля
 
24.08.16
16:04
(1) (2) слишком просто. автор явно задумал что-то нетрадиционное
4 Skif_asu
 
24.08.16
16:06
(1) Манипуляции могу проводить с Табличным документом, изменять макет самого отчета не могу

Сам отчет в программе формируется без растяжения.
5 Горогуля
 
24.08.16
16:07
>не могу
надо себя заставить. или мочь или кушать то, что есть
>формируется без растяжения
уже всё хорошо?
6 Skif_asu
 
24.08.16
16:11
(5) Формирую отчет в программе не через обработку. Формируется так:
http://i023.radikal.ru/1608/99/b112a7706b30.png

Формирую отчет через обработку и вывожу в реквизит на УФ. Формируется, как в (0).

Настройки Табличного документа, который вывожу в реквизит на УФ:
РЛ.ТолькоПросмотр = Истина;
РЛ.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УнифицированнаяФормаТ51";
РЛ.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
РЛ.АвтоМасштаб = Истина;
7 Nuobu
 
24.08.16
16:12
(6) А код, как выводишь?
8 RomanYS
 
24.08.16
16:12
(6) Код вот этого покажи "Формирую отчет через обработку и вывожу в реквизит на УФ"
9 Горогуля
 
24.08.16
16:14
в идеале это должно быть что-то вроде ВонТотОтчёт.СформироватьПФ()
10 Skif_asu
 
24.08.16
16:17
СоответствиеРасчетныхЛистков = Новый СписокЗначений;    
        
    ОтчетОбъект = Отчеты.АнализНачисленийИУдержаний.Создать();
    
    СКД = ОтчетОбъект.СхемаКомпоновкиДанных;
    
    ВариантОтчета = ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек.Найти("РасчетныйЛисток");
        
    КлючВарианта = "РасчетныйЛисток";
    
    НастройкиОтчета = ВариантОтчета.Настройки;
    
    МакетШапки = НайтиМакетОбласти(СКД, "ВидРасчетаВКолонке");
    МакетПодвала = НайтиМакетОбласти(СКД, "СводОрганизация");
    Если МакетШапки = Неопределено ИЛИ МакетПодвала = Неопределено Тогда
        ВызватьИсключение "Формат отчета по р/л не поддерживается!";
    КонецЕсли;
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("Период", Новый СтандартныйПериод(ПериодРегистрации.ДатаНачала, ПериодРегистрации.ДатаОкончания));
    СтруктураПараметров.Вставить("НачалоПериода",                ПериодРегистрации.ДатаНачала);
    СтруктураПараметров.Вставить("КонецПериода",                ПериодРегистрации.ДатаОкончания);
        
    Для каждого ПараметрЗаполнения Из СтруктураПараметров Цикл
        
        ПараметрКомпоновкиДанных = Новый ПараметрКомпоновкиДанных(ПараметрЗаполнения.Ключ);
        ЗначениеПараметра = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновкиДанных);
        Если ЗначениеПараметра <> Неопределено Тогда
            ЗначениеПараметра.Значение = ПараметрЗаполнения.Значение;
            ЗначениеПараметра.Использование = Истина;
        Иначе
            НовыйПараметр = НастройкиОтчета.ПараметрыДанных.Элементы.Добавить();
            НовыйПараметр.Параметр = ПараметрКомпоновкиДанных;
            НовыйПараметр.Значение = ПараметрЗаполнения.Значение;
            НовыйПараметр.Использование = Истина;
        КонецЕсли;
        
    КонецЦикла;
    
    СписокСотрудников = Объект.Список.Выгрузить(, "Сотрудник");
    
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
            НастройкиОтчета.Отбор, "Сотрудник.ГоловнойСотрудник", СписокСотрудников, ВидСравненияКомпоновкиДанных.ВСписке, , Истина);
                
    ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиОтчета);
    КлючВарианта = "РасчетныйЛисток";
    ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта", КлючВарианта);
    ДанныеРасшифровки = Неопределено;    
    
    ТабДок = Новый ТабличныйДокумент;
    
    ОтчетОбъект.СкомпоноватьРезультат(ТабДок, ДанныеРасшифровки);
    
    СчетчикГлоб = 0;
    НомерСтрокиКонцаРЛ = 0;
    ИсходнаяЯчейкаПоиска = ТабДок.Область(1, 1);
    
    Пока Истина Цикл
        
    Если СчетчикГлоб = 0 Тогда
    ОбластьПервойЯчейки = ТабДок.НайтиТекст("РАСЧЕТНЫЙ ЛИСТОК");
        Иначе
    ОбластьПервойЯчейки = ТабДок.НайтиТекст("РАСЧЕТНЫЙ ЛИСТОК", ИсходнаяЯчейкаПоиска);
    КонецЕсли;

    
    
    Если ОбластьПервойЯчейки = Неопределено тогда
        Прервать;
    КонецЕсли;
    
    НомерСтрокиНачалаРЛ = ОбластьПервойЯчейки;//строка "расчетный    лист"
    
    Если СчетчикГлоб = 0 Тогда
        ОбластьПоследнейЯчейки = ТабДок.НайтиТекст("Долг");
    Иначе
        ОбластьПоследнейЯчейки = ТабДок.НайтиТекст("Долг", НомерСтрокиНачалаРЛ);
            
    КонецЕсли;


    Если ОбластьПоследнейЯчейки = Неопределено тогда
        Прервать;
    КонецЕсли;
    
    РЛ = Новый ТабличныйДокумент;
    РЛ.ТолькоПросмотр = Истина;
    РЛ.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УнифицированнаяФормаТ51";
    РЛ.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    РЛ.АвтоМасштаб = Истина;

    РЛ.ВставитьОбласть(ТабДок.Область(ОбластьПервойЯчейки.Верх + 1,, ОбластьПоследнейЯчейки.Верх - 1), РЛ.Область(1, 1));
    
    Позиция=Найти(РЛ.ТекущаяОбласть.Текст,"(");
    СотрудникВРЛ = Лев(РЛ.ТекущаяОбласть.Текст,Позиция-2);
    
    СоответствиеРасчетныхЛистков.Вставить(СчетчикГлоб, РЛ,СотрудникВРЛ );
    СчетчикГлоб = СчетчикГлоб + 1;
    ИсходнаяЯчейкаПоиска = ОбластьПоследнейЯчейки;
КонецЦикла;
    Возврат СоответствиеРасчетныхЛистков;
11 Горогуля
 
24.08.16
16:19
(10) возврат какого-то СЗ
12 Skif_asu
 
24.08.16
16:19
Заполняю список значений по каждому сотруднику, список сотрудников вывожу в ТЧ на форме, при активизации строки ТЧ вывожу расчетный лист по сотруднику в Табличный документ

Если Объект.Список.Количество() <> 0 Тогда
        Попытка

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

        Исключение
        
            
        КонецПопытки;
        
    КонецЕсли;
13 RomanYS
 
24.08.16
16:19
(10) причина здесь
    РЛ.ВставитьОбласть(ТабДок.Область(ОбластьПервойЯчейки.Верх + 1,, ОбластьПоследнейЯчейки.Верх - 1), РЛ.Область(1, 1));
14 Горогуля
 
24.08.16
16:20
среьёзно? при активизации?
15 Skif_asu
 
24.08.16
16:21
(14) Что не так?
16 Горогуля
 
24.08.16
16:22
(15) при каждом чихе дёргать сервер. несколько выделенных строк хоть нормально обрабатываются при этом?
17 Skif_asu
 
24.08.16
16:24
(16) Дергаю на клиенте, причем здесь сервер.
Да, все отлично отрабатывает. Около 0,5 секунд. Список сотрудников 100+
18 Горогуля
 
24.08.16
16:26
на клиенте дёргаешь сервер
19 Skif_asu
 
24.08.16
16:32
(13) И как сделать формат, чтобы он так не растягивал ячейки?
20 RomanYS
 
24.08.16
16:35
(15) вставка области из строк не меняет ширину колонок в ТД-приемнике. Почему не РЛ.Вывести(..)?
21 Skif_asu
 
24.08.16
16:59
(20) Сделал. Ничего не изменилось
22 Skif_asu
 
24.08.16
17:05
Как итог:
Настраивал ТД управляемой формы, уменьшал ячейки у самого реквизита, после 10 минут подбора - получилось
23 RomanYS
 
24.08.16
19:05
(22) верни ВставитьОбласть и всё вернется обратно