14.04.2020 Дидковский Михаил 24905
Организация в 1С хранения файлов пользователя...

Содержание:



В ходе разработки регулярно встречается пожелание клиента о хранении присоединенных к документу (или элементу справочника) файлов пользователя в 1С. Эта возможность реализована в Библиотеке стандартных подсистем (БСП). Но использование Библиотеки стандартных подсистем для этой задачи требует снятия базы с режима полной поддержки. Поэтому может возникнуть желание организовать хранение файлов без БСП.


Мы рассмотрим вариант хранения файлов вне базы данных (БД), чтобы избежать бесконтрольного увеличения объема БД.


Для решения задачи организовать хранение файлов без БСП нам понадобится:

1.    Выделить место хранения файлов пользователя, доступное с сервера 1С.

2.    Создать регистр сведений, содержащий служебную информацию для сохранения файлов.

3.    Добавить в объект, к которому добавляется возможность хранения файлов пользователя, табличную часть и две команды: Загрузить файл и Открыть Файл.


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


·         КаталогХранилища – указывает на место хранения файлов пользователя, строка необходимой длины.

·         НомерФайлаВКаталоге – указывает имя последнего файла, записанного в каталог.


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




Поместить процедуру можно в общем модуле (как приведенную), так и в менеджере регистра сведений.


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


·         ИмяФайла – имя файла, приложенного пользователем. Файл с этим именем мы и будем пользователю возвращать.

·         ИмяФайлаВХранилище – наше внутреннее имя файла, использующееся для того, чтобы исключить совпадающие имена.

·         ЕстьДокумент – Булево, показывающее факт наличия документа в хранилище.

Осталось сделать две команды, первая из которых будет помещать файл в хранилище 1С, а вторая – извлекать оттуда и открывать файл пользователю в 1С.  


1.    Помещение файла в хранилище 1С


Команду мы назовем Документы_ЗагрузитьФайл.


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

Процедура обработки команды начинает помещение файла в хранилище 1С, которое будет доступно и на сервере.


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




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




В результате исполнения данной команды файл пользователя в 1С будет помещен в хранилище. А в реквизиты выбранной строки ТЧ Документы нашего объекта будут записаны имя файла, загружавшегося пользователем и имя файла в хранилище. Расширения у них совпадают.  


2.    Получение файла из хранилища 1С


Команду мы назовем Документы_ОткрытьФайл.


Команда сначала проверяет существование флажка ЕстьДокумент, выдавая ошибку в случае, если документа в хранилище нет. Это нам необходимо для того чтобы не обращаться к Библиотеке Стандартных Подсистем.


Затем команда обращается на сервер за получением данных во временное хранилище 1С, которое будет доступно и «на клиенте». Файл, полученный во временное хранилище 1С, записывается в каталог хранения файлов пользователя во временных файлах под именем того изначального файла, который когда-то загружал пользователь.


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




Обратим внимание, что при получении структуры хранилища в качестве параметра процедуры указывается, что она вызывается не для записи, что не меняет номер текущего файла в хранилище 1С. Здесь мы используем только имя каталога.





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


Специалист компании ООО «Кодерлайн»

Дидковский Михаил

Наши проекты

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам
- Оформление заказов покупателей
- Упр...

Автоматизация системы учета продаж газа на базе «1С:ERP Управление предприятием 2.0»
ООО «Эйр Продактс Газ»

Отрасль:
Производство промышленных газов

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Расчеты с контрагентами;
- Производственные операции;
- Управление скла...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

Внедрение блоков в 1С:Комплексная автоматизация 8
ООО «Больцен Рус»

Отрасль:
Оптовая торговля

Внедренное типовое решение:
1С:Комплексная автоматизация

- Оперативный учет...

ООО "СЖД"
ООО "СЖД"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Расчет зарплаты
Подбор кадров
Кадровый учет
Анализ кадрового состава...

ООО "РУКАРД-АУРА"
ООО "РУКАРД-АУРА"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Комплексная автоматизация

- Налоговый учет;...

Внедрение 1С:Управление торговлей в оптово-розничной компании «Ална-Байк»
ИП Титов Виктор Сергеевич «Ална-Байк»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

- Управление складами;
- Управление заказами поставщиков;
- Управление зак...

Автоматизации бизнес-процессов учета и планирования на базе «1С:ERP Управление предприятием 2.0»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Создание полноценной управленческой системы взамен существующих
- Внедр...

Автоматизация торгового учета на базе "1С:Управление торговлей"
ООО «ТЕЛЕВЕС РУСС»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

- Управление складскими запасами;
- Оформление заказов покупателей;
- Пла...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

Кадровый учет;
Расчет зарплаты;...

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка час...

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Производственные операции
Автоматизация бизнес-процессов...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение