You've already forked 1c-homeworks
							
							
				mirror of
				https://github.com/netology-code/1c-homeworks.git
				synced 2025-10-30 23:43:50 +02:00 
			
		
		
		
	Модуль 6, задание 2, примеры для заданий 1 и 2
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								Examples/img/example-6-1-1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Examples/img/example-6-1-1.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 35 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Examples/img/example-6-1-2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Examples/img/example-6-1-2.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 34 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Examples/img/example-6-2-1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Examples/img/example-6-2-1.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 30 KiB | 
| @@ -46,3 +46,11 @@ | ||||
| Данное домашнее задание предназначено для самостоятельной практики. Проверка экспертом не предусмотрена. | ||||
|  | ||||
| Успешным выполнением считается появление статуса "Решение верно" для всех задач из диапазона 1.1. - 1.9. | ||||
|  | ||||
| Пример решенного задания: | ||||
|  | ||||
|  | ||||
|  | ||||
| Для проверки статуса выполнения можно перейти в список заданий в разделе Главное. Примерный вид списка после выполнения задач: | ||||
|  | ||||
|  | ||||
| @@ -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. Динамический текст запроса": | ||||
|  | ||||
|  | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user