Функционал присоединенных файлов без снятия с поддержки

08.07.24

Задачи пользователя - Адаптация типовых решений

Хранение файлов для конфигураций "на замке".

Файлы

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

Наименование Скачано Купить файл
Расширение "ПФ_ПрисоединенныеФайлы"
.cfe 182,03Kb ver:1.0.1.1
9 2 500 руб. Купить

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

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

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

Доброго всем!

Предлагаю вашему вниманию одно небольшое расширение, которое позволит прикреплять файлы к своим документам и справочникам без использования функционала БСП.

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

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

Итак, вводные:

1. Конфигурация на замке

2. Должны быть реализованы загрузка, сохранение, удаление, чтение присоединенных файлов

3. Подключение к данному механизму не должно требовать монопольного режима, т.е. все объекты должны подключаться без изменения структуры базы данных.

4. Не хранить файлы в базе ("шобы не пухла"), хранить в отдельной папке на сервере.

Не буду расписывать реализацию, т.к. она максимально проста и незамысловата, вкратце - есть один справочник, который хранит данные файла и УИД на нужный объект; регистр, в измерении которого определен также УИД, а в ресурсах - булева переменная "ЕстьФайлы" (Почти как в БСП:)); несколько общих модулей со всей реализацией механизма.

Пример подключения

Чтобы использовать данный механизм, первое, что требуется - создать файлопомойку на сервере, куда собственно и будут сохраняться все файлы. Доступ к этой папке должен быть открыт для пользователя, от лица которого крутится сервер 1С, так как именно с сервера осуществляется запись файлов в эту папку. Путь к этой файлопомойке нужно прописать в константу "ПФ_ПутьККорнюХранилищаПрисоединенныхФайлов" (можно найти через режим тех.специалиста)

В константу "ПФ_МаксимальныйРазмерФайла" нужно записать максимально допустимый размер загружаемого файла в МБ.

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

// Пропишите получение текущего пользователя с учетом особенностей вашей базы
// ПараметрыЗаполнения.Загрузил = Строка(ПользователиКлиент.АвторизованныйПользователь());
ПараметрыЗаполнения.Загрузил = "<Текущий пользователь>";

Далее, для необходимых объектов нужно создать форму элемента и форму списка, в модуле которых нужно будет дополнить (создать) обработчик "ПриСозданииНаСервере" и создать метод-обработчик создаваемой команды. Код представлен в модулях форм справочника "_ДЕМО_", что в расширении. На примере формы списка:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// На этом этапе добавляется кнопка в ту панель, которая передается вторым параметром
	ПФ_РаботаСФайлами.ДобавитьКоманду(ЭтотОбъект, Элементы.ФормаКоманднаяПанель);
	
КонецПроцедуры

// Этот метод вызывается вновь созданной командой при создании на сервере
// В нем нужно получить ссылку на необходимый объект и передать третьим параметром
// в метод ВыполнитьКоманду
&НаКлиенте
Процедура ПФ_ВыполнитьКоманду(Команда)
	
	ТекДанн = Элементы.Список.ТекущиеДанные;
	Если ТекДанн = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	// В настройках реквизита поставьте флаг "Использовать всегда"
	ВладелецФайла = ТекДанн.Ссылка;
	
	ПФ_РаботаСФайламиКлиент.ВыполнитьКоманду(Команда, ЭтотОбъект, ВладелецФайла);
		
КонецПроцедуры

После того, как модули форм доработаны, осталось дополнить функцию "СписокКаталоговХраненияПрисоединенныхФайлов", что находится в общем модуле "ПФ_РаботаСФайламиПереопределяемый", а именно прописать нужный тип и указать имя подкаталога, куда буду сыпаться присоединенные файлы объектов этого типа:

Функция СписокКаталоговХраненияПрисоединенныхФайлов()

	Соответствие = Новый Соответствие;
	// Ключ = Тип объекта, Значение - имя папки
	Соответствие.Вставить(Тип("СправочникСсылка.НовыйСправочник"), "new_cat");
	
	// Соответствие.Вставить(Тип(""), "");
	
	Возврат Соответствие;
	
КонецФункции

Можно навести красивостей и вывести на форму списка скрепочку. Для этого также, как и в механизме БСП, нужно прописать в запросе динамического списка соединение с регистром "ПФ_ЕстьФайлы", однако, т.к. регистр в расширении, делать это придется обходными путями:

1. Установить флажок "Произвольный запрос" для списка

2. Добавить в выбираемые поля "0 КАК ИндексКартинки"

3. Вывести это поле на форму, установить Вид "ПолеКартинки". Картинку значений не устанавливать.

4. При создании на сервере переопределить запрос динамического списка и установить картинку значений:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// На этом этапе добавляется кнопка в ту панель, которая передается вторым параметром
	ПФ_РаботаСФайлами.ДобавитьКоманду(ЭтотОбъект, Элементы.ФормаКоманднаяПанель);
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	СправочникНовыйСправочник.Ссылка,
	|	СправочникНовыйСправочник.ПометкаУдаления,
	|	СправочникНовыйСправочник.Код,
	|	СправочникНовыйСправочник.Наименование,
	|	СправочникНовыйСправочник.Предопределенный,
	|	СправочникНовыйСправочник.ИмяПредопределенныхДанных,
	|	ВЫБОР 
	|		КОГДА РСЕстьФайлы.ЕстьФайлы ЕСТЬ NULL 
	|			ТОГДА 1
	|		КОГДА РСЕстьФайлы.ЕстьФайлы
	|			ТОГДА 0
	|		ИНАЧЕ 1
	|	КОНЕЦ КАК ИндексКартинки
	|ИЗ
	|	Справочник.НовыйСправочник КАК СправочникНовыйСправочник
	|	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПФ_ЕстьФайлы КАК РСЕстьФайлы
	|	ПО УНИКАЛЬНЫЙИДЕНТИФИКАТОР(СправочникНовыйСправочник.Ссылка) = РСЕстьФайлы.ВладелецФайла";
	
	Список.ТекстЗапроса = ТекстЗапроса;
	Элементы.ИндексКартинки.КартинкаЗначений = БиблиотекаКартинок.ПФ_Скрепка;
	
КонецПроцедуры

Ну, и напоследок, нужно дать всем пользователям права на чтение и запись в справочник "ПФ_ПрисоединенныеФайлы" и регистр "ПФ_ЕстьФайлы".

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

Расширение тестировалось на платформе 8.3.23.1865, тонкий клиент. Так как запросы используют функцию УНИКАЛЬНЫЙИДЕНТИФИКАТОР, вряд ли получится завести без существенных доработок на платформах ранее 8.3.22.

Не тестировалось на мобильном клиенте и веб-клиенте.

Спасибо за внимание, надеюсь, кому-нибудь это будет полезно.

ЗЫ. Сейчас смотрю, регистр ЕстьФайлы, ресурс ЕстьФайлы... Масло масляное. >_<. Ну, как есть...

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

Присоединенные файлы расширение

См. также

Адаптация типовых решений 1С:Предприятие 8 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

32330 руб.

29.06.2023    11031    33    15    

40

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

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

36600 руб.

28.08.2025    5778    2    2    

5

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

5500 руб.

07.02.2023    11817    112    20    

68

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

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    602    1    6    

2

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.

9150 руб.

02.08.2023    7407    25    5    

41

Адаптация типовых решений 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Расширение для вывода информации об остатках и ценах номенклатуры в форме списка и выбора номенклатуры. (УТ 11, КА 2, ERP). Позволяет получать информацию о ценах, остатках и доступности в разрезе складов и характеристик номенклатуры, информацию по документам резерва.

7930 руб.

16.10.2025    764    1    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Tarlich 109 27.05.24 08:02 Сейчас в теме
без использования функционала БСП- т.е на собственной написанной с 0 без бсп взлетит ?
2. poor_developer 25 27.05.24 09:13 Сейчас в теме
(1) Да. Единственный БСПшный метод в расширении - ПользователиКлиент.АвторизованныйПользователь(), который я закомментировал - в статье написано, где нужно скорректировать, если конфа не на БСП. Перед публикацией я создал голую базу, добавил один справочник и прикрутил этот функционал. Все скриншоты как раз с пустой базы
3. user2039747 06.06.24 15:29 Сейчас в теме
Простите минус поставил случайно
4. GoliGor 15.08.24 13:24 Сейчас в теме
Пишет что нужна платформа 8.23, но вы же указали что "вряд ли получится завести без существенных доработок на платформах ранее 8.3.22" а получается нужна именно 8.23?
5. poor_developer 25 27.08.24 10:47 Сейчас в теме
(4) Добрый день. А на какой платформе пытались запустить? проверю
6. bigtrim 16.10.25 18:45 Сейчас в теме
У вас при удалении не чистится регистр "ЕстьФайлы"

Вам нужно дописать условие в запросе в процедуры "ОбновитьДанныеРегистраСведенийЕстьФайлы"

ГДЕ
| ПФ_ПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
| И НЕ ПФ_ПрисоединенныеФайлы.ПометкаУдаления
poor_developer; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация