1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-24 08:02:20 +02:00

Update homework-5-7.md

This commit is contained in:
EleShvili 2023-02-02 16:49:00 +03:00 committed by GitHub
parent 50839442f0
commit 6bd94a96af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,29 +1,29 @@
# Задание к занятию "Файлы"
# Задание к занятию «Файлы»
Результат выполнения всех двух задач вышлите одним файлом (.dt)
Результат выполнения двух задач вышлите одним файлом (.dt).
## Задача 1 Создать обработку для загрузки цен из файла
## Задача 1. Создать обработку для загрузки цен из файла
### Описание задачи
Создадим обработку для загрузки цен из файла CSV.
Обработка создает новый документ Цены номенклатуры, в табличной части заполняет данные из файла.
Обработка создаёт новый документ «Цены номенклатуры», в табличной части заполняет данные из файла.
### Требования к результату
Выгрузка информационной базы (.dt), csv-файл содержащий список номенклатуры с ценами.
Выгрузка информационной базы (.dt), CSV-файл, содержащий список номенклатуры с ценами.
Возможность выбора файла с фильтром *.CSV, обработка файла должна выполняться на клиенте.
В файле разделитель ";" между колонками
В файле разделитель «;» между колонками.
Возможность загрузить и создать документ Цены номенклатуры.
Возможность загрузить и создать документ «Цены номенклатуры».
Поиск номенклатуры по наименованию
Поиск номенклатуры по наименованию.
Если не найдена, вывести сообщение вида
"Номенклатура: " + НаименованиеНоменклатуры + " не найдена"
«Номенклатура: « + НаименованиеНоменклатуры + » не найдена»
### Процесс выполнения
@ -34,9 +34,9 @@
Тапочки;1000
Хлеб;40
Создать новую обработку "Загрузка прайса из файла"
Создать новую обработку «Загрузка прайса из файла».
Добавим команду Загрузить, вынесем в командную панель формы и назначим кнопкой по умолчанию
Добавим команду «Загрузить», вынесём в командную панель формы и назначим кнопкой по умолчанию.
Назначим обработчик команды со следующим алгоритмом:
```bsl
Режим = РежимДиалогаВыбораФайла.Открытие;
@ -56,7 +56,7 @@
СоздатьДокумент(ДанныеФайла);
```
Так как в обработчике используется ключевое слово Ждать перед словом Процедура добавим **Асинх**
Так как в обработчике используется ключевое слово «Ждать», перед словом «Процедура» добавим **Асинх**
Далее обработаем файл на клиенте и подготовим данные для создания документа:
```bsl
@ -98,14 +98,14 @@
КонецФункции
```
Теперь загрузим данные файла в ТЧ документа Цены номенклатуры
Теперь загрузим данные файла в ТЧ документа «Цены номенклатуры».
Создам процедуру ЗагрузитьЦеныНоменклатуры(). Т.к. мы передаем только данные файла можно использовать директиву НаСервереБезКонтекста
Создаём процедуру ЗагрузитьЦеныНоменклатуры(). Т.к. мы передаём только данные файла, можно использовать директиву НаСервереБезКонтекста:
```bsl
&НаСервереБезКонтекста
Процедура СоздатьДокумент(ДанныеФайла)
// Создаем новый документ
// Создаём новый документ
ДокументЦены = Документы.УстановкаЦен.СоздатьДокумент();
ДокументЦены.Дата = ТекущаяДата();
@ -137,25 +137,25 @@
КонецПроцедуры
```
## Задача 2 Развитие обработки для загрузки цен из файла
## Задача 2. Развитие обработки для загрузки цен из файла
### Описание задачи
Если при загрузке файла высняется, что хотя бы одной номенклатуры нет в базе задайте вопрос пользователю с текстом "Не все номенклатурные позиции из файла существуют в справочнике. Продолжить создание документа?" и вариантами ответа "Да" и "Нет".
Если при загрузке файла выясняется, что хотя бы одной номенклатуры нет в базе, задайте вопрос пользователю с текстом «Не все номенклатурные позиции из файла существуют в справочнике. Продолжить создание документа?» и вариантами ответа «Да» и «Нет».
При ответе "Да" - записывать документа.
При ответе «Да» — записывать документ.
При ответе "Нет" - приостанавливать работу алгоритма.
При ответе «Нет» — приостанавливать работу алгоритма.
### Требования к результату
Выгрузка информационной базы (.dt) из Задачи 1, в которой реализован вопрос пользователю.
Выгрузка информационной базы (.dt) из задачи 1, в которой реализован вопрос пользователю.
### Процесс выполнения
Разбейте процедуру СоздатьДокумент() на 2 отдельных метода.
Разбейте процедуру СоздатьДокумент() на два отдельных метода.
Первый метод сделайте функцией, которая будет возвращать информацию есть ли ненайденная номенклатура (Истина или Ложь).
Первый метод сделайте функцией, которая будет возвращать информацию о том, есть ли ненайденная номенклатура: «Истина» или «Ложь».
Одновременно с проверкой дополните данные файла ссылкой на номенклатуру:
```bsl
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ДанныеСтроки.НаименованиеНоменклатуры);
@ -175,10 +175,10 @@
КонецЕсли;
```
Если функция вернула Ложь, то задайте вопрос пользователю с помощью функции **ВопросАсинх**. В противном случае сразу сохраните документ.
Если функция вернула «Ложь», то задайте вопрос пользователю с помощью функции **ВопросАсинх**. В противном случае сразу сохраните документ.
Если пользователь ответил "Да", то сохраните документ, вызвав второй метод.
Если пользователь ответил «Да», то сохраните документ, вызвав второй метод.
Для заполнения документа используйте уже ранее полученные и сохраненные в данных файла ссылки на номенклатуру. Если номенклатура для какой-то строки не заполнена, то такая строка не должна создаваться в документее должно быть строк с пустой номенклатурой).
Для заполнения документа используйте уже ранее полученные и сохранённые в данных файла ссылки на номенклатуру. Если номенклатура для какой-то строки не заполнена, то такая строка не должна создаваться в документе. Не должно быть строк с пустой номенклатурой.
### Подсказка: [результат выполнения домашнего задания](Examples/homework-5-7-example.md)
### Подсказка: [результат выполнения домашнего задания](Examples/homework-5-7-example.md).