Имя: Пароль:
1C
1С v8
Пользовательские настройки динамического списка.
0 _stay true_
 
24.04.19
12:45
Всем привет.

Имеет ЗУП 3.1.9.187.
Задача: "подсвечивать" жирным строки в списке документов "отпуска сотрудников"(Т6-а) по условию. В 120 базах :)
Зашёл в "Настроить список", указал настройки УО вручную, сохранил настройки в списке.
Раскопировал на всех юзеров базы. Работает.

Но для 120 баз это делать очень долго.

Решил описать настройки компоновки программно используя как образец созданные вручную настройки и сохраниить их в ХранилищеПользовательскихНастроекДинамическихСписков.
Код отрабатывает, настройка сохраняется, в списке "Выбрать настройку" появляется.

Но когда её выбираешь, ничего не происходит. При нажатии "настроить список" ничего не изменилось и не появилось.
Стал разбираться. От "ручной" настройки отличается неким "ИдентификаторомПользовательскойНастройки", по виду похожим на ГУИД.
Присвоил в коде. Записал. Выбираю - и ловлю фатал "Невосстановимая ошибка".

Стал разбираться - этот идентификатор у всех настроек, созданных вручную одинаковый. Откуда он берется и чего это идентификатор - не понимаю.


Кто сталкивался с программным созданием настроек дин.списка с последующей записью в хранилище - поделитесь мудростью. Вот мой г...код


    Настройки                  = Новый ПользовательскиеНастройкиКомпоновкиДанных;
    
    НоваяНастройка             = Настройки.Элементы.Добавить(Тип("УсловноеОформлениеКомпоновкиДанных"));
    НоваяНастройка.ИдентификаторПользовательскойНастройки = Строка(Новый УникальныйИдентификатор);
    НовоеУО                    = НоваяНастройка.Элементы.Добавить();
    НовоеУО.ИдентификаторПользовательскойНастройки = НоваяНастройка.ИдентификаторПользовательскойНастройки;
    НовыйОтборГруппа           = НовоеУО.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    НовыйОтборГруппа.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
    
    НовыйОтбор                 = НовыйОтборГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйОтбор.ВидСравнения    = ВидСравненияКомпоновкиДанных.НеЗаполнено;
    НовыйОтбор.Использование   = Истина;
    НовыйОтбор.ЛевоеЗначение   = Новый ПолеКомпоновкиДанных("Сотрудники.Отпуск");
    НовыйОтбор.ПравоеЗначение  = Неопределено;
    
    НовыйОтбор                 = НовыйОтборГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйОтбор.ВидСравнения    = ВидСравненияКомпоновкиДанных.Равно;
    НовыйОтбор.Использование   = Истина;
    НовыйОтбор.ЛевоеЗначение   = Новый ПолеКомпоновкиДанных("Сотрудники.Отпуск.ДокументРассчитан");
    НовыйОтбор.ПравоеЗначение  = Ложь;
    
    Шрифт = Новый Шрифт(, 10, Истина,,, );
  
        НовоеУО.Оформление.УстановитьЗначениеПараметра("Шрифт", Шрифт);
    
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("УдалитьДокументОснование");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Дата");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Комментарий");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("МоментВремени");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Номер");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Организация");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Ответственный");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ПериодПринадлежности");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Проведен");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Руководитель");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("КраткийСоставДокумента");
    НовоеПоле = НовоеУО.Поля.Элементы.Добавить();
    НовоеПоле.Использование = Истина;
    НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка");


        ОписаниеНастроекПольз.Представление = "НастройкаСписка";
    ОписаниеНастроекПольз.КлючОбъекта   = "Документ.ОтпускаСотрудников.Форма.ФормаСписка.Список";
    ОписаниеНастроекПольз.Пользователь  = "Admin";

        ХранилищеПользовательскихНастроекДинамическихСписков.Сохранить(Документ.ОтпускаСотрудников.Форма.ФормаСписка.Список,,Настройки,ОписаниеНастроекПольз,"Admin")
1 _stay true_
 
24.04.19
12:54
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
2 _stay true_
 
24.04.19
14:13
Блин, видимо, не судьба(((