Как создать свойство в 1с
В этой статье я хотел бы рассказать об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С БСП).
Для начала предлагаю разобраться с терминологией 1С БСП: согласно ИТС дополнительные реквизиты и сведения — это свойства. По моему мнению, подсистема «Свойства» (Управление свойствами) — это очень мощный функционал, который позволяет во многих случаях отказаться от снятия конфигурации с поддержки или внесения ненужных изменений и ошибок в конфигурацию.
Архитектура
Описание работы с подсистемой «Свойства» на сайте ИТС 1С является исчерпывающим для типовых конфигураций, но в любом случае, для того, чтобы начать работать со свойствами в любой конфигурации с внедрённым 1С БСП необходимо установить установить константу «Использовать дополнительные реквизиты и сведения» в значение «Истина». После этого мы можем открыть справочник «Наборы дополнительных реквизитов и сведений», который содержит список объектов для которых можно создавать дополнительные реквизиты и сведения. При добавлении через стандартные формы 1С БСП пользователь создаёт новый элемент «Плана видов характеристик», который добавляется в табличную часть элемента.
Дополнительные сведения отличаются от дополнительных реквизитов прежде всего расположением, дополнительные сведения содержатся в отдельном регистре с одноименным названием, а дополнительные реквизиты являются табличной частью объекта, к которому относятся. На рисунке ниже слева-направо изображены: элемент справочника «Наборы дополнительных реквизитов и свойств», элемент плана видов характеристик и список регистра сведений «Дополнительные сведения».
Следующий рисунок изображает пример дополнительного реквизита, слева-направо: элемент справочника «Наборы дополнительных реквизитов и свойств», элемент плана видов характеристик и элемент справочника, в который был добавлен дополнительный реквизит.
Также стоит учитывать, что большая часть объектов метаданных в справочнике «Наборы дополнительных реквизитов и сведений» является предопределённой:
Однако, заполнение этих данных происходит программно, при внедрении 1С БСП или обновлении информационной базы — для этого в общих модулях добавляют процедуру ПриПолученииПредопределенныхНаборовСвойств. Уникальный идентификатор задаётся в явном виде, в т.ч. для того чтобы облегчить процедуры обмена между базами.
С точки зрения интеграции с объектами механизм работы с формами не сильно отличается от аналогичных у других подсистем 1С БСП: из модуля УправлениеСвойствами вызываются процедуры и функции с названиями соответствующими названиям событий для которых они вызываются, например:
Полный список функций и процедур находится в общем модуле УправлениеСвойствами в блоке, озаглавленным: «Процедуры и функции для стандартной обработки дополнительных реквизитов».
Использование
Каждый дополнительный реквизит или свойство содержит поле «Имя», подразумевается, что для программного использования будет использоваться этот реквизит.
Пример использования имени для получения дополнительного реквизита:
Пример запроса для получения всех дополнительных свойств:
Примеры получения свойств без запроса:
Особенности реализации
Если с запросами и функциями всё более менее ясно неприятным сюрпризом может стать то, что дополнительный реквизит на форме содержит название, отличающееся от этого реквизита, например, такое:
Чтобы найти реквизит на форме 1С БСП создаёт новые реквизиты формы Свойства_ОписаниеДополнительныхРеквизитов и Свойства_ОписаниеЗависимыхДополнительныхРеквизитов, с помощью них можно установить однозначное соответствие между элементом и значением объекта:
Второй особенностью реализации можно выделить невозможность создания свойства с мутабельным типом, с одной стороны это очевидное ограничение, с другой тип «Список значений» вполне допустим, но только для дополнительного реквизита (у дополнительных сведений невозможность связана с архитектурными ограничениями, так как объект и свойство — это измерения регистра «Дополнительные сведения»). Возможно, отсутствие такого типа связано со сложностями при обмене, а возможно в скором времени это будет реализовано, предлагаю посмотреть на пример такой реализации ниже.
Добавим новый дополнительный реквизит для справочника физические лица «Номера счетов»
Добавляем программно, вторую запись в табличную часть «Дополнительные реквизиты» справочника «Физические лица» с тем же самым свойством:
Немного модифицируем код функции ЗначенияСвойств в общем модуле УправлениеСвойствамиСлужебный:
А также код процедуры ЗаполнитьДополнительныеРеквизитыВФорме в общем модуле УправлениеСвойствами:
Таким образом мы можем сохранять и восстанавливать значения реквизитов, которые, принимают множество значений.
Форум
Конфигуратор
Все начинается с запуска Конфигуратора. Программы для 1С:Предприятие называются "конфигурациями" и создаются они в специальном режиме для разработчика "Конфигуратор". Обычные пользователи работают в режиме "Предприятие".
Объекты, свойства и методы
Самое главное понятие 1С -- это "объект". Объект -- это элемент реального мира. Объектом может быть все что угодно: компьютер, облако, кошка. Но нас интересуют только те объекты, которые имеются в офисной деятельности предприятия: документы, отчеты, справочники. Программа для 1С представляется как совокупность объектов, взаимосвязанных между собой, т.е. конфигурация объектов. Например, документ "Приказ о приеме на работу", справочник "Сотрудники", отчет "Сотрудники, принятые за период".
У объектов имеются некоторые атрибуты (свойства, реквизиты). Например, сотрудник имеет фамилию, имя, отчество, оклад, табельный номер. Приказ о приеме имеет номер и дату. Набор свойств объекта задается разработчиком.
Также объекты имеют определенные методы (процедуры и функции). Например, вы можете выбрать всех сотрудников с помощью метода справочника ВыбратьЭлементы(), или можно сохранить документ методом Записать().
Встроенный язык
Поведение объектов конфигурации задается на встроенном языке. Программист может писать на встроенном языке 1С свои собственные модули, состоящие из процедур и функций. Встроенный язык позволяет работать со справочниками, документами и другими объектами 1С. Можно, например, с помощью методов объектов выбрать все элементы справочника Сотрудники для вывода в отчет, или создать и сохранить любой документ.
Модули, процедуры и функции
Вся конфигурация, как вы уже наверное заметили, состоит из модулей. Это могут быть модули документов или модули отчетов или другие модули. Модули состоят из процедур и функций. Процедура -- это небольшая программа для выполнения определенной задачи. Функция отличается от процедуры, только тем, что имеет результат. Говорят, "функция возвращает результат". Например, модуль "Приказа о приеме на работу" может иметь следующие процедуры ПроверитьПравильность( ) и НапечататьПриказ( ).
Глобальный модуль
В системе 1С есть так называемый Глобальный модуль.Он относится к конфигурации в целом. Глобальный модуль нужен для того, что писать процедуры и функции, доступные в любом месте программы (в любом другом модуле). Для этого необходимо просто указать ключевое слово Экспорт. Также можно создать глобальные переменные, которыми можно будет пользоваться в любом месте программы. Но чем меньше будет таких глобальных переменных, тем лучше, так как модули получаются более независимыми друг от друга, что снижает количество ошибок в программе и облегчает отладку.
Каждый объект дерева конфигурации имеет набор определенных, а иногда уникальных свойств. Пройдемся по некоторым объектам, опишем их свойства и разберемся, для чего они используются, на примере типовой конфигурации ЕРП 2.4
1. Общие свойства всех объектов 1С
Общие свойства всех объектов 1С в следующем. Каждый объект имеет имя, синоним и комментарий. Имя — уникальное наименование объекта в конфигурации, без пробелов, начинается с буквы. Синоним — произвольное наименование, то, что увидит пользователь в названии объекта в режиме предприятия. Комментарий — описание для разработчиков.
2. Общие модули в 1С
Общие модули в 1С:
Глобальный — обеспечивает доступность функций данного модуля в любом месте конфигурации, без обращения к самому модулю.
Клиент, сервер — определяет контекст исполнения функций, и откуда их можно вызывать: если установлена галка «Вызов сервера», то данные серверные функции модуля можно вызывать и с клиента. «Внешнее соединение» определяет доступность функций, например для com-соединений 1С.
Привилегированный — все функции в данном модуле будут исполняться под полными правами.
Повторное использование — механизм, позволяющий кешировать результаты функций. Нужен, когда используются функции, часто возвращающие один и тот же результат. В названия таких модулей обычно добавляют ПовтИсп.
3. Регламентные задания в 1С
Имя метода — экспортная процедура общего модуля, выполняемая при срабатывании задания.
Ключ — одновременно может работать только одно задание с уникальным ключом. Сам по себе ключ не уникален, может быть использован для группировки заданий.
Предопределенное — будет ли задание работать сразу же после обновления конфигурации или нужно будет настраивать его запуск вручную в каждой базе.
4. Общие команды в 1С
Тип параметра команды — в каких объектах данная команда будет доступна.
Режим использования параметра — возможность передать в качестве параметра не один, а множество объектов (например, при выделении списка документов).
Изменяет данные — блокирует форму и ставит признак модифицированности в истину.
5. Константы в 1С
История данных — версионирование объекта.
Использовать стандартные команды — видимость константы в командном интерфейсе.
Пояснение — всплывающая подсказка при вызове константы.
Форматы — формат типов число, дата и булево.
Быстрый выбор — отвечает за «выпадание» списка значений при активации поля выбора.
История выбора — «выпадание» недавно выбранных значений.
Связь по типу — установка фильтра значений, доступных для выбора, по отбору, указанному в данном поле.
6. Справочники в 1С:ЕРП 2.4
Иерархический, вид иерархии, количество уровней и их ограничение — определяет наличие групп элементов и их подчинение друг другу, количество уровней вложенности данного подчинения.
Владельцы — если справочник подчинен другому справочнику (например, справочник характеристик номенклатуры подчинен справочнику Номенклатура).
Серии кодов — будут ли коды уникальны во всем справочнике или уникальность будет сохраняться только в пределах одного владельца.
Контроль уникальности и автонумерация — проверка при записи элемента справочника на уникальность его кода и генерация нового кода автоматически.
Обновление предопределенных данных — иногда, например, при использовании РИБ создавать элементы при обновлении в базе не нужно, они загрузятся из основной.
Вводится на основании — можно использовать конструктор для ввода на основании других объектов.
Полнотекстовый поиск — поиск объекта по наименованию по всей базе, с использованием операторов полнотекстового поиска.
Быстрый выбор и способ выбора — выбор элемента из выпадающего списка (удобно, когда мало элементов) и также возможность открытия формы выбора.
Ввод по строке — по наименованиям каких реквизитов будет происходить поиск при вводе символов в поле.
Создание при вводе — появление «плюсика» для создания нового элемента при начале ввода.
7. Документы в 1С
Давайте разберем свойства документов в 1С.
Периодичность — период контроля уникальности номера.
Проведение, оперативное проведение — проводится или только записывается документ, есть возможность проведения оперативно.
Удаление движений — если удалять автоматически, то перед проведением записывается пустой набор записей в регистры.
Запись движений при проведении — можно указать, что в регистры должны записываться только измененные данные.
Заполнения последовательностей — в каких последовательностях участвует документ. Нужно для восстановления правильной цепочки последовательности документов.
Прив. Режимы — действия выполняются на сервере и без контроля прав. Ускоряет проведение документа.
8. Регистры сведений 1С
Периодичность — является ли периодическими, а также с каким периодом вносятся новые записи.
Режим записи — записи вносятся независимо или с помощью документа.
Основной отбор по периоду — если регистр сведения 1С подчинен регистратору, то основной отбор будет по данному регистратору. Если же независимый и периодический, то основной отбор можно установить и на сам период.
Разрешить итоги — создаются дополнительные физические таблицы для хранения итогов, для ускорения доступа к срезу первых и последних.
9. Регистры накопления в 1С 8.3
Давайте рассмотрим регистры накопления в 1С 8.3.
Вид регистра — определяет, создавать ли дополнительную таблицу для хранения остатков по регистру.
Разрешить разделение итогов — включение возможности параллельной записи в регистр данных, разделяемых дополнительным полем Разделитель в таблице регистра. Повышается скорость записи в регистр за счет отсутствия блокировок записей. Чтение же наоборот усложняется за счет необходимости свертки получаемых записей.
10 Регистры бухгалтерии в 1С
Корреспонденция — включает возможность принципа двойной записи за счет наличия корреспондирующих счетов в движениях регистра.
Длина уточнения периода — включает возможность корректировки входящих остатков на границах периодов, разбивая секунду максимум на 1000 интервалов. Число в данном поле указывает количество знаков уточнения периода.
11. Регистры расчета 1С
Период действия — включает доступность реквизитов ПериодДействияНачало и ПериодДействияКонец для расчета периодических начислений (например, оклада по месяцам).
Базовый период действия — включает доступность реквизитов БазовыйПериодНачало и БазовыйПериодКонец для определения границ расчета базы для начислений (например, для начисления суммы больничного используется средняя зарплата за последние три месяца).
График — регистр сведений 1С с данными о периодах, за которые нужно произвести расчеты.
Значение графика — ресурс регистра сведений 1С со значением показателя графика для расчета (например, количество отработанных часов).
Дата графика — измерение, отвечающее за значение периода, в который был отработан данный показатель.
Каждый объект дерева конфигурации имеет набор определенных, а иногда уникальных свойств. Пройдемся по некоторым объектам, опишем их свойства и разберемся, для чего они используются, на примере типовой конфигурации ЕРП 2.4
1. Общие свойства всех объектов 1С
Общие свойства всех объектов 1С в следующем. Каждый объект имеет имя, синоним и комментарий. Имя — уникальное наименование объекта в конфигурации, без пробелов, начинается с буквы. Синоним — произвольное наименование, то, что увидит пользователь в названии объекта в режиме предприятия. Комментарий — описание для разработчиков.
2. Общие модули в 1С
Общие модули в 1С:
Глобальный — обеспечивает доступность функций данного модуля в любом месте конфигурации, без обращения к самому модулю.
Клиент, сервер — определяет контекст исполнения функций, и откуда их можно вызывать: если установлена галка «Вызов сервера», то данные серверные функции модуля можно вызывать и с клиента. «Внешнее соединение» определяет доступность функций, например для com-соединений 1С.
Привилегированный — все функции в данном модуле будут исполняться под полными правами.
Повторное использование — механизм, позволяющий кешировать результаты функций. Нужен, когда используются функции, часто возвращающие один и тот же результат. В названия таких модулей обычно добавляют ПовтИсп.
3. Регламентные задания в 1С
Имя метода — экспортная процедура общего модуля, выполняемая при срабатывании задания.
Ключ — одновременно может работать только одно задание с уникальным ключом. Сам по себе ключ не уникален, может быть использован для группировки заданий.
Предопределенное — будет ли задание работать сразу же после обновления конфигурации или нужно будет настраивать его запуск вручную в каждой базе.
4. Общие команды в 1С
Тип параметра команды — в каких объектах данная команда будет доступна.
Режим использования параметра — возможность передать в качестве параметра не один, а множество объектов (например, при выделении списка документов).
Изменяет данные — блокирует форму и ставит признак модифицированности в истину.
5. Константы в 1С
История данных — версионирование объекта.
Использовать стандартные команды — видимость константы в командном интерфейсе.
Пояснение — всплывающая подсказка при вызове константы.
Форматы — формат типов число, дата и булево.
Быстрый выбор — отвечает за «выпадание» списка значений при активации поля выбора.
История выбора — «выпадание» недавно выбранных значений.
Связь по типу — установка фильтра значений, доступных для выбора, по отбору, указанному в данном поле.
6. Справочники в 1С:ЕРП 2.4
Иерархический, вид иерархии, количество уровней и их ограничение — определяет наличие групп элементов и их подчинение друг другу, количество уровней вложенности данного подчинения.
Владельцы — если справочник подчинен другому справочнику (например, справочник характеристик номенклатуры подчинен справочнику Номенклатура).
Серии кодов — будут ли коды уникальны во всем справочнике или уникальность будет сохраняться только в пределах одного владельца.
Контроль уникальности и автонумерация — проверка при записи элемента справочника на уникальность его кода и генерация нового кода автоматически.
Обновление предопределенных данных — иногда, например, при использовании РИБ создавать элементы при обновлении в базе не нужно, они загрузятся из основной.
Вводится на основании — можно использовать конструктор для ввода на основании других объектов.
Полнотекстовый поиск — поиск объекта по наименованию по всей базе, с использованием операторов полнотекстового поиска.
Быстрый выбор и способ выбора — выбор элемента из выпадающего списка (удобно, когда мало элементов) и также возможность открытия формы выбора.
Ввод по строке — по наименованиям каких реквизитов будет происходить поиск при вводе символов в поле.
Создание при вводе — появление «плюсика» для создания нового элемента при начале ввода.
7. Документы в 1С
Давайте разберем свойства документов в 1С.
Периодичность — период контроля уникальности номера.
Проведение, оперативное проведение — проводится или только записывается документ, есть возможность проведения оперативно.
Удаление движений — если удалять автоматически, то перед проведением записывается пустой набор записей в регистры.
Запись движений при проведении — можно указать, что в регистры должны записываться только измененные данные.
Заполнения последовательностей — в каких последовательностях участвует документ. Нужно для восстановления правильной цепочки последовательности документов.
Прив. Режимы — действия выполняются на сервере и без контроля прав. Ускоряет проведение документа.
8. Регистры сведений 1С
Периодичность — является ли периодическими, а также с каким периодом вносятся новые записи.
Режим записи — записи вносятся независимо или с помощью документа.
Основной отбор по периоду — если регистр сведения 1С подчинен регистратору, то основной отбор будет по данному регистратору. Если же независимый и периодический, то основной отбор можно установить и на сам период.
Разрешить итоги — создаются дополнительные физические таблицы для хранения итогов, для ускорения доступа к срезу первых и последних.
9. Регистры накопления в 1С 8.3
Давайте рассмотрим регистры накопления в 1С 8.3.
Вид регистра — определяет, создавать ли дополнительную таблицу для хранения остатков по регистру.
Разрешить разделение итогов — включение возможности параллельной записи в регистр данных, разделяемых дополнительным полем Разделитель в таблице регистра. Повышается скорость записи в регистр за счет отсутствия блокировок записей. Чтение же наоборот усложняется за счет необходимости свертки получаемых записей.
10 Регистры бухгалтерии в 1С
Корреспонденция — включает возможность принципа двойной записи за счет наличия корреспондирующих счетов в движениях регистра.
Длина уточнения периода — включает возможность корректировки входящих остатков на границах периодов, разбивая секунду максимум на 1000 интервалов. Число в данном поле указывает количество знаков уточнения периода.
11. Регистры расчета 1С
Период действия — включает доступность реквизитов ПериодДействияНачало и ПериодДействияКонец для расчета периодических начислений (например, оклада по месяцам).
Базовый период действия — включает доступность реквизитов БазовыйПериодНачало и БазовыйПериодКонец для определения границ расчета базы для начислений (например, для начисления суммы больничного используется средняя зарплата за последние три месяца).
График — регистр сведений 1С с данными о периодах, за которые нужно произвести расчеты.
Значение графика — ресурс регистра сведений 1С со значением показателя графика для расчета (например, количество отработанных часов).
Дата графика — измерение, отвечающее за значение периода, в который был отработан данный показатель.
Введение в управляемая форма 1С реквизиты элементы команды
Рекомендуется модифицировать управляемые формы типового решения 1С программно для удобного будущего обновления и исключения конфликтов, а также для удобной работы с изменениями и надежности при использовании механизма расширений.
В некоторых типовых конфигурациях 1С (ЕРП 2, УТ 11) используется механизм упрощенного изменения конфигурации. Статьи о типовом механизме можно найти в разделе полезных ссылок. Данный механизм используется в БСП, и его необходимо знать при модификации типовых конфигураций.
При добавлении элементов на форму программно можно отредактировать практически любое свойство из панель свойств, которое можно установить вручную в конфигураторе.
Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.
Примеры работы с объектом «ДанныеФормыКоллекция» и созданием дин. списка и таблицы значений программно можно будет посмотреть в части 2.
Для запуска обработки в режиме предприятия необходимо наличие объектов «Справочники.Номенклатура», подчиненный ему «Справочники.ХарактеристикиНоменклатуры» и «РегистрыСведений.ЦеныНоменклатуры”.
Программное переопределение обработчиков событий формы и элементов формы
Переопределить обработчики событий формы можно в обработчике «ПриСозданииНаСервере» (кроме самого обрабочика «ПриСозданииНаСервере») или в теле модуля формы в контексте сервера (например, Переопределение событий ПриЧтениинаСервере и ПриСозданииНаСервере).
В теле модуля формы:
А в новой процедуре нужно добавить вызов основной, если такая процедура есть.
Аналогично можно поступить и с обработчиками элементов формы:
Программное создание групп формы.
Доступные виды групп формы:
Программное добавление команды на форму.
Удалить команду можно при помощи метода коллекции формы команд: Команды.Удалить(). Удалять можно только те команды, которые были созданы программно.
Программное создание декораций форм.
Программное добавление реквизита на форму.
Добавлять новые реквизиты в управляемую форму и удалять необходимо с помощью метода ИзменитьРеквизиты(), куда в параметры передается массив добавляемых реквизитов и массив удаляемых. Удалять при этом можно только те реквизиты, которые были созданы программно.
Вывод реквизитов на форму.
Вызов процедур при создании на сервере 1С
После описания всех процедур выводим их в процедуре ПриСозданииНаСервере. Также можно изменить программно некоторые свойства формы, например, заголовок. Чтобы был виден только наш заголовок, нужно отключить свойство Автозаголовок.
Некоторые советы при программном редактировании формы
- Если вы не используете префиксы при создании новых команд и элементов рекомендуется проверять существование создаваемых объектов по имени с помощью метода Найти(), который вернет Неопределено, если объект в коллекции не найден:
- Элементы.Найти(«пр_Владелец»);
- Команды.Найти(«пр_НоваяКоманда»);
- Свойства, методы и коллекции управляемой формы описаны в синтакс-помощнике в разделе «Интерфейс (управляемый)»;
- Изучите БСП, если она имеется в вашей конфигурации. Например в общем модуле «ОбщегоНазначения» уже описаны функции для создания объекта ОписаниеТипов, необходимого при создании новых реквизитов на форме:
- ОбщегоНазначения.ОписаниеТипаСтрока(ДлинаСтроки) — Создает объект ОписаниеТипов, содержащий тип Строка;
- ОбщегоНазначения.ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, ЗнакЧисла = Неопределено) — Создает объект ОписаниеТипов, содержащий тип Число;
- ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты) — Создает объект ОписаниеТипов, содержащий тип Дата;
- ОбщегоНазначенияВызовСервера.ЦветСтиля(ИмяЦветаСтиля) — Функция получает цвет стиля по имени элемента стиля;
- ОбщегоНазначенияВызовСервера.ШрифтСтиля(ИмяШрифтаСтиля) — Функция получает шрифт стиля по имени элемента стиля.
Итак, взглянем на получившийся результат. Все элементы на форме созданы программно:
Читайте также: