Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Процедура после компоновки результата.

Процедура после компоновки результата.
Я
   asder117
 
25.01.21 - 14:43
Коллеги доброго времени суток. Есть отчет на СКД. Строиться программно с помощью "ПриКомпоновкеРезультата".
После отработки отчета мне надо поставить защиту только на один столбец. Это сделано в конец процедуры добавил функцию и это работает. Причем это работает если при этом включен отбор. Как отбор снимаешь защита не ставиться. решил пока созданием кнопки, нажимая которую идет тот кусок процедуры. Какую можно функцию использовать для обновления отображения после того как результат выйдет на экран.
   Fragster
 
1 - 25.01.21 - 14:53
Можно использовать ПриКомпоновкеРезультата
   asder117
 
2 - 25.01.21 - 14:54
(1) Мне надо после это процедуры но перед выводом на экран
   Fragster
 
3 - 25.01.21 - 14:55
(2) все правильно. если ты поставишь стандартная обработка = ложь, то на экран выведется ДокументРезультат
   asder117
 
4 - 25.01.21 - 14:58
(3) У меня в процедуре ПриКомпоновкеРезультата формируется и собирается отчет...если поставить ложь то собираться отчет не будет
   ДенисЧ
 
5 - 25.01.21 - 15:01
(4) Таблетки забыл принять?
   Fragster
 
6 - 25.01.21 - 15:02
(4) ну, видимо, не формируется
   asder117
 
7 - 25.01.21 - 15:03
(5) Да загнался просто...понедельник))
   asder117
 
8 - 25.01.21 - 15:10
(5) Думал что да оказалось нет.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    ///..........тут часть кода........

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

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    /////

    КЧ = Новый КвалификаторыЧисла(12,2,ДопустимыйЗнак.Неотрицательный);
    описаниеТиповЧисло = Новый ОписаниеТипов("Число",,,КЧ);
    //обработкаРасшифровки1 = 

    ///

        для колонкаТабл = 4 по 16 цикл
        текущаяОбласть = ДокументРезультат.Область(4,колонкаТабл,4,колонкаТабл);
        текущаяОбласть.СодержитЗначение = Истина;
        //текущаяОбласть.ТипЗначения = описаниеТиповЧисло;

        //текущаяОбласть.ЦветФона = WebЦвета.БледноЗеленый;

        //текущаяОбласть.Защита = Ложь;

        Если текущаяОбласть.Значение = "Для заказа" Тогда
        КолонкаТабЗакрепить = колонкаТабл;
        КонецЕсли; 
    КонецЦикла;

    
    для ряд = ДокументРезультат.ФиксацияСверху+1 по ДокументРезультат.ВысотаТаблицы цикл
        текущаяОбласть = ДокументРезультат.Область(ряд,КолонкаТабЗакрепить,ряд,КолонкаТабЗакрепить);
        //текущаяОбласть.СодержитЗначение = Истина;

        //текущаяОбласть.ТипЗначения = описаниеТиповЧисло;

        //текущаяОбласть.ЦветФона = WebЦвета.БледноЗеленый;

        текущаяОбласть.Защита = Ложь;
        //текущаяОбласть.Защита = Истина;

    КонецЦикла;
    ////Установим защиту только на первую колонку

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

Так вот последние строки кода не отрабатывют если отключить отбор.
   Fragster
 
9 - 25.01.21 - 15:18
ну значит Область = неопределено
   Fragster
 
10 - 25.01.21 - 15:18
если отключить отбор
   Fragster
 
11 - 25.01.21 - 15:20
если не умеешь в отладку, то хотя бы сообщить() попробуй
   asder117
 
12 - 25.01.21 - 15:31
(9) нет область определено. (11) все умею и пробовал. Такое чувство что отбор накладывается после исполнения процедуры но перед выводом на экран
   asder117
 
13 - 25.01.21 - 15:38
Процедура ОбновлениеОтображения() спасло отца русской демократии..но тоже не нравиться..
   Вафель
 
14 - 25.01.21 - 16:12
компоновщикнастроек. Получить Настройки()

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.