Автор: Pozharskiy1991
Версия: 0.1
Описание
Расширение FileKeeper добавляет на форму кнопки для работы с файловым хранилищем. Позволяет прикреплять файлы к записям, открывать хранилище, вести учёт файлов и управлять ими.
Расширение является развитием идеи, заложенной в действии «DX Хранилище файлов».
Возможности
- Добавление одного или нескольких файлов к записи
- Открытие хранилища с просмотром всех файлов записи
- Счётчик файлов на кнопке (включается/отключается)
- Диалог переименования файла перед добавлением
- Проверка дубликатов (по имени и дате изменения)
- Автоматическое создание уникальных имён при конфликтах
- Удаление исходных файлов после копирования (опционально)
- Фильтрация файлов по расширениям
- Динамический путь: базовая папка + подпапка (выражение)
- Безопасные имена: недопустимые символы заменяются на "_"
- Папка по умолчанию: "Хранилище файлов" в рабочей директории
- Обновление запросов после операций с файлами
- Сохранение позиции в запросе
- Поддержка представлений vtGridOnly
- Автоматическое удаление файлов при отмене редактирования
Как это работает
- Добавьте действие «Настройка хранилища файлов» на форму
- В таблице «Кнопки хранилища» укажите кнопки и их действия:
- Добавить файл — кнопка для добавления файлов
- Открыть хранилище — кнопка для просмотра хранилища
- Счётчик — показывать ли количество файлов (Да/Нет)
- Настройте путь к папке назначения:
- Базовая папка — основная папка для хранения (если не указана — создаётся «Хранилище файлов» в рабочей директории)
- Подпапка (выражение) — динамическая часть пути, например: [Год]\[Месяц] или [Контрагент]
- При необходимости задайте выражение для имени файла
- Настройте дополнительные параметры (удаление исходников, диалог переименования, фильтр расширений и др.)
Настройка
Основные параметры:
- Кнопки хранилища — таблица с кнопками и их действиями
- Действие — «Добавить файл» или «Открыть хранилище»
- Кнопка — компонент TdxButton на форме
- Счётчик — показывать количество файлов на кнопке (Да/Нет)
- Описание записи в хранилище — выражение для поля «Описание записи»
Путь к папке назначения:
- Базовая папка — выбирается вручную через диалог. Если не указана — создаётся папка «Хранилище файлов» в рабочей директории программы.
- Подпапка (выражение) — динамическая часть пути. Недопустимые символы заменяются на "_".
Имя файла:
- Имя нового файла (выражение) — можно задать фиксированное имя или выражение (например, [Номер] + "_" + [Дата])
- Исходное расширение — добавлять расширение исходного файла к новому имени
Дополнительные настройки:
- Удалять исходные файлы — удалять файлы после копирования
- Диалог изменения имени файла — показывать диалог для изменения имени файла перед добавлением
- Список расширений — фильтр файлов, например: *.jpg;*.png;*.pdf
- Разрешить дубликаты — разрешать добавление файлов с одинаковыми именами
- Редактировать запись при нажатии — автоматически переводить запись в режим редактирования
Обновление запросов:
- Запрос для обновления — выбирается запрос для автоматического обновления после операций с файлами
- Сохранять позицию в запросе — после обновления позиция восстанавливается
Примеры выражений
Для подпапки:
- [Год] — 2026
- [Год] + "\" + [Месяц] — 2026\Январь
- [Контрагент] — ООО_Ромашка (кавычки заменятся на _)
- [ТипДокумента] + "\" + [Номер] — Договоры\Д-001
Для имени файла:
- [Номер] + "_" + [Дата] — Д-001_2026-01-15
- "Договор_" + [Номер] — Договор_001
Особенности
- Безопасные пути и имена — все пути и имена файлов очищаются от недопустимых символов (\ / : * ? " < > |)
- Уникальные имена — при конфликте имён автоматически создаётся уникальное имя (файл(1).txt)
- Проверка дубликатов — сравнение по имени файла и дате изменения
- Защита от занятости — проверка на занятость файла другим процессом
- Удаление при отмене — файлы автоматически удаляются при отмене редактирования записи
- Обновление запросов — выбранный запрос обновляется после добавления файлов или закрытия хранилища
- vtGridOnly — поддержка представлений формы vtGridOnly
Примечания
- Каждая кнопка может использоваться только один раз (проверка на дубликаты)
- Если базовая папка не указана — используется «Хранилище файлов» в рабочей директории
- Недопустимые символы в путях и именах заменяются на "_"
- Файлы без расширения сохраняются с исходным именем без расширения
- При копировании сохраняется дата изменения файла
- В базе данных должна быть форма FileStore из демо версии или из расширения "DX Хранилище файлов". Можно добавить объединением проекта.