Выгрузка информационной базы (.dt) с конфигурацией из предыдущих заданий, в которой реализована возможность загружать и просматривать из формы элемента номенклатуры.
2. Добавим реквизит "ПутьКартинки" на форму элемента, укажем тип "Строка". В нем будет адрес картинки во временном хранилище. Разместим реквизит на форме с видом "Поле картинки". Установим для элемента формы флажок "Гиперссылка".
4. Внутри процедуры вызовем асинхронную процедуру для выбора файла с картинкой. Дополнительная процедура нужна т.к. обработчик элемента формы не может быть асинхронной процедурой.
Добавим выбор файла с логичными для этого фильтрами отбора формата файла, проверим, что пользователь выбрал файл и сохраним адрес временного хранилища.
## Задача 2 Сохранение картинки номенклатуры с установленной шириной
### Описание задачи
Добавить возможность сохранения в файл картинки номенклатуры с шириной 100 писелей
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией из предыдущих заданий, в которой реализована возможность загружать и просматривать из формы элемента номенклатуры.
Ранее выбранную картинку номенклатуры можно сохранить в файл, при этом ширина сохраненной картинки будет 100 пикселей.
### Процесс выполнения
1. Добавим на форму элемента справочника Номенклатура команду СохранитьКартинку, создадим связанную с командой кнопку на коммандной панели формы.
2. Реализуем обработчик команды, в котором вызовем серверный метод для подготовки картинки и предложим пользователю сохранить картинку.
Изучить системные глобальные методы "РазделитьФайл" и "ОбъединитьФайлы". Реализовать аналогичную пару методов самостоятельно во внешней обработке (при реализации не использовать "РазделитьФайл" и "ОбъединитьФайлы", необходимо реализовать их аналоги, пользуясь работой с файлами и потоками).
На первой закладке расположено поле "Имя файла", в которой пользователь с помощью стандартного диалога выберет произвольный файл на диске. Так же на закладке расположено числовое поле "Размер части" и текстовое поле "Путь", в котором пользователь с помощью стандартного диалога выбора каталога выберет путь, в котором нужно разместить полученные части файла.
На второй закладке должен быть размещен элемент управления ТаблицаФормы, в котором пользователь сможет указать в нужном ему порядке перечень имен файлов. Так же на закладке должен быть размещен элемент "Результат", в котором пользователь с помощью стандартного диалога сохранения укажет место, в которое нужно сохранить результат склейки.
## Порядок выполнения
### Разбиение файлов
* Создать внешнюю обработку с реквизитами: "ИмяФайла", "РазмерЧасти", "Путь", "Результат" и табличной частью "ИменаЧастей" с единственным реквизитом "ИмяЧасти"
* В обработке создать форму и разместить в ней 2 страницы "Разделить файл" и "Объединить файлы". На странице "Разделить файл" разместить реквизиты "Имя файла" и "Размер части".
* В элементе управления "ИмяФайла" и "Путь" включить отображение кнопки выбора "КнопкаВыбора = Да";
* Реализовать алгоритм выбора файла с помощью стандартного диалога в поле "ИмяФайла" в обработчике "НачалоВыбора".
* Повторить для элемента управления "Путь", но использовать диалог в режиме выбора каталога
* Создать команду "РазделитьФайл" и разместить ее на форме на закладке "Разделить файл"
* Написать алгоритм разбиения файла на части. Каждая часть сохраняется в отдельный файл.
### Подсказка по алгоритму разбиения
* Выяснить размер исходного файла и записать в переменную "ОсталосьПрочитать". См. объект "Файл" и "ФайловыйПоток"
* В цикле открыть новый файловый поток для записи. Имя части сгенерировать как `"Часть_"+"Счетчик`
* Записать в файловый поток части методом `ИсходныйПоток.КопироватьВ(ПотокЧасти, РазмерЧасти)`
* Перед записью проконтролировать, что `РазмерЧасти` меньше переменной `ОсталосьПрочитать`. Если РазмерЧасти больше - скопировать только оставшееся число байт
* Уменьшить переменную "ОсталосьПрочитать" на "РазмерЧасти"
### Объединение файлов
* На закладке "Объединение файлов" разместить табличную часть "ИменаЧастей" и поле реквизита "Результат".
* В поле реквизита "Результат" включить отображение кнопки выбора и написать алгоритм выбора пути файла
* Создать команду "Объединить файлы" и разместить ее на форме
* Написать обработчик команды таким образом, чтобы он создал файл с именем, указанным в поле "Результат" и перенес в него содержимое всех файлов, перечисленных в таблице "ИменаЧастей"
### Подсказка по алгоритму объединения
* Открыть для записи поток в файл из поля "Результат"
* В цикле по таблице `ИменаЧастей` открывать потоки для чтения текущей строки таблицы и копировать их в поток-результат методом `ПотокИсточник.КопироватьВ`
* Количество байт контролировать в данном случае не надо.
Чтобы вам было проще понять, что в итоге должно получиться, мы подготовили подсказки: анимационные изображения в формате gif или картинки. Чтобы их увидеть, кликните по [ссылке](Examples/homework-5-9-example.md)