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

08.07.24

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Расширение "ПФ_ПрисоединенныеФайлы"
.cfe 182,03Kb ver:1.0.1.1
4
4 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

7200 руб.

02.08.2023    4168    14    1    

32

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

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

29400 руб.

29.06.2023    5992    14    5    

24

Печатные формы Адаптация типовых решений Бухгалтер Пользователь Платформа 1С v8.3 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, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    6705    73    10    

30

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

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5266    dimanich70    15    

22

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    6817    dimanich70    9    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Tarlich 116 27.05.24 08:02 Сейчас в теме
без использования функционала БСП- т.е на собственной написанной с 0 без бсп взлетит ?
2. poor_developer 6 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 6 27.08.24 10:47 Сейчас в теме
(4) Добрый день. А на какой платформе пытались запустить? проверю
Оставьте свое сообщение