добавить константу на форму 1с
Добавить константу на форму 1с
v8: Форма констант
Форма констант, КонстантаНабор | Автор статьи: Волшебник | Редакторы: Rovan Последняя редакция №3 от 13.02.06 | История URL: http://kb.mista.ru/article.php?id=22 |
Ключевые слова: Форма, редактирования, констант, КонстантаНабор
Если форма констант не создана программистом, то она генерируется системой автоматически. Когда констант много, то появляется прокрутка, и форма может быть не очень удобной. Кроме того, возникает желание сгруппировать константы по смыслу, например, с помощью закладок (панели).
В качестве формы констант обычно используется общая форма, которую можно создать конструктором форм:
а) Щелкните правой кнопкой на ветке «Константы» в дереве конфигурации
б) Выберите «Создать форму констант» или «Создать основную форму констант».
в) Разместите на форме элементы управления (поля ввода, флажки), связанные с константами.
Основная форма констант прописывается в свойствах всей конфигурации.
Форму констант можно получать из программных модулей с помощью конструкции:
Форма = Константы.ПолучитьФорму( ); //если имя не указано, то основная форма констант
Форма.Открыть();
Форму констант также можно вызывать по собственному пункту в меню, например, Сервис => Настройка параметров учета или Операции => Константы.
У формы констант создается реквизит «КонстантыНабор». Далее начинается самое интересное. По умолчанию в набор констант входят только имеющиеся на данный момент константы (свойство «Состав»). При создании новой константы ее не получится разместить на форме: ее просто нет в списке констант, который появляется по кнопке «Размещение данных»). Можно попытаться разместить элемент управления и связать его с константой, но в режиме Предприятие такой элемент будет недоступным. Это происходит, потому что новая константа не входит в набор констант для этой формы.
Чтобы новую константу разместить на форме, нужно сделать одно из двух:
1. Или включить ее в набор (свойство Состав)
2. Или у формы установить флаг «Использовать все константы», тогда свойство Набор становится недоступным.
Константы в 1С 8.3
Создание констант
Константы в 1С используются для хранения условно-постоянной информации. То есть это те значения, которые редко меняются. Например, основная организация, валюта регламентированного учета, дата начала применения какого-нибудь приказа и т.п.
Одна константа может хранить только одно значение. Типы могут быть как примитивными, так и ссылками на другие объекты базы данных.
Важно понимать, что в 1С константы это не глобальные переменные, которые нельзя изменить в коде. Это некие значения, которые хранятся в базе данных. Их можно изменить как программно, так и интерактивно в пользовательском режиме.
В дереве метаданных константы находятся в разделе Константы:
В свойствах константы нужно указать тип. Составной тип тоже можно указать:
Форма констант
Для константы можно не создавать форму, тогда она будет сгенерирована платформой автоматически, «на лету». Но чтобы в пользовательском режиме был доступ к константе, нужно в свойствах константы установить галку Использовать стандартные команды:
Тогда в пользовательском режиме, в той подсистеме, к которой относится константа, в разделе «Сервис» появится команда для открытия формы константы:
Так выглядит снегерированная платформой форма константы:
При необходимости можно переопределить форму для константы. Для этого предназначено свойство Основная форма:
По сути это общая форма. Если ее создать из свойства константы, нажав на значок с лупой, то созданная форма появится в разделе общих форм:
Внешне она ничем не отличается от формы по умолчанию. Но теперь форму можно изменить, а также можно использовать обработчики формы в модуле формы.
При создании общей формы можно выбрать тип формы Форма констант, тогда будет создана общая форма со всеми константами из конфигурации:
Справа есть основной реквизит формы НаборКонстант, откуда можно перетягивать константы мышкой на форму:
Чтобы доступ к форме констант был в пользовательском режиме нужно в свойствах формы установить галку Использовать стандартные команды:
Редактирование констант возможно в пользовательском режиме через меню Все функции:
Как получить и изменить значение константы
Для получения и изменения значения константы предназначены методы Получить и Установить. Получить и изменить значение константы можно только на сервере. Нельзя получить значение константы на клиенте.
Программирование в 1С для всех
В платформе 1С 8.3 имеется объект метаданных Константы. Смысл констант в языке программирования 1С несколько другой, чем в других языках. В 1С константы хранят постоянную или условно постоянную информацию, которая редко изменяется. Здесь я опираюсь на слово «изменяется». Если в других языках программирования пользователь не может менять константу, то в платформе 1С имеется такая возможность, но по определению делать он это должен крайне редко. В этой статье мы будем учиться работать с константами: научимся создавать их, научимся работать с константами в командном интерфейсе 1С 8.3, узнаем, что такое форма констант и научимся программно обращаться к константе: получать значение константы и записывать константу.
Создание константы в 1С
Создадим несколько констант 1С. Обратите внимание на ветку Константы в дереве метаданных конфигуратора 1С, это именно то место, где в 1С расположен список констант. Найдем эту ветку в дереве, выделим её, и вызовем правой кнопкой мышки контекстное меню, в котором нас интересует команда «Добавить».
После выполнения этой команды, константа будет создана, а в правой части рабочего стола откроется палитра свойств новой константы. Здесь мы можем указать название константы и её тип. Пусть наша первая константа будет называться НазваниеОрганизации (тип строка (200)).
Создадим еще несколько констант с примитивными типами.
Дата начала работы организации (тип Дата).
Процент налога на прибыль (тип число)
Константы в командном интерфейсе 1С
Если я сейчас попробую сохранить конфигурацию, то выйдет сообщение, что мои новые константы не включены ни в одну подсистему.
Можно это сообщение проигнорировать и работать дальше (тогда доступ к значениям константан будет затруднен, но критических проблем не возникнет), а можно добавить константы в подсистему 1С.
В моей учебной конфигурации имеется подсистема НСИ, в эту подсистему я и добавлю все новые константы
Сделать это можно двумя способами.
Первый. Открыть редактор нужной подсистемы, и на закладке Состав включить вхождение нужной константы в подсистему.
Второй. У константы вызвать контекстное меню, в котором выполнить команду «Дополнительно».
В открывшейся в правой части окне «Дополнительно», на закладке Подсистемы нужно установить флаг рядом с той подсистемой, в которую хотите включить константу.
После включения всех констант в подсистему и обновления базы данных, мы сможем найти все новые константы в панели действий сервис.
Разберем, почему они там оказались.
Во-первых, если мы войдем в командный интерфейс подсистемы НСИ, в которую я добавил все константы, то найдем их в группе команд «Панель действий. Сервис», в эту группу платформа поместила команды на открытие констант автоматически, после того, как мы добавили константы в подсистему.
Во-вторых, у каждой константы имеется свойство Использовать стандартные команды, это свойство отвечает за то, будут ли использоваться стандартные команды работы с константой (открытие формы редактирования) или нет.
Например, если мы снимем это свойство у константы «Процент налога на прибыль».
То команда на открытие этой константы исчезнет, как и из командного интерфейса подсистемы.
Так и из командного интерфейса пользовательского приложения.
Если мы выполним команду на открытие константы из пользовательского интерфейса, то откроется форма для ввода (редактирования) константы (поле ввода может меняться в зависимости от типа данных константы).
Форма констант 1С
Редактировать константы в каждой отдельной форме иногда не совсем удобно, гораздо практичнее, чтобы все константы можно было отредактировать в одной форме. Для этих целей можно создать форму констант, посредством которой и будут редактироваться все константы, которые разработчик включит в эту форму.
Создадим форму констант. Для этого нужно выделить ветку метаданных Константы, вызвать контекстное меню, и выполнить команду «Создать форму констант…» этого меню.
Откроется конструктор общих форм.
Где советую обратить внимание на Тип Формы, и на свойство Использовать стандартные команды. Первое указывает, что это форма константа, а при установке второго будут созданы стандартные команды на открытие этой формы.
После нажатия кнопки Далее, необходимо будет выбрать, какие константы войдут в эту форму.
После того, как выбрали нужные константы, нажимаем кнопку Готово, и управляемая форма констант будет создана.
Замечу, что форма добавилась в ветку Общие формы ветки Общие дерева метаданных 1С.
Нам осталось включить общую форму констант в подсистему. Для этого вызовем контекстное меню общей формы констант и выполним команду «Дополнительно»
В открывшемся окне включим форму констант в подсистему 1С.
Также эту форму можно добавить в подсистему, напрямую во время редактирования подсистемы.
У всех остальных констант я отключил свойство Использовать стандартные команды, поэтому в командном интерфейсе отображается только новая форма констант.
Как в командном интерфейсе подсистемы в конфигураторе.
Так и в пользовательском режиме
Если эту форму открыть, то в ней будут поля ввода для всех констант, которые мы добавили при создании этой формы.
Что делать, если форма уже создана, но позже добавили новую константу, например «ИНН Организации».
Тогда следует добавить новую константу на форму. Для этого, нужно открыть форму на редактирование, развернуть в закладке Реквизиты дерево НаборКонстант, найти в этом дереве новую константу и перетащить её в элементы формы.
Как получить константу 1С
Для того чтобы получить значение какой-либо константы, нужно обратиться к менеджеру конкретной константы посредством менеджера всех констант, а потом воспользоваться методом Получить. Например, если мы по какой-то команде хотим в сообщение вывести название нашей организации из константы, для получения и вывода значения константы будем использовать следующий код.
В этом случае процедура Получить(Команда) это обработчик команды, которая вызывает процедуру ПолучитьНаСервере. В этой процедуре используется объект Константы, который имеет тип КонстантыМенеджер, и посредством которого можно программно обратиться к любой константе.
Константы.НазваниеОрганизации – это уже менеджер конкретной константы, у которого есть метод Получить(), при помощи которого можно получить значение константы.
Вы заметили, что с менеджером команды я работаю в серверном контексте (под директивой &НаСервереБезКонтекста, но можно использовать и директиву &НаСервере ). Это потому что менеджер констант имеете доступность Сервер, Толстый клиент и прочее «тяжелые» режимы. В тонком клиенте нельзя обратиться к менеджеру констант!
Установить значение константы
Если мы хотим программно установить значение новой константы, или изменить значение уже существующей константы, то мы можем воспользоваться тем же менеджером константы и его методом Установить.
В параметрах метода менеджера Установить необходимо указать новое значение константы. Замечу, тип значения в параметре должен совпадать с типом константы. Точно также как и с получением значения, устанавливать значение константы нужно в серверном контексте.
Другие статьи по теме конфигурирования:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655