Почему долго формируется письмо для отправки в 1С:Бухгалтерии 3.0 и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

Мы с вами рассмотрим распространенную проблему, с которой сталкиваются пользователи 1С:Бухгалтерии 3.0 и других конфигураций на управляемых формах – это значительное замедление процесса формирования письма для отправки по электронной почте. Вместо привычных 1-2 секунд ожидание может затягиваться до 15 и более секунд. Это становится особенно критичным при необходимости массовой отправки документов, например, счетов на оплату.

Обычно ситуация проявляется следующим образом: вы открываете документ, например, счет на оплату клиента, нажимаете кнопку "Отправить по электронной почте", выбираете необходимый формат вложения (например, PDF), и после этого наступает продолжительное ожидание, прежде чем откроется форма создания нового письма. Подобные задержки часто возникают после обновления конфигурации до новых релизов, таких как БП 3.0.182.33 или 3.0.183.24, в то время как на более старых релизах проблема отсутствует.

Выясняем корневую причину замедления

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

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

Около 80% и более всего времени ожидания может приходиться именно на соединение по протоколу HTTP, что четко указывает на проблему взаимодействия с внешними интернет-сервисами. Таким образом, несмотря на то что вы просто хотите отправить PDF-файл, система в фоновом режиме выполняет целый ряд действий по синхронизации и обновлению данных, не связанных напрямую с формированием текущего письма, но необходимых для обеспечения корректной работы ЭДО.

Анализируем замеры производительности для точной диагностики

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

  1. Выполнение замера: Запустите 1С в режиме отладки или с включенным счетчиком производительности. Выполните действия, которые вызывают проблему (например, откройте счет, нажмите "Отправить по электронной почте" и дождитесь появления формы). После этого завершите замер производительности.
  2. Анализ файла .pff: Откройте полученный файл .pff с помощью стандартных средств платформы 1С или специализированных инструментов. Мы должны обратить внимание на следующие аспекты:
    • Модуль ПолучениеФайловИзИнтернетаСлужебный: Убедитесь, что большая часть времени действительно приходится на этот модуль.
    • HTTP-соединения: Ищите операции, связанные с HTTP-запросами. Часто будет видно, что значительная часть времени тратится на "соединение по HTTP".
    • Количество файлов: Замер может показать, сколько файлов система пытается получить. Например, упоминалось, что система пытается скачать около 20 файлов.
  3. Установка точки останова: Чтобы точно выяснить, к каким адресам обращается система и что именно скачивается, мы можем использовать точку останова. Это потребует некоторых навыков программирования на 1С.

    Откройте конфигурацию в режиме отладки (или через F11). Найдите модуль ПолучениеФайловИзИнтернетаСлужебный. Установите точку останова в начале или внутри функций, отвечающих за HTTP-запросы (например, Получить, ВыполнитьHTTPЗапрос). При следующем выполнении проблемной операции, отладчик остановится, и мы сможем пошагово проанализировать, какие параметры передаются в функции, какие адреса используются и какое содержимое загружается. Это поможет нам определить, связаны ли эти обращения с правилами ЭДО или другими служебными данными.

    
    // Примерная логика для установки точки останова в модуле
    // ПолучениеФайловИзИнтернетаСлужебный или схожем модуле БСП.
    // Точный код зависит от конкретного релиза и реализации.
    
    // Предположим, что есть функция, которая выполняет HTTP-запрос
    Функция ПолучитьФайлПоАдресу(АдресРесурса) Экспорт
        // Установите здесь точку останова
        #Если ТолстыйКлиентОбычноеПриложение Тогда
            Сообщить("Обращение к адресу: " + АдресРесурса);
        #КонецЕсли
        // ... далее код выполнения HTTP-запроса ...
        Попытка
            HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
            HTTPСоединение = Новый HTTPСоединение(АдресРесурса); // Упрощено, нужна парсинг адреса
            Ответ = HTTPСоединение.Отправить(HTTPЗапрос);
            Если Ответ.КодСостояния = 200 Тогда
                Возврат Ответ.ПолучитьТелоКакСтроку(); // Или как двоичные данные
            КонецЕсли;
        Исключение
            Сообщить("Ошибка при получении файла: " + ОписаниеОшибки());
        КонецПопытки;
        Возврат Неопределено;
    КонецФункции
    

    Мы должны обращать внимание на переменные, содержащие URL-адреса, и на данные, которые передаются или принимаются.

Временные решения и обходные пути

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

  1. Отключение формирования ZIP-архива:

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

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

  2. Проверка сетевых настроек и окружения:

    Поскольку проблема связана с HTTP-запросами к внешним ресурсам, мы должны внимательно проверить сетевое окружение, в котором работает 1С.

    • Настройки прокси-сервера: Если в вашей сети используется прокси-сервер, убедитесь, что его настройки корректно указаны в 1С (если это применимо) и что он не блокирует или не замедляет доступ к необходимым ресурсам 1С.
    • Фаервол (брандмауэр): Проверьте правила фаервола на компьютере и сетевом оборудовании. Возможно, он блокирует или проверяет каждый исходящий запрос от 1С к серверам обновлений правил ЭДО, что приводит к задержкам. Мы можем временно отключить его для теста или добавить исключения для процессов 1С.
    • Скорость интернет-соединения: Убедитесь, что само интернет-соединение стабильно и имеет достаточную скорость. Даже небольшие файлы, загружаемые многократно, могут создавать задержки при плохом канале.
    • База данных: Хотя проблема в основном сетевая, мы должны исключить влияние самой файловой базы. Убедитесь, что база данных не имеет повреждений и находится на быстром диске.

Постоянное решение: Обращение в 1С и применение патчей

Поскольку описанная проблема, скорее всего, является багом платформы или конфигурации 1С, наиболее эффективным и долгосрочным решением будет взаимодействие с разработчиком. Мы рассмотрим, как это сделать.

  1. Использование номера ошибки (Баг-репорт):

    Мы выяснили, что эта ошибка уже зарегистрирована в системе баг-репортов 1С под номером 00-00785098. Эта информация критически важна для обращения на линию консультаций (ЛК) 1С. При обращении мы должны предоставить всю собранную информацию:

    • Описание проблемы: Подробно опишите симптомы, как они проявляются, и при каких действиях.
    • Версия платформы и конфигурации: Укажите точные релизы (например, БП 3.0.182.33, платформа 8.3.27.1688).
    • Файл замера производительности (.pff): Приложите к обращению файл замера, который вы сделали. Это позволит специалистам 1С быстро увидеть, где именно происходят задержки.
    • Упоминание бага: Обязательно укажите, что, по вашим данным, проблема связана с ошибкой № 00-00785098, проявляющейся в постоянном обновлении правил конвертации ЭДО через модуль ПолучениеФайловИзИнтернетаСлужебный при каждой отправке письма. Мы подчеркнем, что такое поведение не является нормальным, так как обновление правил должно происходить гораздо реже (например, не чаще раза в день).

    Обращение на ЛК 1С с такой подробной информацией и номером бага значительно ускорит процесс получения решения или патча.

  2. Применение патчей для модуля УправлениеПечатьюПереопределяемый:

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

    Как работает патч (предполагаемая логика): Патч, вероятно, изменит логику модуля УправлениеПечатьюПереопределяемый или связанных с ним подсистем таким образом, чтобы:

    • Кэшировать правила ЭДО: Система будет кэшировать полученные правила конвертации ЭДО локально и использовать их, не обращаясь каждый раз к интернету.
    • Ограничить частоту обновлений: Механизм обновления правил ЭДО будет скорректирован так, чтобы проверять и скачивать обновления не чаще установленного интервала (например, раз в день), а не при каждой попытке отправки письма.
    • Оптимизировать сетевые запросы: Возможно, будет улучшена обработка HTTP-запросов, уменьшено количество одновременных запросов или их размер.
    
    // Пример концептуального изменения в модуле УправлениеПечатьюПереопределяемый (или связанном модуле БСП)
    // после применения патча. Это не реальный код патча, а иллюстрация принципа.
    
    Функция ПодготовитьДокументКОтправкеПоПочте(ДокументСсылка, ФорматВложения) Экспорт
    
        // ... Начальный код подготовки документа ...
    
        // --- Место, где ранее происходили частые обращения к интернету ---
        // Старая логика:
        // ПолучениеФайловИзИнтернетаСлужебный.ОбновитьПравилаЭДО(); // <-- Вызывалось слишком часто
    
        // Новая логика после патча (концептуально):
        Если Не КэшПравилЭДО.Актуален() Или КэшПравилЭДО.ИстекСрокДействия() Тогда
            Попытка
                // Предполагается, что эта функция будет более умной и проверит дату обновления
                // прежде чем лезть в интернет, или будет вызываться по расписанию.
                ПолучениеФайловИзИнтернетаСлужебный.ОбновитьПравилаЭДОСКонтролемЧастоты();
                КэшПравилЭДО.УстановитьАктуальность();
            Исключение
                // Обработка ошибок обновления, чтобы не блокировать отправку
                ЖурналРегистрации.Записать(НСтр("ru = 'Ошибка обновления правил ЭДО. Используются старые правила.'"),
                                          УровеньЖурнала.Предупреждение);
            КонецПопытки;
        КонецЕсли;
        // --- Конец изменений ---
    
        // ... Остальной код формирования и отправки письма ...
    
        Возврат Успешно;
    КонецФункции
    

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

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

← На главную