1с сохранить файл в базе данных

Обновлено: 05.07.2024

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

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

Соответствие лицензионной политике 1С

Прямая цитата с сайта 1С:

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

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

В расширении планируется реализовать следующий функционал:

  1. Механизм работы с несколькими хранилищами. На текущий момент система получает одно хранилище, которое пользователь установил основным, и сохраняет данные в нем. Пользователь может изменить это хранилище и новые файлы будут сохраняться уже в новое хранилище, а старый по прежнему будут храниться и открываться из старого. Планируется реализовать механизм, который позволит на основании некоторых входных данных определять, какое именно хранилище будет использовано при перемещении файла.
  2. Очистка хранилища. При пометке файла на удаление и удалении его из базы 1С, в случае использования расширения, из базы 1С удалится справочник прикрепленного файла и настройки связи справочника и внешнего хранилища. Однако, само содержимое файла так и останется во внешней базе. Для того, чтобы подобные файлы удалялись автоматически, нужно будет реализовать очистку внешних хранилищ от удаленных в базе 1С файлов.
  3. Реализовать хранение файлов на SQL сервере с использованием механизма FILESTREAM, когда файлы хранятся на диске сервера СУБД, а не в таблице базы. При этом, все операции над данными все равно происходят с учетом этих файлов на диске.

[1] Платформа должна поддерживать добавление расширением новых справочников и регистров сведений.

[2] Расширение можно использовать и для файловой базы, однако представляется маловероятным хранение в файловой базе такого объема присоединенных файлов, что для работы с ними было бы выгодно использовать внешнее хранилище. Так же в случае с файловой базой, вам придется решать вопрос с регламентным запуском самостоятельно, следуя инструкции к БСП.


ИНСТРУКЦИЯ 1С 8 → перейти в меню [СТАТЬИ И ИНСТРУКЦИИ]

Иногда программист 1С просит передать ему (переслать по почте) базу данных 1С 8 для выполнения задач. Как сохранить базу данных 1С 8 правильно? Как это оптимально сделать? Какие при этом данные окажутся у получателя?

Сохраняя базу данных таким образом – Вы создаёте архив (копию) со всеми учётными данными предприятия! Поэтому пересылая созданный архив третьим лицам, Вы должны чётко осознавать, что передаёте получателю полную копию базы данных.

1. Запускаем 1С Предприятие 8 в режиме "Конфигуратор", предварительно выделив нужную информационную базу.



2. Если необходимо, выбираем пользователя с правами администратора и вводим пароль. Проходим авторизацию.



3. В открывшемся окне программы - в меню: Администрирование выбираем пункт "Выгрузить информационную базу. "



4. В следующем окне программы, у нас есть возможность выбрать путь (куда будет сохранена база) и задать имя файла (интуитивно понятное).



5. После нажатия на кнопку "Сохранить" в нижнем левом углу появиться информационная надпись "Выгрузка информационной базы. ", свидетельствующая о процессе выгрузки. Ждём.



6. Когда выгрузка будет завершена - программа выдаст соответствующее предупреждение. Его нужно закрыть по кнопке "ОК". Можно закрыть и окно самой программы 1С.



7. Теперь можем с помощью проводника зайти в директорию (папку) для выгрузки базы, которую выбрали на 4-м этапе. И убедиться, что она там есть.



Готово! Файл 1Cv8.dt содержит конфигурацию и всю учётную информацию. В зависимости от цели создания архива - его можно передать по почте (прикрепив файл к письму), сохранить на внешний накопитель (USB, CD, DVD), восстановить в копию (папку) базы данных и т.д.


// Сохранение значения в реквизит объекта конфигурации (тип: ХранилищеЗначения)
СправочникСтранаСсылка = Справочники . Страны . НайтиПоНаименованию ( "Испания" );
СправочникСтранаСсылка . ХранилищеЗначения = Хранилище_Зн ;
СправочникСтранаСсылка . Записать ();

// *** 2.Пример (Табличный документ):
ЗначенияТабДок =Новый ТабличныйДокумент ;
ЗначенияТабДок . Вывести ( ЭлементыФормы . ПолеТабличногоДокумента1 );
Хранилище_ТабДок =Новый ХранилищеЗначения ( ЗначенияТабДок );

// *** 3.Пример (Структура):
ЗначенияСтр = Новый Структура (); // Создание значения "Структура"
ЗначенияСтр . Вставить ( "Код" , "34" );
ЗначенияСтр . Вставить ( "Наименование" , "Испания" );
ЗначенияСтр . Вставить ( "Описание" , "Европейская страна, расположенная на Пиренейском полуострове" );
ЗначенияСтр . Вставить ( "Население" , 46600000 );
// Вставка в хранилище значений
Хранилище_Стр = Новый ХранилищеЗначения ( ЗначенияСтр , Новый СжатиеДанных ( 9 )); // "9" - макс.степень сжатия
ЗначениеВФайл ( "D:\import\" , Хранилище_Стр ); // Сохранение значения в файл

// *** 4.Пример (Любой файл) :
ФайлДвоичныеДанные = Новый ДвоичныеДанные ( "D:\import\КлиентБанк_РБ.exe" );
Хранилище_Файл = Новый ХранилищеЗначения ( ФайлДвоичныеДанные , Новый СжатиеДанных ( 0 )); // "0" - без сжатия

// *** 5.Пример (Файл картинка) :
ФайлФото = Новый Картинка ( "D:\import\ФотоСотрудника.jpg" );
Хранилище_Фото = Новый ХранилищеЗначения ( ФайлФото , Новый СжатиеДанных ( 5 )); // "5" - средн.степень сжатия

// *** 6.Пример (Текстовый файл) :
ФайлТекст = Новый ЧтениеТекста ( "D:\import\Война_и_мир.txt" );
ТекстИзФайла = ФайлТекст . Прочитать ();
Хранилище_Текст = Новый ХранилищеЗначения ( ТекстИзФайла , Новый СжатиеДанных ( 1 )); // "1" - мин.степень сжатия

// *** 7.Пример (Отчет/обработка 1С) :
Хранилище_Epf = Новый ХранилищеЗначения (Новый ДвоичныеДанные ( "D:\import\Otchet_realizacija_2020.epf" , СтепеньСжатия ));

// Двоичные данные можно восстановить из хранилища значения методом Получить и записать в файл методом Записать()
Если ТипЗнч ( РеквизитХранилище ) = Тип ( "ДвоичныеДанные" ) Тогда

// Хранилище.Получить()<>Неопределено Тогда // Процедура извлекает данные из хранилища (требует времени)
// Для больших объемов данных рекомендуется использовать доп.реквизит (Например: Булево) Содержит данные - Истина
ДанныеХранилища = РеквизитХранилище . Получить ();
Если ДанныеХранилища = Неопределено Тогда
Сообщить ( "Ошибка получения данных из хранилища значений 1С" );
КонецЕсли;
ДанныеХранилища . Записать ( ИмяФайла ); // Записываем восстановленые данные в файл

// Восстановление Табличного документа
ЭлементыФормы . ПолеТабличногоДокумента1 . Вывести ( ДанныеХранилища );

// Восстановление и запуск Отчета/обработки 1С
ИмяФайла_Epf = "D:\import\Otchet_realizacija_2020.epf" ;
ДвоичныеДанные = РеквизитХранилище . Получить ();
ДвоичныеДанные . Записать ( ИмяФайла_Epf );
Epf = ВнешниеОбработки . Создать ( ИмяФайла_Epf );
Epf . ПолучитьФорму (). Открыть ();

Иначе
ДанныеХранилища = РеквизитХранилище ;
КонецЕсли;


ИНСТРУКЦИЯ 1С 7.7 → перейти в меню [СТАТЬИ И ИНСТРУКЦИИ]

Иногда программист 1С просит передать ему (переслать по почте) базу данных 1С 7.7 для выполнения задач. Как сохранить базу данных 1С 7.7 правильно? Как это оптимально сделать? Какие при этом данные окажутся у получателя?

Сохраняя базу данных таким образом – Вы создаёте архив (копию) со всеми учётными данными предприятия! Поэтому пересылая созданный архив третьим лицам, Вы должны чётко осознавать, что передаёте получателю полную копию базы данных.



2. Указателем мыши выделяем интересующую нас информационную базу.



3. В окне « В режиме: » меняем 1С:Предприятие на Конфигуратор. Запускаем по кнопке « ОК » .



4. Если необходимо, выбираем пользователя с правами администратора и вводим пароль. Проходим авторизацию.



5. Попадаем в Конфигуратор 1С. В меню выбираем «Администрирование » -> « Сохранить данные».




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



7. Нажимаем кнопку « Сохранить» и ждём окончания процесса сохранения.



8. После завершения сохранения жмём кнопку « ОК» и полностью закрываем окно Конфигуратора 1С.



9. Открываем путь выбранный в шестом пункте и видим файл (архив) 10062016.zip это и есть архив базы данных.



Готово! Файл (архив) 10062016.zip содержит конфигурацию и всю учётную информацию. В зависимости от цели создания архива - его можно передать по почте (прикрепив файл к письму), сохранить на внешний накопитель (USB, CD, DVD), восстановить в копию (папку) базы данных и т.д.

Читайте также: