В процессе эксплуатации системы «1С:Документооборот» часто используются дополнительные обработчики для автоматизации рутинных задач, таких как регистрация документов и заполнение файлов по шаблонам. Однако иногда стабильно работающий механизм внезапно дает сбой, выдавая техническую ошибку: «Ошибка работы с приложением MS Word. Необходимо проверить правильность установки приложения». В данной статье мы подробно разберем причины возникновения этой ситуации, проанализируем программный код обработчика и предложим пошаговый алгоритм решения проблемы.
Рассмотрим типовой код дополнительного обработчика, который выполняет поиск задачи, регистрацию связанного документа и последующее заполнение прикрепленного файла данными из системы. Разберем логику его работы, чтобы понять, на каком этапе происходит сбой.
// Поиск объекта
Задача = Событие.Источник;
Выполнять = Ложь;
Если ТипЗнч(Задача.БизнесПроцесс) = Тип("БизнесПроцессСсылка.Рассмотрение") Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Предметы.РольПредмета,
| Предметы.Предмет
|ИЗ
| Задача.ЗадачаИсполнителя.Предметы КАК Предметы
|ГДЕ
| Предметы.Ссылка = &ЗадачаСсылка";
Запрос.УстановитьПараметр("ЗадачаСсылка", Задача);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Предмет.ПолучитьОбъект();
Если ТипЗнч(Объект.Ссылка) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда
Если (СокрЛП(Объект.ВидДокумента) = "Рассмотрение заявки") Тогда
Выполнять = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
В первой части кода мы проверяем контекст выполнения: относится ли текущая задача к бизнес-процессу Рассмотрение и связан ли с ней документ нужного вида. Если условия соблюдены, алгоритм переходит к регистрации документа и заполнению шаблонов.
Если Выполнять Тогда
// Автоматическая регистрация
Если Не ЗначениеЗаполнено(Объект.РегистрационныйНомер) Тогда
Нумератор = Нумерация.ПолучитьНумераторДокумента(Объект);
Если ЗначениеЗаполнено(Нумератор) Тогда
ДатаРегистрации = ТекущаяДата();
ТекущийПользователь = Пользователи.ТекущийПользователь();
Объект.ДатаРегистрации = ДатаРегистрации;
СтруктураПараметров = НумерацияКлиентСервер.ПолучитьПараметрыНумерации(Объект);
Нумерация.СформироватьЧисловойНомерДокумента(СтруктураПараметров, Объект.ЧисловойНомер);
ОписанияОшибок = Новый СписокЗначений;
Нумерация.СформироватьСтроковыйНомерДокумента(СтруктураПараметров, Объект.РегистрационныйНомер, ОписанияОшибок);
Объект.Зарегистрировал = ТекущийПользователь;
Объект.Записать();
Делопроизводство.ЗаписатьСостояниеДокумента(Объект.Ссылка, ДатаРегистрации, Перечисления.СостоянияДокументов.Зарегистрирован, ТекущийПользователь);
КонецЕсли;
КонецЕсли;
// Автозаполнение файлов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Файлы.Ссылка
|ИЗ
| Справочник.Файлы КАК Файлы
|ГДЕ
| Файлы.ВладелецФайла = &ВладелецФайла
| И Файлы.ПометкаУдаления = ЛОЖЬ";
Запрос.УстановитьПараметр("ВладелецФайла", Объект.Ссылка);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Файло = Выборка.Ссылка;
// Критическая точка: вызов интеграции с MS Word
ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, Файло, Истина);
КонецЦикла;
КонецЕсли;
КонецЕсли;
Сбой происходит именно в методе АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца. Эта функция обращается к COM-объекту Microsoft Word для модификации текста внутри файла. Если система не может инициализировать Word, работа обработчика прерывается с ошибкой. В качестве альтернативы, исключающей зависимость от внешних офисных приложений, можно использовать механизм автозаполнения шаблонов файлов в формате MXL.
Проанализируем наиболее простую и распространенную причину. Современные версии Microsoft Office и библиотеки 1С по-разному взаимодействуют с устаревшими форматами файлов. Выясним, почему формат имеет значение:
Что нужно сделать: Если обработчик перестал работать для конкретного документа, проверьте расширение прикрепленного файла. Замените файл шаблона с .doc на .docx. Как показывает практика, в большинстве случаев это мгновенно устраняет ошибку инициализации приложения. Для автоматизации этого процесса можно использовать расширение для автоматической конвертации файлов doc в docx при добавлении к документам.
Посмотрим на ситуацию, когда формат файла верный, но ошибка сохраняется. Выясним, не поврежден ли сам элемент справочника Файлы или его двоичные данные. Проанализируем следующие шаги:
Если проблема носит массовый характер или проявляется периодически на стороне сервера, проанализируем настройки операционной системы. Для корректной работы COM-объектов MS Word под учетной записью службы 1С (например, USR1CV8) требуются определенные системные папки. Без них Word не сможет создать временные файлы при запуске в фоновом режиме.
Рассмотрим порядок действий для системного администратора:
C:\Windows\SysWOW64\config\systemprofile\DesktopC:\Windows\System32\config\systemprofile\DesktopРазберем ситуацию, когда Word установлен, но система 1С «не видит» его прав на запуск. Это решается через утилиту настройки служб компонентов.
dcomcnfg в строке выполнения Windows.Выясним, как внешние факторы влияют на работу обработчика. Часто ошибки начинаются после установки обновлений Windows или MS Office.
Проанализируем важные моменты:
WINWORD.EXE под учетной записью службы 1С, это означает, что предыдущие сессии не были корректно завершены. Завершите все эти процессы принудительно.Таким образом, если ваш дополнительный обработчик в «1С:Документооборот» внезапно перестал заполнять файлы, первым делом проверьте формат шаблона (.docx) и наличие необходимых системных папок на сервере. Эти простые действия решают до 90% проблем, связанных с автоматизацией формирования документов.