Консультация № 66076
08.12.2006, 10:29
0.00 руб.
0 4 3
Здравствуйте! Подскажите,пожалуйста,можно ли в 1С программно открыть список констант ?

Обсуждение

Неизвестный
08.12.2006, 10:47
общий
это ответ
Здравствуйте, Ирка!
Открыть програмно нельзя, но если есть такая необходимость, то можно сделать свою форму, на форму выложить таблицу значений, и заполнить ее крнстантами примерно так:
//ТЗ - таблица значений на форме
Процедура ПриОткрытии()
Для Инд=1 По Метаданные.Константа() Цикл
ТЗ.НоваяСтрока();
ТЗ.Идент=Метаданные.Константа(Инд).Идентификатор;
ТЗ.Комментарий=Метаданные.Константа(Инд).Комментарий;
КонецЦикла;
КонецПроцедуры;
Если не совсем понятно, то пишите в личку - помогу
Неизвестный
08.12.2006, 10:57
общий
это ответ
Здравствуйте, Ирка!
Для Инд = 1 По Метаданные.Константа() Цикл
Идент=Метаданные.Константа(Инд).Идентификатор;
Сообщить(Метаданные.Константа(Инд).Идентификатор+"="+Метаданные.Константа(Идент));
КонецЦикла;
Здесь все три варианта обращения: количество констант, константа по номеру, константа по идентификатору. Проверка идентификатора:
Если Метаданные.Константа(Идент).Выбран()=0 Тогда
Сообщить("нет такой константы "+Идент);
КонецЕсли;
Неизвестный
08.12.2006, 11:01
общий
это ответ
Здравствуйте, Ирка!

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

Процедура Сформировать()
Перем НаДату;
Перем Инд;

Для Инд=1 По Метаданные.Константа() Цикл
ТабЗнач.Идент = Метаданные.Константа(Инд).Идентификатор;
ТабЗнач.Представление = Метаданные.Константа(Инд).Представление();
ТабЗнач.Комментарий = Метаданные.Константа(Инд).Комментарий;
Если Метаданные.Константа(Инд).Периодический = 1 Тогда
ТабЗнач.ТекЗначение = Константа.ПолучитьАтрибут(ТабЗнач.Идент).Получить(НаДату);
Иначе
ТабЗнач.ТекЗначение = Константа.ПолучитьАтрибут(ТабЗнач.Идент);
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Можно также дополнительно прописать процедуры изменения значений констант.

Удачи!
Неизвестный
08.12.2006, 11:06
общий
Прошу прощения, практически повторил ответ спеца Зайцева Александра.Добавьте перед циклом строку НаДату=ТекущаяДата(); //или любая нужная Вам дата...
Форма ответа