|   |   | 
| 
 | 8.3 УФ. В обработке подвязать данные расшифровки к табличному документу | ☑ | ||
|---|---|---|---|---|
| 0
    
        SeiOkami 08.09.17✎ 09:30 | 
        Здравия!
 Есть обработка на УФ. В ней есть две СКД, два компоновщика, два табличного поля результата. Добавляю два реквизита данных расшифровки. Как можно их подвязать к табличным документам, чтобы платформа сама их обрабатывала так же, как обрабатывает в обычных отчётах. Можно это сделать без написания своего кода в обработке расшифровки? | |||
| 1
    
        SeiOkami 08.09.17✎ 09:50 | 
        уп     | |||
| 2
    
        Lexey_ 08.09.17✎ 09:53 | 
        (0) код показывай     | |||
| 3
    
        SeiOkami 08.09.17✎ 09:54 | 
        (2), код чего?     | |||
| 4
    
        Lexey_ 08.09.17✎ 09:56 | 
        (3) формирования отчета(заполнения табличного документа)     | |||
| 5
    
        SeiOkami 08.09.17✎ 09:59 | 
        Стандартно всё. Очычное формирование скд, типа этого
 СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанных")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки); Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); | |||
| 6
    
        Lexey_ 08.09.17✎ 10:04 | 
        (5) тут косяк ДанныеРасшифровки             = Новый ДанныеРасшифровкиКомпоновкиДанных;     | |||
| 7
    
        Lexey_ 08.09.17✎ 10:07 | 
        (5) спрашиваешь  "Как можно реквизиты данных расшифровки подвязать к табличным документам", а сам эти реквизиты в коде не используешь     | |||
| 8
    
        SeiOkami 08.09.17✎ 10:19 | 
        использую, это лишь пример
 у меня есть реквизит с адресом данных расширофвки и реквизит с результатом когда клацаешь по полям отчёта, то выводится окно с индексом данных расширофвки но сама расшифровка не срабатывает потому что нужно либо писать код обработки расшифровки либо как-то подвязать табличный документ с адресом данных расшифровки | |||
| 9
    
        Lexey_ 08.09.17✎ 10:21 | 
        (8) "использую, это лишь пример", а зачем ты пример выложил? Выложи код, который используешь     | |||
| 10
    
        SeiOkami 08.09.17✎ 10:44 | 
        просто там общий модуль вытягивать
 АнализИзменений_Результат.Очистить(); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МеханизмыСхемыКомпоновкиДанных.СкомпоноватьРезультат(АнализИзменений_Результат, АнализИзменений_АдресСхемы, АнализИзменений_КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки, Новый Структура("СтыкованныеДанные", СтыкованныеДанные.Выгрузить())); ПоместитьВоВременноеХранилище(ДанныеРасшифровки, АнализИзменений_ДанныеРасшифровки); | |||
| 11
    
        SeiOkami 08.09.17✎ 10:44 | 
        // Выполняет схему компоновки данных в ТЗ, ДЗ или ТабДокумент.
 // // Параметры: // Результат - ТаблицаЗначений, ДеревоЗначений, ТабличныйДокумент - Документ, в который будет осуществляться вывод. // СхемаИлиАдрес - СхемаКомпоновкиДанных, Строка - СКД или Адрес на временное хранилище с СКД // НастройкиКомпоновкиДанных - НастройкиКомпоновкиДанных - Настройки, которые необходимо выполнять. Если не заполнено, будут выполняться НастройкиПоУмолчанию // ДанныеРасшифровки - ДанныеРасшифровкиКомпоновкиДанных, Ложь - ДанныеРасшифровки. Если "Ложь", то расшифровка заполняться не будет. (Именно Ложь, потому что стандартное свойство ДанныеРасшифровки может принимать значение Неопределено) // ВнешниеНаборыДанных - Структура - Внешние наборы даннных. Если имя набора совпадает с именем набора-запроса в СКД, то это набор оборачивается в набор-объект // ДополнительныеПараметры - Структура - содержит доп. параметры процедуры. // // ДополнительныеПараметры // {ИмяКлюча} { Тип.Вид:ПоУмолчанию } {Функциональное описание} // - МакетОформления - МакетОформленияКомпоновкиДанных - Макет оформления, в соответствии с которым необходимо оформлять макет компоновки данных. Если не указан, будет использоваться макет оформления по умолчанию. // - ПроверятьДоступностьПолей - Булево:Истина - Определяет, выполнять ли проверку прав на просмотр полей и проверку доступности поля во включенных функциональных возможностях. // - ПараметрыФункциональныхОпций - Структура - Содержит параметры функциональных опций, используемые при исполнении отчета. // - ВозможностьИспользованияВнешнихФункций - Булево:Ложь - Содержит параметры функциональных опций, используемые при исполнении отчета. // - СпособВосстановленияНастроекКомпоновкиДанных - СпособВосстановленияНастроекКомпоновкиДанных - Если указан, то настройки обрабатываются методом "Восстановить" компоновщика настроек // - ОбъектСтатистики - Справочник.ОбменыДанными - элемент справочника, для которого необходимо писать статистику выполнения в РС СтатистикаПроизводительности. Дополнительно пишется количество строк каждого набора данных // Процедура СкомпоноватьРезультат(Результат, СхемаИлиАдрес, Настройки = Неопределено, ДанныеРасшифровки = Ложь, ВнешниеНаборыДанных = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт //Первоначальная настройка ИмяТекущегоМетода = "СкомпоноватьРезультат"; ДополнитьИзШаблона(ДополнительныеПараметры, ИмяТекущегоМетода); ПисатьСтатистику = ДополнительныеПараметры.ОбъектСтатистики <> Неопределено; Если ПисатьСтатистику Тогда ДанныеСтатистики = СтатистикаПроизводительности_НачалоВыполнения(ДополнительныеПараметры.ОбъектСтатистики, ИмяТекущегоМетода); ОписаниеВнешнихНаборовДанных = Новый Структура; Для Каждого ВнешнийНаборДанных Из ВнешниеНаборыДанных Цикл ОписаниеВнешнихНаборовДанных.Вставить(ВнешнийНаборДанных.Ключ, Новый Структура("Количество")); ТипВнешнегоНабораДанных = ТипЗнч(ВнешнийНаборДанных.Значение); Если ТипВнешнегоНабораДанных = Тип("ТаблицаЗначений") ИЛИ ТипВнешнегоНабораДанных = Тип("ДеревоЗначений") ИЛИ ТипВнешнегоНабораДанных = Тип("ВыборкаИзРезультатаЗапроса") Тогда ОписаниеВнешнихНаборовДанных[ВнешнийНаборДанных.Ключ].Количество = ВнешнийНаборДанных.Значение.Количество(); КонецЕсли; КонецЦикла; ДанныеСтатистики.СохраняемыеДанные.Вставить("ВнешниеНаборыДанных", ОписаниеВнешнихНаборовДанных); КонецЕсли; СхемаКомпоновкиДанных = ?(ЭтоАдресВременногоХранилища(СхемаИлиАдрес), ПолучитьИзВременногоХранилища(СхемаИлиАдрес), СхемаИлиАдрес); Если Настройки = Неопределено Тогда ВыполняемыеНастройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ИначеЕсли ТипЗнч(Настройки) = Тип("Строка") Тогда ВыполняемыеНастройки = СхемаКомпоновкиДанных.ВариантыНастроек.Найти(Настройки); Если ВыполняемыеНастройки = Неопределено Тогда ВызватьИсключение "Не найден вариант настроек: " + Настройки; КонецЕсли; ВыполняемыеНастройки = ВыполняемыеНастройки.Настройки; Иначе ВыполняемыеНастройки = КопияЗначения(Настройки); КонецЕсли; Если ДополнительныеПараметры.СпособВосстановленияНастроекКомпоновкиДанных <> Неопределено Тогда КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроек.ЗагрузитьНастройки(ВыполняемыеНастройки); КомпоновщикНастроек.Восстановить(ДополнительныеПараметры.СпособВосстановленияНастроекКомпоновкиДанных); ВыполняемыеНастройки = КомпоновщикНастроек.ПолучитьНастройки(); КонецЕсли; ТипГенератора = ?(ТипЗнч(Результат) = Тип("ТаблицаЗначений") ИЛИ ТипЗнч(Результат) = Тип("ДеревоЗначений"), Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"), Тип("ГенераторМакетаКомпоновкиДанных")); //Компоновка КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Если ДанныеРасшифровки = Ложь Тогда //Есть мнение, что если не передавать ДанныеРасшифровки, то будет быстрее (нужно будет провести эксперимент). МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, ВыполняемыеНастройки, , ДополнительныеПараметры.МакетОформления, ТипГенератора, ДополнительныеПараметры.ПроверятьДоступностьПолей, ДополнительныеПараметры.ПараметрыФункциональныхОпций); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,, ДополнительныеПараметры.ВозможностьИспользованияВнешнихФункций); Иначе МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, ВыполняемыеНастройки, ДанныеРасшифровки, ДополнительныеПараметры.МакетОформления, ТипГенератора, ДополнительныеПараметры.ПроверятьДоступностьПолей, ДополнительныеПараметры.ПараметрыФункциональныхОпций); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, ДополнительныеПараметры.ВозможностьИспользованияВнешнихФункций); КонецЕсли; //Вывод Если ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных") Тогда ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Иначе Если Результат = Неопределено Тогда Результат = Новый ТабличныйДокумент; КонецЕсли; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецЕсли; Если ПисатьСтатистику Тогда СтатистикаПроизводительности_ОкончаниеВыполнения(ДанныеСтатистики); КонецЕсли; КонецПроцедуры | |||
| 12
    
        SeiOkami 08.09.17✎ 10:52 | 
        вопрос в том, можно ли как-то в самом редакторе формы подвязать к табличному документу реквизит с данными расшифровки
 в форме отчёта есть свойство "данные расшифровки". Но это форма ОТЧЕТА, а у меня обработка. + У меня в обработке ДВА компоновщика, ДВА табличных поля результата и соответственно ДВА реквизита с расшифровкой | |||
| 13
    
        Lexey_ 08.09.17✎ 11:01 | 
        (10) ДанныеРасшифровки    = Новый ДанныеРасшифровкиКомпоновкиДанных;
 не инициализируй новый объект, а используй существующий(один из твоих реквизитов) | |||
| 14
    
        DmitrO 08.09.17✎ 11:08 | 
        В платформе нету никакой волшебной "подвязки табличного документа к адресу данных расшифровки", есть просто специальное поведение формы отчета где у формы отчета указание соответствующих реквизитов.
 Соответственно, чтобы решить задачу надо просто написать код обработки расшифровки для каждого табличного документа и все. | |||
| 15
    
        SeiOkami 08.09.17✎ 11:10 | 
        (13), в этом нет никакой проблемы. Данные нормально формируются и помещаются во ВХ     | |||
| 16
    
        SeiOkami 08.09.17✎ 11:11 | 
        (14), ок, надеялся, что всё-таки что-то волшебное есть. Спасибо     | |||
| 17
    
        DmitrO 08.09.17✎ 11:19 | 
        (16)примерно так:
 &НаКлиенте Процедура Результат1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки1, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет1)); ОбработкаРасшифровки.ПоказатьВыборДействия(Новый ОписаниеОповещения("ВыборРасшифровки1", ЭтотОбъект, Расшифровка), Расшифровка, , , Истина); КонецПроцедуры &НаКлиенте Процедура Результат1ОбработкаДополнительнойРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки1, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет1)); ОбработкаРасшифровки.ПоказатьВыборДействия(Новый ОписаниеОповещения("ВыборРасшифровки1", ЭтотОбъект, Расшифровка), Расшифровка, , , Ложь, Элемент); КонецПроцедуры &НаКлиенте Процедура ВыборРасшифровки1(Действие, ПараметрДействия, Расшифровка) Экспорт Если Действие=ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет или Действие=Неопределено Тогда ИначеЕсли Действие=ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда ПоказатьЗначение(, ПараметрДействия); //ИначеЕсли ... КонецЕсли; КонецПроцедуры | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |