1с что значит разрешить разделение итогов

Обновлено: 07.07.2024

Вопрос

Ответ

Здравствуйте. Про механизм разделения итогов подробно рассказано в этой статье. Если кратко обобщить содержание статьи, то можно сказать, что механизм разделения итогов позволяет одновременную запись движений разных документов по одному и тому же регистру по одинаковым значениям измерений. Достигается это введением дополнительного поля – разделителя итогов и дублированием записей с одинаковыми значениями измерений (но значения разделителя для них будут разными!). Тем самым повышается скорость проведения документов, так как уменьшается время ожиданий на блокировках. Плата за это – увеличение размера таблиц: как за счет дополнительного поля (разделителя), так и за счет дублирования записей с одинаковыми значениями измерений, а также увеличение накладных расходов при расчете итогов регистра.

Обратите внимание на выводы, которые сделаны в этой статье.

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

  1. С регистром выполняется активная параллельная работа. То есть часто имеют место ситуации, когда несколько документов пытаются одновременно записать данные в регистр. Если же документы проводятся, как правило, последовательно, друг за другом, или же если самих документов мало, то эффекта от использования режима разделения итогов не будет.
  2. По регистру нет контроля остатков, то есть нет чтения данных в транзакции и нет необходимости блокировать все записи регистра только по значения измерений (без учета разделителя итогов). Если же такой контроль остатков есть, то использование механизма разделения итогов также не даст эффекта, так как для получения правильных данных и недопущения отрицательных остатков нужно при контроле остатков принудительно “отключить” использование разделения итогов. При новой методике для этого используют свойство “БлокироватьДляИзменения” набора записей регистра. При старой методике блокировка данных регистра устанавливается при помощи объекта БлокировкаДанных, который также игнорирует разделитель итогов.

Получается, что если по регистру нет контроля остатков (ни для одного из документов), то использовать разделение итогов имеет смысл. Если есть контроль остатков -то не имеет смысла.

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

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

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

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

Кроме того, проходила информация, что на экзамене проверяли включение возможности разделения итогов для регистров (установку в Конфигураторе свойства “Разрешить разделение итогов” регистров в значение “Истина”). Поэтому на экзамене можно рекомендовать разрешить использование разделения итогов и для регистров накопления, и для регистра бухгалтерии (кроме случаев, когда все документы выполняют движения по регистру с контролем остатков). В качестве аргументации можно использовать соображения, приведенные выше.

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

– Регистры накопления (тип: остатки), по которым документы не выполняют контроль остатков.

Например, регистр “Взаиморасчеты” с одним измерением “Контрагент” и одним ресурсом “Сумма”. Положительные значения ресурса означают долг контрагента, отрицательные – долг предприятия. Контроль задолженности при проведении документов отсутствует. Детализация расчетов по документам не ведется.

– Большинство регистров накопления (тип: обороты) – по ним, за редким исключением, контроль остатков не требуется, они используются, как правило, для накопления некоторых данных за период.

– Регистры бухгалтерии. Либо контроль остатков по счетам вообще не предусмотрен (записываются данные по уже произошедшим событиям), либо для многих счетов контроль остатков в данной учетной схеме не имеет смысла (например, для активно-пассивных счетов “Взаиморасчеты с покупателями”, “Взаиморасчеты с поставщиками”: остаток по дебету счета может означать долг контрагента, остаток по кредиту – долг предприятия).

Также замечу, что утверждение в Вашем вопросе “В разделе, посвященном оперативному учету, это свойство (“Разрешить разделение итогов”) использовалось для улучшения быстродействия при новой методике проведения” представляется не совсем корректным.

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

Здесь, скорее, верно иное утверждение: при проведении по новой методике, чтобы при контроле остатков получить правильный результат, нужно принудительно отключить использование разделителя итогов. Делается это установкой значения свойства “БлокироватьДляИзменения” набора записей регистра в значение Истина. Если по регистру нет разделения итогов, при новой методике проведения значение данного свойства на результат не повлияет: в любом случае при записи набора неявно будут заблокированы все нужные записи регистра (подробнее см. в этой статье). То есть при проведении по новой методике нужно учитывать, включен ли режим разделения итогов. Эта особенность, видимо, и является причиной того, что механизм разделения итогов упоминают в связи с новой методикой проведения.

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

Режим разделения итогов для регистров бухгалтерии

Область применения: управляемое приложение, обычное приложение.

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

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

Пример 1

В конфигурации определен регистр Хозрасчетный с измерениями Организация и Валюта .


При этом запрещено разделение итогов регистра:


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

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

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

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

Пример 2

Если для этого же регистра разрешить и включить режим разделения итогов, то ситуация изменится.
Разрешим режим разделения итогов (в режиме конфигурирования ):


Включим режим разделения итогов (в режиме 1С:Предприятия ):


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

Привет, друзья! Сегодня мы поговорим про свойство регистра «Режим разделения итогов». Все слышали, что такое существует, но на практике мало кто знает – что это за зверь.

Итак, как обычно, есть проблема – большое время ожидания предоставления блокировки, ошибки таймаута блокировок:

rezhim-razdeleniya-itogov-i-blokirovatdlyaizmeneniya_01

rezhim-razdeleniya-itogov-i-blokirovatdlyaizmeneniya_02

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

И тут мы включаем режим разделения итогов регистра. Технически, это выглядит так:

rezhim-razdeleniya-itogov-i-blokirovatdlyaizmeneniya_03

Система добавила колонку в таблицу итогов «_Splitter», или разделитель. Теперь, когда несколько человек одновременно пишут данные по одному набору измерений, все строки попадают в таблицы итогов, но с разными значениями разделителя (0, 1, 2 …).

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

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

rezhim-razdeleniya-itogov-i-blokirovatdlyaizmeneniya_04

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

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

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

Спасибо за внимание 🙂

Смотрите также:

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

Небольшая зарисовка на тему, какие были бы сливные трубы, если бы их делали 1С-ники.

«1С:Эксперт» - цикл статей

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

В конфигурации для регистров введено свойство «Разрешить разделение итогов». Это свойство, позволяет включить или отключить возможность разделения итогов для конкретного регистра. Отключение свойства полностью исключает влияние данного механизма на работу регистра, так как само поле, используемое для разделения итогов, не включается в структуру регистра. Например, отключение данной возможности полезно для регистров, которые не используются при параллельной работе пользователей. Например, для регистров всегда заполняемых специальными регламентными обработками.
Данный механизм работает только при записи движений . При обращении к итогам регистров в запросе блокировка накладывается на все записи с используемыми комбинациями измерений.
Данный механизм не работает в файловом варианте, так как там поддерживается только блокировка уровня таблиц. Также он не поддерживается при работе с СУБД PostgreSQL в автоматическом режиме блокировок.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 72-73.
• ИТС: Устройство и использование режима разделения итогов регистров

Разделение итогов увеличивает параллельность операций записи, но на практике это существенно только для тех транзакций, где нет чтения записываемых данных.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 72-73.
• ИТС: Устройство и использование режима разделения итогов регистров
• ИТС: Проведение документа – новая методика

Разделяемые управляемые блокировки снимаются в конце транзакции.

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

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

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

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

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

  • Значение Независимо – запрещается любое обращение к разделенным объектам (кроме планов обмена, подробнее см. здесь), если в текущем сеансе работы с информационной базой разделитель не используется. При этом разделитель недоступен в объектной модели, в языке запросов, в формате выгрузки в XML и XDTO, а также ограничениях доступа к данным. При записи разделенных данных система автоматически заполняет значения общего реквизита значениями, установленными в текущем сеансе.

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

ВНИМАНИЕ! В этом режиме ссылки объектов базы данных могут быть одинаковыми для объектов, записанных в разных областях данных.

  • Значение Независимо и совместно – разрешается работа с разделяемыми объектами независимо от использования разделителя в сеансе. Для такого режима будет доступна область данных, которую определяют значения используемых разделителей. При этом разделитель доступен в объектной модели, в языке запросов, в формате выгрузки в XML и XDTO, а также в ограничениях доступа к данным. В этом режиме невозможно создание предопределенных элементов для объектов, входящих в состав такого разделителя. Если в сеансе используются не все разделители, в состав которых входит объект, то работа с этим объектом будет менее эффективной.

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

ВНИМАНИЕ! В этом режиме ссылки объектов базы данных не могут быть одинаковыми для разных объектов, записанных в разных областях данных.
Источники:
• ИТС: Механизм разделения данных

Независимое и совместное разделение данных в информационной базе применяется только к выбранным планам обмена, регламентным заданиям, константам, справочникам, документам, планам счетов, планам видов характеристик, планам видов расчета, регистрам всех видов, бизнес-процессам и задачам.
Источники:
• ИТС: Механизм разделения данных

Если использовать независимый и совместный разделитель данных тогда появится возможность разрешить некоторым пользователям заходить без указания значения разделителя, и эти пользователи будут видеть все данные. Но эффективной работы с этими данными не получится, поскольку во всех индексах первым полем будет идти разделитель, а пользователь с максимальными полномочиями будет работать без указания разделителя, то все запросы будут выполняться со сканированием: медленно и избыточными блокировками.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 76-77.

В случае необходимости создания информационной системы с ограничением доступа рядовых пользователей к части данных, но при полном доступе руководства, лучше рассматривать вариант Row Level Security (RLS).

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

До версии платформы 8.2.14 узким местом была таблица констант целиком. Все значения констант, определенных в конфигурации, хранились в одной таблице.
Начиная с версии платформы 8.2.14 на каждую константу имеется собственная таблица, если не используется режим совместимости (ниже 8.2.14). Это позволяет записывать разные константы параллельно.
Начиная с версии платформы 8.3 при использовании уровня изоляции Read Committed Snapshot (MS SQL Server 2005 и старше), если не используется режим совместимости (ниже 8.3), можно забыть про сложности с разделяемыми блокировками СУБД, они не устанавливаются. Это позволяет читать и записывать константы параллельно.

Узким местом при перемещении границы последовательности является перемещение границы как вперед, так и назад.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 70-71.

При перемещении границы последовательности назад узким местом есть таблица границ последовательности , при перемещении границы последовательности вперед узким местом могут быть как таблица записей регистрации документов в последовательности , так и только таблица границ последовательности .
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 70-71.

Общая рекомендация отключить движение границы последовательности при проведении документов. Перемещение границы последовательности должно происходить, например, регламентным заданием или служебной обработкой в нерабочее время или небольшими порциями.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 70-71.

Для наборов записей регистра бухгалтерии когда разделение итогов включено и разрешено возможна параллельная запись для полностью совпадающих данных.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 69.

Для наборов записей регистра расчета без использованием фактического периода действия возможна параллельная запись наборов с разными регистраторами.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 69.

Для элементов объектных типов: справочников, документов, планов видов характеристик, планов счетов, планов видов расчета, бизнес-процессов, задач, планов обмена возможна параллельная запись разных объектов, принадлежащих к одному типу при использовании MS SQL Server, но при использовании PostgreSQL и Oracle в автоматическом режиме блокировок невозможна.

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

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

  • избыточная блокировка данных в «1С:Предприятии» или в СУБД;
  • не справляется оборудование.

Может, однако, случиться и такое, что сработает критическая секция (участок кода, который одновременно может выполняться только в одном месте), например:

  • автонумератор;
  • драйвер HASP-ключа и др.

Такая проблема классифицируется как неподконтрольная.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 24.

За бутылочными горлышками может быть каскад из неопределенного числа других «бутылочных горлышек».
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 24.

Чтобы ответить на вопрос: имеем мы дело с проблемой производительности или проблемой параллельности нужно найти наиболее типичного представителя действий, выполненных по ключевой операции, для которой требуется улучшать APDEX, и в нерабочее время его выполнить.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 20-24.

Читайте также: