mirror of
https://github.com/netology-code/1c-homeworks.git
synced 2024-11-24 08:02:20 +02:00
Update homework-5-9.md
This commit is contained in:
parent
88526b8464
commit
de0042923f
@ -86,7 +86,7 @@
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Добавить возможность сохранения в файл картинки номенклатуры с шириной 100 писелей
|
||||
Добавить возможность сохранения в файл картинки номенклатуры с шириной 100 писелей.
|
||||
|
||||
### Требования к результату
|
||||
|
||||
@ -96,7 +96,7 @@
|
||||
|
||||
### Процесс выполнения
|
||||
|
||||
1. Добавим на форму элемента справочника Номенклатура команду СохранитьКартинку, создадим связанную с командой кнопку на коммандной панели формы.
|
||||
1. Добавим на форму элемента справочника «Номенклатура» команду «СохранитьКартинку», создадим связанную с командой кнопку на коммандной панели формы.
|
||||
|
||||
2. Реализуем обработчик команды, в котором вызовем серверный метод для подготовки картинки и предложим пользователю сохранить картинку.
|
||||
|
||||
@ -146,51 +146,51 @@
|
||||
КонецФункции
|
||||
```
|
||||
|
||||
## Задача 3 (со звездочкой) Разбить файл на части и склеить после этого.
|
||||
## Задача 3 (со звёздочкой). Разбить файл на части и склеить после этого
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Изучить системные глобальные методы "РазделитьФайл" и "ОбъединитьФайлы". Реализовать аналогичную пару методов самостоятельно во внешней обработке (при реализации не использовать "РазделитьФайл" и "ОбъединитьФайлы", необходимо реализовать их аналоги, пользуясь работой с файлами и потоками).
|
||||
Внешняя обработка должна содержать 2 закладки:
|
||||
Изучить системные глобальные методы «РазделитьФайл» и «ОбъединитьФайлы». Реализовать аналогичную пару методов самостоятельно во внешней обработке. При реализации не использовать «РазделитьФайл» и «ОбъединитьФайлы», необходимо реализовать их аналоги, пользуясь работой с файлами и потоками.
|
||||
Внешняя обработка должна содержать две закладки:
|
||||
|
||||
* Разделить файл
|
||||
* Объединить файлы
|
||||
* разделить файл,
|
||||
* объединить файлы.
|
||||
|
||||
На первой закладке расположено поле "Имя файла", в которой пользователь с помощью стандартного диалога выберет произвольный файл на диске. Так же на закладке расположено числовое поле "Размер части" и текстовое поле "Путь", в котором пользователь с помощью стандартного диалога выбора каталога выберет путь, в котором нужно разместить полученные части файла.
|
||||
На первой закладке расположено поле «Имя файла», в котором пользователь с помощью стандартного диалога выберет произвольный файл на диске. Также на закладке расположено числовое поле «Размер части» и текстовое поле «Путь», где пользователь с помощью стандартного диалога выбора каталога выберет путь, в котором нужно разместить полученные части файла.
|
||||
|
||||
На второй закладке должен быть размещен элемент управления ТаблицаФормы, в котором пользователь сможет указать в нужном ему порядке перечень имен файлов. Так же на закладке должен быть размещен элемент "Результат", в котором пользователь с помощью стандартного диалога сохранения укажет место, в которое нужно сохранить результат склейки.
|
||||
На второй закладке должен быть размещен элемент управления «ТаблицаФормы», в котором пользователь сможет указать в нужном ему порядке перечень имён файлов. Также на закладке должен быть размещён элемент «Результат», где пользователь с помощью стандартного диалога сохранения укажет место, в которое нужно сохранить результат склейки.
|
||||
|
||||
## Порядок выполнения
|
||||
|
||||
### Разбиение файлов
|
||||
|
||||
* Создать внешнюю обработку с реквизитами: "ИмяФайла", "РазмерЧасти", "Путь", "Результат" и табличной частью "ИменаЧастей" с единственным реквизитом "ИмяЧасти"
|
||||
* В обработке создать форму и разместить в ней 2 страницы "Разделить файл" и "Объединить файлы". На странице "Разделить файл" разместить реквизиты "Имя файла" и "Размер части".
|
||||
* В элементе управления "ИмяФайла" и "Путь" включить отображение кнопки выбора "КнопкаВыбора = Да";
|
||||
* Реализовать алгоритм выбора файла с помощью стандартного диалога в поле "ИмяФайла" в обработчике "НачалоВыбора".
|
||||
* Повторить для элемента управления "Путь", но использовать диалог в режиме выбора каталога
|
||||
* Создать команду "РазделитьФайл" и разместить ее на форме на закладке "Разделить файл"
|
||||
* Создать внешнюю обработку с реквизитами: «ИмяФайла», «РазмерЧасти», «Путь», «Результат» и табличной частью «ИменаЧастей» с единственным реквизитом «ИмяЧасти».
|
||||
* В обработке создать форму и разместить в ней две страницы: «Разделить файл» и «Объединить файлы». На странице «Разделить файл» разместить реквизиты «Имя файла» и «Размер части».
|
||||
* В элементе управления «ИмяФайла» и «Путь» включить отображение кнопки выбора «КнопкаВыбора = Да».
|
||||
* Реализовать алгоритм выбора файла с помощью стандартного диалога в поле «ИмяФайла» в обработчике «НачалоВыбора».
|
||||
* Повторить для элемента управления «Путь», но использовать диалог в режиме выбора каталога.
|
||||
* Создать команду «РазделитьФайл» и разместить её на форме на закладке «Разделить файл».
|
||||
* Написать алгоритм разбиения файла на части. Каждая часть сохраняется в отдельный файл.
|
||||
|
||||
### Подсказка по алгоритму разбиения
|
||||
|
||||
* Выяснить размер исходного файла и записать в переменную "ОсталосьПрочитать". См. объект "Файл" и "ФайловыйПоток"
|
||||
* В цикле открыть новый файловый поток для записи. Имя части сгенерировать как `"Часть_"+"Счетчик`
|
||||
* Записать в файловый поток части методом `ИсходныйПоток.КопироватьВ(ПотокЧасти, РазмерЧасти)`
|
||||
* Перед записью проконтролировать, что `РазмерЧасти` меньше переменной `ОсталосьПрочитать`. Если РазмерЧасти больше - скопировать только оставшееся число байт
|
||||
* Уменьшить переменную "ОсталосьПрочитать" на "РазмерЧасти"
|
||||
* Выяснить размер исходного файла и записать в переменную «ОсталосьПрочитать». См. объект «Файл» и «ФайловыйПоток».
|
||||
* В цикле открыть новый файловый поток для записи. Имя части сгенерировать как `"Часть_"+"Счетчик`.
|
||||
* Записать в файловый поток части методом `ИсходныйПоток.КопироватьВ(ПотокЧасти, РазмерЧасти)`.
|
||||
* Перед записью проконтролировать, что `РазмерЧасти` меньше переменной `ОсталосьПрочитать`. Если РазмерЧасти больше — скопировать только оставшееся число байт
|
||||
* Уменьшить переменную «ОсталосьПрочитать» на «РазмерЧасти».
|
||||
|
||||
### Объединение файлов
|
||||
|
||||
* На закладке "Объединение файлов" разместить табличную часть "ИменаЧастей" и поле реквизита "Результат".
|
||||
* В поле реквизита "Результат" включить отображение кнопки выбора и написать алгоритм выбора пути файла
|
||||
* Создать команду "Объединить файлы" и разместить ее на форме
|
||||
* Написать обработчик команды таким образом, чтобы он создал файл с именем, указанным в поле "Результат" и перенес в него содержимое всех файлов, перечисленных в таблице "ИменаЧастей"
|
||||
* На закладке «Объединение файлов» разместить табличную часть «ИменаЧастей» и поле реквизита «Результат».
|
||||
* В поле реквизита «Результат» включить отображение кнопки выбора и написать алгоритм выбора пути файла.
|
||||
* Создать команду «Объединить файлы» и разместить её на форме.
|
||||
* Написать обработчик команды таким образом, чтобы он создал файл с именем, указанным в поле «Результат» и перенёс в него содержимое всех файлов, перечисленных в таблице «ИменаЧастей».
|
||||
|
||||
### Подсказка по алгоритму объединения
|
||||
|
||||
* Открыть для записи поток в файл из поля "Результат"
|
||||
* В цикле по таблице `ИменаЧастей` открывать потоки для чтения текущей строки таблицы и копировать их в поток-результат методом `ПотокИсточник.КопироватьВ`
|
||||
* Количество байт контролировать в данном случае не надо.
|
||||
* Открыть для записи поток в файл из поля «Результат».
|
||||
* В цикле по таблице `ИменаЧастей` открывать потоки для чтения текущей строки таблицы и копировать их в поток-результат методом `ПотокИсточник.КопироватьВ`.
|
||||
* Количество байт контролировать в этом случае не надо.
|
||||
|
||||
### Подсказка: [результат выполнения домашнего задания](Examples/homework-5-9-example.md)
|
||||
### Подсказка: [результат выполнения домашнего задания](Examples/homework-5-9-example.md).
|
||||
|
Loading…
Reference in New Issue
Block a user