Что такое общие реквизиты и для чего они нужны
Общие реквизиты в 1С
Работая с программами 1С, пользователь должен заполнить определённые поля при вводе объекта в базу. Это и есть реквизиты.
Общие реквизиты документа
Заполняя поля в программах 1С, требуется указать автора документа, наименование организации и другие данные. На это требуется определённое время. Чтобы не заполнять один и тот же реквизит для каждого объекта метаданных, следует использовать общий для всех реквизит. В документах 1С он представляет собой отдельный объект метаданных.
К нему можно перейти, используя встроенный язык из модуля документа. Он доступен при редактировании формы документа.
Найти «Общие реквизиты» в программе 1С довольно просто. Следует зайти в неё, используя режим Конфигуратор. В дереве метаданных есть раздел «Общие». Там и находятся «Общие реквизиты», представляя отдельную ветвь раздела.
Остановимся подробней на свойствах таких объектов метаданных. Для этого нужно найти окно «Свойства». Перейти к ним можно двойным щелчком мышки.
Чтобы посмотреть список объектов, где используется данный реквизит, следует нажать на гиперссылку «Открыть». Кроме того, здесь можно посмотреть, где этот объект используется «Автоматически».
В свойствах общих реквизитов имеются следующие настройки.
Если установить значение «Разделять», система в автоматическом режиме создаст параметры по умолчанию.
Для пояснения используем следующий пример. Предположим, в каждом объекте есть реквизит «Организация». Если пометить его как разделитель, система сформирует несколько областей, где будут находиться данные в разрезе этого разделителя. Это создаёт определённые удобства для пользователя. Он может получать как общие данные, так и сведения, касающиеся только своей организации.
Получая доступ к своим данным, пользователь также может работать с общими областями сведений, которые доступны для всех. Например, «Контрагенты», «Валюты», «Банки», другие неразделённые данные.
Создание общего реквизита
Следует навести мышку на общий реквизит и нажать на команду «Добавить». На клавиатуре можно воспользоваться клавишей «Ins».
В качестве примера назовём его «Организация». В полях, где нужно указать тип, укажем СправочникСсылка.Организации.
Затем установим разделение данных, указав значение «Разделять».
В документах, где он будет стоять, установим «Использовать». Например, в счёте на оплату покупателю.
Теперь к нему можно обращаться из модуля документа, редактировать его, добавлять всевозможные объекты программы 1С. Например, поместим его в справочник «Номенклатура». Он окажется в списке реквизитов данного справочника.
Общие реквизиты могут быть указаны сразу для нескольких разделов метаданных. В остальном они ничем не отличаются от обычных реквизитов. Можно настроить разделение данных и область их хранения.
Вводя в программу общие реквизиты, надо делать это правильно. Любые ошибки могут привести к некорректной работе программы. Поэтому, мы рекомендуем перед любыми изменениями делать бэкап самостоятельно или доверить это специалистам.
Программирование в 1С для всех
В платформе 1С 8.3 имеется возможность использовать общие реквизиты. Это реквизит определенного типа, который может применяться в различных объектах. Причем в объекте, в котором применяется общий реквизит, этот реквизит может использоваться полноценно как реквизит этого объекта: на форме, в запросах и в любых других ситуациях.
В этой статье мы научимся создавать общие реквизиты, определять состав этих реквизитов (в каких объектах они используются, а в каких нет), и, также, посмотрим, как этот реквизит используется.
В моей учебной конфигурации имеется несколько справочников.
Реализуем, чтобы у справочников Товары, Контрагенты и Склады появился одинаковый реквизит Описание (тип строка (250)). Мы можем, добавить этот реквизит в каждый справочник отдельно, а можем, создать общий реквизит, и в его составе указать, что он применим только к этим справочникам.
Для того, чтобы добавился новый общий реквизит необходимо в конфигураторе 1С, в ветке Общие дерева метаданных конфигурации выделить ветку Общие реквизиты, вызвать правой клавишей мышки контекстное меню, в котором выполнить единственную команду «Добавить».
После этого новый реквизит будет создан, и справа откроется палитра свойств этого реквизита, где мы поменяли название, синоним, тип реквизита оставили Строка, а длину этой строки установили 250.
Общий реквизит создан, следующим шагом нам необходимо определить, в каких объектах (в нашем случае справочниках) этот реквизит будет применяться. За это отвечает свойство реквизита Состав. Если нажать на гиперссылку Открыть этого свойства, то откроется форма, в которой и осуществляется конфигурирование состава реквизита.
Обратите внимание на колонку Использование в верхнем окне формы состава общего реквизита. По умолчанию там установлено значение Автоматически. Если объекту установлено значение Автоматически, это значит, что у данного объекта общий реквизит будет использоваться так, как об этом указано в свойстве Автоиспользование данного реквизита.
У нашего реквизита в данном свойстве установлено значение Не использовать, значит у всех объектов, для которых в колонке Использование установлено значение Автоматически, данный реквизит не будет использоваться. И нам нужно вручную указать, у каких объектов этот реквизит применяется. Мы планировали это делать для трех справочников: Товары, Контрагенты и Склады.
Укажем, что у справочника Товары используется этот реквизит. Для этого выделим этот справочник в списке, и выполним команду в виде галки («Установить «Использовать»…») в верхней панели открывшейся формы.
После этих действий, нужный справочник появится в нижнем списке.
Можно на этой форме добавить объект в используемые по другому. У колонки Использование соответствующего объекта вызвать меню строки, в котором выбрать нужное значение (в нашем случае Использовать).
Включим оставшийся объект.
Замечу, что такая настройка справедлива, когда мы в свойство Автоиспользование общего реквизита установили значение Не использовать.
Рекомендую всегда устанавливать данное значение в это свойство!
Если же мы сделаем наоборот: установим значение Использовать в свойство общего реквизита, то теперь нам нужно будет указать все объекты, где не применяется этот реквизит, включая документы, журналы и т.д.
Применение общих реквизитов
Теперь посмотрим, как применяется этот общий реквизит. Например, у меня у справочника Склады нет ни какой формы, и нет ни каких реквизитов.
Но, если я сейчас открою этот справочник в пользовательском режиме, то созданный нами общий реквизит, будет отображен и на форме справочника, и на форме списка справочника.
Если же я захочу данному справочнику создать форму, то созданный ранее общий реквизит будет предложен в списке реквизитов при конструировании формы.
Если у нас уже есть основная форма объекта, как, например, со справочником Товары, то нужно общий реквизит добавить на эту управляемую форму. Откроем управляемую форму справочника Товары, и в ветке Объект найдем этот реквизит, он там отображается как обычный реквизит объекта.
Перетащим этот реквизит на форму.
И он появится на управляемой форме как обычный реквизит.
Если мы что-то хотим сделать с нашим объектом: создать, записать, то мы можем обращаться к общему реквизиту, как к обычному реквизиту объекта. Например, в коде ниже я создаю новый элемент справочника Склады.
После выполнения этого кода общий реквизит Описание будет заполнен.
Точно также, мы можем обратиться к этому реквизиту в запросе напрямую, как к простому реквизиту объекта.
Остальные статьи по теме конфигурирования:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Использование общих реквизитов без разделения данных
Общие реквизиты можно разделить на два типа: используемые для разделения данных и не используемые для разделения данных. Это регулируется свойством «Разделение данных».
Назначение общих реквизитов, используемых для разделения данных, вполне очевидно. Они позволяют включить в конфигурации механизм разделения данных (multitenancy), обеспечивающий работу в одной информационной базе нескольких логически независимых или слабо зависимых областей данных.
Для чего предназначены общие реквизиты без разделения данных?
Таким образом, общие реквизиты, по сути, являются данными, добавляемыми к прикладным объектам со стороны конфигурации, а не со стороны разработки конкретного объекта. Это особенно ярко проявляется, если рассматривать жизненный цикл разработки (обновление конфигурации, доработку конфигурации при внедрении, перенос функционала между конфигурациями, и т.д.).
Соответственно, общие реквизиты без разделения данных предназначены для добавления некоторого функционала, который не является непосредственной частью бизнес-логики прикладных объектов. Общие реквизиты не предназначены для удобства добавления похожих или даже одинаковых реквизитов в прикладные объекты. Они предназначены для реализации функционала, который решает задачи конфигурации в целом, но требует хранения некоторых данных непосредственно в прикладных объектах.
Например, может стоять задача реализации механизма создания сокращенной резервной копии данных, с наиболее критичными данными. Допустим, уже имеется некоторая конфигурация и, разумеется, желательно минимизировать изменения в самой бизнес-логике прикладных объектов конфигурации. Для решения задачи можно создать общий реквизит » ВключатьВРезервнуюКопию » и включить в его состав большинство прикладных объектов. Далее можно реализовать регламентное задание или обработку с пользовательским интерфейсом, которые будут по некоторым правилам проставлять этот признак. Например, признак может быть проставлен документам, введенным за последние 12 месяцев. Соответственно реализуемый механизм выгрузки будет использовать этот реквизит для отбора выгружаемых значений. Разумеется, данную задачу можно решить и другими способами. Здесь она приведена для иллюстрации тех случаев, в которых имеет смысл применять общие реквизиты без разделения данных.
Заметим, что круг таких задач достаточно узок. Важно при принятии решения об использовании общего реквизита оценить правильность применения этого механизма для решения конкретной задачи. Неправильное применение данного механизма может неоправданно усложнить разработку и поддержку конфигурации. В частности, общие реквизиты могут усложнить понимание конфигурации другими разработчиками, так как устройство конкретного прикладного объекта будет менее очевидным и наглядным.
Объект 1С «Общие реквизиты»
Понятие общих реквизитов 1С
Разделение данных в 1С
Механизм разделения данных в 1С позволяет хранить данные нескольких независимых организаций в одной информационной базе благодаря тому, что общие реквизиты объектов конфигурации можно использовать:
Таким образом, механизм разделения данных позволяет настроить отображение элементов, которые может видеть пользователь. Например, можно разграничить все объекты (документы, справочники и т.д.), где установлена определенная организация.
Возможен вариант использования этого механизма, когда в информационной базе существуют:
Возможности механизма разделения данных:
Подробнее о механизме разделения с рисунками (для понимания)
Хранение однотипных данных в 1С
Автоиспользование — настройка определяет, будет ли использоваться общий реквизит для тех объектов, у которых в составе указан режим использования «Автоматический».
После добавления общего реквизита его можно использовать и в запросах и выводить на форму объектов — внешне он ничем не отличается от обычного реквизита.
Ограничение общих реквизитов:
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Общие реквизиты. Опыт использования и жестокий «косяк»
Механизм общих реквизитов расписывать не буду, т.к. это сделано неоднократно. Просто напомню, что при включении в состав общего реквизита какого-либо объекта в его таблице на сервере добавляется поле.
Оказалось, при наличии двух общих реквизитов у объекта в его таблице на сервере добавляется вычисляемое поле » _DataSeparationHash» формула:
Устанавливаем параметры сеанса (только мой общий реквизит, «ОбластьДанных» не используем), выполняем запрос «Первые 333» к справочнику без условий, который должен вернуть 333 строки, но запрос оказывается пустым. На сервере видим:
, тогда как в формуле
CONVERT([int],substring(hashbytes(‘MD5’,CONVERT([varchar],[_Fld164], 0 )),(1),(4)),0)^checksum([_Fld2260RRef])
З.Ы.
Возможно, если использовать общие реквизиты нерекомендованного 1С типа, т.е. не число, то такой «косяк» и не всплывет.
И коротко про документы и их движения (досконально не разбирался, но в объяснение «замечательно» в кавычках).
Включил в состав общего реквизита три документа и один регистр накопления, по которому эти документы делают движения.
В файловой базе можно было «задвоить» движения, сначала провести при выключенном разделении, потом при установленном разделителе.
в серверном варианте возникает ошибка вставки неуникального индекса.
Так что, если пришли к необходимости использования общего реквизита, то придется распроводить документы, устанавливать разделитель и проводить. Или напрямую обновлять таблицы регистров (хотя сам я не решился на такое).
Надеюсь, эта информация кому-нибудь да пригодится.