Выгрузка информационной базы (.dt) с конфигурацией из предыдущих заданий, в которой реализована возможность загружать и просматривать из формы элемента номенклатуры.
2. Добавим реквизит «ПутьКартинки» на форму элемента, укажем тип «Строка». В нём будет адрес картинки во временном хранилище. Разместим реквизит на форме с видом «Поле картинки». Установим для элемента формы флажок «Гиперссылка».
4. Внутри процедуры вызовем асинхронную процедуру для выбора файла с картинкой. Дополнительная процедура нужна, т.к. обработчик элемента формы не может быть асинхронной процедурой:
Добавим выбор файла с логичными для этого фильтрами отбора формата файла, проверим, что пользователь выбрал файл, и сохраним адрес временного хранилища.
Выгрузка информационной базы (.dt) с конфигурацией из предыдущих заданий, в которой реализована возможность загружать и просматривать из формы элемента номенклатуры.
Изучить системные глобальные методы «РазделитьФайл» и «ОбъединитьФайлы». Реализовать аналогичную пару методов самостоятельно во внешней обработке. При реализации не использовать «РазделитьФайл» и «ОбъединитьФайлы», необходимо реализовать их аналоги, пользуясь работой с файлами и потоками.
На первой закладке расположено поле «Имя файла», в котором пользователь с помощью стандартного диалога выберет произвольный файл на диске. Также на закладке расположено числовое поле «Размер части» и текстовое поле «Путь», где пользователь с помощью стандартного диалога выбора каталога выберет путь, в котором нужно разместить полученные части файла.
На второй закладке должен быть размещён элемент управления «ТаблицаФормы», в котором пользователь сможет указать в нужном ему порядке перечень имён файлов. Также на закладке должен быть размещён элемент «Результат», где пользователь с помощью стандартного диалога сохранения укажет место, в которое нужно сохранить результат склейки.
* Создать внешнюю обработку с реквизитами: «ИмяФайла», «РазмерЧасти», «Путь», «Результат» и табличной частью «ИменаЧастей» с единственным реквизитом «ИмяЧасти».
* В обработке создать форму и разместить в ней две страницы: «Разделить файл» и «Объединить файлы». На странице «Разделить файл» разместить реквизиты «Имя файла» и «Размер части».
* В элементе управления «ИмяФайла» и «Путь» включить отображение кнопки выбора «КнопкаВыбора = Да».
* Реализовать алгоритм выбора файла с помощью стандартного диалога в поле «ИмяФайла» в обработчике «НачалоВыбора».
* Повторить для элемента управления «Путь», но использовать диалог в режиме выбора каталога.
* Создать команду «РазделитьФайл» и разместить её на форме на закладке «Разделить файл».
* Выяснить размер исходного файла и записать в переменную «ОсталосьПрочитать». См. объект «Файл» и «ФайловыйПоток».
* В цикле открыть новый файловый поток для записи. Имя части сгенерировать как `"Часть_"+"Счетчик`.
* Записать в файловый поток части методом `ИсходныйПоток.КопироватьВ(ПотокЧасти, РазмерЧасти)`.
* Перед записью проконтролировать, что `РазмерЧасти` меньше переменной `ОсталосьПрочитать`. Если РазмерЧасти больше — скопировать только оставшееся число байт
* Уменьшить переменную «ОсталосьПрочитать» на «РазмерЧасти».
* На закладке «Объединение файлов» разместить табличную часть «ИменаЧастей» и поле реквизита «Результат».
* В поле реквизита «Результат» включить отображение кнопки выбора и написать алгоритм выбора пути файла.
* Создать команду «Объединить файлы» и разместить её на форме.
* Написать обработчик команды таким образом, чтобы он создал файл с именем, указанным в поле «Результат» и перенёс в него содержимое всех файлов, перечисленных в таблице «ИменаЧастей».
* Открыть для записи поток в файл из поля «Результат».
* В цикле по таблице `ИменаЧастей` открывать потоки для чтения текущей строки таблицы и копировать их в поток-результат методом `ПотокИсточник.КопироватьВ`.
* Количество байт контролировать в этом случае не надо.