Выгрузка Изоборжений из справочника в выбранный каталог

1. G_102345487146519347193 15.10.24 07:36 Сейчас в теме
Всем привет, подскажите пожалуйста, какие методы нужно использовать и как построить код, чтобы человек на клиенте выбрал каталог и выгрузил все изображения из справочника. В коде я изображения получаю из Хранилища Значений и приходит от туда двоичные значения. Пробовал метод записать использовать, но не понимаю как организовать путь Каталога. Не ругайтесь если я чего то не понимаю, можно дать ссылки на литературу которая поможет решить вопрос. Я пишу функцию, в которой пишу запрос для получения двоичных данных картинки, после циклом добавляю значения в массив и возращаю массив в процедуру на клиенте. 2) Тут я должен по нажатию кнопки, открыть каталог для выбора сохранения, и я так понимаю от выбранного пути меняется переменная "Путь", но вот сам метод записать двоичных данных строиться циклом? То есть я обхожу массив и каждый его элемент и формирую запись по выбранному пути ?
Прикрепленные файлы:
Найденные решения
3. user5300 1059 15.10.24 08:40 Сейчас в теме
(1) Примерно так: (Дальше сам подгонишь)
&НаСервере
Функция ВыгрузитьНаДиск()
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 2
		|	0 КАК Расширение,
		|	0 КАК Ссылка,
		|	0 КАК ДанныеФайла
		|ИЗ 0
		|	 КАК 0

	Результат = Запрос.Выполнить().Выбрать();
	КоллекцияКартинок = новый Массив;
	
	Пока Результат.Следующий() Цикл
		СтруктураФайла = новый Структура;   
		СтруктураФайла.Вставить("Данные",Результат.ДанныеФайла);
		СтруктураФайла.Вставить("Наименование", Строка(Результат.Ссылка));
		СтруктураФайла.Вставить("Расширение",Результат.Расширение);
		
        КоллекцияКартинок.Добавить(СтруктураФайла);
		
	КонецЦикла;
	
	Возврат КоллекцияКартинок;
	
КонецФункции



&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	
	КоллекцияКартинок = ВыгрузитьНаДиск(); 
		
	// Отказываемся от стандартной обработки процедуры
	СтандартнаяОбработка = Ложь;

	// Создаем диалог выбора каталога и указываем для чего он будет использоваться
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
	// Задаем фильтр доступных расширений файлов для выбора
	//Диалог.Фильтр = НСтр("ru=’Книга Excel 97 (*.xls)|*.xls|Книга Excel 2007 (*.xlsx)|*.xlsx’");  // это если выбор файла, а не каталога
	// Задаем текст заголовка окна выбора
	Диалог.Заголовок = НСтр("ru=’Выберите каталог для сохранения’");
	// Создаем объект ОписаниеОповещения, который будет передан в метод Показать
	ОповещениеЗавершения = Новый ОписаниеОповещения("ВыборФайлаЗавершение", ЭтотОбъект, КоллекцияКартинок);
	// Открываем окно выбора файла
	Диалог.Показать(ОповещениеЗавершения);

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


&НаКлиенте
Процедура ЗагрузитьФайлЗавершение(ВыбранныеФайлы, КоллекцияКартинок) Экспорт
		
	Если ВыбранныеФайлы = Неопределено Тогда
		//Сообщить("Каталог не выбран");
        Возврат;
    КонецЕсли;	
			
	ПутьКаталога = Результат[0];
	
	Для каждого Файл из КоллекцияКартинок Цикл 
		Файл.Записать( СтрШаблон("%1/%2.%3",ПутьКаталога,Файл.Наименование,Файл.Расширение); 
	КонецЦикла;		

	Если КоллекцияКартинок.Количество() Тогда
		ПоказатьОповещениеПользователя("Успешно сохранены картинки!",,ПутьКаталога,БиблиотекаКартинок.СформироватьОтчет)№	
    КонецЕсли;
	
КонецПроцедуры    
Показать
G_102345487146519347193; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1880116 15.10.24 07:40 Сейчас в теме
(1)
какие методы нужно использовать и как построить код
Начни, пожалуй, с https://infostart.ru/edu/1353188/
G_102345487146519347193; +1 Ответить
3. user5300 1059 15.10.24 08:40 Сейчас в теме
(1) Примерно так: (Дальше сам подгонишь)
&НаСервере
Функция ВыгрузитьНаДиск()
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 2
		|	0 КАК Расширение,
		|	0 КАК Ссылка,
		|	0 КАК ДанныеФайла
		|ИЗ 0
		|	 КАК 0

	Результат = Запрос.Выполнить().Выбрать();
	КоллекцияКартинок = новый Массив;
	
	Пока Результат.Следующий() Цикл
		СтруктураФайла = новый Структура;   
		СтруктураФайла.Вставить("Данные",Результат.ДанныеФайла);
		СтруктураФайла.Вставить("Наименование", Строка(Результат.Ссылка));
		СтруктураФайла.Вставить("Расширение",Результат.Расширение);
		
        КоллекцияКартинок.Добавить(СтруктураФайла);
		
	КонецЦикла;
	
	Возврат КоллекцияКартинок;
	
КонецФункции



&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	
	КоллекцияКартинок = ВыгрузитьНаДиск(); 
		
	// Отказываемся от стандартной обработки процедуры
	СтандартнаяОбработка = Ложь;

	// Создаем диалог выбора каталога и указываем для чего он будет использоваться
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
	// Задаем фильтр доступных расширений файлов для выбора
	//Диалог.Фильтр = НСтр("ru=’Книга Excel 97 (*.xls)|*.xls|Книга Excel 2007 (*.xlsx)|*.xlsx’");  // это если выбор файла, а не каталога
	// Задаем текст заголовка окна выбора
	Диалог.Заголовок = НСтр("ru=’Выберите каталог для сохранения’");
	// Создаем объект ОписаниеОповещения, который будет передан в метод Показать
	ОповещениеЗавершения = Новый ОписаниеОповещения("ВыборФайлаЗавершение", ЭтотОбъект, КоллекцияКартинок);
	// Открываем окно выбора файла
	Диалог.Показать(ОповещениеЗавершения);

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


&НаКлиенте
Процедура ЗагрузитьФайлЗавершение(ВыбранныеФайлы, КоллекцияКартинок) Экспорт
		
	Если ВыбранныеФайлы = Неопределено Тогда
		//Сообщить("Каталог не выбран");
        Возврат;
    КонецЕсли;	
			
	ПутьКаталога = Результат[0];
	
	Для каждого Файл из КоллекцияКартинок Цикл 
		Файл.Записать( СтрШаблон("%1/%2.%3",ПутьКаталога,Файл.Наименование,Файл.Расширение); 
	КонецЦикла;		

	Если КоллекцияКартинок.Количество() Тогда
		ПоказатьОповещениеПользователя("Успешно сохранены картинки!",,ПутьКаталога,БиблиотекаКартинок.СформироватьОтчет)№	
    КонецЕсли;
	
КонецПроцедуры    
Показать
G_102345487146519347193; +1 Ответить
4. G_102345487146519347193 15.10.24 16:02 Сейчас в теме
ПутьКаталога = Результат[0]; Откуда Результат берется?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот