Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 20:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как сохранить файлы в базе?  (Прочитано 16630 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Walery100

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-25
  • Сайт: 
  • Профессия: Ученик 1С
Поскажте пожалуйста, можно ли загрузить файл (таблица или текст) в базу?
Потом, разумеется, его от туда вытащить..., в смысле посмотреть.
Давно, эксперементировал с реквизитом типа хранилище значений и хранил там форму типового договора, но не осталось той конфигурации :(


Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
В базу можно залить любой файл. Создаете справочник с типом хранилище. Далее читаете свой файл в двоичные данные и отправляете их в хранилище.

Оффлайн Walery100

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-25
  • Сайт: 
  • Профессия: Ученик 1С
А почему нельзя хранить в реквизите документа?
 Не могли бы Выпривестикусочек кода? (те, что в справке тестил)

Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
В реквизите документа тоже можно. Но обычно загружают в справочник.

Ну вот так например для управляемой формы:

&НаКлиенте
Процедура ИзменитьКартинку(Команда)

АдресВременногоХранилища = "";
ВыбранноеИмя = "";
Если ПоместитьФайл(АдресВременногоХранилища, ВыбранноеИмя, , Истина, ЭтаФорма.УникальныйИдентификатор) Тогда
ПоместитьФайлОбъекта(АдресВременногоХранилища); //стандартная из демо
КонецЕсли;

ОбновитьИзображение();
КонецПроцедуры

&НаСервере
// Процедура извлекает данные объекта из временного хранилища,
// производит модификацию элемента справочника и записывает его.
//
// Параметры:
//  АдресВременногоХранилища – Строка – адрес временного хранилища.
//
// Возвращаемое значение:
//  Нет.
Процедура ПоместитьФайлОбъекта(АдресВременногоХранилища)

ОбъектФормы = РеквизитФормыВЗначение("Объект");

ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);

РазмерИзображения = ДвоичныеДанные.Размер()/1024;

МаксимальныйРазмерАватара = КОнстанты.МаксимальныйРазмерАватара.Получить();
Если ЗначениеЗаполнено(МаксимальныйРазмерАватара) и МаксимальныйРазмерАватара>0 Тогда

Если РазмерИзображения > МаксимальныйРазмерАватара Тогда
ОбщегоНазначения.ВывестиОшибку("При загрузке аватара был выбран файл
|с размером выше допустимого ("+СокрЛП(МаксимальныйРазмерАватара)+" Кбайт).
|Выберите другой файл.");
Возврат;
КонецЕсли;

КонецЕсли;

ОбъектФормы.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
Файл = Новый Файл(АдресВременногоХранилища);

ОбъектФормы.Записать();
Модифицированность = Ложь;
УдалитьИзВременногоХранилища(АдресВременногоХранилища);

ЗначениеВРеквизитФормы(ОбъектФормы, "Объект");     

КонецПроцедуры

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
 МойФайл = Новый ДвоичныеДанные(ПолноеИмяФайла);
 Хранилище = Новый ХранилищеЗначения(МойФайл,Новый СжатиеДанных(9));
 Спр.Файл = Хранилище; // реквизит с типом - хранилище значений

Лучше делать отдельный или справочник, или регистр сведений. Это связано с архитектурой хранения данных. если вы привяжите к документу, то будет храниться в той же таблице где и документы, а так в другой таблице.
Потом, в дальнейшем, если места будет много занимать файлы, то можно вынести эту таблицу на другой винчестер вообще.
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн Walery100

  • *
  • Сообщений: 13
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-25
  • Сайт: 
  • Профессия: Ученик 1С
Давайте я подробнее опишу задачу, что бы получить верный ответ!
Есть желание, что бы работники филиалов предприятия, ежемесячно загружали через ВЭБ-интерфейс документ (например, таблицу), которая хранилась бы в базе и могла быть получена в с сервера. Я полагал, что это документ с реквизитом филиала и периода + хранилище значений. Такой документ легко отыскать и получить файл, только как туда (в реквизит) этот файл запихать?

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
нуууу.. примерно так:
&НаСервереБезКонтекста
Процедура СохранитьВЫбранныйФайл(Адрес)
Спр = Справочники.МоиФайлы.СоздатьЭлемент();
Спр.ФайлХранилище = новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Адрес));
Спр.Записать();
КонецПроцедуры


&НаКлиенте
Процедура ВыборФайла(Команда)
Перем ВыбранноеИмя, НачальноеИмя;
Перем АдресВременногоХранилища;
Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла",ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборФайла(результат, Адрес, ВыбранноеИмя, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕСЛИ;
СохранитьВЫбранныйФайл(Адрес);
КонецПроцедуры
Помог? Нажми - Спасибо :)
skype: Soprov1C


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
172 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 358
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal