СКД. Не ВСЕГДА инициализируются доступные настройки компоновщика. #621392


#0 by GANR
Платформа 8.2.15.301. Готовлю СКД следующим кодом: Почему список доступных полей выбора, отбора и пр. КомпоновщикНастроек инициализируется НЕ КАЖДЫЙ раз? Иной раз - всё нормально, а иной - все списки доступных полей просто пусты, хотя текст запроса синтаксически правилен. ПолноеИмя - это имя произвольного объекта в базе (справочник, документ, регистр сведений или их табличные части)
#1 by GANR
up
#2 by izekia
закономерность не выявил?
#3 by GANR
Удалил все роли, кроме "Полные права", общие реквизиты удалил из конфигурации - ничего не меняется. Запустил на простенькой почти самописоной базе - по всем объектам отчет строится. Куда-же копать дальше?
#4 by GANR
+ Да, кстати, одну закономерность забыл: если отчет не строится по полному имени самого объекта, то он не строится и по полным именам всех его табличных частей.
#5 by TormozIT
Возможно похожая проблема Там правда предположительно с разделением данных связано. Открыть приложенную внешнюю обработку в толстом клиенте обычном приложении базы с конфигурацией, содержащей БСП. Выполнится код
#6 by GANR
А не могли-бы вы рассказать, была-ли она там решена и как? А то у меня нет доступа к (я не франчайзи).
#7 by GANR
Я здесь тоже поднял ветку - никто пока не дал окончательного ответа. Хорошо-бы разработчиков этого узелка найти. А то ещё долго можно решать 1 уравнение с 25 неизвестными (((.
#8 by TormozIT
Нет, не была. Я опубликовал проблему 17.07.2012 и отправил отчет о ней в 1с тогда же.
#9 by GANR
А вот за это спасибо :-).
#10 by TormozIT
Так и не понял, воспроизвелась ли проблема у тебя? Иными словами, насколько родственны наши проблемы?
#11 by TormozIT
Прочитал ветку из . Проблема с большой вероятностью та же самая. Ее даже еще не исследовали в тех. поддержке. Так что исправление будет не скоро. Надо искать обходной путь.
#12 by GANR
Последствия в и одинаковы. И запросы точно как у меня кодом генерируются один в один. Только я в конструктор объекта ИсточникДоступныхНастроекКомпоновкиДанных посылаю не саму СКД, а её адрес во временном хранилище. Кстати, когда начал туда пихать СКД - вообще для всех таблиц в моей ИБ перестало работать. Может попробуешь так:   АдресСКД = ПоместитьВоВременноеХранилище(СКД, ЭтаФорма.УникальныйИдентификатор); Очень вероятно, что тогда хотя-бы у тебя заработают многие таблицы (если не все). + Я попробовал вот таким кодом открыть собранную в конструкторе СКД        #Если ТолстыйКлиентУправляемоеПриложение ИЛИ ТолстыйКлиентОбычноеПриложение Тогда Опять не заполняются доступные настройки. Зато попробовал 1. создать внешний отчет 2. сохранить настройки из конструктора 3. загрузить настройки в основную СКД отчета и в конфигураторе доступные настройки заполнились. Я думаю, что на уровне платформы эта проблема ЛЕГКО решаема.
#13 by TormozIT
Использование временного хранилища не меняет поведения.
#14 by GANR
У тебя нет идей насчет конкретного обходного пути? Я попробовал выгрузить результат запроса в ТЗ, затем ТЗ подцепить в качестве набора данных и судя по этой странице пришел к выводу, что сделать доступными поля внешнего набора данных мне не удастся. Или, может, все-таки можно?
#15 by GANR
+ Ага... Нужно попробовать заполнить доступные поля набора, присвоив им тип значения, поместить такую СКД во временное хранилище, а затем прогнать эти строки
#16 by GANR
+ Заработает - выложу код. Не заработает - просто отпишусь.
#17 by GANR
Вот и обходной путь нужно этот код
#18 by GANR
+ Спойлер для портянок кода не заметил фразу "заменить этим" и не разбил одну портянку на две
#19 by GANR
+ Потом при формировании отчета на этапе компоновки данных нужно не забыть поместить структуру с внешними наборами данных в метод процессора КД
#20 by TormozIT
Я же написал, что мне не помогает временное хранилище.
#21 by GANR
Там НЕ про временное хранилище - там реальный обходной путь решения проблемы, описанной в самом начале ветки в (тебе нужно лишь адаптировать код под свои идентификаторы - только и всего).
#22 by TormozIT
Кажется что в твоем обходном пути оба варианта отличаются фактически только строками
#23 by TormozIT
+ У тебя там по всей видимости еще и неточность в оригинальном фрагменте идн = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД); КомпоновщикНастроек.Инициализировать(идн);
#24 by TormozIT
А хотя понял, ты там решил через замену на НаборДанныхОбъект делать. Но мне он к сожалению не подходит.
#25 by GANR
А почему?
#26 by TormozIT
Кажется затратно программировать всю автоматику по заполнению свойств полей набора данных, которую делает сама компоновка при инициализации источника доступных настроек. Например, это роли и ограничения полей. Но за идею спасибо. Может быть в будущем пригодится.
#27 by GANR
А у тебя нет, случайно, ещё каких-нибудь вариантов, кроме ?
#28 by acsent
либо затратно либо ждать у моря погоды от 1с
#29 by acsent
когда выполняешь запрос делай ВЫБРАТЬ ПЕРВЫЕ 1
#30 by GANR
не прошло (((
#31 by GANR
а зачем ??? может я недопонял что-то?
#32 by GANR
ап
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С