Хранение констант в 1С:Предприятие 8 и возможности по параллельной работе с ними — AUsevich
Способ хранения констант в 1С:Предприятие 8 менялся в зависимости от версии платформы. Так, в платформе до версии 8.2.14 (или платформах выше версии, но с включенным режимом совместимости 8.2.13 и ниже), константы хранятся в одной таблице СУБД, начиная с версии 8.2.14, для каждой константы создается своя таблица СУБД. Данное изменение было сделано для увеличения параллельности работы пользователей. Давайте рассмотрим подробнее механизмы хранения констант в системе 1С:Предприятие 8.
Подготовка базы данных
Во-первых, подготовим базу для нашего исследования. Для этого создадим пустую базу данных, в нее добавим 4 константы, а также 1 справочник. Константам назначим типы:
- «Константа1»: Строка, длина 10
- «Константа2»: Дата
- «Константа3»: СправочникСсылка.Справочник1
- «Константа4»: Составной тип данных: Строка, длина 10; Дата; СправочникСсылка. Справочник1
Во-вторых, создадим две простых обработки:
- Первая необходима для анализа способа хранения констант в базе данных. Суть этой обработки заключается в том, что необходимо вызвать платформенный метод ПолучитьСтруктуруХраненияБазыДанных(), а результат (таблицы базы данных, поля таблиц, индексы таблиц и поля индексов таблиц) вывести на форму обработки. Так же эту обработку можно скачать из статьи «Получение информации о структуре хранения базы данных в терминах 1С:Предприятие и СУБД».
- Вторая нам понадобится для анализа возможностей параллельной работы с константами. Ее можно скачать из вложений к статье (в конце статьи).
Платформа до версии 8.2.14, а также версии выше с включенным режимом совместимости 8.2.13 и ниже
Структура хранения констант
Как видно по структуре хранения, действительно, в СУБД создана одна таблица для хранения констант, называется она «Consts». Причем, структура этой таблицы такова, что каждая колонка таблицы отвечает за значение одной из констант. Дополнительно к этим полям, в таблице присутствует поле ключа записи «RecordKey». Здесь стоит упомянуть, что результатом метода ПолучитьСтруктуруХраненияБазыДанных() является все же не сама структура СУБД, а некоторая ее интерпретация (при выборе режима «В терминах 1С:Предприятие»).
Структура хранения констант в 1С:Предприятие (до 8.2.14)Для того чтобы получить более глубокое понимание структуры таблицы на уровне СУБД, необходимо перейти в среду управления соответствующей СУБД (или переключить обработку в режим «В терминах СУБД»). В моем случае, для СУБД MS SQL Server, этим инструментом является Management Studio. Открыв структуру нужной таблицы, мы обнаружим, что реальная структура таблицы в СУБД очень похожа на ту, что выдал нам метод ПолучитьСтруктуруХраненияБазыДанных(). Отличие между этими структурами заключается лишь в том, что для поля Fld27 (Константа 4) в СУБД создано целых 4 поля (Fld27_TYPE, Fld27_T, Fld27_S, Fld27_RRRef)! Это связано со способом хранения платформой значений составного типа и в данной статье не рассматривается.
Структура хранения констант в СУБДКак вы уже, наверное, догадались, поскольку значения констант хранятся в отдельных колонках, значит, в таблице существует только 1 запись с этими значениями. Это так же можно проверить выполнив простой запрос к данной таблице как на рисунке и получить в результате выборки только 1 строку.
Выборка из таблицы хранения константВозможности по параллельной работе с константами
Обладая знаниями о работе механизма блокировок, а также подкрепив теорию практикой, можно сделать вывод о параллельность работы данного механизма:
В режиме автоматических блокировок
Конкурентная запись, а так же конкурентные операции записи и чтения констант могут выполняться только последовательно, даже если эти действия выполняются над разными константами. Конкурентное чтение может выполняться параллельно.
Автоматический режим | Константа 2. Чтение | Константа 2. Запись |
---|---|---|
Константа 1. Чтение | Параллельно | Последовательно |
Константа 1. Запись | Последовательно | Последовательно |
В режиме управляемых блокировок
Конкурентная запись может выполняться только последовательно, даже если действия выполняются над разными константами. Конкурентное чтение может выполняться параллельно. Вопрос с конкуретными операции записи и чтения констант не так прост как кажется на первый взгляд. Поведение системы будет зависеть от порядка действий: запись, потом чтение; или чтение, потом запись. Также влиять будет фактор того, изменяется ли в действительности значение константы при записи или остается тем же (причина такого поведения мне не понятна, если Вы знаете почему — напишите в комментариях). И, конечно же, от наличия явных управляемых блокировок — т.к. с помощью данного механизма разработчик явным образом меняет поведение системы, будем считать что явные блокировки не устанавливаются. В этом случае параллельность работы будет представлена следующим образом: если модификации значения константы в действительности не происходит, тогда возможны параллельная запись и чтение.
Управляемый режим | Константа 2. Чтение | Константа 2. Запись |
---|---|---|
Константа 1. Чтение | Параллельно | Особые условия (см. выше) |
Константа 1. Запись | Особые условия (см. выше) | Последовательно |
Платформа с версии 8.2.14 без режима совместимости (или с совместимостью выше 8.2.13)
Структура хранения констант
Как видно, в отличие от платформы 8.2.13, для хранения каждой из констант создается своя таблица в базе (Const30, Const31, Const32, Const33). Как мы можем догадаться, это лучшим образом скажется на параллельности работы, будут ликвидированы «узкие» места связанные с записью разных констант.
Структура таблиц хранения констант. 1С:Предприятие 8.2.14Теперь перейдем к просмотру структуры в СУБД, как и для платформы версии 8.2.13, мы видим, что отображение структуры хранения на уровне платформы и на уровне СУБД схожи за тем исключением, что поле составного типа на уровне платформы отражается как единое целое, в то время как на уровне СУБД задействовано несколько полей.
Структура таблиц хранения констант SQL. 1С:Предприятие 8.2.14Количество записей в каждой из таблиц не изменилось (в каждой таблице 1 запись), что можно проверить методом, аналогичным первой части.
Возможности по параллельной работе с константами
Вследствие изменения структуры хранения констант, любые действия с разными константами могут выполняться параллельно. Таким образом, ограничения на параллельную работу будут только для констант одного вида. Помимо этого, появилось еще одно свойство, влияющее на параллельность работы — для платформы 8.3 на уровне СУБД была включена возможность использования нового уровня изоляции транзакций — Read Committed Snapshot.
В режиме автоматических блокировок
Конкурентная запись, а так же конкурентные операции записи и чтения констант, могут выполняться только последовательно. Конкурентное чтение может выполняться параллельно.
В режиме управляемых блокировок (без Read Committed Snapshot)
Конкурентная запись может выполняться только последовательно. Конкурентное чтение может выполняться параллельно. Аналогично платформе 8.2.13, вопрос конкурентной записи и чтения зависит от порядка действий, а так же изменяется ли значение константы. Если модификации значения константы в действительности не происходит, тогда возможны параллельная запись и чтение. Если модификация константы происходит, но сначала выполняется чтение, а затем запись — параллельная работа возможна. В оставшемся случае, когда происходит модификация значения константы и сначала происходит запись, а потом чтение — возможна только последовательная работа
В режиме управляемых блокировок (c Read Committed Snapshot)
Запись одной константы только последовательно. Конкурентное чтение, а также конкурентные операции записи и чтения могут выполняться параллельно вне зависимости от порядка действий.
Практическая проверка материала
Для практической проверки материала предлагается воспользоваться простой обработкой в созданной ранее базе данных. Обработку можно скачать из вложений к статье. Ее необходимо открыть в двух сессиях нашей базы и произвести конкурентные операции. Результат выполнения должен быть таким же как в данной статье.
Вакансии компании Константа — работа в Нижнем Новгороде, Москве
Компания «Константа» – проектный офис, который специализируется на разработке и внедрении информационных систем на платформе 1С в сфере управления производством, дистрибуцией, финансами и продажами для производителей и дистрибьюторов товаров повседневного спроса.
Компания Константа занимается внедрением и обслуживанием 1C на предприятиях, а также занимается управленческим учётом, 1C торговлей, управлением процессами и комплексной автоматизацией работает на рынке уже более 15 лет. Все эти годы мы динамично развиваемся, предоставляя своим сотрудникам отличные возможности профессионального и карьерного роста в направлении нашей деятельности.
Константа сегодня — это команда профессионалов с единой демократичной манерой управления, прозрачностью системы карьерного роста и достойным доходом.
Основное направление деятельности компании — создание систем учета и управления для средних и крупных производственных и дистрибьюторских компаний на базе типовых продуктов и собственных разработок на платформе 1С.8. Наш опыт насчитывает более 10 проектов на 1С:ERP.
Построение эффективной системы управленческого учета на базе программных продуктов 1С. Постановка и автоматизация систем учета и управления в сфере производства, финансов, логистики и продаж. IT-аудит. Построение системы управления производством. Управление закупками. Управление продажами. Управление складом. Эффективное управление транспортом. Бухгалтерский учет. Управление персоналом. Система электронного документооборота (СЭД).
Каждый проект «Константы» содержит три составляющие: консалтинг, автоматизация и обучение. В итоге наш клиент получает «под ключ» готовую работающую систему и обученный персонал, которому мы полностью передаем свою технологию.
При создании автоматизированной системы компания не просто подбирает и разрабатывает программное обеспечение, но и максимально глубоко вникает в проблемные и специфические условия своих клиентов, что в результате обеспечивает качественное решение поставленных заказчиками задач в сжатые сроки.
Комплексный подход выражается в охвате нами следующих элементов организационной и исполнительной части внедрения автоматизированной системы:
- обследование учетных подразделений заказчика
- консультации в выборе платформы (программного обеспечения и оборудования)
- создание модели ведения учета в автоматизированной системе
- разработка регламентов и инструкций для применения единообразных подходов в работе
- обучение центров ответственности заказчика
- авторское сопровождение в период промышленной эксплуатации
Мы помогаем нашим клиентам привести бизнес в порядок, при этом мы не просто коллеги, которые работают вместе, мы друзья!
Работа у нас: https://konstanta-it. ru/hr
Посмотреть на нас: https://www.youtube.com/channel/UCFiEh4putOPGAAuYSiHL8uQ
Добавиться к нам:
https: https://vk.com/konstanta_it
# | Константа | Символ | Значение | Единицы | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Скорость света в вакууме | (C) | 299792458 | M S -1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | . Проницаемость Vacuum | 79676666666666666666666666666666666666666666667. N A -2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | Диэлектрическая проницаемость вакуума | (эпсилон_0) | 8,854187817e-12 | F M -1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | Newtonian Constant of Gravitation | (G) | 6. 67259E -11 ± 8,5E -15 | M 3 KG -1928 S S S S S S S. S S S S S S S. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5 | Планковская постоянная | (h) | 6,6260755e-34 ± 4,0e-40 | Дж с | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | Планковская постоянная в эВ | 4,1356692e-15 ± 1,2e-21 | эВ с | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7 | h-стержень | (h-стержень) | 1,05457266e-34 ± 6,3e-41 | Дж с | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8 | h-bar в эВ | 6,582122e-16 ± 2,0e-22 | эВ с | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9 | Планковская масса | (m_p) | 2.17671е-08 ± 1.4е-12 | кг | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | Планковская длина | (l_p) | 1,61605e-35 ± 1,0e-39 | м | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11 | Планковское время | (t_p) | 5,39056e-44 ± 3,4e-48 | с | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12 | Элементарная плата | (e) | 1. 60217733e-19± 4,9е-26 | С | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 | Квант магнитного потока | (Phi_0) | 2,06783461e-15 ± 6,1e-22 | Вб | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14 | Josephson frequency-voltage quotient | 483597670000000 ± 1.4e+08 | V -1 s -1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
15 | Quantized Hall conductance | 3.87404614e -05 ± 1,7е-12 | Омега -1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16 | Квантованное сопротивление Холла | (R_H) | 25812,8056 ± 0,0012
|