Меню

1с настройка разделения данных



Разделение данных

Механизм разделения данных позволяет хранить данные нескольких независимых организаций в одной информационной базе.

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

Допустим в конфигурации существует общий реквизит «Организация». Это значит (упрощённо), что у каждого справочника, документа или другого объекта конфигурации также будет существовать реквизит «Организация».

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

Теперь укажем, что общий реквизит «Организация» будет являться разделителем.

Тогда (упрощённо) в информационной базе будет создано несколько независимых областей данных, в каждой из которых будут храниться данные только для одной конкретной организации:

Теперь, заходя в программу, пользователь будет получать доступ не ко всей информации, которая есть в информационной базе, а только к данным «своей» области, в данном случае к документам, справочникам и др. своей организации.

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

В этом случае пользователь имеет доступ к «своей» области данных и к области неразделённых данных, которая является общей для всех пользователей.

Источник

1с настройка разделения данных

Однажды мы обсуждали механизмы ограничения доступа пользователей в 1С и в частности механизм RLS.

Он позволяет разрешить пользователю работать не со всеми документами, а только с теми, в которых указана определенная организация или склад. Отборы производятся динамически, поэтому накладывают определенную нагрузку на работу базы данных.

Общие реквизиты 1С, которые мы с Вами также обсуждали недавно, кроме того, что они являются общими для нескольких документов, реализуют новый механизм безопасности в 1С под названием — разделение данных 1С.

Поговорим об этом подробнее.

Разделение данных 1С

Разделение данных 1С – это механизм аналогичный RLS, организованный на другом принципе работы. Если RLS – это дополнение запросов к SQL условиями, ограничивающими список данных, то разделение данных – это SQL запросы к таблицам, в которых уже заранее отобраны данные.

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

Возможные режимы работы (в одной физической базе данных):

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

Включаем разделение данных 1С

Добавим общий реквизит Склад.

В свойствах общего реквизита укажем Состав – все документы, у которых есть реквизит Склад.

Свойство Разделение данных – Разделять. При включении свойства 1С предложит создать два параметра сеанса (см. далее).

Значение разделения данных 1С – параметр сеанса с типом равным типу общего реквизита. В данном параметре сеанса будет установлено значение, которое определит фильтр.
Использование разделения данных 1С – параметр сеанса с типом булево, в нем будет включено или выключено разделение данных 1С для данного сеанса.

Использовать разделение данных 1С — Независимо. Это значит, что база будет полностью и окончательно разделена и все пользователи в ней работают в своей области вне зависимости от дальнейших настроек, и даже идентификаторы (GUID) в разных областях одной базы могут быть одинаковы.

Значение общего реквизита-разделителя при этом в момент записи разделяемого справочника и документа устанавливается системой автоматически и поменять его нельзя.

Использовать разделение данных 1С – Независимо и совместно. Это управляемый режим, в котором подразумевается, что одна база может работать в разных режимах и пользователи могут работать в режиме, когда видят всю информацию без ограничений, в зависимости от настроек.

Использовать общий реквизит на формы можно только в режиме Независимо и совместно, так как в режиме Независимо его значение устанавливается системой автоматически по текущему значению параметра сеанса.

Особенности разделения данных 1С для администрирования

Если мы хотим организовать в одной физической базе несколько виртуальных, то требуется изменения в администрировании пользователей .

Свойство общего реквизита-разделителя – Разделение пользователей 1С – позволяет установить доступность списка пользователей в зависимости от использования разделителей.

Если разделитель включен для пользователя, то он будет виден в списке пользователей в режиме 1С Предприятие – иначе не виден.

Таким образом можно организовать различные списки пользователей для различных частей базы.

Свойство общего реквизита-разделителя – Разделение аутентификации 1С – позволяет заводить пользователей с одинаковыми именами пользователя для разных частей базы.

Условное разделение 1С

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

Чтобы включить условное разделение 1С – нужно указать в свойстве общего реквизита-разделителя – Условное разделение 1С – объект 1С, который будет отвечать за определение факта включения разделения 1С.

Возможно использовать константу с типом булево или реквизит справочника с типом булево.

Важно – у этой константы/этого справочника нужно отключить использование (выбрать Не использовать) в составе разделителей, только тогда его можно будет выбрать.

Источник

Общие реквизиты в 1С 8.3

Общий реквизит в 1С 8.3 — это объект метаданных платформы, позволяющий использовать один реквизит для многих объектов конфигурации (справочников, документов, планов счетов и т.д). Объект создан в основном для облегчения труда разработчика и разделения данных.

Общие реквизиты были первоначально реализованы в версии 1С 7.7, но сразу в платформу 8 версии разработчики его не включили. Механизм общих реквизитов был введен разработчиками 1С только в релизе 8.2.14.

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

После добавления общего реквизита его можно использовать и в запросах и выводить на форму объектов — внешне он ничем не отличается от обычного реквизита.

Единственное ограничение общих реквизитов — невозможность использования их в журнале документов.

Настройки и свойства общего реквизита в 1С

Рассмотрим основные настройки и свойства общих реквизитов, отличные от других объектов конфигурации:

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Состав — список объектов, к которым будет использован общий реквизит, настройка напоминает настройку плана обмена.

Автоиспользование — настройка определяет, будет ли использоваться общий реквизит для тех объектов, у которых в составе указан режим использования «Автоматический».

Разделение данных — эту настройку рассмотрим отдельно.

Читайте также:  Настройка сценария синхронизации 1с

Разделение данных в 1С с помощью общего реквизита

Разделение данных — механизм, аналогичный механизму ограничений прав на уровне записи (RLS). Однако производительность данного механизма более эффективна, и он настраивается проще.

Механизм позволяет настроить отображение только элементов, которые может видеть пользователь. К примеру, можно разграничить все объекты (документы, справочники и т.д.), где установлена определенная организация.

Настройка разделения данных с помощью общих реквизитов 1С

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

При этом необходимо будет при старте системы указать параметры сеанса, как это сделать, с примером было описано в статье Параметры сеанса 1С.

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

Пример использования общего реквизита

Разберем настройку общего реквизита в 1С 8.3 на примере каркасной конфигурации и реквизита Организация:

В системе имеется 3 документа, где необходимо указание реквизита Организация: это Приходная Накладная, Расходная Накладная, Начисление Зарплаты.

  1. Создаем новый Общий реквизит, указываем тип — СправочникСсылка.Организация.
  2. В составе расставляем для наших документов — Использовать.

Все, настройка окончена!

Система отображает общий реквизит «как свой»: и в запросах, и в реквизитах формы, и в других местах. Вот такое волшебство! 🙂

Не добавляется общий реквизит 1С 8.3

Вы можете столкнуться с данной проблемой — кнопка Добавить не активна:

Связано с тем, что у вас установлен не тот режим совместимости конфигурации. Для этого снимите режим совместимости «Версия 8.2.13» в палитре свойств конфигурации:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

Настройка распределенной информационной базы (РИБ) в 1С 8.3 Бухгалтерия

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

Но тем не менее бывают ситуации, когда просто-напросто нет интернета. А данные должны в итоге оказаться в одной информационной базе. Для этого и создается распределенная база данных.

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

В этой инструкции мы на примере создадим центральную и периферийную базы данных, проверим обмен между ними. Это пособие подойдет как для 1С 8.3 Бухгалтерия, так и для 1С Управление торговлей (УТ) и других конфигураций.

Настройка главной (центральной) распределенной базы РИБ

Зайдем в меню 1С «Администрирование», далее по ссылке «Настройки синхронизации данных». В открывшемся окне нужно установить флажок «Синхронизация данных». Станет активной ссылка «Синхронизация данных». Сразу здесь же установим префикс для главной информационной базы – например, «ЦБ»:

Заходим по ссылке «Синхронизация данных», откроется окно с кнопкой «Настроить синхронизацию данных». При нажатии на эту кнопку откроется выпадающий список, где нужно выбрать режим «Полный». Если требуется синхронизация только по одной организации, нужно выбрать «По организации…».

В следующем окне нам программа предложит сделать резервную копию. Настоятельно рекомендую сделать это, так как следующие шаги настройки могут быть необратимы.

После создания резервной копии нажимаем кнопку «Далее». На следующем шаге нам следует определиться, как будет происходить синхронизация:

  • через локальный каталог или каталог в локальной сети;
  • по интернету посредством FTP.

Для простоты и наглядности примера выберем локальный каталог. Я указал следующий путь: «D:\Базы 1С\Синхронизация». Не лишней будет проверка записи в данный каталог, для этого есть специальная кнопка:

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Получите 267 видеоуроков по 1С бесплатно:

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

Не забывайте, что префиксы каждой базы должны быть уникальны. В противном случае Вы получите ошибку «Значение префикса первой информационной базы не уникально».

Жмем «Далее», проверяем введенную информацию и опять нажимаем «Далее», затем — «Готово». В поле «Полное имя файловой базы» указываем файл 1Cv8.1CD в каталоге, который создали для синхронизации. Создаем начальный образ распределенной базы 1С:

После создания начального образа РИБ в 1С можно задать расписание синхронизации или синхронизировать вручную:

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

Только сразу в новой периферийной базе заведите хотя бы одного пользователя с правами Администратора.

Настройка синхронизации в периферийной базе данных

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

Как видно, идет полноценный двухсторонний обмен информации с префиксами информационных баз.

В заключение хочется добавить важное замечание. Изменения в конфигурации можно производить только в центральной базе данных. Эти изменения потом автоматически будут транслированы в периферийные базы.

В заключение рекомендуем видеоинструкцию по настройке РИБ в 1С на примере Управление Торговлей:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

Оптимизация «1С:Предприятие 8» – Режим разделения итогов

Другие статьи по оптимизации 1С:

Оптимизация 1С – Режим разделения итогов

  • В статье рассматривается предназначение режима разделения итогов
  • Разбирается поведение системы «1С:Предприятие 8» при параллельной работе большого количества пользователей
  • Показываются минусы режима разделения итогов
  • Выдаются рекомендации по корректному использованию разделения итогов регистра

Платформа «1С:Предприятие 8» содержит возможности и механизмы, о работе которых не все имеют полное представление, как и о способах их эффективного использования. Таковым является режим разделения итогов.

Механизм разделения итогов выполняет весьма важную и полезную функцию: его использование делает возможным осуществлять параллельную запись в регистры бухгалтерии и регистры накопления.

Читайте также:  Скд другие настройки 1с

Покажем эффективность данного режима с помощью примера. Для этого рассмотрим ситуацию до и после включения режима разделения итогов.

До включения режима разделения итогов

Мы имеем в наличии два одинаковых документа с номерами 001 и 002:


Оба документа осуществляют движение по регистру накопления. Контроля остатков нет. Структура регистра накопления:

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

При этом на уровне СУБД возникает следующая картина:

Вот что происходит в системе:

    Документы пытаются внести запись в регистр накопления

На уровне СУБД регистр накопления представлен двумя таблицами: таблицей движений и таблицей остатков (таблица итогов).

В таблице движений возможна запись документами своих данных параллельно. Это обеспечивается различными значениями поля «Регистратор», и, соответственно, работа идет с различными строками таблицы.

А вот в таблице остатков нет поля «Регистратор», данные в этой таблице хранятся в разрезе измерений самого регистра.

Тут наблюдается ситуация, при которой двум документам необходимо изменить одну запись, но одну запись одновременно менять нельзя.

  • Для того чтобы не потерять записываемые данные, какой-либо из документов должен ожидать своей очереди на запись, пока другой документ не запишет свои движения. И, после того как первый из документов внесет свои движения, второй сможет внести уже свои.
  • В результате мы наблюдаем потерю времени – второй пользователь вынужден ждать окончание проведения документа у первого. С одной стороны, все правильно и логично, с другой – страдает параллельность работы пользователей в системе.

    Для разрешения возникшей проблемы и создан механизм разделения итогов.

    Его использование предусмотрено только для регистров накопления и регистров бухгалтерии.

    Включение режима разделения итогов

    Включение данного режима выполняется достаточно просто:

    Заметим, что режим разделения итогов включен по умолчанию для всех создаваемых регистров накопления и бухгалтерии. Помимо Конфигуратора в пользовательском режиме мы можем посмотреть, для каких регистров включено использование режима:

    Что происходит после включения режима разделения итогов?

    В таблице итогов регистра накопления/бухгалтерии появляется новый столбец «Разделитель». В самой СУБД он назван «Splitter».

    При этом таблица движений остается неизменной, разделителем в ней выступает «Регистратор». Изменение мы видим в таблице итогов.

    Это поле заполняется только в том случае, когда две (или более) транзакции пытаются изменить одну строку в таблице итогов. При возникновении такого случая поле «Разделитель» хранит разные значения для каждой из транзакций.

    Такая реализация режима разделения итогов делает возможным выполнять параллельную запись всем транзакциям.

    В нашем примере с двумя документами при включении режима наблюдается следующее:

    Оба наших документа выполнили параллельную запись своих данных благодаря новому полю «Разделитель». В результате не возникают ожидания при блокировках и повышена параллельность работы пользователей.

    Минусы режима разделения итогов

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

    При получении остатков по регистру возникает потребность свертки данных, что приводит к затратам времени, пусть и незначительным.

    В нашем случае с двумя документами для получения остатка товара «Стол» по складу «Основной» возникает необходимость сложения двух строк для получения итогового значения «7». При выключенном разделителе группировка строк (сложение) не требуется.

    Когда следует использовать режим разделения итогов?

    Для этого необходимо выполнить условия:

      По регистру нет контроля остатков – нет чтения данных в транзакции. В регистрах бухгалтерии контроль остатков, как правило, отсутствует. Но если контроль остатков присутствует, то мы не получим никакого выигрыша в производительности. К тому же, при контроле остатков нужно использовать свойство набора записей «БлокироватьДляИзменения», так как возникает вероятность взаимоблокировки.

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

    PDF-версия статьи для участников группы ВКонтакте

    Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

    Статья в PDF-формате

    Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)

    Ссылка доступна для зарегистрированных пользователей)
    Ссылка доступна для зарегистрированных пользователей)
    Ссылка доступна для зарегистрированных пользователей)

    Содержание курса и форма заказа: https://курсы-по-1с.рф/1c-v8/optimization/

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

    Комментарии / обсуждение (25):

    Добрый день.
    А разве при записи в регистр накопления происходит запись в таблицу остатков регистра?
    Я так думал, что данные в таблице остатков вносятся при расчете итогов, а не при внесении каждой записи.
    Проясните пожалуйста данную ситуацию?

    Если итоги включены, тогда таблица итогов обновляется каждый раз при записи в регистр. Вы можете самостоятельно это проверить используя SQL Profiler.

    Добрый день!
    Подскажите пожалуйста, Вы пишите что этот режим не следует применять если по регистру существует контроль остатков — и есть чтение данных в транзакции. Т.е. в новых методах оперативного проведения (списание, затем контроль остатков) в регистре накопления ОстаткиТоваров этот режим должен быть отключён? На экзамене по специалисту на это обращают внимание?

    > Т.е. в новых методах оперативного проведения (списание, затем контроль остатков) в регистре накопления ОстаткиТоваров этот режим должен быть отключён?

    Либо отключен, либо у набора записей этого регистра должно быть установлено свойство БлокироватьДляИзменения=Истина. Если этого не сделать, то при параллельном проведении документов с одинаковыми значениями в 8.2 будет возможен дедлок, а в 8.3 будут возможны отрицательные остатки.

    > На экзамене по специалисту на это обращают внимание?
    Вот этого не могу сказать.

    Добрый день!
    во всех книгах, курсах “БлокироватьДляИзменения = Истина” не ставят в документе ПриходнаяНакладная подскажите почему? Ведь если я перепровожу документ ПриходнаяНакладная то я должен блокировать поля по которым был приход иначе можно товар списать в минус. Пример: было Стул 2шт, перепровожу меняя Стул на Тумбу и в этот момент списываю Стул, то у меня спишется в минус. Вопрос возник т.к. сдавал на спеца и там поставил в документе ПриходнаяНакладная “БлокироватьДляИзменения = Истина” мне написали лишняя блокировка.

    В таком случае при перепроведении можно ставить БлокироватьДляИзменения=Истина, а при проведении не ставить.

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

    “будут наложены две неявные блокировки”
    Что за блокировки? Откуда они возьмутся? Можно подробнее?

    Блокировки накладываются при перепроведении т.к. идет удаление предыдущих движений, соответственно появляются X блокировки.

    Каким образом можно списать товар “в минус” в ПРИХОДНОЙ накладной? Правильно написали, что блокировка лишняя.

    Он имел ввиду, что при перепроведении Приходной накладной может одновременно проводиться Расходная накладная, которая будет списывать товар, который в Приходной накладной решили поменять

    Читайте также:  Не работают настройки принтера в 1с

    Вопрос на смежную тему с сабжем этой статьи:

    Существует предположение – свойство набора записей н-го регистра “БлокироватьДляИзменения” имеет смысл применять в случае:
    1) Если транзакция работает в управляемом режим;
    2) Если у регистра, к которому принадлежит набор записей, установлен режим разделения итогов.
    3) Если используется новая методика контроля остатков.

    По 3) пункту я бы поспорил(но не здесь), по второму следующие вопросы:
    1. Верно ли это утверждение?
    2. Что произойдет если программист написал код по вышеуказанным условиям с использованием свойства набора записей н-го регистра “БлокироватьДляИзменения”, а пользователь отключил через “предприятие” разделение итогов для этого регистра, неужели придется переписывать код?
    3) Также говорят что БлокироватьДляИзменения при записи набора записей отключает сабж этой статьи.
    Если это так зачем вообще зависит его работа от режима разделения итогов?

    1. Верно ли это утверждение?

    2. Что произойдет если программист написал код по вышеуказанным условиям с использованием свойства набора записей н-го регистра «БлокироватьДляИзменения», а пользователь отключил через «предприятие» разделение итогов для этого регистра, неужели придется переписывать код?

    Не надо ничего переписывать, ошибки не будет. БлокироватьДляИзменения=Истина будет просто игнорироваться, т.к. разделитель и так уже отключен.

    3. Также говорят что БлокироватьДляИзменения при записи набора записей отключает сабж этой статьи.
    Если это так зачем вообще зависит его работа от режима разделения итогов?

    Разделитель просто не учитывается для указанного набора записей, это не значит что он отключается для всего регистра, просто управляемая блокировка на текущий набор записей ставится без учета разделителя вот и все.

    Только что решил проверить, как раз в работе подвернулась ситуация для этого.

    1С Предприятие 8.3.4.496 СУБД POSGRESQL – пакет от 1С, который датируется декабрем прошлого года, как точно называется версия этого пакета я не помню, помню что их две – другая кажется датирована февралем 2012 года. конфигурация бухгалтерия для Казахстана релиз 2.0.16. У этой конфы режим обычного приложения.

    Сделал новый регистр накопления с измерениями номенклатура и кол-во и новый документ, который формирует движения по этому регистру. У документ проведение безусловное – просто формируется движения по данным таб.части.

    В метаданных регистра поставил галочку разделения итогов и включил этот режим для регистра в предприятии в “Управление итогами”.

    Запускую два сеанса 1С:Предприятие 8 – 1 в режиме отладки(в процедуре проведения стоит точка останова) провожу первый документ и проведение останавливается, в это время во втором сеансе я запускаю проведение второго документа и он не проводится просто крутиться индикатор мышки, но как только отпускаю с точки останова первый документ и его транзакция завершается тут же проводится второй.

    Если я правильно понял материал статьи то второй документ должен закончить проведение раньше первого в ситуации которую я описал выше.

    Воспроизвел аналогичную ситуацию на довольно старой конфигурации – но платформа и субд те же.
    УПП для казахстана еще со времен 8.1, стоит режим совместимости 8.1 и режим совместимости интерфейсов 8.2 в свойствах конфигурации.

    Так вот там через некоторое время при проведении документа 2 выходит сообщение о конфликте блокировок в транзакции.

    На ум приходит 4 варианта – я что то не понял или сделал что то не так, на СУБД постгрес это не работает или он глючит, глюк платформы, автор статьи заблуждается.

    Добрый день!
    От СУБД этот механизм зависеть не должен, если стоит управляемый режим блокировок.
    Посмотрите какой именно режим управления блокировкой данных стоит у конфигурации.
    Если стоит автоматический, то попробуйте поставить управляемый и повторить опыт.
    Так же необходимо, чтобы после записи движений не было чтения.

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

    Затем в свойствах обоих конфигураций поставил режим управления блокировкой данных автоматический и управляемый и:

    Если у Документа режим блокировки автоматический а у регистра накопления управляемый ситуация не меняется, если наоборот возникает ошибка менеджера блокировок при попытки провести/снять с проведения документ.

    Если у обоих объектов режим блокировки управляемый в случае когда проведение первого документа стоит на точке останова то второй благополучно проводится.

    Выходит что режим разделение итогов корректно работает в управляемом режиме блокировки данных.

    Возник еще один вопрос:
    Допустим есть документ который приходует товар, и есть документ который расходует товар из регистра. Приходный документ не считывает остатки в транзакции проведения, а расходный считывает.

    Имеет ли смысл включать разделение итогов для регистра для того чтобы приходные документы могли проводиться параллельно?

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

    Добрый день!
    Выходит что режим разделение итогов корректно работает в управляемом режиме блокировки данных.
    Это утверждение справедливо только для СУБД версионников.
    Дело в том, что в автоматическом режиме блокировок версионники блокируют всю таблицу, поэтому разделитель итогов тут не помогает.

    Имеет ли смысл включать разделение итогов для регистра для того чтобы приходные документы могли проводиться параллельно?
    Да, для регистра имеет смысл включить разделение итогов. При этом приходные документы будут без проблем проводиться, даже если указаны одинаковые значения реквизитов в документе.
    Если у Вас в расходном документе упр. блокировка и контроль остатков идет до записи, тогда ничего больше делать не нужно.
    В этом случае 2 расхода или 1 приход и 1 расход по одинаковым значениям измерений параллельно провестись не смогут.

    Добрый день!
    А что означает “Это утверждение справедливо только для СУБД версионников.”?
    Что за СУБД такие? И относятся ли к ним MS SQL, Postgree, файловый вариант базы 1С.

    Версионные СУБД поддерживаемые 1С это Oracle и PostgreSQL.

    А в MS SQL не корректно что ли работает режим разделения итогов, если прочитать выше сказанное (он не версионник ведь)? Напомните, а как называется тип СУБД MSSQL? Спасибо

    Все с режимом разделения нормально и все работает именно так как должно работать.
    Под некорректной работой человек в комментарии имеет ввиду то, что для СУБД версионников в автоматическом режиме блокируется всегда вся таблица, а не изменяемые строки как обычно. Это штатное поведение и происходит не зависимо от того включено разделение или нет. Поэтому для версионников с автоматическим режимом блокировок не имеет никакого смысла включать разделение итогов. Просто такое поведение человек в комментариях назвал не корректным, хотя по факту оно таковым не является.
    MS SQL относится к СУБД блокировочникам, хотя сейчас там можно включить режим версионирования, поэтому деление на блокировочники и версионники весьма условно.

    Тогда я правильно понимаю, что режим разделения итогов корректно работает в автоматическом режиме блокировки данных в файловом варианте 1С и в MS SQL?

    В файловом варианте режим разделения итогов не имеет смысла, т.к. независимо от режима блокировки, в файловом варианте всегда блокируется вся таблица.
    В автоматическом режиме на MS SQL Server будет работать разделение итогов, но все равно из-за особенностей работы автоматического режима остается риск избыточных блокировок из-за блокирования соседних записей диапазона.

    Источник

    Adblock
    detector