Пример решения билета 1С Эксперт
Хочется сказать сразу, даже если вы отлично знаете все билеты, этого не достаточно для сдачи аттестации — готовьтесь к дополнительным вопросам.
В рамках подготовки к сертификации 1С Эксперт по технологическим вопросам размещаю пример моего решения типового билета с сайта 1С.
Пример ответа на билет 1С Эксперт по технологическим вопросам
ВОПРОС 1
В метаданных конфигурации определена последовательность «ПартионныйУчет» с измерением «Организация». Обработчик проведения документа содержит следующий код:
Отбор = Новый Структура («Организация»);
Отбор.Вставить(«Организация», Организация);
Последовательности.ПартионныйУчет.УстановитьГраницу(ТекущаяДата(), Отбор);
В каком случае документы этого вида смогут проводиться параллельно разными пользователями, а в каком нет? Обоснуйте свой ответ. Как можно повысить параллельность работы в этом случае?
ОТВЕТ
Разные документы данного типа будут проводиться только в том случае если реквизит «Организация» будет различаться. Связанно это с тем, что система будет блокировать до конца транзакции целиком таблицу последовательности по данному ресурсу.
Повысить производительность системы в данном случае можно не используя объект «Последовательность» при оперативном проведения документов. Лучше рассчитывать себестоимость после, в нерабочее время, с помощью регламентной обработки.
ВОПРОС 2
Что означает операция TABLE SCAN в плане запроса MS SQL Server?
В каком случае наличие этой операции указывает на проблемы с производительностью запроса?
Какие негативные последствия для производительности системы может иметь выбор MS SQL Server’ом такого плана запроса?
Чем эта операция отличается от CLUSTERED INDEX SCAN?
Назовите возможные причины подобной «ошибки» MS SQL Server’а.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
ОТВЕТ
TABLE SCAN — полное или частичное сканирование (обход) таблицы. Само по себе это не ошибка. Однако, при больших объемах данных в таблице может сильно снизить производительность системы. Ошибкой это является когда СУБД сканирует всю таблицу, а возвращает лишь несколько записей.
CLUSTERED INDEX SCAN — сканирование таблицы индекса, а TABLE SCAN сканирование данных.
Чаще всего возникновение TABLE SCAN указывает на то, что запрос в 1С был построен не оптимально, скорее всего использован запрос в условии соединения или не верно установлены параметры в запросе (не проиндексированы поля, не верная последовательность полей, установка отбора конструкцией ГДЕ).
ВОПРОС 3
Имеется реально работающая многопользовательская информационная система на платформе 1С Предприятие 8.1. В результате анализа производительности системы были обнаружены следующие избыточные блокировки в документах вида «РеализацияТоваровУслуг»:
Блокировка избыточных записей при проверке остатков по регистру ТоварыНаСкладах. Причина — неоптимальный план запроса.
Блокировка на пустой таблице регистра ТоварыОрганизаций. Причина — особенности реализации блокировок в MS SQL Server
Блокировка на соседних записях диапазона индекса при работе с регистром ПартииТоваров. Причина — особенности реализации блокировок в MS SQL Server
Предложите способ решения этой задачи. Опишите подробно все необходимые действия.
ОТВЕТ
Если конфигурация работает в режиме автоматической блокировки общая рекомендация — перевод на управляемые блокировки.
Блокировка избыточных записей при проверке остатков по регистру ТоварыНаСкладах.
Необходимо проверить запросы в конфигурации и проверить настройку СУБД — возможна не верная настройка регламентных операций.
Блокировка на пустой таблице регистра ТоварыОрганизаций. Причина — особенности реализации блокировок в MS SQL Server
Блокировка на соседних записях диапазона индекса при работе с регистром ПартииТоваров. Причина — особенности реализации блокировок в MS SQL Server
Используется очень высокий уровень изоляции транзакции — SERIALIZABLE, которым СУБД может блокировать лишние данные. Спасёт перевод конфигурации на управляемые блокировки.
Интересно ваше мнение
Если у вас есть еще какие нибудь мысли или комментарии — просьба их оставлять в комментариях, обсудим, найдем решение.
Спасибо! 🙂
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Михаил:
По последовательности:
Что если рассматривать вариант добавления в последовательность «Склада».
Тогда возможна параллельная работа пользователей разных организаций и складов. Это возможно, например если мы имеем базу в которой работает множество розничных точек, у каждой свой склад и они не пересекаются.
Поправьте, если я ошибаюсь.
Программист 1С:
Да, вы правильно думаете.
Кстати! Это один из способов оптимизации – добавить в последовательность дополнительные разрезы.
Где то, вроде на ИТС, валяется кейс, где люди для оптимизации добавляют в последовательность измерение договор контрагента. И при восстановлении последовательности приходится перепроводить не все документы по организации, а по связке – договор/организация.
ripreal:
Если добавить в последовательность измерение склад, то параллельность работы улучшится, но по-моему может пострадать контроль остатков при внутрискладских перемещениях
Остапченко:
уровень изоляции транзакции — SERIALIZABLE
Разве SERIALIZABLE — это, вроде, уровень блокировки, а не уровень изоляции транзакции?
Кирилл:
Да нет, вроде бы уровень изоляции транзакции, как и Reapetable Read, Read commited и т.д