Загрузка и выгрузка картинок из 1С на FTP сервер
По теме из базы знаний
- Обмен между 1С и другими системами в формате YML (OZON, Wildberries, Яндекс Маркет, СберМегаМаркет, Юла, Леруа и др.)
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Универсальная загрузка остатков и цен поставщиков в 1С (УТ 11, КА 2, ERP 2.0) из файлов Excel, CSV, XML (YML и CML)
- Подсистема выгрузки из 1С в Excel (по листам) прайса с картинками на ФТП(FTP) или в папку по расписанию или вручную(встроенной в расширение обработкой)
- Загрузка файла YML (формат Yandex Market Language) в 1С:УТ11.5
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Все зависит от конфигурации. В современных конфах есть механизм работы с файлами (в БСП). Есть функция, которая получает коллекцию файлов, есть функция, которая получает данные файла - просто двоичные данные, которые просто можно записать. Ну и есть средства для работы с ftp - объект FTPСоединение(Адрес, Порт, Юзер, Пароль), ну и дальше Соединение.Записать(ФайлТут, ФайлТам).
ВЫБРАТЬ
НоменклатураПрисоединенныеФайлы.Ссылка КАК Ссылка,
НоменклатураПрисоединенныеФайлы.ВладелецФайла.Код КАК ВладелецФайлаКод
ИЗ
Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
ГДЕ
НоменклатураПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
Подскажите как мне в запросе получить картинку и код для всей номенклатуры?
Тут я получаю только под конкретную
(6)
А почему у меня не работает сохранение в мой каталог?Он сохраняет в папку пользователя...
Хотя пишу на рабочий стол...Из-за слешей?
&НаСервере
Процедура ОбработатьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураПрисоединенныеФайлы.Ссылка КАК Ссылка,
| НоменклатураПрисоединенныеФайлы.ВладелецФайла.Код КАК ВладелецФайлаКод
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы";
Запрос.УстановитьПараметр("ВладелецФайла", Объект.НоменклатураДляСохраненияКартинок);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Сч=0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ДанныеКартинки = РаботаСФайлами.ДвоичныеДанныеФайла(ВыборкаДетальныеЗаписи.Ссылка);
ДанныеКартинки.Записать(""+Объект.ПутьДляСохранения+ ВыборкаДетальныеЗаписи.ВладелецФайлаКод+"_"+Сч+".jpg");
Сч=Сч+1;
КонецЦикла;
КонецПроцедуры
ПоказатьА почему у меня не работает сохранение в мой каталог?Он сохраняет в папку пользователя...
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Объект.ПутьДляСохранения = "C:\Users\stanislav\Desktop";
КонецПроцедуры
Хотя пишу на рабочий стол...Из-за слешей?
&НаКлиенте
Процедура ОтправитьКартинкиНаFTPs(Команда)
FTPСоединение = ПодключениеКFTPs();
Сообщить(FTPСоединение);
Объект.ПутьДляСохранения = "/disk1/img/";
FTPСоединение.УстановитьТекущийКаталог (Объект.ПутьДляСохранения);
ОбработатьНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОбработатьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураПрисоединенныеФайлы.Ссылка КАК Ссылка,
| НоменклатураПрисоединенныеФайлы.ВладелецФайла.Код КАК ВладелецФайлаКод
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы";
//Запрос.УстановитьПараметр("ВладелецФайла", Объект.НоменклатураДляСохраненияКартинок);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Сч=0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ДанныеКартинки = РаботаСФайлами.ДвоичныеДанныеФайла(ВыборкаДетальныеЗаписи.Ссылка);
ДанныеКартинки.Записать(""+Объект.ПутьДляСохранения + ВыборкаДетальныеЗаписи.ВладелецФайлаКод+"_"+Сч+".jpg");
Сч=Сч+1;
КонецЦикла;
КонецПроцедуры
ПоказатьНе записываются данные на сервер(
(10) Ну и где код записывания данных?
// открыли соединение с ФТП на сервере
Соединение = FTPСоединение( Адрес, Порт, Юзер, Пароль );
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ДанныеКартинки = РаботаСФайлами.ДвоичныеДанныеФайла(ВыборкаДетальныеЗаписи.Ссылка);
// файл, который запишем локально - потом его надо будет удалить
ФайлТут = ПолучитьВременноеИмяФайла("jpg");
// файл на ftp-сервере
ФайлТам = "/path/to/file/" + ВыборкаДетальныеЗаписи.ВладелецФайлаКод + "_.jpg";
// запишем файл тут
ДанныеКартинки.Записать( ФайлТут );
// запишем файл туда
Соединение.Записать( ФайлТут, ФайлТам ).
// удалим локально записанный файл, т.к. больше он нам не нужен
/УдалитьФайлы(ФайлТут);
КонецЦикла;
// закроем соединение
Соединение.Закрыть();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот