Хранилище значений в 1С 8.3 это объект, который позволяет хранить в сериализованном виде почти любые типы данных (включая двоичные). Хранение происходит в самой базе данных (файле 1Cv8.1CD или на SQL-сервере в таблицах). Соответственно при выгрузки конфигурации, данные используемые хранилищем значений будут включены в архив базы (резервную копию). С помощью этого объекта можно хранить такие данные как: файлы, картинки (фотографии), внешние обработки, таблицы значений, структуры... Важно понимать, что хранение данных в таком виде будет существенно замедлять работу базы данных. Поэтому данную технологию хранения рекомендуется использовать в крайних случаях, если отсутствует альтернатива решения для имеющейся задачи. Сохранение в Хранилище Значений в 1С 8.3: &НаСервере Процедура СохранениеВХранилищеЗначений ( ) ; // *** 1.Пример (Таблица значений): ЗначенияТЗ = Новый ТаблицаЗначений ( ) ; // Создание значения "ТЗ" // Вставка в хранилище значений Хранилище_Зн = Новый ХранилищеЗначения ( ЗначенияТЗ , Новый СжатиеДанных ( 9 ) ) ; // "9" - макс.степень сжатия // Сохранение значения в реквизит объекта конфигурации (тип: ХранилищеЗначения) СправочникСтранаСсылка = Справочники . Страны . НайтиПоНаименованию ( "Испания" ) ; Если Не СправочникСтранаСсылка . Пустая ( ) Тогда // Изменим и запишем численность жителей в стране СтранаИспания = СправочникСтранаСсылка . ПолучитьОбъект ( ) ; СтранаИспания . ХранилищеЗначения = Хранилище_Зн ; СтранаИспания . Записать ( ) ; КонецЕсли ; // *** 2.Пример (Табличный документ): ЗначенияТабДок = Новый ТабличныйДокумент ; ЗначенияТабДок . Вывести ( ЭлементыФормы . ПолеТабличногоДокумента1 ) ; Хранилище_ТабДок = Новый ХранилищеЗначения ( ЗначенияТабДок ) ; // *** 3.Пример (Структура): ЗначенияСтр = Новый Структура ( ) ; // Создание значения "Структура" ЗначенияСтр . Вставить ( "Код" , "34" ) ; ЗначенияСтр . Вставить ( "Наименование" , "Испания" ) ; ЗначенияСтр . Вставить ( "Описание" , "Европейская страна, расположенная на Пиренейском полуострове" ) ; ЗначенияСтр . Вставить ( "Население" , 46600000 ) ; // Вставка в хранилище значений Хранилище_Стр = Новый ХранилищеЗначения ( ЗначенияСтр , Новый СжатиеДанных ( 9 ) ) ; // "9" - макс.степень сжатия ЗначениеВФайл ( "D:\import\" , Хранилище_Стр ) ; // Сохранение значения в файл // *** 4.Пример (Любой файл) : ФайлДвоичныеДанные = Новый ДвоичныеДанные ( "D:\import\КлиентБанк_РБ.exe" ) ; Хранилище_Файл = Новый ХранилищеЗначения ( ФайлДвоичныеДанные , Новый СжатиеДанных ( 0 ) ) ; // "0" - без сжатия // *** 5.Пример (Файл картинка) : ФайлФото = Новый Картинка ( "D:\import\ФотоСотрудника.png" ) ; Хранилище_Фото = Новый ХранилищеЗначения ( ФайлФото , Новый СжатиеДанных ( 5 ) ) ; // "5" - средн.степень сжатия // *** 6.Пример (Текстовый файл) : ФайлТекст = Новый ЧтениеТекста ( "D:\import\Война_и_мир.txt" ) ; ТекстИзФайла = ФайлТекст . Прочитать ( ) ; Хранилище_Текст = Новый ХранилищеЗначения ( ТекстИзФайла , Новый СжатиеДанных ( 1 ) ) ; // "1" - мин.степень сжатия // *** 7.Пример (Отчет/обработка 1С) : Хранилище_Epf = Новый ХранилищеЗначения ( Новый ДвоичныеДанные ( "D:\import\Otchet_realizacija_2020.epf" , СтепеньСжатия ) ) ; КонецПроцедуры Восстановление из Хранилище Значений в 1С 8.3: &НаСервере Процедура ВосстановлениеИзХранилищеЗначений ( ) ; ИмяФайла = "D:\import\Война_и_мир.txt" ; // Двоичные данные можно восстановить из хранилища значения методом Получить и записать в файл методом Записать() Если ТипЗнч ( РеквизитХранилище ) = Тип ( "ДвоичныеДанные" ) Тогда // Хранилище.Получить()<>Неопределено Тогда // Процедура извлекает данные из хранилища (требует времени) // Для больших объемов данных рекомендуется использовать доп.реквизит (Например: Булево) Содержит данные - Истина ДанныеХранилища = РеквизитХранилище . Получить ( ) ; Если ДанныеХранилища = Неопределено Тогда Сообщить ( "Ошибка получения данных из хранилища значений 1С" ) ; КонецЕсли ; ДанныеХранилища . Записать ( ИмяФайла ) ; // Записываем восстановленые данные в файл // Восстановление Табличного документа ЭлементыФормы . ПолеТабличногоДокумента1 . Вывести ( ДанныеХранилища ) ; // Восстановление и запуск Отчета/обработки 1С ИмяФайла_Epf = "D:\import\Otchet_realizacija_2020.epf" ; ДвоичныеДанные = РеквизитХранилище . Получить ( ) ; ДвоичныеДанные . Записать ( ИмяФайла_Epf ) ; Epf = ВнешниеОбработки . Создать ( ИмяФайла_Epf ) ; Epf . ПолучитьФорму ( ) . Открыть ( ) ; Иначе ДанныеХранилища = РеквизитХранилище ; КонецЕсли ; // Файлы зарегистрированного типа (doc, xls, pdf, jpg, txt, exe...) ЗапуститьПриложение ( ИмяФайла ) ; КонецПроцедуры Очистка реквизита Хранилище Значений в 1С 8.3: &НаКлиенте Процедура ОчисткаРеквизитаХранилищеЗначений ( ) ; РеквизитХранилище = Неопределено ; КонецПроцедуры Проверка значения Хранилище Значений в 1С 8.3: &НаКлиенте Процедура ПроверкаЗначенияХранилищеЗначений ( ) ; Значение = РеквизитХранилище . Получить ( ) ; Если Значение < > Неопределено Тогда Если ТипЗнч ( Значение ) = Тип ( "Строка" ) Тогда Сообщить ( "Это строка" ) ; ИначеЕсли ТипЗнч ( Значение ) = Тип ( "Картинка" ) Тогда Сообщить ( "Это фотография (картинка)" ) ; КонецЕсли ; КонецЕсли ; КонецПроцедуры Смотрите также: Электронный учебник по программированию в 1С Рекомендации по изучению программирования 1С с нуля Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, нидерландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С Программирование в 1С 8.3 с нуля — краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки