Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выгрузка изображений с иерархией групп          
bereznoy Подменю пользователя
сообщение 22.05.13, 20:47
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

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

Если СокрЛП(КаталогИзображений)="" Тогда
        Предупреждение("Выберите каталог для сохранения файлов.");
        Возврат;
    КонецЕсли;
    СоздатьКаталог(КаталогИзображений);
    Запрос=Новый Запрос("
    |ВЫБРАТЬ
    |    Объект КАК Номенклатура,
    |    Объект.Код КАК Код,
    |    Хранилище,
    |    ВЫБОР КОГДА Объект.ОсновноеИзображение=Ссылка ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ЭтоОсновное
    |ИЗ
    |    Справочник.ХранилищеДополнительнойИнформации
    |ГДЕ
    |    Объект ССЫЛКА Справочник.Номенклатура
    |УПОРЯДОЧИТЬ ПО Объект");
    Выборка=Запрос.Выполнить().Выбрать();
    ФормаПроцесса=ПолучитьФорму("ФормаПроцесса");
    ФормаПроцесса.Заголовок="Выполняется выгрузка...";
    Всего=Выборка.Количество();
    ФормаПроцесса.ЭлементыФормы.ИндикаторПроцесса.МаксимальноеЗначение=Всего;
    н=0;
    СчДопИзображений=0;
    ПоследняяНоменклатура=Неопределено;
    ФормаПроцесса.Открыть();
    Пока Выборка.Следующий() Цикл
        
        ОбработкаПрерыванияПользователя();
        н=н+1;
        Если н=1 ИЛИ Цел(н/10)=н/10 ИЛИ н=Всего Тогда
            ФормаПроцесса.ЭлементыФормы.ИндикаторПроцесса.Значение=н;
            ФормаПроцесса.ЭлементыФормы.ТекущийЭлемент.Заголовок=Выборка.Номенклатура;
        КонецЕсли;
        
        Если ТолькоОсновныеИзображения И НЕ Выборка.ЭтоОсновное Тогда
            Продолжить;
        КонецЕсли;
        Если НЕ Выборка.ЭтоОсновное Тогда
            Если ПоследняяНоменклатура<>Выборка.Номенклатура Тогда
                СчДопИзображений=1;
            Иначе
                СчДопИзображений=СчДопИзображений+1;
            КонецЕсли;
            ПоследняяНоменклатура=Выборка.Номенклатура;
        КонецЕсли;
        ИмяФайла=СокрЛП(Выборка.Код)+?(Выборка.ЭтоОсновное,"","("+СчДопИзображений+")")+РасширениеФайлов;
        Файл=Выборка.Хранилище.Получить();
        Если Файл<>Неопределено Тогда
            Файл.Записать(КаталогИзображений+"\"+ИмяФайла);
            Сообщить("Записан файл: "+ИмяФайла,СтатусСообщения.Информация);
        Иначе
            Сообщить("Изображение отсутствует в хранилище! "+Выборка.Номенклатура,СтатусСообщения.Внимание);
        КонецЕсли;
        
    КонецЦикла;
    ФормаПроцесса.Закрыть();


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

Vofka Подменю пользователя
сообщение 22.05.13, 20:58
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Возможности проверить нет, так что инфа не 100%. В запрос вставьте строку
|ИТОГИ ПО
|   Номенклатура ИЕРАРХИЯ

bereznoy Подменю пользователя
сообщение 22.05.13, 21:06
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Цитата(Vofka @ 22.05.13, 21:58) *
Возможности проверить нет, так что инфа не 100%. В запрос вставьте строку
|ИТОГИ ПО
|   Номенклатура ИЕРАРХИЯ

В запросе ладно получу я группу, а дальше как создать именно по иерархии каталоги на локальном диске, подозреваю что "СоздатьКаталог()", но как что именно что б было папка в нудной папке и потом по ним раскидать фотографии, ну тут тоже думаю вот так надо "КопироватьФайл(<Имя файла источника>, <Имя файла приемника>) ", но прошу помощи


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

Vofka Подменю пользователя
сообщение 22.05.13, 21:25
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

bereznoy, я сейчас отвечу на новый вопрос, вы напишете "ну ладно, это сделаю, а дальше вот мне ещё надо..."?

bereznoy Подменю пользователя
сообщение 22.05.13, 21:43
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Цитата(Vofka @ 22.05.13, 22:25) *
bereznoy, я сейчас отвечу на новый вопрос, вы напишете "ну ладно, это сделаю, а дальше вот мне ещё надо..."?

Какой новый, ключевой вопрос выгрузка каталогов на локальный диск таких же как в номенклатуре, получить группы из запроса думаю это не составит труда и сделать обход результата даже для начинающего как я, вопрос прежний и он озвучен в заголовке темы


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

bereznoy Подменю пользователя
сообщение 22.05.13, 22:43
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Вот так выгружает все папки общим списком, как сделать что б выгружалось как в иерархии (в папке подпака и т.д.)
    З = Новый Запрос;
    З.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Наименование КАК Наименование
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ЭтоГруппа = ИСТИНА";

    Каталоги = З.Выполнить();
    Папки = Каталоги.Выбрать();
    Пока Папки.Следующий() Цикл
        Если Папки.Группа = Истина Тогда
            
                    КаталогНаДиске = Новый Файл(Папки.Наименование);
                    Если НЕ КаталогНаДиске.Существует() Тогда
                                                                     СоздатьКаталог(Папки.Наименование);
                    КонецЕсли;

        КонецЕсли;
    КонецЦикла;


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

Vofka Подменю пользователя
сообщение 23.05.13, 7:54
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(bereznoy @ 22.05.13, 22:43) *
ключевой вопрос выгрузка каталогов на локальный диск таких же как в номенклатуре

Да вы что? А выше про это где сказано?

bereznoy Подменю пользователя
сообщение 23.05.13, 8:58
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Цитата(bereznoy @ 22.05.13, 20:47) *
Есть выгрузка изображений из номенклатуры, выгружается общим списком, подскажите как можно сделать что б выгрузка была с папками, т.е. иерархию сохранить
Вот выгрузка сплошняком


Спасибо за ап, форумчане, те кто умеет читать, подскажите плиз, может кто уже так делал или идея есть


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

bereznoy Подменю пользователя
сообщение 23.05.13, 21:42
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Все сделал, конечно знаю что некорректно, долго выполняется, медленно, но делает то что мне надо, пока так выкрутился, если у кого то появятся оптимизирующие советы, подскажите icon_beer17.gif
Если СокрЛП(КаталогИзображений)="" Тогда
        Предупреждение("Выберите каталог для сохранения файлов.");
        Возврат;
    КонецЕсли;
    //СоздатьКаталог(КаталогИзображений);
    Запрос=Новый Запрос("ВЫБРАТЬ
                        |    ХранилищеДополнительнойИнформации.Объект КАК Номенклатура,
                        |    ХранилищеДополнительнойИнформации.Объект.Артикул КАК Код,
                        |    ХранилищеДополнительнойИнформации.Хранилище,
                        |    ВЫБОР
                        |        КОГДА ХранилищеДополнительнойИнформации.Объект.ОсновноеИзображение = ХранилищеДополнительнойИнформации.Ссылка
                        |            ТОГДА ИСТИНА
                        |        ИНАЧЕ ЛОЖЬ
                        |    КОНЕЦ КАК ЭтоОсновное,
                        |    ХранилищеДополнительнойИнформации.Объект.Ссылка КАК Тов
                        |ИЗ
                        |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
                        |ГДЕ
                        |    ХранилищеДополнительнойИнформации.Объект ССЫЛКА Справочник.Номенклатура
                        |
                        |УПОРЯДОЧИТЬ ПО
                        |    ХранилищеДополнительнойИнформации.Объект");
    Карт=Запрос.Выполнить();
/////////////////////////////////////////////////////////////////////////////////////////////    
    З = Новый Запрос;
    З.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка КАК Папка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ЭтоГруппа = ИСТИНА";

    Каталоги = З.Выполнить();
    Папки = Каталоги.Выбрать();
    Пока Папки.Следующий() Цикл
        Если ЗначениеЗаполнено(Папки.Папка.Родитель)=0 Тогда
            //Корень
            КаталогНаДиске0 = Новый Файл(КаталогИзображений+"\"+СокрЛП(Папки.Папка.Наименование));
            Если НЕ КаталогНаДиске0.Существует() Тогда
                СоздатьКаталог(КаталогИзображений+"\"+СокрЛП(Папки.Папка.Наименование));
                //Загружаем картинки
                СчДопИзображений=0;
                ПоследняяНоменклатура=Неопределено;

                Изображение = Карт.Выбрать();
                Пока Изображение.Следующий() Цикл
                    Если Изображение.Тов.Родитель = Папки.Папка Тогда
                                                             
                                Если ТолькоОсновныеИзображения И НЕ Изображение.ЭтоОсновное Тогда
                                    Продолжить;
                                КонецЕсли;
                                Если НЕ Изображение.ЭтоОсновное Тогда
                                    Если ПоследняяНоменклатура<>Изображение.Номенклатура Тогда
                                        СчДопИзображений=1;
                                    Иначе
                                        СчДопИзображений=СчДопИзображений+1;
                                    КонецЕсли;
                                    ПоследняяНоменклатура=Изображение.Номенклатура;
                                КонецЕсли;
                                ИмяФайла=СокрЛП(Изображение.Код)+?(Изображение.ЭтоОсновное,"","("+СчДопИзображений+")")+РасширениеФайлов;
                                Файл=Изображение.Хранилище.Получить();
                                Если Файл<>Неопределено Тогда
                                    Файл.Записать(КаталогИзображений+"\"+СокрЛП(Папки.Папка.Наименование)+"\"+ИмяФайла);
                                Иначе
                                    Сообщить("Изображение отсутствует в хранилище! "+Изображение.Номенклатура,СтатусСообщения.Внимание);
                                КонецЕсли;
                            
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    Папки1 = Каталоги.Выбрать();
    Пока Папки1.Следующий() Цикл
        Если ЗначениеЗаполнено(Папки1.Папка.Родитель)=1 И ЗначениеЗаполнено(Папки1.Папка.Родитель.Родитель)=0 Тогда
            //Первый уровень
            КаталогНаДиске1 = Новый Файл(КаталогИзображений+"\"+СокрЛП(Папки1.Папка.Родитель)+"\"+СокрЛП(Папки1.Папка.Наименование));
            Если НЕ КаталогНаДиске1.Существует() Тогда
                СоздатьКаталог(КаталогИзображений+"\"+СокрЛП(Папки1.Папка.Родитель)+"\"+СокрЛП(Папки1.Папка.Наименование));
                //Загружаем картинки
                СчДопИзображений=0;
                ПоследняяНоменклатура=Неопределено;

                Изображение1 = Карт.Выбрать();
                Пока Изображение1.Следующий() Цикл
                    Если Изображение1.Тов.Родитель = Папки1.Папка Тогда
                                                             
                                Если ТолькоОсновныеИзображения И НЕ Изображение1.ЭтоОсновное Тогда
                                    Продолжить;
                                КонецЕсли;
                                Если НЕ Изображение1.ЭтоОсновное Тогда
                                    Если ПоследняяНоменклатура<>Изображение1.Номенклатура Тогда
                                        СчДопИзображений=1;
                                    Иначе
                                        СчДопИзображений=СчДопИзображений+1;
                                    КонецЕсли;
                                    ПоследняяНоменклатура=Изображение1.Номенклатура;
                                КонецЕсли;
                                ИмяФайла=СокрЛП(Изображение1.Код)+?(Изображение1.ЭтоОсновное,"","("+СчДопИзображений+")")+РасширениеФайлов;
                                Файл=Изображение1.Хранилище.Получить();
                                Если Файл<>Неопределено Тогда
                                    Файл.Записать(КаталогИзображений+"\"+СокрЛП(Папки1.Папка.Родитель)+"\"+СокрЛП(Папки1.Папка.Наименование)+"\"+ИмяФайла);
                                Иначе
                                    Сообщить("Изображение отсутствует в хранилище! "+Изображение1.Номенклатура,СтатусСообщения.Внимание);
                                КонецЕсли;
                            
                    КонецЕсли;
                КонецЦикла;

            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    Папки2 = Каталоги.Выбрать();
    Пока Папки2.Следующий() Цикл
        Если ЗначениеЗаполнено(Папки2.Папка.Родитель.Родитель)=1  Тогда
            //Второй уровень
            КаталогНаДиске2 = Новый Файл(КаталогИзображений+"\"+СокрЛП(Папки2.Папка.Родитель.Родитель.Наименование)+"\"+СокрЛП(Папки2.Папка.Родитель.Наименование)+"\"+СокрЛП(Папки2.Папка.Наименование));
            Если НЕ КаталогНаДиске2.Существует() Тогда
                СоздатьКаталог(КаталогИзображений+"\"+СокрЛП(Папки2.Папка.Родитель.Родитель.Наименование)+"\"+СокрЛП(Папки2.Папка.Родитель.Наименование)+"\"+СокрЛП(Папки2.Папка.Наименование));
                //Загружаем картинки
                СчДопИзображений=0;
                ПоследняяНоменклатура=Неопределено;

                Изображение2 = Карт.Выбрать();
                Пока Изображение2.Следующий() Цикл
                    Если Изображение2.Тов.Родитель = Папки2.Папка Тогда
                                                             
                                Если ТолькоОсновныеИзображения И НЕ Изображение2.ЭтоОсновное Тогда
                                    Продолжить;
                                КонецЕсли;
                                Если НЕ Изображение2.ЭтоОсновное Тогда
                                    Если ПоследняяНоменклатура<>Изображение2.Номенклатура Тогда
                                        СчДопИзображений=1;
                                    Иначе
                                        СчДопИзображений=СчДопИзображений+1;
                                    КонецЕсли;
                                    ПоследняяНоменклатура=Изображение2.Номенклатура;
                                КонецЕсли;
                                ИмяФайла=СокрЛП(Изображение2.Код)+?(Изображение2.ЭтоОсновное,"","("+СчДопИзображений+")")+РасширениеФайлов;
                                Файл=Изображение2.Хранилище.Получить();
                                Если Файл<>Неопределено Тогда
                                    Файл.Записать(КаталогИзображений+"\"+СокрЛП(Папки2.Папка.Родитель.Родитель.Наименование)+"\"+СокрЛП(Папки2.Папка.Родитель.Наименование)+"\"+СокрЛП(Папки2.Папка.Наименование)+"\"+ИмяФайла);
                                Иначе
                                    Сообщить("Изображение отсутствует в хранилище! "+Изображение2.Номенклатура,СтатусСообщения.Внимание);
                                КонецЕсли;
                            
                    КонецЕсли;
                КонецЦикла;

            КонецЕсли;
        КонецЕсли;
    КонецЦикла;


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 14:36
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!