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

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

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

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

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

Пример 1

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

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

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

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

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

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

Пример 2

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

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

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

Источник



Устройство и использование режима разделения итогов регистров

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

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

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

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

Например, есть движения:

Регистратор Вид движения Дата Измерение Товар Измерение Склад Ресурс Количество
Приходная накладная 1 Приход 12.06.06 Стол Основной 10
Приходная накладная 1 Приход 12.06.06 Стул Основной 8
Приходная накладная 2 Приход 12.06.06 Стол Основной 1
Расходная накладная 5 Расход 13.06.06 Стол Основной 5

Тогда в системе есть текущие остатки в таблице остатков:

Измерение Товар Измерение Склад Ресурс Количество
Стол Основной 6
Стул Основной 8

То есть таблица итогов содержит алгебраическую сумму движений (с учетом вида движений) по каждой комбинации измерений.

При каждой записи движений система добавляет или вычитает в зависимости от вида движения значения ресурсов движений из соответствующих строк таблицы итогов. Для того чтобы это сделать, система должна считать текущее значение, увеличить или уменьшить его, и записать измененное значение. Разумеется, чтобы эта операция прошла корректно, нужно заблокировать считываемую запись, чтобы никто не мог изменить запись после считывания. Таким образом, в приведенном примере приходная накладная номер 1 и приходная накладная номер 2 не могу быть параллельно проведены, так как не могут быть записаны параллельно записи по комбинации измерений «Стол — Основной».

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

Например, если одновременно записывается приходная накладная 1 и приходная накладная 2, то записи будут выглядеть следующим образом.

Разделитель Измерение Товар Измерение Склад Ресурс Количество
Стол Основной 10
1 Стол Основной 1
Стул Основной 8

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

Когда после этого будет записана расходная накладная 5, записи будут выглядеть так:

Разделитель Измерение Товар Измерение Склад Ресурс Количество
Стол Основной 5
1 Стол Основной 1
Стул Основной 8

При получении итогов (обращении к виртуальной таблице), система сворачивает записи по комбинациям измерений, и поэтому при обращении к виртуальной таблице мы получим:

Измерение Товар Измерение Склад Ресурс Количество
Стол Основной 6
Стул Основной 8

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

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

Аналогичная логика поддерживается и при использовании управляемого режима блокировки. Из встроенного языка доступна блокировка только по измерениям (без учета разделения итогов по отдельным записям).

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

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

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

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

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

В информационной базе для регистров (тех, для которых разделение итогов разрешено в конфигурации) поддерживается хранение признака использования разделения итогов. Он может быть получен и установлен методами ПолучитьРежимРазделенияИтогов() и УстановитьРежимРазделенияИтогов() , а также в стандартном диалоге (« Операции-Управление итогами-Установка режима разделения итогов »). Такая возможность позволяет включать или выключать режим разделения итогов в зависимости от условий работы пользователей в конкретной организации. Например, при интенсивном параллельном вводе информации этот режим может быть полезен. Но если с системой работает небольшое количество пользователей, то выигрыш от его применения будет небольшой, а некоторое замедление при получении отчетов и лишние записи в таблицах итогов, фактически будут лишними (неоправданными).

Источник

Разрешить разделение итогов — что это?

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

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

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

Режим разделения итогов может быть изменен пользователем в режиме работы «1С:Предприятие» в диалоге «Управление итогами».

По умолчанию свойство выключено.

Распечатать

Похожие FAQ

Еще в этой же категории

Ключевые слова и Изображения

Слова упорядочены по частоте использования в тексте

Изображения

Скажите, при включении режима разделения итогов в регистре накопления и последующем запуске Предприятия, происходит ли некий скрытый, системный Пересчет итогов этого регистра ? Потому, как были ошибки в виртуальной таблице остатков регистра накопления. Это всё решалось Пересчетом итогов регистра. НО ! Мы узнали это позже. А до этого, мы решили проблему установкой режима Разделения остатков — поставили галочку в регистре в конфигураторе.

[ Главная | FAQ: Все | 7.х | 8.х | 8.2 УП | 8.3 | Видео | Files | Forum | Freelance | Поиск | Реклама на HelpF.pro | Обратная связь ]
HelpF.pro [old Help1C.com] 2009-2020 Все материалы, размещенные на сайте, добавлены посетителями сайта или взяты из свободных источников. Подробнее.
Google+FacebookВКонтактеYouTubeInstagramTwitter @Help1CRSS

Источник

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

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

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

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

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

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

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

документы с номерами 001 и 002

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

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

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

  1. Документы пытаются внести запись в регистр накопления
  2. На уровне СУБД регистр накопления представлен двумя таблицами: таблицей движений и таблицей остатков (таблица итогов).
  3. В таблице движений возможна запись документами своих данных параллельно. Это обеспечивается различными значениями поля «Регистратор», и, соответственно, работа идет с различными строками таблицы.
  4. А вот в таблице остатков нет поля «Регистратор», данные в этой таблице хранятся в разрезе измерений самого регистра.
  5. Тут наблюдается ситуация, при которой двум документам необходимо изменить одну запись, но одну запись одновременно менять нельзя.
  6. Для того чтобы не потерять записываемые данные, какой-либо из документов должен ожидать своей очереди на запись, пока другой документ не запишет свои движения. И, после того как первый из документов внесет свои движения, второй сможет внести уже свои.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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

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

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

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

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

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

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

документы с номерами 001 и 002

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

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

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

  1. Документы пытаются внести запись в регистр накопления
  2. На уровне СУБД регистр накопления представлен двумя таблицами: таблицей движений и таблицей остатков (таблица итогов).
  3. В таблице движений возможна запись документами своих данных параллельно. Это обеспечивается различными значениями поля «Регистратор», и, соответственно, работа идет с различными строками таблицы.
  4. А вот в таблице остатков нет поля «Регистратор», данные в этой таблице хранятся в разрезе измерений самого регистра.
  5. Тут наблюдается ситуация, при которой двум документам необходимо изменить одну запись, но одну запись одновременно менять нельзя.
  6. Для того чтобы не потерять записываемые данные, какой-либо из документов должен ожидать своей очереди на запись, пока другой документ не запишет свои движения. И, после того как первый из документов внесет свои движения, второй сможет внести уже свои.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Читайте также:  Gsm модуль для starline a39 установка
Adblock
detector