Доброго дня, коллеги!
Курс Подготовка к аттестации 1С:Специалист по платформе 1С:Предприятие 8.3 является основополагающим и фундаментальным в жизни специалиста 1С. Именно поэтому тренеры стараются отвечать в Мастер-группе максимально емко и точно. Так, на следующий вопрос слушателя тренер дал не просто ответ, а предоставил целую аналитическую статью. “Спасибо! Исчерпывающе!” – слова слушателя, который явно не ожидал получить столько ценной информации за раз :)
Вопрос
Ответ
Здравствуйте. Про механизм разделения итогов подробно рассказано в этой статье. Если кратко обобщить содержание статьи, то можно сказать, что механизм разделения итогов позволяет одновременную запись движений разных документов по одному и тому же регистру по одинаковым значениям измерений. Достигается это введением дополнительного поля – разделителя итогов и дублированием записей с одинаковыми значениями измерений (но значения разделителя для них будут разными!). Тем самым повышается скорость проведения документов, так как уменьшается время ожиданий на блокировках. Плата за это – увеличение размера таблиц: как за счет дополнительного поля (разделителя), так и за счет дублирования записей с одинаковыми значениями измерений, а также увеличение накладных расходов при расчете итогов регистра.
Обратите внимание на выводы, которые сделаны в этой статье.
Использовать механизм разделения итогов имеет смысл, только если:
- С регистром выполняется активная параллельная работа. То есть часто имеют место ситуации, когда несколько документов пытаются одновременно записать данные в регистр. Если же документы проводятся, как правило, последовательно, друг за другом, или же если самих документов мало, то эффекта от использования режима разделения итогов не будет.
- По регистру нет контроля остатков, то есть нет чтения данных в транзакции и нет необходимости блокировать все записи регистра только по значения измерений (без учета разделителя итогов). Если же такой контроль остатков есть, то использование механизма разделения итогов также не даст эффекта, так как для получения правильных данных и недопущения отрицательных остатков нужно при контроле остатков принудительно “отключить” использование разделения итогов. При новой методике для этого используют свойство “БлокироватьДляИзменения” набора записей регистра. При старой методике блокировка данных регистра устанавливается при помощи объекта БлокировкаДанных, который также игнорирует разделитель итогов.
Получается, что если по регистру нет контроля остатков (ни для одного из документов), то использовать разделение итогов имеет смысл. Если есть контроль остатков -то не имеет смысла.
(По поводу количества документов и их одновременного проведения можно исходить из общих соображений – документов много и проводятся они параллельно. Это наиболее частая ситуация. Если для проектируемой базы данных ситуация иная, это также следует учесть).
Замечу также, что если по регистру все документы проводятся с контролем остатков, то любая запись в регистр будет производиться с игнорированием разделителя, и нет смысла включать механизм разделения итогов для регистра.
Казалось бы, используя эти критерии, либо включаем, либо выключаем для регистров свойство “Разрешить разделение итогов”. Но не все так однозначно. Общий эффект проявится от соотношения в системе документов разных типов (с контролем остатков и без него), а также от их взаимодействия и состава данных. То есть эффект может проявиться в разной мере в зависимости от специфики работы конкретного предприятия. Вполне возможно, что массово проводимые документы без контроля остатков не будут пересекаться (или будут незначительно пересекаться) по времени и составу данных с документами, выполняющими такой контроль. В этом случае их проведение ускорится.
Также нужно учесть, что в пользовательском режиме можно включать и выключать использование механизма разделения итогов для каждого из регистров.
Кроме того, проходила информация, что на экзамене проверяли включение возможности разделения итогов для регистров (установку в Конфигураторе свойства “Разрешить разделение итогов” регистров в значение “Истина”). Поэтому на экзамене можно рекомендовать разрешить использование разделения итогов и для регистров накопления, и для регистра бухгалтерии (кроме случаев, когда все документы выполняют движения по регистру с контролем остатков). В качестве аргументации можно использовать соображения, приведенные выше.
Примеры регистров, для которых включение возможности разделения итогов может дать положительный эффект:
– Регистры накопления (тип: остатки), по которым документы не выполняют контроль остатков.
Например, регистр “Взаиморасчеты” с одним измерением “Контрагент” и одним ресурсом “Сумма”. Положительные значения ресурса означают долг контрагента, отрицательные – долг предприятия. Контроль задолженности при проведении документов отсутствует. Детализация расчетов по документам не ведется.
– Большинство регистров накопления (тип: обороты) – по ним, за редким исключением, контроль остатков не требуется, они используются, как правило, для накопления некоторых данных за период.
– Регистры бухгалтерии. Либо контроль остатков по счетам вообще не предусмотрен (записываются данные по уже произошедшим событиям), либо для многих счетов контроль остатков в данной учетной схеме не имеет смысла (например, для активно-пассивных счетов “Взаиморасчеты с покупателями”, “Взаиморасчеты с поставщиками”: остаток по дебету счета может означать долг контрагента, остаток по кредиту – долг предприятия).
**
Также замечу, что утверждение в Вашем вопросе “В разделе, посвященном оперативному учету, это свойство (“Разрешить разделение итогов”) использовалось для улучшения быстродействия при новой методике проведения” представляется не совсем корректным.
При любой методике контроля остатков, и старой, и новой записи регистра должны быть заблокированы без учета разделителя, поэтому и положительного эффекта от использования механизма разделения итогов при этом не будет. То есть выбор методики проведения не влияет на то, включать возможность разделения итогов, или нет. Влияет только само наличие контроля остатков.
Здесь, скорее, верно иное утверждение: при проведении по новой методике, чтобы при контроле остатков получить правильный результат, нужно принудительно отключить использование разделителя итогов. Делается это установкой значения свойства “БлокироватьДляИзменения” набора записей регистра в значение Истина. Если по регистру нет разделения итогов, при новой методике проведения значение данного свойства на результат не повлияет: в любом случае при записи набора неявно будут заблокированы все нужные записи регистра (подробнее см. в этой статье). То есть при проведении по новой методике нужно учитывать, включен ли режим разделения итогов. Эта особенность, видимо, и является причиной того, что механизм разделения итогов упоминают в связи с новой методикой проведения.
Если же используется старая методика проведения, требуется явно установить блокировку (объектом БлокировкаДанных) записи регистра до выполнения запроса к остаткам регистра. Этот подход потребуется в любом случае: как при включении механизма разделения итогов, так и его выключении.
Подготовка к аттестации 1С:Специалист по платформе 1С:Предприятие 8.3.