Просмотр документов, используя Google Docs (PDF, MS Office и не только). Без регистрации и смс

12.03.25

Разработка - Работа с интерфейсом

С версии 8.3.22 в 1С:Предприятие реализован просмотр документов PDF. И это прекрасно. Но просмотр офисных документов (Word, Excel, Power point) возможен только путем некоторых "костылей". Вот, один из таких костылей я и предлагаю рассмотреть ниже.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Просмотр документов, используя Google Docs (PDF, Ms Office и не только). Без регистрации и смс
.epf 14,94Kb
11 2 150 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Как всегда, я бы не озадачился чем-то интересным, если бы не понадобилось. И вот этот день настал. Я проснулся и понял, что страсть как хочу прямо в окне 1С смотреть на Word-овский документ. Я не хочу думать какая у меня операционная система, тонкий или веб-клиент. Все что я хочу, это выбрать файл и посмотреть его в окне 1С, разве это так много??? Ну ладно, прочь шуточки. Теперь все по порядку. 

Вот вам небольшая подборка на тему "Просмотр Word и тому подобное"

Среди типовых предпросмотр есть в 1С:Документооборот версии 3.0. Там он реализован путем сохранения офисных документов в HTML и хранением этих данных в отдельном регистре. Использует ComОбъект и требует наличие офисного пакета (ну или по крайней мере его части, отвечающей за работу com-объектов Application). Кстати, кому интересно, подробно про работу с Word через COM можно почитать тут.

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

Требования были такие:

  • не важно какая операционная система
  • желательно без внешних компонент, регистрации, смс и других танцев с бубном
  • чтобы "кушало" разные форматы (хотя мне нужен был в общем то только *.docx)
  • идеально чтобы не хранило ни в каком виде копию файла

То есть сразу отпали игры с COM, сохранение в HTML (в конфигурации или вне ее), внешние конверторы (вроде pdf24). Ну и вообще получалось так, что решения в общем то и не было какое-то время. Пока я случайно не наткнулся на Google Docs Viewer. О нем сейчас нет информации на сайте Google, но есть неплохая статья на Хабр. Кроме того, аналогичный сервис есть и у Мелкомягких, но он съедает чуть меньшее число форматов. Ну и забегая вперед, его полноценно использовать не получилось.

Google Docs Viewer

Самое главное что надо, для просмотра документа, это HTML поле в 1С и файл размещенный где-то, куда Google может легко достучаться (также без паролей, регистраций и смс). Ну и представим что у нас уже есть такой файл и лежит он где-нибудь, например "СВЕДЕНИЯ ПО ИСТОРИИ РУСИ XIII в. В САГЕ О КОРОЛЕ ХАКОНЕ". Достаточно ссылку на данный файл вставить внутрь конструкции

https://docs.google.com/viewer?url=[АдресСсылки]&embedded=true

И мы можем эту ссылку скормить полю HTML в 1С и вуаля, немного подождали и читаем очень увлекательный документ.

Собственно дело в шляпе, если бы не одно "но". Файлы то у нас в базе или в файловой системе. В общем не лежат они в облаке. А значит нам надо его куда-то "пульнуть", потом получить ссылку на него, открыть, ну и неплохо было бы удалить его после. То есть нам нужен, сервис временного хранения файлов, имеющий на борту REST API, выдающий "публичные" ссылки на файлы. Ну и как всегда, без дополнительных танцев в виде регистраций, платных доступов и т.д. После некоторого времени поиска такой сервис был найден.

file.io

Важная информация (март 2024)

Сервис file.io после продажи не поддерживает временную загрузку файлов. И поэтому данная разработка актуальная в части до данного блока. Если у кого-то есть идеи, какой сервис можно использовать для временного хранения файлов - пишите в комментарии, буду признателен

Подробнее о данном сервисе вы можете почитать у них на сайте. Изучив немного, копнув чуток и ткнув "палкой" в виде клиента для теста REST API, выяснилось - а он подходит. По заверению авторов файл удаляется, данные не хранятся, авторизации и регистрации не требуется, HTTPS есть. Кажется пора сесть и написать код отправки файла.

Собственно тут нам не понадобится ничего сверх "тяжелого". HTTPСоединение, HTTPЗапрос и немного навыка с отправкой тела запроса в виде "multipart/form-data". 

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

	Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");

	СтрокаИмяФайла = СтрШаблон("filename=""%1""", ИмяФайла);
	
	ТелоЗапроса = Новый ПотокВПамяти;
	ЗаписьДанных = Новый ЗаписьДанных(ТелоЗапроса,,, Символы.ВК + Символы.ПС, ""); 
	ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; " + СтрокаИмяФайла);
	ЗаписьДанных.ЗаписатьСтроку("Content-Type: " + ПолучитьContentTypeПоРасширению(РасширениеФайла));
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.Записать(ДвоичныеДанные);
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
	ЗаписьДанных.Закрыть();
	
	ДанныеТела = ТелоЗапроса.ЗакрытьИПолучитьДвоичныеДанные();
	
	ЗапросHTTP = Новый HTTPЗапрос;
	ЗапросHTTP.Заголовки.Вставить("content-type"	, "multipart/form-data; boundary=" + Разделитель);
	ЗапросHTTP.Заголовки.Вставить("content-length"	, Формат(ДанныеТела.Размер(), "ЧН=0; ЧГ="));
	ЗапросHTTP.УстановитьТелоИзДвоичныхДанных(ДанныеТела);

	СоединениеHTTP = Новый HTTPСоединение("file.io",,,,,, Новый ЗащищенноеСоединениеOpenSSL);
	ОтветHTTP = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
	Если ОтветHTTP.КодСостояния <> 200 Тогда
		ДанныеОшибки = ОбработатьОшибкуЗапроса(ОтветHTTP);
		ЗаполнитьЗначенияСвойств(Результат, ДанныеОшибки);
		Возврат Результат;
	КонецЕсли;
	
	ТелоОтвета = ОтветHTTP.ПолучитьТелоКакСтроку();
	СтруктураОтвета = ЗначениеИзСтрокиJSON(ТелоОтвета, Истина);
	
	АдресСсылки = СтруктураОтвета.Получить("link");

Это немного "полуфабрикат", я думаю разобрать его на запчасти труда не составит. Собственно "АдресСсылки" и есть требуемый нам путь к файлу. В общем то, на этом статью можно и закончить, наверное...

Хотя нет, секундочку. Помните я упомянул что у мелкомягких тоже есть свой вьюер. Так вот, с ним не завелось поскольку, по неведомой мне причине, он считывал документ из ссылки дважды, а после первого запроса ссылка уничтожалась (как надеюсь и файл ))) ). Так что, что-то тут не вышло. Впрочем, не сильно то и расстроился.

Что в обработке?

Собственно красиво оформленный код (ну или почти красиво). С описанием для пользователя, ну и обработкой некоторых ситуаций. Например, при смене ссылки, иногда поле HTML не обновлялось. Для web-клиента недоступна работа с объектами для REST запросов. Ну и по мелочи. 

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

Код открыт, пользуйтесь на здоровье.

Поддерживаемые форматы:

  • Документ Word (*.doc)
  • Документ Word2007-... (*.docx)
  • Документ OpenDocument Text (*.odt)
  • Документ PDF (*.pdf)
  • Лист Excel (*.xls)
  • Лист Excel2007-... (*.xlsx)
  • Презентация PowerPoint (*.ppt)
  • Презентация PowerPoint2007-... (*.pptx)

Это не полный перечень, в статье на Хабр информация раскрыта несколько серьезнее

Немного о разном

  • минус: требуется доступ к интернет
  • минус: жрет трафик (файл отправляется в сеть, а потом данные просмотра загружаются из сети)
  • Google может прикрыть лавочку. Но с 2015 не закрывает, просто убрал официальную инфу об этом, но есть расширение для браузера, так что это маловероятно (я считаю)
  • хочется такой функционал прямо в платформе
  • можно конечно файлы держать и в облаке и перманентно открывать доступ для просмотра, не заморачивался

Я нормально отношусь к критике, так что пишите и предлагайте какие-то более интересные варианты "около".

Послесловие, после публикации

А Яндекс 360 тоже может. Спасибо JohnyDeath за идею. Формат ссылки там таков:

https://docs.yandex.ru/docs/view?url=[АдресСсылки]&name=[ИмяФайла]

Но можно обойтись и без имени файла. А благодаря товарищу ixijixi мы знаем что ему можно "скормить" word, excel, картинки (jpg как минимум), pdf, txt, zip, csv. Что очень не плохо.

Я доработал обработку и добавил возможность выбора сервиса (Google, Яндекс), но по какой-то причине яндекс показывает все вокруг, а сам документ не показывает, "думает". Желающие копнуть обработку, но не имеющие возможности скачать, пишите в личку, я отправлю, расскажете что получится.

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.171.23

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    56402    31    25    

45

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36000 руб.

28.08.2025    2702    1    2    

4

Работа с интерфейсом Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

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

6000 руб.

14.01.2016    58241    20    25    

46

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5160 руб.

29.06.2020    22865    32    6    

51

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

5040 руб.

06.10.2020    12852    8    8    

14

Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    43395    mrXoxot    44    

138

Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    24834    smielka    38    

111
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. JohnyDeath 302 27.10.22 15:32 Сейчас в теме
В сторону https://docs.yandex.ru/ или https://myoffice.ru/ не смотрел?
Через них такое не провернуть? А то гугл может в любой момент исчезнуть с просторов нашей Родины.
ixijixi; vandalsvq; +2 Ответить
2. vandalsvq 1687 27.10.22 15:46 Сейчас в теме
(1) однако, что-то я не подумал сам Яндекс похожим образом копнуть. И так, через него работает, формат ссылки
https://docs.yandex.ru/docs/view?url=[АдресСсылки]&name=[ИмяФайла]

Без части (ИмяФайла) тоже показывает, проверю через 1С позже. По форматам пока только pdf дал, но есть подозрение, что должен быть тоже не маленький. Поможешь потестить?

Что касается myoffice, наверное пока не готов с ним разбираться. С Яндексом было не сложно, у меня корпоративный ящик на нем )))))
JohnyDeath; +1 Ответить
3. JohnyDeath 302 27.10.22 15:52 Сейчас в теме
(2) С "моим офисом" вообще ни разу не сталкивался, но он просто всегда на слуху как аналог офисному пакету от MS.

Поможешь потестить?

А что именно нужно потестить? Прогнать много файлов разного формата?
Я так понимаю, официально такой "хак" не описан в API этих сервисов. Остается только старым-добрым методом тыка. Правильно?
4. vandalsvq 1687 27.10.22 16:03 Сейчас в теме
(3) ну да, но наверное тогда пока не тыкайся, я переделаю обработку чуток и расскажу результат, минут через 10-15
5. ixijixi 2070 27.10.22 16:09 Сейчас в теме
(2) Проверил Яндекс. Принимает форматы word, excel, картинки (jpg как минимум), pdf, txt, zip, csv, возможно еще какие-либо. Не принимает dbf, mdb, xml
JohnyDeath; vandalsvq; +2 Ответить
6. vandalsvq 1687 27.10.22 16:18 Сейчас в теме
(3), (5) Так, с Яндексом уже 1С не справляется. То есть Chrome, Edge (хотя этот тот же хром) без проблем, а в 1С поле HTML не "вывозит".
Авторизация тут роли не играет, я и режим инкогнито пробовал, то есть норм Яндекс всегда в браузерах работает.
На всякий случай, счас приложу версию с переключателем между сервисами, но у меня пока не завелось в общем
8. JohnyDeath 302 27.10.22 16:34 Сейчас в теме
(6) Спасибо за доп. исследование.
Поковыряюсь на досуге, вдруг что-то да получится.
Ты, кстати, на какой версии 1С пробовал? С новым веб-движком же?
9. vandalsvq 1687 27.10.22 16:36 Сейчас в теме
(8) я на 8.3.20.1838 сижу, пока даже на 21й никак не перееду ))))
10. JohnyDeath 302 27.10.22 16:42 Сейчас в теме
(9)
8.3.20.1838

если есть типовые, то скоро будешь вынужден обновиться. БСП заломает руки и затребует следующие минимальные версии:
8.3.17.2733; 8.3.18.1902; 8.3.19.1665; 8.3.20.2076; 8.3.21.1508; 8.3.22.1603
12. vandalsvq 1687 27.10.22 16:46 Сейчас в теме
(10) да я не против, тут что-то ребята у нас тормозят )))) перейдем в ближайшее время, может сразу на 22, нам не принципиально
13. JohnyDeath 302 27.10.22 16:52 Сейчас в теме
(12) я просто между делом сказал.
Сам вчера нарвался на то, что меня Документооборот так подставил, где уже в новом релизе выкатили требования к свежайшим платформам.
Пришлось быстренько патч-расширение нарисовать.
11. vandalsvq 1687 27.10.22 16:45 Сейчас в теме
(8) кстати, вот у Яндекса об этом написано - https://yandex.ru/support/docviewer/index.html
JohnyDeath; +1 Ответить
7. vandalsvq 1687 27.10.22 16:29 Сейчас в теме
(1) JohnyDeath, спасибо за идею, я немного доработал обработку и в статье указал инфу про Яндекс.
JohnyDeath; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация