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

    
    для ряд = ДокументРезультат.ФиксацияСверху+1 по ДокументРезультат.ВысотаТаблицы цикл
        текущаяОбласть = ДокументРезультат.Область(ряд,КолонкаТабЗакрепить,ряд,КолонкаТабЗакрепить);
        //текущаяОбласть.СодержитЗначение = Истина;
        //текущаяОбласть.ТипЗначения = описаниеТиповЧисло;
        //текущаяОбласть.ЦветФона = WebЦвета.БледноЗеленый;
        текущаяОбласть.Защита = Ложь;
        //текущаяОбласть.Защита = Истина;
    КонецЦикла;
    ////Установим защиту только на первую колонку
    Область = ДокументРезультат.НайтиТекст("Аналог");
Если ТипЗнч(Область)=Тип("Неопределено") Тогда
Иначе
НомерКолонки = Область.Лево;
Область = ДокументРезультат.Область( , НомерКолонки, , НомерКолонки);
Область.Защита = Истина;
КонецЕсли;
КонецПроцедуры

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