Работа с общими реквизитами документов
К примеру, необходимо при каждой записи документа сохранять пользователя, который выполнил изменения в документе. В типовых конфигурациях у большинства объектов есть реквизит «ответственный», но в данный реквизит записывается только создатель документа. Чтобы сохранить также и пользователя, вносившего изменения в объект, можно добавить новый реквизит – «Редактор». Можно пойти долгим путем добавления в каждый требуемый объект нового реквизита, последующего вынесения на форму и т.д., а можно добавить в конфигурацию один общий реквизит документов, и указать, где он будет использоваться (Рисунок 1).
Взаимодействие с общими реквизитами 1С, по сути, ничем не отличается от взаимодействия с обычными, за исключением того, что общие реквизиты не отображаются у выбранных объектов в свойствах в дереве метаданных.
Соответственно, обращение к общему реквизиту 1С также ничем не отличается от обращения к реквизитам других типов (Рисунок 2).
При работе с формой объекта 1С 8.3, обращение к реквизитам также не отличается, и, чтобы вынести данный реквизит на форму объекта, достаточно его просто перетащить на форму (Рисунок 3).
Разделение данных 1С
Второй вариант использования общих реквизитов – Разделение данных 1С.
Разделение данных 1С – это аналогичный ограничению доступа на уровне записей механизм, однако работающий по другому принципу. Если ограничение доступа на уровне записей – это дополнительные условия в запросе 1С 8.3, ограничивающие список, то разделитель данных 1С – это дополнительный столбец в таблицах на уровне СУБД. Соответственно, благодаря разделению данных 1С система будет работать несколько быстрее.
1. Создается общий реквизит документов и определяется состав справочников, регистров и документов, которые будут разделяться;
2. При разделении данных конфигуратор предложит создать два параметра сеанса 1С: значение реквизита объекта и признак использования.
После включения настройки «Разделение данных» 1С покажет в свойствах общего реквизита дополнительные поля (Рисунок 4):
· Свойство «Использовать разделение данных» имеет два значения — «Независимо», позволяющее полностью разделить базу на независимые участки, и «Независимо и совместно», позволяющее работать как в независимом режиме, так и в обычном.
· Свойства «Разделение пользователей» и «Разделение аутентификации» позволяет создавать отдельные списки пользователей для каждой области базы.
· Свойство «Условное разделение» позволяет использовать какие-либо условия для включения или отключения общего реквизита-разделителя.
Программирование в 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
Общие реквизиты. Опыт использования и жестокий «косяк»
Механизм общих реквизитов расписывать не буду, т.к. это сделано неоднократно. Просто напомню, что при включении в состав общего реквизита какого-либо объекта в его таблице на сервере добавляется поле.
Оказалось, при наличии двух общих реквизитов у объекта в его таблице на сервере добавляется вычисляемое поле » _DataSeparationHash» формула:
Устанавливаем параметры сеанса (только мой общий реквизит, «ОбластьДанных» не используем), выполняем запрос «Первые 333» к справочнику без условий, который должен вернуть 333 строки, но запрос оказывается пустым. На сервере видим:
, тогда как в формуле
CONVERT([int],substring(hashbytes(‘MD5’,CONVERT([varchar],[_Fld164], 0 )),(1),(4)),0)^checksum([_Fld2260RRef])
З.Ы.
Возможно, если использовать общие реквизиты нерекомендованного 1С типа, т.е. не число, то такой «косяк» и не всплывет.
И коротко про документы и их движения (досконально не разбирался, но в объяснение «замечательно» в кавычках).
Включил в состав общего реквизита три документа и один регистр накопления, по которому эти документы делают движения.
В файловой базе можно было «задвоить» движения, сначала провести при выключенном разделении, потом при установленном разделителе.
в серверном варианте возникает ошибка вставки неуникального индекса.
Так что, если пришли к необходимости использования общего реквизита, то придется распроводить документы, устанавливать разделитель и проводить. Или напрямую обновлять таблицы регистров (хотя сам я не решился на такое).
Надеюсь, эта информация кому-нибудь да пригодится.
Общие реквизиты в 1С
Работая с программами 1С, пользователь должен заполнить определённые поля при вводе объекта в базу. Это и есть реквизиты.
Общие реквизиты документа
Заполняя поля в программах 1С, требуется указать автора документа, наименование организации и другие данные. На это требуется определённое время. Чтобы не заполнять один и тот же реквизит для каждого объекта метаданных, следует использовать общий для всех реквизит. В документах 1С он представляет собой отдельный объект метаданных.
К нему можно перейти, используя встроенный язык из модуля документа. Он доступен при редактировании формы документа.
Найти «Общие реквизиты» в программе 1С довольно просто. Следует зайти в неё, используя режим Конфигуратор. В дереве метаданных есть раздел «Общие». Там и находятся «Общие реквизиты», представляя отдельную ветвь раздела.
Остановимся подробней на свойствах таких объектов метаданных. Для этого нужно найти окно «Свойства». Перейти к ним можно двойным щелчком мышки.
Чтобы посмотреть список объектов, где используется данный реквизит, следует нажать на гиперссылку «Открыть». Кроме того, здесь можно посмотреть, где этот объект используется «Автоматически».
В свойствах общих реквизитов имеются следующие настройки.
Если установить значение «Разделять», система в автоматическом режиме создаст параметры по умолчанию.
Для пояснения используем следующий пример. Предположим, в каждом объекте есть реквизит «Организация». Если пометить его как разделитель, система сформирует несколько областей, где будут находиться данные в разрезе этого разделителя. Это создаёт определённые удобства для пользователя. Он может получать как общие данные, так и сведения, касающиеся только своей организации.
Получая доступ к своим данным, пользователь также может работать с общими областями сведений, которые доступны для всех. Например, «Контрагенты», «Валюты», «Банки», другие неразделённые данные.
Создание общего реквизита
Следует навести мышку на общий реквизит и нажать на команду «Добавить». На клавиатуре можно воспользоваться клавишей «Ins».
В качестве примера назовём его «Организация». В полях, где нужно указать тип, укажем СправочникСсылка.Организации.
Затем установим разделение данных, указав значение «Разделять».
В документах, где он будет стоять, установим «Использовать». Например, в счёте на оплату покупателю.
Теперь к нему можно обращаться из модуля документа, редактировать его, добавлять всевозможные объекты программы 1С. Например, поместим его в справочник «Номенклатура». Он окажется в списке реквизитов данного справочника.
Общие реквизиты могут быть указаны сразу для нескольких разделов метаданных. В остальном они ничем не отличаются от обычных реквизитов. Можно настроить разделение данных и область их хранения.
Вводя в программу общие реквизиты, надо делать это правильно. Любые ошибки могут привести к некорректной работе программы. Поэтому, мы рекомендуем перед любыми изменениями делать бэкап самостоятельно или доверить это специалистам.
Общие реквизиты в 1С 8.3
Общий реквизит в 1С 8.3 — это объект метаданных платформы, позволяющий использовать один реквизит для многих объектов конфигурации (справочников, документов, планов счетов и т.д). Объект создан в основном для облегчения труда разработчика и разделения данных.
Общие реквизиты были первоначально реализованы в версии 1С 7.7, но сразу в платформу 8 версии разработчики его не включили. Механизм общих реквизитов был введен разработчиками 1С только в релизе 8.2.14.
Общие реквизиты очень удобно добавлять, чтобы не изменять стандартные объекты в конфигурации, я часто их использую наряду с подписками на события.
После добавления общего реквизита его можно использовать и в запросах и выводить на форму объектов — внешне он ничем не отличается от обычного реквизита.
Единственное ограничение общих реквизитов — невозможность использования их в журнале документов.
Настройки и свойства общего реквизита в 1С
Рассмотрим основные настройки и свойства общих реквизитов, отличные от других объектов конфигурации:
Состав — список объектов, к которым будет использован общий реквизит, настройка напоминает настройку плана обмена.
Автоиспользование — настройка определяет, будет ли использоваться общий реквизит для тех объектов, у которых в составе указан режим использования «Автоматический».
Разделение данных — эту настройку рассмотрим отдельно.
Разделение данных в 1С с помощью общего реквизита
Разделение данных — механизм, аналогичный механизму ограничений прав на уровне записи (RLS). Однако производительность данного механизма более эффективна, и он настраивается проще.
Механизм позволяет настроить отображение только элементов, которые может видеть пользователь. К примеру, можно разграничить все объекты (документы, справочники и т.д.), где установлена определенная организация.
Настройка разделения данных с помощью общих реквизитов 1С
Для настройки в общем реквизите необходимо указать разделение данных — Разделять. Сразу после нажатия система предложит создать параметры учета по умолчанию:
При этом необходимо будет при старте системы указать параметры сеанса, как это сделать, с примером было описано в статье Параметры сеанса 1С.
На этом настройка окончена — пользователю будет доступна только та информация, которая указана в выбранных параметрах сеанса.
Пример использования общего реквизита
Разберем настройку общего реквизита в 1С 8.3 на примере каркасной конфигурации и реквизита Организация:
В системе имеется 3 документа, где необходимо указание реквизита Организация: это Приходная Накладная, Расходная Накладная, Начисление Зарплаты.
Все, настройка окончена!
Система отображает общий реквизит «как свой»: и в запросах, и в реквизитах формы, и в других местах. Вот такое волшебство! 🙂
Не добавляется общий реквизит 1С 8.3
Вы можете столкнуться с данной проблемой — кнопка Добавить не активна:
Связано с тем, что у вас установлен не тот режим совместимости конфигурации. Для этого снимите режим совместимости «Версия 8.2.13» в палитре свойств конфигурации:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.








































