Как отправить письмо повторно в 1С:ЗУП 3, если кнопка «Отправить» неактивна?

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

В процессе работы с конфигурацией 1С:Зарплата и Управление Персоналом 3 (и другими решениями на базе Библиотеки стандартных подсистем — БСП) пользователи часто сталкиваются с ситуацией, когда уже отправленное электронное письмо необходимо переслать еще раз. Однако при открытии документа Исходящее электронное письмо обнаруживается, что кнопка «Отправить» неактивна (серая), а редактирование документа запрещено. Это не ошибка программы, а заложенная разработчиками логика защиты от случайного дублирования писем.

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

Почему кнопка «Отправить» становится недоступной?

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


Если Объект.СтатусПисьма = ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее") 
    И (НЕ ИнформационнаяБазаФайловая
    ИЛИ (Объект.ДатаКогдаОтправить <> Дата(1,1,1) И Объект.ДатаКогдаОтправить > ОбщегоНазначенияКлиент.ДатаСеанса())
    ИЛИ (Объект.ДатаАктуальностиОтправки <> Дата(1,1,1) И Объект.ДатаАктуальностиОтправки < ОбщегоНазначенияКлиент.ДатаСеанса())) Тогда
    
    Элементы.Отправить.Доступность = Ложь;
    
Иначе
    
    Элементы.Отправить.Доступность = Истина;
    
КонецЕсли;

Проанализируем этот код подробнее. Система блокирует кнопку в нескольких случаях:

  1. Статус письма: Если письмо уже имеет статус Исходящее или Отправлено, программа считает задачу выполненной.
  2. Режим базы: В клиент-серверных базах (не файловых) за отправку отвечает регламентное задание, поэтому ручная отправка блокируется сразу после постановки в очередь.
  3. Дата отложенной отправки: Если заполнено поле ДатаКогдаОтправить и это время еще не наступило, кнопка может быть неактивна.
  4. Срок актуальности: Если указана ДатаАктуальностиОтправки и она уже прошла, система блокирует отправку, считая сообщение устаревшим.

Способ 1. Использование группового изменения реквизитов

Это наиболее правильный и безопасный метод для администратора или опытного пользователя, позволяющий «вернуть к жизни» отправленное письмо без программирования. Рассмотрим его пошагово:

  1. Перейдем в раздел Администрирование — Обслуживание — Корректировка данных.
  2. Выберем пункт Групповое изменение реквизитов.
  3. В поле «Выбирать элементы типа» укажем Исходящее электронное письмо.
  4. Нажмем ссылку «Все элементы» и добавим условие отбора (например, по Ссылке, выбрав конкретное нужное нам письмо, или по Теме/Дате). Это критически важно, чтобы не изменить все письма в базе сразу!
  5. В списке доступных реквизитов найдем поле Статус.
  6. Установим новое значение: Черновик.
  7. Нажмем кнопку Изменить реквизиты.

После выполнения этих действий статус письма изменится, и при открытии документа кнопка «Отправить» снова станет активной. Мы сможем отредактировать письмо или отправить его в неизменном виде.

Способ 2. Очистка идентификатора сообщения

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

Если в письме заполнен технический идентификатор, который присвоил почтовый сервер, то при попытке повторной отправки сервер может распознать сообщение как дубль и отклонить его. Для «чистой» переотправки рекомендуется очищать это поле программно или через ту же обработку Групповое изменение реквизитов (если поле выведено в состав доступных для редактирования).

Способ 3. Правильное копирование письма

Часто пользователи пытаются использовать клавишу F9 (копирование). Однако в 1С:ЗУП 3 при копировании отправленного письма в новый документ могут перекочевать и признаки «отправленности». Чтобы этого избежать, проанализируем следующий алгоритм действий:

  1. Создадим копию письма (кнопка Скопировать или F9).
  2. Если кнопка «Отправить» в новом письме неактивна, попробуем перевыбрать учетную запись электронной почты. Это часто инициирует обновление формы и пересчет доступности элементов.
  3. Внесем любое незначительное изменение в тело письма (например, добавим пробел).
  4. Сохраним документ как черновик и откроем его заново.

Особенности файловых и клиент-серверных информационных баз

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

Если вы нажали «Отправить», кнопка стала неактивной, но письмо «зависло», выясним причину:

Таким образом, мы выяснили, что блокировка кнопки «Отправить» — это механизм контроля состояний объекта в 1С. Использование штатной обработки Групповое изменение реквизитов для перевода письма в статус Черновик является самым эффективным способом решения данной проблемы без необходимости доработки программного кода конфигурации.

← На главную