Я добавляю константу в подсистему с интерфейсом, она не отображается.
Почему не попадает, как впихнуть? Не хочу форму для настроек констант рисовать отдельно. там 2-3 константы пользователю дать.
Вопрос с следующем — разместил КонстантыНабор на форме.
Но константы не считываются в этот набор при открытии формы.
Приходится принудительно их считывать в при открытии. Почему?
Права полные.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//Чтобы все константы считались
УстановитьПривилегированныйРежим(Истина);
ОО = РеквизитФормыВЗначение("КонстантыНабор");
ОО.Прочитать();
ЗначениеВРеквизитФормы(ОО, "КонстантыНабор");
КонецПроцедуры
Константы в 1С 8.3
В платформе 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 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Константы
Константы в системе 1С:Предприятие, как правило, служат для хранения информации, которая либо совсем не изменяется в процессе функционирования системы, либо изменяется достаточно редко. В константах хранится информация, характеризующая прикладную задачу в целом.
Пример использования: название организации, юридический адрес, фамилии ответственных лиц и т.д.
Создание подсистемы:
1. Запустим информационную базу в режиме “конфигуратор”.
2. Откроем конфигурацию.
3. Чтобы создать новые подсистемы, раскроем ветвь “Константы” в дереве объектов конфигурации, нажав на “+” слева от нее. Затем выделим ветвь Константы, вызовем контекстное меню и выберем пункт Добавить.
АСБУ / АСБУ (лекции) / лек2
Константы в 1С:Предприятие используются для хранения информации, которая либо не меняется никогда, либо меняется – но очень редко. Константы содержатся в ветви дерева конфигурации Константы. Создадим новую константу ( рис. 2.1.), заполним ее параметры следующим образом:
Имя: ТекстСообщения
Тип: Строка
Включим константу в состав подсистемы УчетРаботыМастеров. Предполагается, что данная константа будет использоваться для показа сообщения пользователям, входящим в систему.
Рис. 2.1. Настройка параметров новой константы
Посмотрим, как включение константы в подсистему УчетРаботыМастеров, отразится на интерфейсе нашего приложения в режиме 1С:Предприятие. Видно, рис. 2.2., что в разделе Учет работы мастеров, под панелью разделов, появилась еще одна панель. Она называется панелью действий. В панель действий автоматически включаются команды, разбитые на группы – Сервис, Создать,Отчеты. Группы в панели действий можно создавать и самостоятельно. В нашем случае в панели действий видна группа Сервис, содержащая команду для работы с только что созданной константой.
Рис. 2.2. Константа в панели действий в разделе Учет работы мастеров
В левой части окна программы можно видеть еще одну панель – она называется панелью навигации. Сейчас она отображает ссылку для доступа к справочнику Сотрудники, который мы создавали в предыдущей лекции. Свободная часть окна – это рабочая область, в которой, например, открываются списки справочников.
Щелкнем по команде Текст сообщения в панели действий. Отобразится окно, которое позволяет нам редактировать константуТекстСообщения. Введем в поле Текст сообщения строку «Здравствуйте, уважаемый пользователь!», рис. 2.3. и нажмем на кнопкуЗаписать и закрыть.
Рис. 2.3. Форма редактирования константы Текст сообщения
Если мы не хотим сохранять внесенные изменения, можно просто закрыть окно с помощью стандартной кнопки Закрыть, для записи изменений без закрытия формы служит кнопка Записать объект.
Для того, чтобы воспользоваться дополнительными возможностями по работе с формой, можно использовать меню Все действия,рис. 2.4.
Рис. 2.4. Меню Все действия
Отчасти оно дублирует кнопки, имеющиеся на форме, в нем так же имеется одна специфичная для платформы 1С:Предприятие 8.2. команда. А именно, речь идет о команде Изменить форму.
Форма, которую мы видим, сформирована автоматически. Однако, в режиме 1С:Предприятие мы можем вносить в нее некоторые изменения. Выполним команду Изменить форму, появится окно Настройка формы, рис. 2.5.
Рис. 2.5. Окно Настройка формы
Нужно учитывать, что пользователь сможет настраивать внешний вид форм в том случае, если для него установлено право Сохранение данных пользователя. Это право можно настраивать, как и другие права, в роли пользователя, рис. 2.6. В нашем случае оно установлено.
Рис. 2.6. Право Сохранение данных пользователя
В нашем случае, рис. 2.5., в группе Элементы формы выделен элемент Текст сообщения, в группе Свойства элемента формы мы можем настраивать его свойства. Изменим свойство Заголовок, вместо «Текст сообщения» введем «Текст сообщения для пользователей», в итоге форма будет выглядеть так, как показано на рис. 2.7.
Рис. 2.7. Отредактированный заголовок объекта
Перейдем в режим конфигурирования, создадим еще одну константу (она пригодится нам позже):
Имя: ПрефиксНомера
Тип: Строка
Включим эту константу в подсистему Администрирование. В режиме 1С:Предприятие доступ к этой константе будет организован в группе Сервис панели действий раздела Администрирование. Кроме того, мы можем организовать доступ к константам из других мест нашего приложения. Мы можем самостоятельно включить команду для вызова формы просмотра и редактирования константы, отредактировав командный интерфейс, можем так же создать специальную форму, называемую формой констант.
Форма констант
Для создания формы констант нужно вызвать контекстное меню ветви Константы дерева конфигурации и выбрать в нем команду Создать форму констант. В появившемся окне Конструктор общих форм, рис. 2.8., нужно оставить тип формы в значении Форма констант, при необходимости заполнить другие поля и нажать на кнопку Далее.
Рис. 2.8. Конструктор общих форм
В появившемся окне, рис. 2.9. можно настроить состав формы констант, в нашем случае нас устраивает то, что в нее включены обе созданные в конфигурации константы, поэтому нажмем на кнопку Готово.
Рис. 2.9. Конструктор общих форм, состав формы констант
В ветви Общие формы появится новая форма с именем ФормаКонстант, будет открыто окно редактирования формы, рис. 2.10.
Рис. 2.10. Окно редактирования формы
При разработке командного интерфейса в 1С:Предприятие 8.2. используется концепция декларативного описания. Это означает, что разработчик задает схематичное описание элементов интерфейса, их группировку, свойства. При построении интерфейса для конкретного пользователя система создает его, опираясь на описание, сделанное разработчиком, учитывая различные дополнительные факторы, например, такие как права пользователя и пользовательские настройки интерфейса.
Форму констант так же нужно включить в одну из подсистем. Включим ее в подсистему Администрирование, посмотрим, что у нас получилось, рис. 2.11.
Рис. 2.11. Окно редактирования формы
Мы видим, что форма констант доступна в группе Сервис панели действий раздела Администрирование. В текущей ситуации наличие в той же группе команды вызова окна константы Префикс номера может показаться избыточным. Для того чтобы убрать эту команду из панели действий, нам понадобится отредактировать командный интерфейс. Для этого мы можем выполнить команду Открыть командный интерфейс подсистемы Администрирование и в появившемся окне, рис. 2.12., снять флаг Видимость для команды Префикс номера группы Сервис панели действий.
Рис. 2.12. Настройка панели действий
Теперь при запуске в режиме 1С:Предприятие ненужная команда отображаться не будет.
Выше мы создавали константу Текст сообщения, предполагая выводить заданный в ней текст в качестве сообщения для пользователей, входящих в систему. Реализуем эту функциональность. Для этого нам понадобится написать код в модуле управляемого приложения. Для того, чтобы открыть этот модуль, нужно воспользоваться командой Открыть модуль управляемого приложения корневого элемента конфигурации. Для этого модуля предусмотрено несколько стандартных обработчиков событий, которые можно найти в панели инструментов Модуль, рис. 2.13. Нас интересует обработчик ПриНачалеРаботыСистемы.
Рис. 2.13. Выбор обработчика ПриНачалеРаботыСистемы
В модуле появится пустое тело обработчика, в которое нам нужно ввести команду для вывода сообщения пользователям. Если попытаться обратиться к константе напрямую из модуля управляемого приложения – мы столкнемся с ошибкой. Дело в том, что исполнение модуля управляемого приложения происходит на клиенте, в контексте которого нет доступа к константам. Поэтому нам понадобится код, который выполняется на сервере и возвращает значение константы. В данном примере мы можем возложить на серверную часть примера и вывод сообщения (функция Сообщить, которой можно здесь воспользоваться, работает и на клиенте, и на сервере). Но гораздо полезнее, в плане перспектив повторного использования кода серверной процедуры, «вытащить» серверные данные в метод, который выполняется на клиенте.
Создадим новый общий модуль (в ветви Общие модули дерева конфигурации), назовем его СерверныеФункции. Проследим за тем, чтобы в его свойствах были установлены флаги Сервер и Вызов сервера, рис. 2.14.
Рис. 2.14. Общий модуль СерверныеФункции, свойства
Откроем редактор кода для кода модуля (например, двойным щелчком по модулю в дереве конфигурации) и введем следующий код,рис. 2.15.:
//Экспортная функция для вызова из других модулей
Функция ПолучитьКонстанту() Экспорт
//Возвращаем полученное значение константы
Рис 2.15. Общий модуль СерверныеФункции, код
Теперь нам нужно вызвать эту функцию в подходящем месте кода обработчика события ПриНачалеРаботыСистемы в модуле управляемого приложения. Например, это можно сделать так:
//Выводим сообщение пользователю
В результате при входе в систему мы получим сообщение следующего вида, рис. 2.16.
Рис. 2.16. Вывод сообщения пользователю
Обратите внимание на то, что сообщение выводится в область Сообщения основного рабочего окна. Если сообщение вызвано из модуля какого-либо отдельного окна, например, из модуля формы констант, которая создана ранее, то, по умолчанию, сообщение будет выведено в этом окне.
Посмотрим на этот механизм в действии. Откроем окно редактирования формы констант (Общие формы > ФормаКонстант), перейдем на вкладку Модуль, на панели инструментов Модуль выберем стандартный обработчик события ПриОткрытии, отредактируем тело обработчика, чтобы оно приняло следующий вид, рис. 2.17.:
Сообщить(«Вы открыли форму констант!»);
Рис. 2.17. Вывод сообщения пользователю из модуля формы констант
Благодаря этому коду при открытии формы констант будет появляться следующее сообщение, рис. 2.18.