Технические моменты оптимизации программы “1С...
-

Технические моменты оптимизации программы “1С:Бухгалтерия 2.0”

0
7973
01.04.2016 Александр Логачев
  Управленческий учет, даже если предприятие самое что ни на есть честное, отличается от бухгалтерского, а тем более от налогового. Многие крупные компании, внедрившие у себя комплексные продукты (УПП, КА, ERP и т.п.), были вынуждены значительно изменить управленческий учет (или его видение на этапе макетирования) под влиянием регламентированного учета. Найти баланс между требованиями бизнеса и регламентированным учетом довольно сложно. Первый, как правило, требует много изменений в типовые конфигурации. И мы можем не принимать во внимание выпуск новых версий с исправлением ошибок, добавлением нового функционала, так как для этого у нас уже есть устоявшаяся система учета, которая покрывает потребности. Но с регламентированным учетом так не получается. Изменений тут более чем предостаточно (ходит даже такая шутка: агенты 1С есть во всех госорганах и в доле за изменения форм отчетности, бланков, сроков и т.п.). Действительно, 1С оперативно выпускает изменения, связанные с регламентированным учетом. И здесь возникает самая большая проблема: как «накатить» изменения, не тронув устоявшийся рабочий механизм? Особенно это актуально для организаций, работающих 24/7, где простой даже в полчаса может очень дорого стоить компании.  
   
  Многие компании пошли по пути полного разделения управленческого и регламентированного учета. Да, такой подход требует бОльших начальных затрат, написание дополнительных обменов, регламентов, но в долгой перспективе он выгоднее. Трудозатраты на обновление «типовой» бухгалтерии незначительные, и при этом не останавливается основной рабочий процесс. Максимум, что дополнительно потребуется, это «допиливание» обмена для какого-нибудь нового реквизита. Есть еще один немаловажный пункт — бухгалтерия может ждать, и задержка данных даже на несколько дней не остановит общий процесс. В таких предприятиях, как правило, регламентированный учет упрощен до минимума. С ростом предприятия увеличивается документооборот, и если в управленческой базе с наступлением таких проблем можно изменить структуру, разделить базы (например, по складам, и получать сводную отчетность менее детализировано), то с регламентированным учетом все сложнее: сильно изменять конфигурацию нельзя, но по скорости работа уже не удовлетворяет. К примеру, на момент обращения представителей крупного интернет-магазина в ООО «Кодерлайн» с просьбой помочь с оптимизацией регламентированного учета в программе «1С:Бухгалтерия 2.0», количество документов «Реализация товаров и услуг» доходило у них до 8000–10 000 в день, а проведение месяца занимало более двух дней.  
     
  Перед нами поставили две основные задачи:  
     
 
  • уменьшить время проведения документов за месяц
  • добиться оптимизации с минимальными изменениями конфигурации для возможности быстрого обновления
 
  Задача относительно простая, но второй пункт связывает руки и полет фантазии. Было решено разделить задание:  
     
 
  • уменьшить количество обращений к серверу и БД
  • отключить не использующиеся блоки учета
 
  Создание каждого объекта документа опрашивает константы. Кроме того, что само получение объекта вызывает обращение к БД, так и получение констант, например, валюты учета, занимает сопоставимое с ним время. А как часто меняется валюта регламентированного учета? Первое что было сделано, это переопределен вызов на получение констант в дополнительный модуль повторного использования. Благодаря уменьшению количества обращений к базе данных только на константах был получен прирост около 3–5%. Затем последовали переопределение на этот же модуль получения часто используемых реквизитов (например, получение «Головной организации»: при проведении каждой проводки обращение минимум 2 раза) и отключение лишних проверок в типовом функционале (например, проверки дат запрета редактирования для некоторых регистров, вызовов подсистемы обмена и т.п.). За счет всего вышеперечисленного нам удалось увеличить производительность и уменьшить время проведения документов на 15%. Нами был проведен анализ быстродействия существующего нетипового функционала (программных модулей, написанных сторонними организациями). В результате проведенных работ по оптимизации нетипового функционала удалось добиться уменьшения времени проведения еще на 10%.  
     
  В итоге добились прироста производительности приблизительно на 25%. Кто-то может возразить, что мало, но при поставленных ограничениях на изменения конфигурации — это очень даже много. И заметьте, без изменений аппаратной части. А сколько бы стоило upgrade «железа» для такой производительности? Еще один немаловажный момент: чисто технически можно обновить конфигурацию несмотря на изменения, для бухгалтерии ничего не поломается и будет работоспособно, позже можно снова внести эти изменения.  
     

 

Технические моменты оптимизации программы "1С:Бухгалтерия 2.0"

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

ДО:

 
 
Функция ЭтоСубсчет( Субсчет, Счет) Экспорт  
   Если НЕ ЗначениеЗаполнено(Субсчет) Тогда     
     Возврат Ложь;
   КонецЕсли;
Возврат ( Субсчет.ПринадлежитЭлементу(Счет) ИЛИ Субсчет = Счет);
КонецФункции

 
 

    ПОСЛЕ:

 
 
Функция ЭтоСубсчет( Субсчет, Счет) Экспорт
    Возврат ПолучениеЗначенийПовтИсп.ЭтоСубсчет( Субсчет, Счет);
    Если НЕ ЗначениеЗаполнено(Субсчет) Тогда
       Возврат Ложь;
    КонецЕсли;
Возврат ( Субсчет = Счет ИЛИ Субсчет.ПринадлежитЭлементу(Счет) );
КонецФункции 
 
  Полный вариант статьи с кодом 1С - ЗДЕСЬ

Если есть вопросы по оптимизации программы “1С:Бухгалтерия” - обращайтесь!
 
   

Александр Логачев,

    руководитель отдела разработки ООО “Кодерлайн”

 

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Услуги программиста 1С
Получите специалиста
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.