Заказать звонок
Частный программист 1С в посёлке Майский (Белгородской области)
Рейтинг: 0/5 - 0 голосов

      Не мало крупных предприятий в выборе программы автоматизации между такими системами, как «FRONTOL", "Dalion", "Штрих-М", "Галактика", "Парус", "IT Предприятие", "1С" и другими менее распространенными, отдали своё предпочтение последней. В силу существования развитых готовых типовых решений и отраслевых, относительно недорогой стоимостью внедрения и дешевой совокупной стоимостью владения автоматизированной системы с помощью 1с 8.3.

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

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

Какой выход из сложившейся ситуации? Если Вы решили перейти на новую информационную платформу, то готовы ли Вы вновь выложить не малые деньги и затратить не мало времени на то, чтобы функционал системы был переписан? Ведь более 80% организаций в Белгородской области остаются работать на версии 7.7, 8.2 и не производят переход на новую платформу 8.3 в том числе и по причине больших материальных затрат.

Альтернативным решением проблемы медленной работы системы является оптимизация 1С средствами Microsoft SQL Server. Данный способ получает довольно широкое распространение и позволяет ускорить 1C в десятки раз, тем самым открывая Вашей системе второе дыхание и возможность не только нормального функционирования, но и базу для расширения спектра решаемых задач.

Обслуживание 1С в посёлке Майский

Сфера деятельности:

  • оптимизация, ускорение работы 1С, как типовых конфигураций, так и индивидуальных, любой сложности;
  • внедрение 1С, разработка индивидуальных конфигураций;
  • интеграция систем 1С с другими учетными программами;
  • Работа с торговыми предприятиями и магазинам;
  • Внедрение систем маркировки «Честный знак» и ЕГОИС;
  • Настройка и обслуживание торгового оборудования: онлайн-касс, тсд, весов, сканеров штрих-кодов, принтеров этикеток;
  • разработка управленческой отчетности с использованием OLAP-технологий.

Мы - группа разработчиков, с многолетним опытом внедрения 1С на крупных производственных предприятиях и как никто другие знаем, что такое большие объемы данных, большое количество пользователей, сложные алгоритмы обработки данных, и каким образом существенно повысить производительность автоматизированных систем, разработанных на платформе 1С SQL Server и Windows Server 2012 R2.

В отличии от специалистов, использующих SQL лишь для быстрой выборки данных, и использующих различные компоненты, мы реализуем полную обработку данных на "чистом" transact-SQL, что в свою очередь по скорости в значительной мере превосходит использование любых компонент.

Зачастую нам удается достичь более чем 30-ти кратного ускорения проведения документов и более высшего показателя в формировании отчетов. Помимо Software средств мы осуществляем сборку, ремонт и модернизацию серверов для 1с на заказ в посёлке Майский. Мы используем современные процессоры на базе intel Xeon, а также скоростные SSD NVME диски позволяющие использовать платформу 1с 8.3 в файловом режим со скорость SQL доступа.

Услуги программиста 1С в Майском посёлке Белгородской области

На первоначальной стадии нам необходимы следующие данные системы:

  • в случае использования Вами типовой конфигурации, необходим ее релиз и наименование. В случае использования уникальной либо доработанной, необходим файл метаданных конфигурации (1сv7.md) для 7.7 и *.1CD, *.CF файлы для 8.2 и 8.3;
  • статистические данные системы (общий объем данных, прирост данных за отчетный период в общем и по каждому документу в отдельности, периодичность внесения данных и др., собираются с помощью нашей обработки);
  • технические характеристики и топология серверов 1С, рабочих станций пользователей (для анализа возможности использования готовых решений).
  • Необходимая дополнительная информация обсуждается в дальнейшем.

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

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

Настройка 1С SQL Сервера 8.3 в Майском (Белгородской области)

Для общего представления методики представим некоторые ключевые этапы, используемые нами для наиболее эффективной оптимизации быстродействия 1С 7.7, 8.2 и 8.3 SQL.

1. Использование интерфейса ADO, как средство связи с SQL сервером.

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

ADO является интерфейсом программного уровня к OLE DB обеспечивая высокопроизводительный доступ ко многим источникам данных. ADO и OLE DB вместе представляют собой основу стратегии Универсального доступа к данным (Universal Data Access). Объектная модель ADO определяет коллекцию программируемых объектов, которые могут использоваться в среде 1С, поддерживающей COM и Автоматизацию OLE.

Дополнительные возможности ADO, рекомендуемые для использования в 1С:

Использование языка определения данных (Data Definition Language - DDL)

Язык определения данных — это такие SQL операторы, которые поддерживают определения или объявления объектов БД, например CREATE TABLE, DROP TABLE или ALTER TABLE.

Использование подготовленных (Prepared) операторов

Запросы могут быть подготовлены перед их выполнением или могут быть непосредственно выполнены. Свойство Prepared объекта Command позволяет определить будет запрос подготавливаться или нет.

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

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

Генерация нескольких наборов записей

Вместо выполнения одного запроса несколько раз, SQL Server позволяет выполнять пакеты запросов. В результате выполнении пакета запросов может генерироваться более чем один набор записей. Кроме пакетных запросов, множественные наборы записей могут также генерироваться SQL операторами, включающими предложения COMPUTE BY и COMPUTE, или хранимыми процедурами, которые содержат более одного оператора SELECT.

2. Использование "чистого" transact-SQL.

Что означает "чистого"? На сегодняшнее время существует ряд компонент, позволяющих из среды 1С формировать запросы, которые как по своим возможностям, так и по скорости выполнения превосходят запросы 1С, однако, к сожалению, далеко не в полной мере реализуют механизмы запросов MS SQL. Предназначением таких компонент является только одно - выполнение SQL-запросов на выборку данных, вся последующая обработка выполняется встроенным языком 1С. Однако этого недостаточно для оптимизации сложных документов системы, ведь весь процесс обработки данных в 1С сводится к трем этапам — это выборка данных, ее обработка, запись результатов в итоговые таблицы. И не вдаваясь в особенности поведения 1С на каждом из этих шагов, нужно отметить, что в основном, на первый этап затрачивается не более 30% суммарного времени. Таким образом, использование стандартного T-SQL и прямых запросов к серверу (как на выборку, так и на обновление данных), как минимум в 3 раза эффективнее, нежели различные "ускоряющие" компоненты.

3. Использование хранимых процедур сервера.

Выполнение хранимых процедур очень похоже на выполнение подготовленных запросов, за исключением того, что хранимая процедура существует как объект в БД даже когда выполнение запроса закончено. Хранимые процедуры позволяют повысить производительность, расширяют возможности программирования и поддерживают функции безопасности данных. Вместо хранения часто используемого запроса, клиенты могут ссылаться на соответствующую хранимую процедуру. При вызове хранимой процедуры ее содержимое сразу же обрабатывается сервером. Кроме собственно выполнения запроса, хранимые процедуры позволяют также производить вычисления и манипуляцию данными - изменение, удаление. При первом запуске хранимой процедуры она компилируется (выполняется синтаксический анализ и генерируется план доступа к данным, производится выбор оптимальных индексов). В дальнейшем её обработка осуществляется быстрее.

4. Модификация системных (хранимых) процедур 1С.

Одним из наиболее существенных результатов модификации таких процедур, является возможность параллельной записи и проведения документов (для реализации последнего необходим ряд дополнительного внесения изменений в логику поведения 1С). Запись данных в таблицы (регистры, журнал проводок и др.) так же выполняется посредством хранимых процедур. Как известно, регистры состоят из 2-х таблиц: таблица движений и таблица остатков. Сперва оборотные регистры имели лишь таблицу движений, но начиная с 20-го релиза и этот тип регистра заимел таблицу остатков. Хоть к оборотному регистру и не применимо понятие остатков, однако реализовано это было с целью повышения скорости формирования отчетов, по регистрам такого типа. Однако за скорость формирования отчета приходится расплачиваться скоростью записи данных и такого рода плата далеко не всегда оправдывает себя. Ведь если необходимо записать более 1 млн. записей (в зависимости от количества записей в таблице, записываемого количества и количества измерений, данная величина может быть гораздо меньше), то наличие таблицы остатков с многоколоночным кластерным индексом является настоящей проблемой. Ведь удаление и добавление записей в такую таблицу будет занимать не мало времени, да ещё и апдейт данных по таблице с множеством записей.

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

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

5. Использование sql-запросов на обновление и запись данных.

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

Мы не используем стандартные методы записи движений, как в оперативном, так и в бухгалтерском учете. Запись данных в таблицы 1С посредством прямых sql-запросов на обновление и вставку, в соответствии с определенными правилами и минуя интерпретатор 1С, позволяет достичь значительного превосходства в скорости по сравнению со стандартными способами записи данных 1С.

6. Использование дополнительных индексов таблиц.

7. Тонкая настройка SQL - сервера.

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

С примером оптимизации 1С посредством T-SQL можно ознакомиться здесь.

Разработки

Диспетчер проведения документов.

Назначение модуля:

  • распределение нагрузки между серверами системы (терминальным и баз данных)
  • управление потоком обрабатываемых документов
  • повышение скорости обработки проведения документов
  • реализация пользовательских блокировок 1С
  • дополнительные возможности
  • основные принципы функционирования
  • скриншоты

1.Распределение нагрузки между серверами системы

Повышение работоспособности системы и скорости проведения документов достигается за счет распределения нагрузки между ее серверами (рабочими станциями), как в случае клиент-серверной организации 1С, так и в случае Terminal+SQL server.

В случае топологии Terminal server + Sql server, даже при равных технических характеристиках серверов, нагрузка на терминальный сервер значительно выше, нежели на сервер БД (SQL server). Как правило, при интенсивной нагрузке терминала (>90%), нагрузка на сервер БД составляет не более 50%. Такое явление происходит в силу несовершенства механизма обработки данных самой 1С. Нагрузка терминального сервера состоит из обработки отчетов, форм различных объектов конфигурации, из обработки проведения документов, причем последнее значительно расходует его вычислительные ресурсы.

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

2. Управление потоком обрабатываемых документов

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

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

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

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

3. Повышение скорости обработки проведения документов

В случае архитектуры серверов, используемых 1С:

терминальный сервер RDP (MS Terminal server + 1C 7.7 SQL-версия)

сервер БД (MS SQL Server 2000)

причины повышения производительности при использовании диспетчера проведения документов описаны в пункте 1.

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

4. Управление пользовательскими блокировками

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

Чтобы устранить данную зависимость, были разработаны собственные пользовательские блокировки, функционал которых включен в состав комплекса "диспетчер проведения документов".

5.Дополнительные (сервисные) возможности

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

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

формирование реестра проведенных/не проведенных (с пользовательскими ошибками) документов, как по определенному пользователю, так и по всем, как с сопутствующей информацией, так и без нее.

отображение текущего состояния (заданий) сервера для пользователя.

административные функции: принудительная остановка проведения документов; задание фильтра видов документов, для определения места проведения документов; управление дополнительным сеансом 1С (включение, выключение, задание времени жизни сеанса).

6.Принцыпы функционирования

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

Для реализации данной разработки использовались внешние компоненты 1С; средства, входящие в состав Windows 2000 Resource Kit Tools (для управления доп. сеансом); модификация системных процедур 1С, дополнительные хранимые процедуры SQL.

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

Диспетчер проведения является готовым решением и может быть использован в любой конфигурации 1С. На данный момент успешно используется на 2-х крупных производственных предприятиях (см. наши клиенты).