Имя: Пароль:
1C
1С v8
Внешний отчет и несколько макетов.
0 zippygrill
 
27.12.14
16:18
На форуме так и не нашел решение.
Есть такой код:

        ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
        СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет(Макет);
        ОтчетОбъект.СхемаКомпоновкиДанных = СхемаКомпоновкиДанных;
        АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
        Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
        Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
        ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет");

Схема подставляется, настройки также(даже быстрые отборы/параметры на форме появляются), но при нажатие на "Сформировать" отчет говорит что не установлена схема. В процедуре "ПриКомпоновкеРезультата" не вмешался но вижу в отладчике свою настройку, запрос и т.д.
1 zippygrill
 
27.12.14
16:23
формы управляемые.
в курсе Насипова показывают как меняют СКД прямо при компоновке но у меня не тот вариант.
2 zippygrill
 
27.12.14
16:35
ап
3 RomanYS
 
27.12.14
16:46
"Сформировать" - это стандартная кнопка? или твоя команда
4 zippygrill
 
27.12.14
17:06
стандартная
5 RomanYS
 
27.12.14
17:17
твой "Отчет" (ДанныеФормыСтруктура) не содержит схемы, поэтому
после ЗначениеВРеквизитФормы она теряется.
Наверное, надо всё таки подставлять схему в ПриКомпоновкеРезультата. Может спецы по УФ знают друие варианты решения.
6 RomanYS
 
27.12.14
17:34
пару лет назад подобная проблема не решилась:
v8: Использование нескольких схем в СКД

Как я понимаю проблему: данные формы и объект (ОтчетОбъект) никак не связаны, кроме тех данных, которые сериализуются при передаче контекста. Что мешало 1С включить сюда схему - непонятно.
"ОтчетОбъект = РеквизитФормыВЗначение("Отчет")" создает копию экземпляра объекта, т.е. это не ЭтотОбъект, доступный в модуле отчета.
7 zippygrill
 
27.12.14
17:40
Пока обошел так:
1. добавил реквизит объекта: АдресСхемыВоВременнойХранилище с типом Строка
2. ОтчетОбъект.АдресСхемыВоВременнойХранилище = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
3. в процедуре "ПриКомпоновкиРезультата":СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(ЭтотОбъект.АдресСхемыВоВременнойХранилище);
8 RomanYS
 
27.12.14
17:50
(7) я тоже к такой же конструкции пришел
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.