1с что значит разрешить разделение итогов
Обработка, позволяющая для регистров бухгалтерии и накопления
- Устанавливать период рассчитанных итогов
- Пересчитывать текущие итоги
- Устанавливать использование итогов
- Устанавливать использование текущих итогов
Не требует монопольного доступа
Довольно простая обработка, которую каждый может написать для себя. Надеюсь, эта публикация поможет вам сэкономить немного своего времени.
Для новичков кратко, "на пальцах" поясню что такое итоги, как они работают и зачем вообще их рассчитывать.
При рассчете остатков система досчитывает остатки от актуальных, которые, как правило, следует рассчитывать ежемесячно. П То есть
ОстатокТекущий = ОстатокНаМоментРассчетаИтогов + ОборотыПериодПослеРассчетаИтогов
Обороты при этом хранятся в служебной таблице текущих итогов.
При рассчете итогов средствами самой платформы (Операции-Управление итогами) требудется мнопольный доступ (выгнать всех пользователей из базы). Данная обработка монопольного доступа не требует, пользователей можно не выгонять, хотя нормально работать во время выполнения обработки будет скорее всего нельзя.
Бывают случаи, когда текущие итоги крашаться (например, такое бывает при аварийном завершении работы) и текущий остаток начинает "плыть". Решается эта проблема пересчетом текущих итогов
Мы можем и вовсе отказаться от использования текущих итогов, установив отключив эту возможность у конкретного регситра. В таком случае обороты за период будут считаться по сумме движений.
Также мы можем отключить итоги по всему регистру. Если использование итогов отключено, то при записи набора записей регистра не будет производиться пересчет итогов, но при этом будут не доступны виртуальные таблицы расчета остатков и оборотов.
Данный режим работы регистра позволяет повысить скорость записи набора записей регистра. Он может быть полезен при массовых загрузках данных.
При включении использования итогов производится пересчет всех итогов.
Привет, друзья! Сегодня мы поговорим про свойство регистра «Режим разделения итогов». Все слышали, что такое существует, но на практике мало кто знает – что это за зверь.
Итак, как обычно, есть проблема – большое время ожидания предоставления блокировки, ошибки таймаута блокировок:
Сейчас я расскажу, что здесь происходит. Несколько человек одновременно пишут данные в 1 регистр по одному набору измерений. Никакой проблемы нет – создается несколько записей. Но при записи в регистр система пытается обновить таблицы итогов, про которые я говорил в предыдущей статье. А в этой таблице по одному набору измерений только одна строка. Возникает конфликт – все ждут, пока проведется документ одного пользователя.
И тут мы включаем режим разделения итогов регистра. Технически, это выглядит так:
Система добавила колонку в таблицу итогов «_Splitter», или разделитель. Теперь, когда несколько человек одновременно пишут данные по одному набору измерений, все строки попадают в таблицы итогов, но с разными значениями разделителя (0, 1, 2 …).
Когда же система хочет считать итоги по набору измерений, она суммирует значения с разными разделителями и получает актуальные данные. А при пересчете итогов значения суммируются и перезаписываются одной строкой.
Поэтому, я рекомендую включать режим разделения итогов в регистрах. Сейчас 1С ставит галочку по умолчанию при создании регистра.
Но у каждого решения есть и отрицательные стороны. Сейчас в 1С «модно» контролировать остатки методом «посмертного вскрытия» — сначала записываются движения, а потом считываем остатки и смотрим, не ушли ли мы в минус. И тут нас ждет следующая проблема:
2 пользователя успешно записали данные в регистр одновременно благодаря режиму разделения итогов, а затем хотят проконтролировать остатки. И каждый пытается прочитать все данные по набору измерений.
В итоге первый пользователь ждет, когда второй пользователь завершит транзакцию, чтобы прочитать данные. А второй пользователь ждет первого. Типичный случай взаимоблокировки. Один из пользователей увидит ошибку и его транзакция отменится.
Чтобы этого не происходило, в тех местах, где используется метод «посмертного вскрытия» набору записей необходимо устанавливать свойство «БлокироватьДляИзменения». При этом установится управляемая блокировка на регистр по нашим измерениям, а также будет недопустимо использование режима разделения итогов в данной ситуации. Это и логично, мы как бы сообщаем системе – «мы не просто пишем данные, а хотим потом проверить остатки, и другие пользователи не должны изменить эти данные, пока мы не закончим».
Спасибо за внимание 🙂
Смотрите также:
В данном вебинаре я расскажу о применяемых в нашей компании правилах и приемах доработки типовых конфигураций 1С для облегчения их дальнейшей поддержки и обновления. В видео использованы материалы…
Небольшая зарисовка на тему, какие были бы сливные трубы, если бы их делали 1С-ники.
Управление итогами
Для оптимизации расчетов в системе 1С: Предприятие предусмотрен режим хранения промежуточных итогов. Итоги вычисляются на начало каждого календарного месяца.
Для управления итогами предназначен режим «Управление итогами», который вызывается пунктом « Операции» - «Управление итогами ».
На закладке « Установка границы рассчитанных итогов » производится установка даты итогов, получаемых на текущий момент, и расчет итогов на эту дату.
В колонке « Рассчитан по » - указывается текущая дата актуальных итогов.
Укажите регистры, которые необходимо пересчитать и дату, на которую итоги будут пересчитаны.
В колонке « Установить по » - укажите дату актуальности.
Для расчетов нажмите кнопку « Выполнить» . Итоги рассчитываются и в колонке « Рассчитан по » указывается новая дата.
На закладке « Установка режима разделения итогов » производится управление режимом разделения итогов.
В список регистров выводятся регистры накопления и бухгалтерии, для которых при конфигурировании предусмотрен режим разделения итогов. Пользователь может включить или отключить установленный режим. Пометка означает, что режим разделения итогов установлен.
Установка режима разделения влияет только на параллельность работы системы и никак не сказывается на бизнес-логике решаемых задач. Это механизм, который обеспечивает более высокий уровень параллельности.
Хочу рассмотреть вопросы и подготовку к сертификации. Учить правильные ответы плохой путь, а вот понимать ответы и применять их, вы тем самым становитесь на путь к уровню «1С:Эксперт». По сути это цикл записей с расширенными ответами на несколько вопросов из тестов.
В конфигурации для регистров введено свойство «Разрешить разделение итогов». Это свойство, позволяет включить или отключить возможность разделения итогов для конкретного регистра. Отключение свойства полностью исключает влияние данного механизма на работу регистра, так как само поле, используемое для разделения итогов, не включается в структуру регистра. Например, отключение данной возможности полезно для регистров, которые не используются при параллельной работе пользователей. Например, для регистров всегда заполняемых специальными регламентными обработками.
Данный механизм работает только при записи движений . При обращении к итогам регистров в запросе блокировка накладывается на все записи с используемыми комбинациями измерений.
Данный механизм не работает в файловом варианте, так как там поддерживается только блокировка уровня таблиц. Также он не поддерживается при работе с СУБД PostgreSQL в автоматическом режиме блокировок.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 72-73.
• ИТС: Устройство и использование режима разделения итогов регистров
Разделение итогов увеличивает параллельность операций записи, но на практике это существенно только для тех транзакций, где нет чтения записываемых данных.
Источники:
• книга «Настольная книга 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, с. 72.
При перемещении границы последовательности назад узким местом есть таблица границ последовательности , при перемещении границы последовательности вперед узким местом могут быть как таблица записей регистрации документов в последовательности , так и только таблица границ последовательности .
Источники:
• книга «Настольная книга 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.
Четыре в одном. Все обработки работают в многопользовательском режиме доступа (НЕ МОНОПОЛЬНО). Проведение документов и восстановление границы последовательности с индикацией хода выполнения. А также "Установка дат последовательностей", "Установка дат расчета итогов" и "Пересчет итогов".
В данной публикации представлено 4 обработки и бонусный файл. Для запуска обработок под 8.2, обработки необходимо открыть в конфигураторе для конвертации. Все представленные в данной публикации обработки могут работать в многопользовательском режиме доступа (НЕ МОНОПОЛЬНО).
Проведение документов / восстановление последовательностей
1. Проводит документы за период. По выбранным видам документов. По выбранной организации.
2. Восстановление выбранных границ последовательности блоками по часу. Т.е. в случае возникновения ошибки при проведении документа откат происходит на начало часа.
Дополнительные возможности
Повторные попытки проведения / восстановления в случае неудачи (например, в случае блокировки документа другим пользователем).
Ожидание завершения работы пользователя "Регламент" (под данным пользователем могут выполняться регламентные операции, например обмен данными РИБ).
"ТМЦ / Оплата" помечает документы от проведения которых зависит учет НДС. К сожалению не всегда восстановление последовательности позволят корректно рассчитать НДС, комбинация проведения всех документов связанных с движением ТМЦ и оплатой, а также восстановление границы последовательности позволяет в значительной степени "правильно" выполнить расчет.
Данная обработка первоначально была разработана для УПП, но, разумеется, будет работать и в любой другой конфигурации 1С:Предприятия 8.
Установка границ последовательностей
Обработка "Установка границ последовательностей" позволяет устанавливать границы последовательностей на указанную дату без проведения документов. Это бывает необходимо при "случайном" проведении документа раньше границы восстановленной последовательности. Чаще всего если документ не изменялся, то результат его проведения тоже не изменится. В этом случае нет необходимости перепроводить все последующие документы, достаточно вернуть границу последовательности "на место".
Установка дат расчета итогов
При загрузке большого количества документов есть стандартная возможность отключить итоги, в этом случае загрузка будет выполнена быстрее. Но в случае повторной загрузки документов требущей перепродения документов после загрузки, данный механизм не подходит, потому что возникнет ошибка при обращении к итогам. Обработка "Установка дат расчета итогов" не отключает итоги, она расчитывает их на нужную дату. При правильном её использовании, проведение загружаемых документов не будет вызавать пересчет итогов последующих периодов.
В случае, если по какой-то причине не был выполнен регламентированный расчет итогов регистров, то для расчета итогов также можно воспользоваться данной обработкой.
"Удаление рассчитанных итогов" - в этом режиме расчитанные итоги удаляются, но использование итогов не отключается. Т. е. документы будут нормально проводится.
Пересчет итогов по регистрам
Во многих конфигурациях появилась возможность использовать разделение итогов. Это снижает вероятность возникновения взаимных блокировок, но при этом в случае интенсивной работы пользователей таблицы итогов увеличиваются. Для уменьшения количества дублирующихся записей итогов предлогается выполнять пересчет итогов. Типовой механизм пересчета требует монопольного доступа к базе данных. Мне было удобно выполнять данную процедуру во время обеда. При этом выгонять пользователей из базы данных не обязательно.
Бонус
На отдельную публикацию не потянет, поэтому выкладываю бонусом.
Буду рад комментариям с конструктивной критикой, пожеланиями и замечаниями.
Читайте также: