Как правильно обновить внешнюю печатную форму в сервисе 1С:Фреш

Программист IT и автоматизация бизнеса
← На главную

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

Анализируем функцию СведенияОВнешнейОбработке

Первое, на что необходимо обратить внимание — это программное описание обработки. В модуле объекта любой внешней обработки для 1С:Фреш должна присутствовать экспортная функция СведенияОВнешнейОбработке. Для системы важно не только содержимое кода, но и метаданные, которые передаются в структуру параметров. Рассмотрим типичный пример заполнения этой функции:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидДополнительнойОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Наименование = "Печатная форма счета с логотипом";
    ПараметрыРегистрации.Идентификатор = "СчетЗаказСЛоготипомНовый";
    ПараметрыРегистрации.Версия = "1.0.0.2"; // Вот этот параметр критически важен
    ПараметрыРегистрации.БезопасныйРежим = Истина;
    
    // Добавление команд
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Печать счета (обновленная)";
    НоваяКоманда.Идентификатор = "ПечатьСчета";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    
    Возврат ПараметрыРегистрации;
КонецФункции

Проанализируем ключевые моменты. Для того чтобы система поняла, что вы загружаете именно обновление, а не новую обработку, параметр Идентификатор должен оставаться неизменным. Однако параметр Версия обязательно должен быть увеличен (например, с 1.0.0.1 до 1.0.0.2). Если номер версии в коде совпадает с тем, что уже зарегистрирован в сервисе, механизмы автоматического обновления в информационных базах могут не сработать.

Настройка публикации в Менеджере сервиса

После того как файл подготовлен и аудит успешно пройден, необходимо проверить состояние публикации. Часто возникают ситуации, когда новая версия загружена, но она не «подцепляется» к приложению. Разберем по шагам, как это проверить:

  1. Зайдем в Менеджер сервиса (Личный кабинет) под правами владельца абонента или администратора.
  2. Найдем нашу обработку в списке дополнительных отчетов и обработок.
  3. Проверим статус публикации. Попробуем отключить публикацию и затем включить её заново. Это инициирует принудительную перерегистрацию обработки во всех связанных базах.
  4. Связь с приложениями: Это один из важнейших моментов. Убедимся, что в карточке обработки в разделе «Приложения» установлены галочки напротив тех информационных баз, где должна работать эта форма. Если база клиента не выбрана, обновление просто не будет доставлено в целевую среду.

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

Что означает «Запустить обновление ИБ» во Фреше

Иногда в комментариях к аудиту или в справке БСП можно встретить рекомендацию «запустить обновление информационной базы». В локальных версиях это делается запуском программы с ключом /UpdateConfig. Однако в облаке у пользователя нет такой возможности. Во Фреше этот процесс автоматизирован:

Процедуры обновления (обработчики БСП) запускаются автоматически при первом входе пользователя после регистрации новой версии расширения или обработки. Если вы видите, что код все еще старый, попробуйте зайти в раздел Администрирование — Обслуживание — Результаты обновления программы. Проверьте список отложенных обработчиков. Хотя для простых ВПФ это требуется редко, для сложных обработок с собственными данными это может быть актуально.

Борьба с локальным кэшированием

Если на стороне сервера 1С все настроено верно, версия обновлена и аудит пройден, но ошибка сохраняется — скорее всего, вы столкнулись с кэшированием. Рассмотрим, как очистить кэш в разных режимах работы:

Для тонкого клиента:

Самый надежный способ — полностью удалить базу из списка и добавить её заново, либо физически очистить папки кэша в профиле пользователя. Они обычно находятся по пути %AppData%\1C\1cv8. Найдите папки с длинными буквенно-цифровыми именами (GUID) и удалите их при закрытом приложении.

Для работы в браузере:

Браузеры очень агрессивно кэшируют скрипты и формы. Используйте комбинацию клавиш Ctrl + F5 для принудительной перезагрузки страницы с очисткой кэша. Также стоит попробовать открыть приложение в режиме инкогнито. Если в инкогнито форма работает корректно, значит, проблема стопроцентно в локальном кэше браузера.

Проверка работоспособности через изменение интерфейса

Рассмотрим небольшую хитрость для отладки. Чтобы точно понять, обновился ли файл на сервере, измените в коде СведенияОВнешнейОбработке название команды. Например, вместо Печать счета напишите Печать счета (v2). После загрузки и прохождения аудита проверьте название кнопки в интерфейсе приложения. Если название изменилось, значит, физически файл обновился, и проблему нужно искать либо в логике самого кода, либо в сеансовом кэше сервера.

Важно: Все внешние печатные формы во Фреше работают в безопасном режиме. Если в исправленном коде вы добавили использование новых объектов или методов (например, работу с файловой системой или HTTP-соединения), убедитесь, что вы прописали соответствующие разрешения в параметре Разрешения функции СведенияОВнешнейОбработке. В противном случае код может просто не выполняться, создавая иллюзию «старой ошибки».

Таким образом, для успешного обновления ВПФ во Фреше мы должны соблюсти три условия: поднять номер версии в коде, проверить привязку к приложению в Менеджере сервиса и очистить локальный кэш пользователя.

← На главную