Механизм разделения данных

Печать (Ctrl+P)

Пример некорректного использования механизма разделения данных

Ко мне обратился клиент для устранения следующее сообщение при записи документа заказа клиента в прикладном решении УТ 11.5 :

Из текущего сеанса недопустимо использовать указанные значения разделителей.
объект: ‘Документ.ЗаказКлиента’ = {“U”}, в то время как допустимым значением является {“U”}

Причина была в некорректном использовании механизма разделения данных в установленном расширений конфигурации модуль интеграции с 1С: Битрикс24

Механизм разделения данных ‑ специальный механизм, позволяющий разделить все хранимые данные, а также работу прикладного решения на отдельные части. Если у общего реквизита (см. Рис 1) свойство Разделение данных установлено в значение Разделять, то включается режим разделения данных В этом случае, общий реквизит намывают Разделителем Например, можно хранить данные нескольких независимых организаций в одной информационной базе

Рис 1. Пример настройки разделения данных в конфигурации

В типовой конфигурации УТ, из 5 общих реквизитов используются только 2 в качестве разделителей (у них установлено свойство разделять):

  • ОбластьДданныхВспомогательныеДанные – тип значение число
  • ОбластьДанныхОсновныеДанные – Тип значение число

Следует отметить, что тип разделителя не может быть составным. Кроме того, если общий реквизит выступает в роли разделителя, то у него появляется несколько дополнительных свойств, влияющих на поведение системы, а также изменяется поведение объектов конфигурации, входящих в состав разделителя.

Рис 2 Общие реквизиты в УТ 11.5.8 (Два из них – разделители)

Во всех операциях чтения записей базы данных «1С:Предприятие» автоматически отбирает только те записи, в которых значения используемых разделителей совпадают с текущими значениями разделителей. При записи данных платформа проверяет, что записываемые данные содержат значения используемых разделителей, равные текущим значениям разделителей или равные значениям по умолчанию для соответствующих типов. Если это не так, то вызывается исключение типа того, что надписано выше в начале статьи

Например:

Допустим, изначально объект записан со значением разделителя

ПараметрыСеанса.ОбластьДанныхОсновныеДанные = 1; 

Тогда следующий программный код вызывает исключение при записи:

Объект = СсылкаНаОбъект.ПолучитьОбъект();
// Меняем значение разделителя в текущем сеансе
ПараметрыСеанса.ОбластьДанныхОсновныеДанные  = 2;
// Объект не будет записан, и будет вызвано исключение
Объект.Записать();

Если записываемые данные содержат значения разделителей, равные значениям по умолчанию для соответствующих типов, то в разделители объекта будут записаны значения используемых разделителей текущего сеанса. Для неиспользуемых в текущем сеансе разделителей:

  • при чтении данных отбор по этим разделителям не выполняется;
  • при модификации данных используются значения, содержащиеся в записываемых данных.

Следует отметить, что в этом примере используются Параметры сеанса , которые предназначены для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. Инициализацию параметров сеанса следует выполнять в модуле сеанса, а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса.
Примеры параметров сеанса:

  • ТекущийПроект – тип СправочникСсылка.Проекты;
  • ОбменДаннымиВключен – тип Булево;
  • РабочееМестоКлиента – тип СправочникСсылка.РабочиеМеста.

Следует отметить также, что в состав разделителя могут входить следующие объекты конфигурации:

  • Константы,
  • Справочники,
  • Документы,
  • Последовательности,
  • Журналы документов,
  • Планы видов характеристик,
  • Планы счетов,
  • Планы видов расчета,
  • Бизнес-процессы,
  • Задачи,
  • Регистры сведений,
  • Регистры накопления,
  • Регистры бухгалтерского учета,
  • Регистры расчета,
  • Планы обмена,
  • Регламентные задания,
  • Пользователи информационной базы
Previous ArticleРазвитие детализации себестоимости товаров
Next Article

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.