Имя: Пароль:
1C
1С v8
Форма констант типа ХранилищеЗначения возможна?
0 Mikhail Volkov
 
15.04.21
08:35
Захотелось взглянуть на константы типа ХранилищеЗначения. Например, на Параметры центра мониторинга, какие значения настройки этих параметров... Открываю ее через "Все функции", вижу только ее наименование и кнопки: Записать, Еще..!? В Общих формах Форма констант не нашел, решил свою внешнюю обработку сделать по статье https://www.1s-up.ru/konstanty-v-1s-8-3/. Добавил в нее реквизит НаборКонстант (тип КонстантыНабор), но все константы типа ХранилищеЗначения оказываются недоступны в данных формы!?
Права вроде полные... Не пойму в чем дело, или это секрет 1С?
1 acht
 
15.04.21
08:52
(0) Это касается всех управляемых форм, константы тут не причем. Хранилища значений на клиете нет, поэтому в данные формы они не попадают. Надо писать обход вручную - при чтении/создании помещать во внутреннее хранилище, оперировать адресом, при записи перекладывать обратно в объект.
2 Mikhail Volkov
 
15.04.21
18:22
(1) Пока так: вместо самих констант добавил строковый реквизит ИмяКонстанты, заполнил СписокВыбора именами констант с типом ХранилищеЗначения, добавил кнопку выпадающего списка. В форме по имени выбираю нужную константу, и далее:

&НаСервере
Функция ИмяКонстантыПриИзмененииНаСервере()
    УстановитьПривилегированныйРежим(Истина);
    Попытка
        СтароеСодержимое = Константы[ИмяКонстанты].Получить().Получить();
        Содержимое = ЗначениеВСтрокуВнутр(СтароеСодержимое); // тут разбираем на кусочки для удобного отображения на фоме
        ИнформацияОКонстанте = Метаданные.Константы[ИмяКонстанты].Синоним + ?(ПустаяСтрока(Содержимое), "", ": " + Содержимое);
    Исключение
        ИнформацияОКонстанте = "Константа '" + ИмяКонстанты + "' не найдена";
    КонецПопытки;
    УстановитьПривилегированныйРежим(Ложь);
    Возврат ИнформацияОКонстанте;
КонецФункции

&НаКлиенте
Процедура ИмяКонстантыПриИзменении(Элемент)
    Если ПустаяСтрока(ИмяКонстанты) Тогда
        Возврат;
    КонецЕсли;
    Элементы.ИнформацияОКонстанте.Заголовок = ИмяКонстантыПриИзмененииНаСервере();
КонецПроцедуры

Далее можно менять значения параметров, и записывать в константы.