Имя: Пароль:
1C
1С v8
СКД и пользовательские варианты отчетов
,
0 ДенисЧ
 
02.10.20
15:24
Есть конфигурация на базе БСП (если важно - ерп).
В ней есть куча сохранённых вариантов отчётов.
Нужно во все добавить ещё одно поле.

Беру справочник вариантов. Нахожу нужные, получаю настройку, добавляю в выбранные поля нужное, сохраняю...
Открываю отчёт с вариантом и не вижу своих изменений, хотя программно они видятся...

По результатам трейса видно, что она делает "иннерджойн" с пользовательскими настройками... Но в справочнике их нет...

Как мне правильно изменить варианты? Может, ужо готовая функция есть?
1 mikecool
 
02.10.20
15:38
подписался на рассылку )
2 Андроны едут
 
02.10.20
16:01
?кеш?
3 ДенисЧ
 
02.10.20
16:01
(2) Нет. Кеша тут ни причём. Именно пользовательская настройка
4 fisher
 
02.10.20
16:04
Глянул - пользовательские настройки в стандартное хранилище настроек складываются.
5 ДенисЧ
 
02.10.20
16:06
(4) И как их оттуда для всех пользователей по очереди дёрнуть?
6 fisher
 
02.10.20
16:07
Может, у меня под рукой старая версия БСП, но там есть справочник "ПользовательскиеНастройкиОтчетов", в котором хранится ключ пользовательских настроек варианта из стандартного хранилища настроек.
7 Андроны едут
 
02.10.20
16:09
модуль ОбщегоНазначения:

// Загружает настройку из хранилища общих настроек, как метод платформы Загрузить,
// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>,
// но с поддержкой длины ключа настроек более 128 символов путем хеширования части,
// которая превышает 96 символов.
// Кроме того, возвращает указанное значение по умолчанию, если настройки не найдены.
// Если нет права СохранениеДанныхПользователя, возвращается значение по умолчанию без ошибки.
//
// В возвращаемом значении очищаются ссылки на несуществующий объект в базе данных, а именно
// - возвращаемая ссылка заменяется на указанное значение по умолчанию;
// - из данных типа Массив ссылки удаляются;
// - у данных типа Структура и Соответствие ключ не меняется, а значение устанавливается Неопределено;
// - анализ значений в данных типа Массив, Структура, Соответствие выполняется рекурсивно.
//
// Параметры:
//   КлючОбъекта          - Строка           - см. синтакс-помощник платформы.
//   КлючНастроек         - Строка           - см. синтакс-помощник платформы.
//   ЗначениеПоУмолчанию  - Произвольный     - значение, которое возвращается, если настройки не найдены.
//                                             Если не указано, возвращается значение Неопределено.
//   ОписаниеНастроек     - ОписаниеНастроек - см. синтакс-помощник платформы.
//   ИмяПользователя      - Строка           - см. синтакс-помощник платформы.
//
// Возвращаемое значение:
//   Произвольный - см. синтакс-помощник платформы.
//
Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию = Неопределено,
            ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт
    
    Возврат ХранилищеЗагрузить(ХранилищеОбщихНастроек,
        КлючОбъекта,
        КлючНастроек,
        ЗначениеПоУмолчанию,
        ОписаниеНастроек,
        ИмяПользователя);
    
КонецФункции
8 fisher
 
02.10.20
16:09
А как оно складывается можно подсмотреть в ВариантыОтчетов.ПриСохраненииПользовательскихНастроекНаСервере
9 fisher
 
02.10.20
16:11
Т.е. надо обойти настройки по справочнику, достать их из стандартного хранилища, поменять и засунуть обратно.
10 ДенисЧ
 
02.10.20
16:14
(9) Посмотрел. Настроек вариантов отчётов - 2600 записей. Пользовательских - от силы 20...
Не стыкуется
11 fisher
 
02.10.20
16:16
(10) Хм... Вероятно, в справочник складываются только именованные настройки. А текущие - штатно.
12 fisher
 
02.10.20
16:19
ЕМНИП, текущие настройки варианта сохраняются в стандартном хранилище с ключом "ТекущиеНастройкиВарианта". Внезапно :)
13 fisher
 
02.10.20
16:20
Соврамши. "КлючТекущегоВарианта".
14 fisher
 
02.10.20
16:21
Да, точняк:
4.5. Системное хранилище
Настройка: ключ текущего варианта отчета

● Ключ объекта ‑ текстовая строка, составленная из полного имени отчета и строки /КлючТекущегоВарианта (/CurrentVariantKey).
15 fisher
 
02.10.20
16:27
И, наконец, правильная версия :)
// Сохранение текущих пользовательских настроек.
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить(
    ПолноеИмяОтчета + "/" + Форма.КлючТекущегоВарианта + "/ТекущиеПользовательскиеНастройки",
    "",
    Форма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки);
16 ДенисЧ
 
02.10.20
16:48
Не... Не прокатывает...
У варианта один ключ. А в отчёте, в настройке выбранных полей совсем другой...