Кнопка загрузки PDF в форме 1С: 5 шагов и 6 причин сбоя
Кнопка загрузки PDF в 1С создаётся в конфигураторе за пять шагов: добавьте на форму команду, привяжите к ней клиентский обработчик с диалогом выбора файла, передайте файл на сервер через временное хранилище, проверьте, что это действительно PDF, и запишите его в присоединённые файлы объекта.
Почему в форме 1С нет кнопки загрузки PDF 🤔
Бухгалтер получает счёт поставщика в PDF на почту. Чтобы приложить файл к документу поступления, нужно сохранить его на рабочий стол, открыть документ в 1С, найти скрепку, выбрать файл в проводнике и убрать копию с рабочего стола. Пять лишних действий на каждый счёт, и в конце месяца у части документов вложения всё равно нет: кто-то отвлёкся, кто-то оставил на «потом».
Скрепка в типовых конфигурациях есть, но работает только там, где к объекту подключена подсистема «Работа с файлами» из библиотеки стандартных подсистем (БСП). В справочнике, который когда-то написал подрядчик, в самописной обработке приёма заявок или в конфигурации без БСП скрепки нет, поэтому PDF оседают рядом с базой: в общей папке, в почте, в мессенджере.
Цена вопроса считается в часах. Приходит требование налоговой или аудитор просит первичку по контрагенту, и счёт ищут по почтовым ящикам трёх сотрудников, пока закрытие периода стоит. Сотрудник уволился, ящик закрыли, и вместе с ним ушли счета. Кнопка внутри формы убирает эту цепочку: файл попадает в базу в момент создания документа и привязан к нему.
Как сделать кнопку загрузки PDF в конфигураторе: 5 шагов ⚙️
Пример для управляемой формы платформы 8.3. Если конфигурация типовая и стоит на поддержке, правку лучше делать в расширении: изменение самой формы снимет её с поддержки, и при обновлении придётся сливать изменения вручную. Сначала проверьте всё на копии базы.
- ✓Откройте форму объекта в конфигураторе. На закладке «Команды» добавьте команду «ЗагрузитьPDF» с заголовком «Загрузить PDF». В свойстве «Действие» нажмите на лупу и создайте обработчик: он появится в модуле формы с директивой &НаКлиенте.
- ✓На закладке «Элементы» добавьте кнопку формы и в свойстве «Имя команды» выберите созданную команду. Поставьте кнопку в командную панель или рядом с табличной частью, чтобы пользователю не пришлось её искать.
- ✓В обработчике откройте диалог выбора файла. Классический путь — метод НачатьПомещениеФайла с описанием оповещения: платформа покажет проводник, а результат придёт в процедуру, имя которой вы указали. Фильтр в диалоге задайте строкой «Файлы PDF (*.pdf)|*.pdf». В конфигурациях с БСП есть готовая обёртка ФайловаяСистемаКлиент.ЗагрузитьФайл, с ней проще.
- ✓В процедуре оповещения возьмите адрес временного хранилища и передайте его серверной процедуре с директивой &НаСервере. Там ПолучитьИзВременногоХранилища вернёт двоичные данные. Проверьте, что файл начинается с байтов %PDF- и укладывается в лимит размера, иначе пользователь загрузит переименованный docx, а выяснится это через месяц.
- ✓Запишите файл. В конфигурации с БСП добавляйте его в присоединённые файлы объекта через подсистему «Работа с файлами», без БСП — в свой справочник с владельцем и реквизитом типа ХранилищеЗначения. После записи оповестите форму и покажите пользователю сообщение, что загрузка прошла.
Что проверить на клиентах
Тонкий клиент открывает диалог выбора файла сразу. В веб-клиенте поведение зависит от релиза платформы и браузера, поэтому проверьте оба варианта до того, как кнопка уйдёт пользователям. Список поддерживаемых браузеров для вашей версии лежит в системных требованиях 1С.
Где хранить загруженные PDF: сравнение четырёх способов 🗄️
От места хранения зависит, как скоро база начнёт разрастаться. Тысяча сканов по 3 МБ — это примерно 3 ГБ, и их придётся таскать в каждую резервную копию, если файлы лежат внутри базы.
| Способ | Как работает | Плюсы | Минусы |
|---|---|---|---|
| Присоединённые файлы БСП, в базе | Файл хранится в информационной базе | Проще всего настроить, есть права по объектам | База растёт, копия становится тяжелее |
| Присоединённые файлы БСП, тома хранения | Файлы лежат в папке на сервере, в базе остаётся запись о файле | База остаётся лёгкой | Папку томов нужно копировать отдельно |
| Свой справочник с ХранилищеЗначения | Двоичные данные лежат в реквизите | Работает без БСП | Типовых функций нет, весь код пишете сами |
| Путь к файлу в реквизите | В базе только ссылка на сетевую папку | База не раздувается | Файл переместили или удалили, и ссылка сломалась; веб-клиент к папке не дотянется |
Для малого бизнеса с одной базой на одном сервере чаще всего подходит второй вариант: база остаётся быстрой, а файлы живут рядом. Если база арендована, спросите у провайдера, входит ли папка томов в резервную копию. Это легко упустить, и всплывает оно в день, когда копия понадобилась.
Что делать, если кнопка не работает или ошибка повторяется 🔧
Типичная картина: на тестовой базе файлы грузятся, а у пользователя нажатие ничего не даёт или падает ошибка. Разбирайте по симптомам.
- ✓Кнопка есть, но нажатие ничего не делает. Проверьте, что у команды задан обработчик, что процедура помечена &НаКлиенте и что кнопка привязана к команде, а не добавлена пустой.
- ✓Платформа сообщает, что процедура или функция с указанным именем не обнаружена. Имя в описании оповещения не совпадает с именем процедуры в модуле формы. Хватит одной лишней буквы.
- ✓Диалог выбора файла не открывается в веб-клиенте. Сверьтесь с браузером и релизом платформы, отключите блокировку всплывающих окон для адреса базы.
- ✓Небольшие файлы грузятся, а скан на несколько десятков страниц обрывается. Чаще всего это ограничение веб-сервера на размер запроса. Его поднимают в настройках публикации, а в коде добавляют проверку размера с понятным сообщением.
- ✓PDF записался, но не открывается. Скорее всего, в хранилище попала строка вместо двоичных данных или в имени потерялось расширение. Сверьте тип данных на шаге записи и сохраняйте имя вместе с «.pdf».
- ✓После записи форма выглядит по-старому. Она не знает, что файл добавлен: оповестите форму или перечитайте список вложений.
Если ошибка возникает только на части рабочих мест, ищите причину вне кода: права роли на справочник файлов, антивирус, который блокирует временную папку, старый браузер. Сравните рабочее и нерабочее место по этим трём пунктам.
Как предотвратить проблемы с PDF в 1С заранее 🛡️
- ✓Вынесите проверку файла в одну серверную процедуру: расширение, начало «%PDF-», предельный размер. Правила будут одинаковы на всех формах, где появится кнопка.
- ✓Делайте кнопку в расширении, а не в типовой форме. Обновление конфигурации не сотрёт доработку, а в списке расширений её видно сразу.
- ✓Прогоните тест до выдачи пользователям: файл в мегабайт, файл в несколько десятков мегабайт, переименованный docx, имя с кириллицей и пробелами, запуск из тонкого и веб-клиента.
- ✓Раз в месяц смотрите размер базы. Если файлы лежат внутри, рост заметен по времени резервного копирования раньше, чем по ошибкам.
- ✓Закройте доступ к вложениям ролью. Сканы договоров и паспортов содержат персональные данные, а 152-ФЗ требует защищать их и хранить базы с персональными данными граждан России на территории страны. Проверьте, где физически стоит сервер с вашей базой.
Когда проще заказать доработку, чем писать самим
Кнопка на одной форме — задача для разработчика, который знает вашу конфигурацию. Сложности начинаются позже: файлов становятся тысячи, их надо искать и хранить вне базы, а данные из счёта бухгалтер всё равно переписывает руками.
Мы собираем это в одну схему, она описана на странице загрузки PDF в 1С: кнопка в нужной форме, проверка файла, хранение во вложениях или на томах, привязка к документу. Если PDF — это УПД или счёт, подключаем распознавание УПД из скана от 3900 руб/мес: реквизиты подставляются в документ, бухгалтеру остаётся сверить их с оригиналом.
Нестандартные формы и самописные конфигурации идут через доработку 1С. Сначала смотрим форму и решаем, хватит ли расширения, потом называем стоимость. Цену доработки до разбора мы не озвучиваем, потому что она зависит от конфигурации. Сопровождение 1С и работа сисадмина стоят 3800 руб/час, остальные расценки собраны на странице цены и тарифы.
Если после появления PDF в базе подвисать начала вся работа, а не только запись файла, дело в сервере, и кнопка тут ни при чём. Тогда обсуждаем перенос базы на арендованный сервер 1С: от 1 100 ₽/мес за пользователя.
❓ Частые вопросы
Можно ли сделать кнопку загрузки PDF в 1С без программиста?
Без кода не получится: нужна команда формы и обработчик, который принимает файл и записывает его. В конфигурациях с БСП скрепка присоединённых файлов уже есть, и её часто хватает. Если нужна своя кнопка в нестандартной форме, без разработчика 1С не обойтись.
Где в 1С хранятся загруженные PDF?
Зависит от способа. Присоединённые файлы БСП лежат либо в самой информационной базе, либо на томах хранения: файлы в папке на сервере, а в базе запись о них. В самописном справочнике файл хранится в реквизите типа ХранилищеЗначения. Для больших объёмов лучше тома, тогда база не раздувается.
Почему кнопка загрузки PDF работает в тонком клиенте, но не в веб-клиенте?
Веб-клиент работает через браузер, и диалог выбора файла зависит от релиза платформы, версии браузера и настроек безопасности. Проверьте поддерживаемые браузеры в системных требованиях вашего релиза, отключите блокировку всплывающих окон для адреса базы и убедитесь, что веб-сервер пропускает файлы нужного размера.
Сколько стоит загрузка PDF в 1С?
Стоимость доработки зависит от формы и конфигурации, поэтому цену называем после разбора. Распознавание УПД из скана стоит от 3900 руб/мес, сопровождение 1С и работа сисадмина — 3800 руб/час. Аренда сервера 1С начинается от 1 100 ₽/мес за пользователя. Расценки собраны на странице тарифов.
Как проверить, что загруженный файл действительно PDF?
Расширения в имени мало: файл можно переименовать. Прочитайте начало данных на сервере: настоящий PDF начинается с байтов %PDF-. Добавьте проверку размера и сообщение пользователю, если файл не подошёл. Так в базу не попадёт переименованный docx или повреждённый скан.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

