Научная статья на тему 'Адаптация конфигурации на базе платформы «1С:Предприятие» к работе в клиент-серверном режиме. Управление шаблонами запросов 1С'

Адаптация конфигурации на базе платформы «1С:Предприятие» к работе в клиент-серверном режиме. Управление шаблонами запросов 1С Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
148
19
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Адаптация конфигурации на базе платформы «1С:Предприятие» к работе в клиент-серверном режиме. Управление шаблонами запросов 1С»

УДК 004.657

К. В. Нинилина

Омский государственный технический университет, г. Омск

АДАПТАЦИЯ КОНФИГУРАЦИИ НА БАЗЕ ПЛАТФОРМЫ «1С: ПРЕДПРИЯТИЕ»

К РАБОТЕ В КЛИЕНТ-СЕРВЕРНОМ РЕЖИМЕ.

УПРАВЛЕНИЕ ШАБЛОНАМИ ЗАПРОСОВ 1С

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

268

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

Основным концептуальным решением, отличающим систему «1С: Предприятие» от универсальных средств программирования, является четкое разделение на платформу и прикладное решение. Технологическая платформа 1С:Предприятия предоставляет не только интерфейсные возможности ввода/вывода, но и реализует все механизмы необходимые для хранения, обработки и обновления информации, выполняя таким образом функции СУБД. Подобная многопрофильность не всегда способна удовлетворить потребности пользователей, в связи с чем все большее распространение получает клиент - серверный вариант работы, основанный на трехуровневой архитектуре «клиент-сервер». При написании данной статьи в качестве сервера СУБД использовался MS SQL Server 2008.

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

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

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

Оптимизацию производительности на уровне СУБД можно разделить на стандартную и тонкую оптимизацию. К стандартной в первую очередь относятся регулярные регламентные

269

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

В основе механизма запросов лежит встроенный язык запросов 1C. Этот язык основан на SQL, но при этом содержит значительное количество расширений, ориентированных на отражение специфики финансово-экономических задач и на максимальное сокращение усилий по разработке прикладных решений. В ходе написания статьи был проведен сравнительный анализ языка запросов 1С и T-SQL, и выявлены следующие основные отличия: обращение через точку в полях ссылочного типа; обращение к вложенным таблицам (табличным частям документов и элементов справочников); многомерное и многоуровневое формирование итогов; поддержка виртуальных таблиц; работа с временными таблицами; пакетные запросы; отсутствие коррелируемых подзапросов. Данные отличия языка запросов 1С вызваны наложением бизнес-логики на структуру данных, что призвано упростить работу пользователя с запросами. Однако в клиент-серверном варианте практически все расширенные возможности языка запросов 1С увеличивают вероятность снижения производительности, так как подобный 1C запрос транслируется в T-SQL уже не прямым образом и вызывает сложные по структуре запросы, зачастую противоречащие принципам оптимальности SQL.

Проблемы трансляции запросов в SQL исследовались с помощью таких инструментов, как SQL Profiler и Технологический журнал 1С. SQL Profiler - встроенное в MS SQL Server средство трассировки запросов, которое позволяет наблюдать за выполняющимися операторами T-SQL, предоставляет возможности сортировки и фильтрации для выявления операторов T-SQL, использующих основную часть ресурсов процессора. Технологический журнал 1С представляет собой совокупность каталогов и текстовых файлов, в которые система протоколирует информацию о работе некоторых внутренних механизмов платформы и взаимодействии с внешними компонентами, то есть настраиваемые «логи» системы.

В ходе исследований для написания статьи были отобраны запросы 1С из типовых конфигураций, изначально использующие расширения языка запросов, выявленные при сравнительном анализе; путем изучения технологического журнала и трассировок были изучены транслированные в T-SQL версии запросов. На основе анализа логической, семантической оптимальности SQL запросов, планов выполнения запросов были получены некоторые варианты реализации запросов в 1С, которые позволяют получать идентичные данные, но при трансляции в T-SQL в клиент-серверном варианте работы дают серверу запрос более адаптированный для обработки оптимизатором SQL Server. Подобная замена средств расширения языка запросов более простыми в понимании SQL структурами была подвергнута своего рода типизации, что позволило разработать универсальные рекомендации - принципы замены. Один из примеров таких рекомендаций, описан ниже для более четкого представления характера исследования.

Логика платформы 1С предоставляет возможность использовать ссылочный тип данных, который в терминах 1С позволяет для реквизита объекта указывать в качестве данных

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

270

квизита с составным типом данных в запросе (разыменование полей ссылочного типа) или при указании его в условии запроса, при трансляции в T-SQL будет использована конструкция JOIN - соединение. При этом SQL Server будет соединять столько таблиц сколько ссылочных типов содержит составной тип, а это ограничивается лишь логикой конфигурации. Ситуация усугубится если в запросе используется несколько реквизитов такого типа. В подобных случаях при конструировании 1C запроса для клиент-серверного варианта необходимо: если запрос включает небольшое число разыменованных полей, использовать «Соединение» уже в 1C запросе; если данные включают в составной тип большое число ссылочных, использовать конструкцию «Выразить» для приведения типов, которая позволит исключить невостребованные соединения при трансляции и сократить до минимума количество таблиц SQL Server, используемых запросом.

Зачастую разработчики в 1С не пишут запросы вручную, так как платформа содержит в себе инструмент «Конструктор запросов», который позволяет путем указания необходимых настроек и выбираемых данных получать текст запроса любой сложности автоматически, что облегчает процесс разработки. Так как запросы могут быть достаточно объемными, применение разработанных рекомендаций оптимизации запросов под SQL вручную, приводит к необходимости перечитывать автоматически собранный запрос и менять его структуру, тем самым увеличить время разработки в разы, что недопустимо. В связи с этим практическим результатом может стать новый инструмент, работа над которым ведется в рамках описанного исследования. Разрабатываемый инструмент - базовый оптимизатор, представляет собой внешний модуль для платформы «1 С: Предприятие», универсальный для любой типовой или самостоятельно разработанной конфигурации, который используя описанные принципы замены в формализованной форме, производит анализ выбранных запросов и преобразует их в форму адаптированную для клиент-серверного варианта. Такое преобразование послужит более корректной трансляции запроса в T-SQL и оптимальности последующей его обработки.

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

Библиографический список

1. Габец, А. П. Профессиональная разработка в системе 1С : Предприятие / А. П. Га-бец, Д. И. Гончаров. - М. : ООО «1С-Паблишинг», 2006. - 808 с.

2. Гончаров, Д. И. Технологии интеграции «1С:Предприятия 8.2» / Д. И. Гончаров,

Е. Ю. Хрусталева. - М. : ООО «1С-Паблишинг», 2011. - 358 с.

3. Использование запросов в системе «1С:Предприятие»: метод. материалы. - М. : ООО «1 С-Паблишинг», 2004. - 46 с.

4. Радченко, М. Г. 1С:Предприятие 8.1. Практическое пособие разработчика. Примеры и типовые приемы / М. Г. Радченко. - М. : ООО «1 С-Паблишинг» ; СПб. : Питер, 2007. -512 с.

5. Тоу, Д. Настройка SQL. Для профессионалов / Д. Тоу. - СПб. : Питер, 2004. - 333 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.