1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-16 07:10:14 +02:00

Модуль 6, задание 2, примеры для заданий 1 и 2

This commit is contained in:
Matvey Seregin 2023-05-25 10:44:41 +03:00
parent 51ed61b0e1
commit 0260a681a8
6 changed files with 58 additions and 45 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -46,3 +46,11 @@
Данное домашнее задание предназначено для самостоятельной практики. Проверка экспертом не предусмотрена.
Успешным выполнением считается появление статуса "Решение верно" для всех задач из диапазона 1.1. - 1.9.
Пример решенного задания:
![Пример списка задач](/Examples/img/example-6-1-2.png)
Для проверки статуса выполнения можно перейти в список заданий в разделе Главное. Примерный вид списка после выполнения задач:
![Пример решенного задания](/Examples/img/example-6-1-1.png)

View File

@ -1,60 +1,65 @@
# Задание к занятию "Условия и подзапросы"
# Задание к занятию "Основы запросов"
## Задача № 1 "Отбор номенклатуры при обновлении цен в документе Реализация"
*Примерное время выполнения: 90 минут*
Все задачи обязательны к выполнению. Проверка автоматическая в тренажере.
Любые вопросы по решению задач задавайте в чате учебной группы.
## Цель задания
1. Научиться применять базовый конструкции языка при написании запросов.
Данная практика научит вас указывать какие поля должны быть в результирующей таблице запроса, выбирать источник данных, упорядочивать строки результата запроса, выбирать часть записей и накладывать простые отборы.
## Чеклист готовности к домашнему заданию
- [ ] Установить учебную платформа версии 8.3.22 или больше.
## Инструкция к заданию
1. Изучите структуру конфигурации в конфигураторе. Какие есть справочники, документы, регистры. Как они друг с другом связаны.
2. Запустите пользовательский режим и для задач 2.1 - 2.5 составьте текст запроса, удовлетворяющий условиям.
3. Проверьте текст запроса через встроенный механизм проверки.
4. Реализуйте алгоритм для работы обработки "2.6. Динамический текст запроса"
## Задача 1 "Решение задач 2.1 - 2.5 самоучителя запросов"
### Описание задачи
Изменить процедуру для команды "Обновить цены" документа Реализация. Перечень номенклатуры получать не передачей элементов массива, а используя вложенный запрос к табличной части текущего документа.
Составьте тексты запросов, удовлетворящих условиям задач в тренажере.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией из прошлого задания в котором внести изменения для получения перечня элементов номенклатуры вложенным запросом к табличной части документа Реализация.
В поле статуса каждой задачи должно быть указано "Решение верно".
### Процесс выполнения
1. Создайте новую информационную базу и загрузить в нее [выгрузку тренажера](/simulator/queries.dt). Либо используйте базу, полученную по итогам предыдущего задания.
3. Запустите базу в пользовательском режиме.
4. Подготовьте текст запроса, удовлетворяющий заданию, в поле "Решение"
- Условие задания выводится справа от поля "Решение"
- Для подготовки текста запроса можно воспользоваться конструктором запросов
5. Проверьте решение с помощью команды "Проверить"
6. Перейдите к следующей задаче с помощью команды "Далее >>"
- Можно перейти к произвольному заданию нажав на название текущего задания
1. Использовать файл *.cf конфигурацию из прошлого задания.
2. В форме документа Реализация для серверной процедуры команды Обновить цены внести следующие изменения:
* Убрать заполнение массива элементов номенклатуры;
* Для запроса получения цен убрать заполнение параметра СписокНоменклатуры;
* В конструкторе запроса в параметрах виртуальной таблицы в поле условие удалить предыдущее условие и вместо него -
- вызвать конструктор запроса в поле условие;
- построить запрос к табличной части документа Реализация с выборкой одного поля Номенклатура.Ссылка;
- В операторе ГДЕ указать параметр для отбора определенной ссылки документа реализация;
- Нажать на ОК. Полученый текст запроса использовать для условия отбора измерения Номенклатура;
* Для запроса добавить установку параметра документа реализации текущей ссылкой, при этом проверять чтобы ссылка была не пустая;
* Если ссылка пустая то Возврат;
3. Проверить заполнение цен для всех товаров из табличной части документа Реализация нажатием на кнопку Обновить цены.
## Задача № 2 "Заполнение строк табличной части по отбору в документе Реализация"
## Задача 2 "Динамический текст запроса"
### Описание задачи
Добавить команду "Заполнить строки" в табличной части документа Реализация. При заполнении добавить возможность отбора по родителю (с учетом иерархии) и диапазону цен. Заполнять номенклатуру и цены из регистра Цены номенклатуры.
Реализуйте алгоритм, составляющий динамический текст запроса в зависимости от установленных пользователем флажкой в группе Поля и заполненных отборов.
### Требования к результату
Прикрепить .dt файл с внесенными изменениями по реализации заполнения табличной части документа Реализация из регистра сведений Цены номенклатура по отбору.
В обработке должен формироваться корректный табличный документ в зависимости от установленных флажков.
### Процесс выполнения
1. Используйте базу из предыдущего задания
2. Откройте в конфигураторе форму обработки Задание_2_6 и реализуйте в процедуре "ЗаполнитьТекстИПараметрыЗапроса" алгоритм формирования текста запроса и установки параметров в зависимости от введенных пользователем данных. Подсказки для реализации содержаться в комментарии внутри процедуры.
3. Запустите приложение в пользовательском режиме, перейдите в раздел "Дополнительные задания" и нажмите на ссылку "2.6. Динамический текст запроса". Попробуйте 5 разных комбинаций флажков и отборов, убедитесь, что каждый сформированный отчет соответствует установленным настройкам.
* В Конфигураторе добавить обработку ЗаполнениеНоменклатуры. В обработке -
- создать форму и реквизиты формы ГруппаТовара - тип справочник Номенклатура с возможностью выбора только групп,
ЦенаС, ЦенаПо - тип такой же как у ресурса Цена в регистре сведений Цены номенклатуры;
- Разместить реквизиты на форме;
- Cоздать серверную функцию ПриЗакрытииНаСервере();
- В функции ПриЗакрытииНаСервере - создать запрос. Текст запроса выбирает последние цены на дату документа Реализация из регистра сведений Цены номенклатуры. Условие в срезе
текста запроса формировать динамически в зависимости от значений реквизитов - ГруппаТовара, ЦенаС, ЦенаПо. При этом возможны варианты - заполнена или не заполнена группа
номенклатуры. ЦенаС должна быть меньше чем ЦенаПо, иначе не формировать запрос и вывести соответствующее сообщение. Если группа товара заполнена, то выбирать только товары, которые расположены в иерархии выбранной группы (выбранная группа является родителем или цепочка родителей ведет к выбранной группе). Если не заполнена группа товара, то отбирать цены для всего товара без привязки к группе.
Так же в зависимости от этих условий устанавливать необходимые параметры запроса.
Создать структуру с элементами Номенклатура, Цена. В цикле заполнить массив структур из результата выборки запроса;
- Добавить команду Заполнить и соответственно кнопку на форму. При нажатии на кнопку вызвать последовательно - команду Закрыть(), серверную функцию ПриЗакрытииНаСервере(),
которая возвращает заполненный массив структур. Далее вызвать команду ОповеститьОВыборе() с передачей массива структур в качестве параметра;
* Для командной панели табличной части документа Реализация добавить команду ЗаполнитьСтроки и соответственно кнопку;
* Переопределить событие для команды ЗаполнитьСтроки в котором реализовать открытие формы обработки ЗаполнениеНоменклатуры. В команде ОткрытьФорму() передавать в качестве владельца форму текущего документа;
* Для формы документа перекрыть событие ОбработкаВыбора на клиенте и реализовать заполнение табличной части документа из полученного массива структур в параметре
ВыбранноеЗначение. Заполнять значения для реквизитов Номенклатура и Цена;
* Протестировать - заполнить в регистр сведений строки и проверить заполнение строк ТЧ документа Реализация нажатием на кнопку ЗаполнитьСтроки и установкой различных вариантов значений реквизитов формы обработки ЗаполнениеНоменклатуры.
### Подсказка: [результат выполнения домашнего задания](Examples/homework-6-2-example.md)
## Критерии оценки
Данное домашнее задание предназначено для самостоятельной практики. Проверка экспертом не предусмотрена.
Успешным выполнением считается появление статуса "Решение верно" для всех задач из диапазона 2.1. - 2.5 и самостоятельной проверки корректной работы обработки "2.6. Динамический текст запроса".
Примерный вид результата работы обработки "2.6. Динамический текст запроса":
![Пример работы обработки](/Examples/img/example-6-2-1.png)

Binary file not shown.