![]() |
![]() |
![]() |
|
СКД: массово применить стандартные настройки | ☑ | ||
---|---|---|---|---|
0
Nicole
08.08.25
✎
18:20
|
Есть отчет на СКД, использующий типовую общую ФормуОтчета СтандартноеХранилищеНастроек. В качестве одного из параметров СКД выступает список значений. Меняется схема СКД, и из этого списка значений удаляются два элемента. Что имеем: пользователи открывают отчет, хотят установить параметр и видят старый список значений, из которого элементы еще не удалены. Для одного пользователя ситуация решается пунктом меню Еще - Стандартные настройки.
Есть возможность программно применить этот пункт для всех пользователей? |
|||
1
craxx
08.08.25
✎
20:20
|
(1) конфа на БСП, я надеюсь?
|
|||
2
Волшебник
08.08.25
✎
21:34
|
(0) Снесите все сохранённые настройки у пользователей
|
|||
3
Franchiser
гуру
09.08.25
✎
13:22
|
В 1C:Enterprise 8 для программного применения стандартных настроек системы компоновки данных (СКД) ко всем пользователям можно использовать несколько подходов:
## 1. Использование хранилища общих настроек ```1c // В модуле отчета или общем модуле Процедура УстановитьСтандартныеНастройкиДляВсехПользователей(ИмяОтчета, КлючВарианта = "Основной") // Получаем стандартные настройки СтандартныеНастройки = ПолучитьСтандартныеНастройкиСКД(); // Устанавливаем как настройки по умолчанию ХранилищеОбщихНастроек.Сохранить( "НастройкиОтчетов/" + ИмяОтчета, КлючВарианта + "/КомпоновщикНастроек/ПользовательскиеНастройки", СтандартныеНастройки.ПользовательскиеНастройки, НастройкиОписанияОбъекта(), "Общие" ); КонецПроцедуры Функция ПолучитьСтандартныеНастройкиСКД() КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); // Настраиваем стандартные параметры КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить(); КомпоновщикНастроек.Настройки.Порядок.Элементы.Очистить(); // Добавляем нужные отборы ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементОтбора.ПравоеЗначение = НачалоГода(ТекущаяДата()); ЭлементОтбора.Использование = Истина; Возврат КомпоновщикНастроек; КонецФункции ``` ## 2. Установка через обработчик при открытии отчета ```1c // В модуле формы отчета &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Проверяем, есть ли уже пользовательские настройки Если НЕ ЕстьПользовательскиеНастройки() Тогда УстановитьСтандартныеНастройки(); КонецЕсли; КонецПроцедуры &НаСервере Функция ЕстьПользовательскиеНастройки() КлючНастроек = "Отчет." + ИмяФормы + "/ФормаОтчета"; Настройки = ХранилищеСистемныхНастроек.Загрузить( КлючНастроек, "КомпоновщикНастроек" ); Возврат Настройки <> Неопределено; КонецФункции &НаСервере Процедура УстановитьСтандартныеНастройки() // Создаем стандартные настройки СтандартныеНастройки = Новый НастройкиКомпоновкиДанных; // Настраиваем отбор по периоду ЭлементОтбора = СтандартныеНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаДокумента"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВПериоде; ЭлементОтбора.ПравоеЗначение = Новый СтандартныйПериод(СтандартныйПериодВариант.ТекущийМесяц); ЭлементОтбора.Использование = Истина; // Применяем настройки к компоновщику КомпоновщикНастроек.ЗагрузитьНастройки(СтандартныеНастройки); КонецПроцедуры ``` ## 3. Массовая установка для всех пользователей ```1c // Обработка для массовой установки настроек Процедура УстановитьНастройкиДляВсехПользователей() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Пользователи.Ссылка КАК Пользователь |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | НЕ Пользователи.ПометкаУдаления"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл УстановитьНастройкиДляПользователя(Выборка.Пользователь); КонецЦикла; КонецПроцедуры Процедура УстановитьНастройкиДляПользователя(Пользователь) // Формируем ключ настроек для конкретного пользователя КлючНастроек = "Отчет.НазваниеОтчета/ФормаОтчета"; // Создаем стандартные настройки НастройкиСКД = СоздатьСтандартныеНастройкиСКД(); // Сохраняем настройки для пользователя ХранилищеСистемныхНастроек.Сохранить( КлючНастроек, "КомпоновщикНастроек/ПользовательскиеНастройки", НастройкиСКД.ПользовательскиеНастройки, , Пользователь ); КонецПроцедуры ``` ## 4. Установка через варианты отчетов ```1c // В модуле менеджера отчета Процедура НастроитьВариантыОтчетов(Настройки) Экспорт ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.НазваниеОтчета); ОписаниеОтчета.ОпределитьНастройкиФормы = Истина; ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "СтандартныйВариант"); ОписаниеВарианта.Описание = "Стандартные настройки отчета"; ОписаниеВарианта.ПоУмолчанию = Истина; КонецПроцедуры // В модуле формы отчета &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ВариантыОтчетов.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка); Если Отказ Тогда Возврат; КонецЕсли; // Применяем стандартные настройки, если вариант стандартный Если ТекущийВариант = "СтандартныйВариант" Тогда ПрименитьСтандартныеНастройки(); КонецЕсли; КонецПроцедуры ``` ## Рекомендации: 1. **Для новых пользователей** - используйте первый подход с хранилищем общих настроек 2. **Для существующих пользователей** - массовая обработка (подход 3) 3. **Для управления вариантами** - четвертый подход через подсистему "Варианты отчетов" 4. **Обязательно тестируйте** настройки перед массовым применением 5. **Делайте резервные копии** настроек перед изменениями Выбор конкретного метода зависит от версии платформы, используемых подсистем и требований к управлению настройками. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |