14.04.2020 Дидковский Михаил 26846
Организация в 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.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Зарплата и управление персоналом

Управление персоналом и кадровый учет (HRM) Кадровый учет Расчет зарплаты Рег...

Автоматизация кадрового учета на базе ПП "1С:Зарплата и управление персоналом" в ТД НМК
ООО «Торговый дом Нальчикский молочный комбинат»

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

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Кадровый учет;
- Расчет зарплаты;
- Регламентированная отчетность;
- А...

ООО «Аэроэкспресс»
ООО «Аэроэкспресс»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление холдингом

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ ...

ООО «Фипар»
ООО «Фипар»

Отрасль:

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

Специалисты «Кодерлайн» внедрили «1С:ERP. Управление предприятием 2» и автома...

Внедрение блока бухгалтерского учета «1С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

Отрасль:
Производство

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

Бухгалтерский учет:
- Завершение периода;
- Регламентированная отчетнос...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

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

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

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

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад ...

ООО "Эскорт-Центр"
ООО "Эскорт-Центр"

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

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

- Сквозной учет затрат по объектам
- Бухгалтерский учет
- Расчет зарплаты...

ООО "АСК ИНЖИНИРИНГ"
ООО "АСК ИНЖИНИРИНГ"

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

Внедренное типовое решение:
1С:Документооборот ПРОФ

Делопроизводство
Учет и хранение документов
Ведение номенклатуры дел
...

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

Внедренное типовое решение:
1C:Управление производственным предприятием

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

ПАО «АрселорМиттал Кривой Рог»
ПАО «АрселорМиттал Кривой Рог»

Отрасль:
Металлургическая промышленность

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

- Кадровый учет
- Расчет зарплаты
- Регламентированная отчетность
- Уч...

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

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

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

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