mirror of
https://github.com/netology-code/1c-homeworks.git
synced 2024-11-24 08:02:20 +02:00
commit
e6e61cc312
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 |
10
README.md
10
README.md
@ -54,12 +54,12 @@
|
||||
5.9 [Двоичные данные](homework-5-9.md)
|
||||
|
||||
## Запросы и отчеты
|
||||
6.1 [Конструктор запросов](homework-6-1.md)
|
||||
6.2 [Условия и подзапросы](homework-6-2.md)
|
||||
6.3 [Итоги и группировки](homework-6-3.md)
|
||||
6.4 [Соединения](homework-6-4.md)
|
||||
6.1 [Основы запросов](homework-6-1.md)
|
||||
6.2 [Группировка и итоги](homework-6-2.md)
|
||||
6.3 [Соединения](homework-6-3.md)
|
||||
6.4 [Объединения и подзапросы](homework-6-4.md)
|
||||
6.5 [Временные таблицы и пакетные запросы](homework-6-5.md)
|
||||
6.6 [Введение в СКД](homework-6-6.md)
|
||||
6.6 [Основы СКД](homework-6-6.md)
|
||||
6.7 [Работа в СКД](homework-6-7.md)
|
||||
|
||||
## :trophy: Диплом блока Б
|
||||
|
@ -1,35 +1,53 @@
|
||||
# Задание к занятию "Конструктор запросов"
|
||||
# Задание к занятию "Основы запросов"
|
||||
|
||||
## Задача "Обновление цен в документе Реализация"
|
||||
Данное задание является самостоятельным. Проверка автоматическая в тренажере.
|
||||
Любые вопросы по решению задач задавайте в чате учебной группы.
|
||||
|
||||
## Цель задания
|
||||
|
||||
1. Научиться применять базовые конструкции языка при написании запросов.
|
||||
|
||||
Данная практика научит вас указывать какие поля должны быть в результирующей таблице запроса, выбирать источник данных, упорядочивать строки результата запроса, выбирать часть записей и накладывать простые отборы.
|
||||
|
||||
## Чеклист готовности к домашнему заданию
|
||||
|
||||
- [ ] Установить платформу 1С:Предприятие версии 8.3.22 или больше.
|
||||
|
||||
## Инструкция к заданию
|
||||
|
||||
1. Изучите структуру конфигурации в конфигураторе. Какие есть справочники, документы, регистры. Как они друг с другом связаны.
|
||||
2. Запустите пользовательский режим и для задач 1.1 - 1.9 составьте текст запроса, удовлетворяющий условиям.
|
||||
3. Проверьте текст запроса через встроенный механизм проверки.
|
||||
|
||||
## Задача 1 "Решение задач 1.1 - 1.9 самоучителя запросов"
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Добавить команду и соответственно кнопку "Обновить цены" в командную панель табличной части документа Реализация. При нажатии на кнопку присходит обновление цен номенклатуры в табличной части на дату документа.
|
||||
Составьте тексты запросов, удовлетворящих условиям задач в тренажере.
|
||||
|
||||
### Требования к результату
|
||||
|
||||
Выгрузка информационной базы (.dt) с конфигурацией из задания https://github.com/netology-code/1c-homeworks/blob/master/homework-5-5.md в котором реализовать алгоритм обновления цен в табличной части документа Реализация.
|
||||
В поле статуса каждой задачи должно быть указано "Решение верно".
|
||||
|
||||
### Процесс выполнения
|
||||
1. Создайте новую информационную базу.
|
||||
2. Загрузите в нее [выгрузку тренажера](/simulator/queries.dt)
|
||||
3. Запустите базу в пользовательском режиме.
|
||||
4. Подготовьте текст запроса, удовлетворяющий заданию, в поле "Решение"
|
||||
- Условие задания выводится справа от поля "Решение"
|
||||
- Для подготовки текста запроса можно воспользоваться конструктором запросов
|
||||
5. Проверьте решение с помощью команды "Проверить"
|
||||
6. Перейдите к следующей задаче с помощью команды "Далее >>"
|
||||
- Можно перейти к произвольному заданию, нажав на название текущего задания
|
||||
|
||||
1. Взять конфигурацию из файла https://github.com/netology-code/1c-homeworks/blob/master/homework-5-5.md.
|
||||
2. Периодичность регистра сведений Цены номенклатуры должна быть установлена в значение в Пределах дня.
|
||||
3. В форме документа Реализация - создать команду ОбновитьЦены и перетащить в командную панель табличной части.
|
||||
4. Перекрыть действие команды и выбрать пункт "Создать на клиенте и процедуру на сервере".
|
||||
5. В процедуре на сервере реализовать процесс обновления цен следующим образом:
|
||||
|
||||
* Добавить проверку на заполненность табличной части Товары;
|
||||
* Сформировать массив элементов, который содержит в себе перечень всей номенклатуры из табличной части;
|
||||
* Из контекстного меню выбрать Конструктор запроса с обработкой результата, в котором выбрать Тип обработки = Обход результата;
|
||||
* На закладке Таблицы и поля конструктора добавить в Таблицы Цены.СрезПоследних;
|
||||
* В параметрах виртуальной таблицы укажите параметр периода и условие Номенклатура в (&СписокНоменклатуры);
|
||||
* Выбираем поля - Номенклатура и Цена и нажимаем на кнопку Ок;
|
||||
* Для запроса устанавливаем значения параметров такие как дата объекта и заполненный массив элементов номенклатуры табличной части;
|
||||
* Выполняем запрос и проверяем чтобы результат был не пустой. Иначе возврат;
|
||||
* Если запрос не пустой - делаем выборку и обходим в цикле все записи результата выполнения запроса;
|
||||
* В табличной части документа находим строки и в цикле подставляем цену из текущей записи результата запроса.
|
||||
Поиск строк табличной части осуществляем через НайтиСтроки(). В качестве параметра заполняем структуру значением номенклатуры из
|
||||
записи результата запроса.
|
||||
* Если цена новая отличается от старой то пересчитываем сумму найденной строки;
|
||||
|
||||
### Подсказка: [результат выполнения домашнего задания](Examples/homework-6-1-example.md)
|
||||
## Критерии оценки
|
||||
|
||||
Данное домашнее задание предназначено для самостоятельной практики. Проверка экспертом не предусмотрена.
|
||||
|
||||
Успешным выполнением считается появление статуса "Решение верно" для всех задач из диапазона 1.1. - 1.9.
|
||||
|
||||
Пример решенного задания:
|
||||
|
||||
![Пример списка задач](/Examples/img/example-6-1-2.png)
|
||||
|
||||
Для проверки статуса выполнения можно перейти в список заданий в разделе Главное. Примерный вид списка после выполнения задач:
|
||||
|
||||
![Пример решенного задания](/Examples/img/example-6-1-1.png)
|
||||
|
@ -1,60 +1,64 @@
|
||||
# Задание к занятию "Условия и подзапросы"
|
||||
# Задание к занятию "Группировка и итоги"
|
||||
|
||||
## Задача № 1 "Отбор номенклатуры при обновлении цен в документе Реализация"
|
||||
Данное задание является самостоятельным. Проверка автоматическая в тренажере.
|
||||
Любые вопросы по решению задач задавайте в чате учебной группы.
|
||||
|
||||
Любые вопросы по решению задач задавайте в чате учебной группы.
|
||||
|
||||
## Цель задания
|
||||
|
||||
1. Научиться применять базовые конструкции языка при написании запросов.
|
||||
|
||||
Данная практика научит вас указывать какие поля должны быть в результирующей таблице запроса, выбирать источник данных, упорядочивать строки результата запроса, выбирать часть записей и накладывать простые отборы.
|
||||
|
||||
## Чеклист готовности к домашнему заданию
|
||||
|
||||
- [ ] Установить платформу 1С:Предприятие версии 8.3.22 или больше.
|
||||
|
||||
## Инструкция к заданию
|
||||
|
||||
1. Изучите структуру конфигурации в конфигураторе. Какие есть справочники, документы, регистры. Как они друг с другом связаны.
|
||||
2. Запустите пользовательский режим и для задач 2.1 - 2.5 составьте текст запроса, удовлетворяющий условиям.
|
||||
3. Проверьте текст запроса через встроенный механизм проверки.
|
||||
4. Реализуйте алгоритм для работы обработки "2.6. Динамический текст запроса"
|
||||
|
||||
## Задача 1 "Решение задач 2.1 - 2.5 самоучителя запросов"
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Изменить процедуру для команды "Обновить цены" документа Реализация. Перечень номенклатуры получать не передачей элементов массива, а используя вложенный запрос к табличной части текущего документа.
|
||||
Составьте тексты запросов, удовлетворящих условиям задач в тренажере.
|
||||
|
||||
### Требования к результату
|
||||
|
||||
Выгрузка информационной базы (.dt) с конфигурацией из прошлого задания в котором внести изменения для получения перечня элементов номенклатуры вложенным запросом к табличной части документа Реализация.
|
||||
В поле статуса каждой задачи должно быть указано "Решение верно".
|
||||
|
||||
### Процесс выполнения
|
||||
1. Используйте базу, полученную по итогам предыдущего задания.
|
||||
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)
|
||||
|
@ -1,43 +1,60 @@
|
||||
# Задание к занятию "Итоги и группировки"
|
||||
# Задание к занятию "Соединения"
|
||||
|
||||
## Задача "Реестр документов Поступление"
|
||||
Все задачи обязательны к выполнению.
|
||||
Любые вопросы по решению задач задавайте в чате учебной группы.
|
||||
|
||||
## Цель задания
|
||||
|
||||
1. Научиться соединять таблицы в запросах
|
||||
|
||||
## Чеклист готовности к домашнему заданию
|
||||
|
||||
- [ ] Установить платформу 1С:Предприятие версии 8.3.22 или больше.
|
||||
|
||||
## Инструкция к заданию
|
||||
|
||||
1. Изучите структуру конфигурации в конфигураторе. Какие есть справочники, документы, регистры. Как они друг с другом связаны.
|
||||
2. Запустите пользовательский режим и для задач 3.1 - 3.4 составьте текст запроса, удовлетворяющий условиям.
|
||||
3. Проверьте текст запроса через встроенный механизм проверки.
|
||||
4. Реализуйте алгоритм для работы обработки "3.5. Ежемесячные документы"
|
||||
|
||||
## Задача 1 "Решение задач 3.1 - 3.4 самоучителя запросов"
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Создать внешнюю обработку РеестрДокументовПоступление. Обработка формирует и выводит на экран Табличный документ с перечнем документов Поступление за указанный период. Возможные итоги регулируются настройками обработки.
|
||||
Составьте тексты запросов, удовлетворящих условиям задач в тренажере.
|
||||
|
||||
### Требования к результату
|
||||
|
||||
Прикрепить .epf файл внешней обработки для формирования реестра документов Поступление. Выгрузить базу в .dt файл и прикрепить в качестве результата.
|
||||
В поле статуса каждой задачи должно быть указано "Решение верно".
|
||||
|
||||
### Процесс выполнения
|
||||
1. Используйте базу, полученную по итогам предыдущего задания.
|
||||
3. Запустите базу в пользовательском режиме.
|
||||
4. Подготовьте текст запроса, удовлетворяющий заданию, в поле "Решение"
|
||||
- Условие задания выводится справа от поля "Решение"
|
||||
- Для подготовки текста запроса можно воспользоваться конструктором запросов
|
||||
5. Проверьте решение с помощью команды "Проверить"
|
||||
6. Перейдите к следующей задаче с помощью команды "Далее >>"
|
||||
- Можно перейти к произвольному заданию нажав на название текущего задания
|
||||
|
||||
1. Использовать файл *.cf конфигурацию из прошлого задания.
|
||||
2. Создать общий макет РеестрДокументовПоступление. Тип макета - табличный документ. В макете добавить области:
|
||||
* Для вывода периода формирования реестра;
|
||||
* Для вывода детальных записей по документам Поступление. Выводить данные по ссылке документа, контрагенту и сумме документа;
|
||||
* Для возможности отображения итогов по контрагенту и общих итогов. Итоги выводить после детальных записей. Если в обработке указана возможность выводить итоги по контрагенту
|
||||
и детальные записи, то в детальных записях по документам должен контрагент отсутствовать. Общие итоги выводятся в конце отчета
|
||||
3. Создать внешнюю обработку РеестрДокументвоПоступление, в которой:
|
||||
* Добавить реквизиты формы:
|
||||
- ДатаС и ДатаПо - тип дата. Разместить на форме в виде полей для выбора даты;
|
||||
- ДетальныеЗаписи, ИтогиПоКонтрагенту и ОбщиеИтоги - тип булево и разместить на форме в виде флажков;
|
||||
* Добавить команду Реестр и соответствующую кнопку разместить на форме;
|
||||
* Для команды определить действие в котором реализовать:
|
||||
- если на форме не выбран ни один из флажков, то возврат и вывести подходящее сообщение;
|
||||
- создать объект Запрос;
|
||||
- анализировать значения реквизитов периода для формирования строки условия запроса. Например если ДатаС не заполнена, а ДатаПо заполнена записываем в строковую
|
||||
переменную "ГДЕ Документ.Дата <=&ДатаПо". Также рассмотреть варианты когда обе даты не заполнены, обе даты заполнены или заполнена только ДатаС. Строку условия
|
||||
записываем в переменную для указания в качестве параметра в тексте основного запроса;
|
||||
- в этой же проверке устанавливаем используемые параметры для запроса. Например - для случая выше устанавливаем параметр для формирования условия
|
||||
и для ДатаПо - Запрос.УстановитьПараметр("ДатаПо", КонецДня(ДатаПо));
|
||||
- формировать строку для итогов.Если установлен флажок ОбщиеИтоги то записывать в переменную строку по общим итогам. Например - СтрокаИтоги = "ИТОГИ Сумма(СуммаДокумента)
|
||||
ПО ОБЩИЕ". Проверять если устовлен флажок детальные записи то в строку итогов добавлять итоги по контрагенту (при установленном флажке ИтогиПоКонтрагенту) и итоги по
|
||||
детальным записям. Передавать сформированную строку в качестве параметра в запрос.
|
||||
- создать текст запроса, который может быть в двух вариантах. Проверяем условием. Если не установлен флажок ДетальныеЗаписи, а установлен ИтогиПоКонтрагенту, то
|
||||
формировать текст запроса в виде группировки по контрагенту. Иначе формируем текст запроса в виде итогов по детальным записям. При установленном флажке
|
||||
ИтогиПоКонтрагенту добавляем во второй вариант текст запроса итогов по контрагенту. Добавить в запрос необходимые параметры для периода, формирования итогов и условий;
|
||||
- выполнить обработку данных и вывод в макет;
|
||||
- создать документы Поступление в системе различными датами и протестировать корректный вывод макета на экран;
|
||||
## Задача 2 "Ежемесячный документы"
|
||||
|
||||
### Подсказка: [результат выполнения домашнего задания](Examples/homework-6-3-example.md)
|
||||
### Описание задачи
|
||||
Необходимо реализовать алгоритм заполнения списка договоров с абонентской платой, для последующего ежемесячного выставления документов продажи.
|
||||
|
||||
### Требования к результату
|
||||
В обработке "3.5. Ежемесячные документы" из раздела "Дополнительный задания" по команде Заполнить в командной панели табличной части должна заполняться табличная часть в соответствии с выбранным периодом и установленным отбором.
|
||||
|
||||
### Процесс выполнения
|
||||
1. Используйте базу из предыдущего задания
|
||||
2. Откройте в конфигураторе модуль объекта обработки Задание_3_5 и реализуйте в процедуре "ЗаполнитьСписокДоговоров" алгоритм заполнения табличной части обработки. Подсказки для реализации содержатся в комментарии внутри процедуры:
|
||||
1. Необходимо выбрать все договоры с типом Абонентская плата. Если заполнено поле ОтборОтветственный, то необходимо выбирать только те договоры, в которых этот сотрудник указан ответственным.
|
||||
2. Если в месяце, указанном в поле Период была создана продажа с предопределенной номенклатурой Абонентская плата, то в поле Продажа вывести ссылку на эту продажу. Если продаж несколько, то договоры не должны дублироваться, в поле продажа можно вывести любой документ из введенных по этому договору за этот период.
|
||||
3. Если продажи нет или если в продаже сумма отличается от суммы в константе "Размер абонентской платы", то поставить флажок Создать продажу
|
||||
4. Вся подготовка данных должна выполняться в одном запросе. Не следует реализовывать постобработку, например, получать значение константы или расчитывать алгоритмом на встроенном языке значение флажка СоздатьПродажу
|
||||
3. Запустите приложение в пользовательском режиме, перейдите в раздел "Дополнительные задания" и нажмите на ссылку "3.5. Ежемесячные документы". Протестируйте работу обработки на данных июня 2023г. Убедитесь, что если для договора в указанном периоде создана продажа с корректной суммой, то флажок СоздатьПродажу не устанавливается.
|
||||
|
||||
## Критерии оценки
|
||||
|
||||
Домашнее задание проверяется экспертом.
|
||||
|
||||
Успешным выполнением считается появление статуса "Решение верно" для всех задач из диапазона 3.1. - 3.4 и корректная работа алгоритма заполнения списка договоров в обработке "3.5. Ежемесячные документы"
|
||||
|
@ -1,39 +1,44 @@
|
||||
# Задание к занятию "Соединения"
|
||||
# Задание к занятию "Объединения и подзапросы"
|
||||
|
||||
## Задача "Информация по контрагенту"
|
||||
Все задачи обязательны к выполнению. Любые вопросы по решению задач задавайте в чате учебной группы.
|
||||
|
||||
## Цель задания
|
||||
|
||||
1. Научиться применять объединения и подзапросы.
|
||||
2. Научиться обращаться к виртуальным таблицам регистров.
|
||||
|
||||
## Чеклист готовности к домашнему заданию
|
||||
|
||||
- [ ] Установить платформу 1С:Предприятие версии 8.3.22 или больше.
|
||||
|
||||
## Инструкция к заданию
|
||||
|
||||
1. Изучите структуру конфигурации в конфигураторе. Какие есть справочники, документы, регистры. Как они друг с другом связаны.
|
||||
2. Запустите пользовательский режим и для задач 4.1 - 4.8 составьте текст запроса, удовлетворяющий условиям.
|
||||
3. Проверьте текст запроса через встроенный механизм проверки.
|
||||
|
||||
## Задача 1 "Решение задач 4.1 - 4.8 самоучителя запросов"
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Создать внешнюю обработку ИнформацияПоКонтрагенту. Обработка формирует и выводит на экран Табличный документ с информацией по контрагенту. В обработке выбирается контрагент для формирования информации.
|
||||
Составьте тексты запросов, удовлетворящих условиям задач в тренажере.
|
||||
|
||||
### Требования к результату
|
||||
|
||||
Прикрепить .epf файл внешней обработки для формирования информации по контрагенту и .dt выгруженной базы с данными.
|
||||
|
||||
В поле статуса каждой задачи должно быть указано "Решение верно".
|
||||
|
||||
### Процесс выполнения
|
||||
1. Используйте базу, полученную по итогам предыдущего задания.
|
||||
3. Запустите базу в пользовательском режиме.
|
||||
4. Подготовьте текст запроса, удовлетворяющий заданию, в поле "Решение"
|
||||
- Условие задания выводится справа от поля "Решение"
|
||||
- Для подготовки текста запроса можно воспользоваться конструктором запросов
|
||||
5. Проверьте решение с помощью команды "Проверить"
|
||||
6. Перейдите к следующей задаче с помощью команды "Далее >>"
|
||||
- Можно перейти к произвольному заданию, нажав на название текущего задания
|
||||
|
||||
1. Сформировать внешнюю обработку ИнформацияПоКонтрагенту.epf.
|
||||
2. В обработку добавить реквизит формы Контрагент с типом Справочники.Контрагенты.
|
||||
3. В конфигурацию добавить общий макет ИнформацияПоКонтрагенту типа табличный документ.
|
||||
4. Создать команду Вывести информацию и соответствующую кнопку на форму.
|
||||
5. Перекрыть действие команды и реализовать следующее:
|
||||
* Если реквизит Контрагент не заполнен, выдавать соответствующее сообщение и дальше не продолжать;
|
||||
* Создать текст запроса который будет посекционно выводить информацию по выбранному контрагенту в общий макет ИнформацияПоКонтрагенту;
|
||||
* В первую секцию выводить наименование контрагента, ИНН, и КПП из справочника Контрагенты;
|
||||
* Во вторую секцию выводить контактную информацию по контрагенту из табличной части КонтактнаяИнформация из справочника Контрагенты;
|
||||
* Будем считать что контрагент является и поставщиком и покупателем. Поэтому в третью секцию выводить Товар, Количество проданного товара и Количество поступившего
|
||||
товара из документов Поступление и Реализация;
|
||||
* При формировании текста запроса учитывать следующие особенности:
|
||||
- использовать один запрос;
|
||||
- для получения контактной информации использовать ЛЕВОЕ СОЕДИНЕНИЕ, чтобы получить сведения о контрагентах и без контактной информации;
|
||||
- товар в запросе должен быть объединен в одну колонку как для продажи так и для поступления;
|
||||
- для получения количества проданного и поступившего товара использовать ПОЛНОЕ СОЕДИНЕНИЕ в подзапросе по товару;
|
||||
- При полном соединении не должны присутствовать значения Null;
|
||||
- Правильно использовать группировки и агрегатные функции в подзапросе;
|
||||
- для соединения с подзапросом установить связь со справочником Контрагенты используя ВНУТРЕННЕЕ СОЕДИНЕНИЕ;
|
||||
- Результат запроса можно обрабатывать только на свертку через выгрузку в таблицу значений;
|
||||
6. Создать примеры в справочниках и документах. Протестировать формирование табличный документа.
|
||||
7. Для реализации и поступления тестировать на нескольких документах. Товары в табличной части должны отличаться.
|
||||
При решении задач учитывайте, что необходимо максимально использовать параметры виртуальных таблиц регистров. Использование отбора в секции ГДЕ вместо параметров виртуальной таблицы будет считаться ошибкой.
|
||||
|
||||
### Подсказка: [результат выполнения домашнего задания](Examples/homework-6-4-example.md)
|
||||
## Критерии оценки
|
||||
|
||||
Домашнее задание проверяется экспертом.
|
||||
|
||||
Успешным выполнением считается появление статуса "Решение верно" для всех задач из диапазона 4.1. - 4.8
|
||||
|
@ -1,29 +1,63 @@
|
||||
# Задание к занятию "Временные таблицы и пакетные запросы"
|
||||
|
||||
## Задача "Скидки для Реализации"
|
||||
Все задачи обязательны к выполнению.
|
||||
Любые вопросы по решению задач задавайте в чате учебной группы.
|
||||
|
||||
## Цель задания
|
||||
|
||||
1. Научиться использовать временные таблицы и пакеты запросов
|
||||
|
||||
## Чеклист готовности к домашнему заданию
|
||||
|
||||
- [ ] Установить платформу 1С:Предприятие версии 8.3.22 или больше.
|
||||
|
||||
## Инструкция к заданию
|
||||
|
||||
1. Изучите структуру конфигурации в конфигураторе. Какие есть справочники, документы, регистры. Как они друг с другом связаны.
|
||||
2. Реализуйте алгоритм расчета себестоимости при продаже товаров.
|
||||
3. Запустите пользовательский режим и для задач 5.1 - 5.3 составьте текст запроса, удовлетворяющий условиям.
|
||||
4. Проверьте текст запроса через встроенный механизм проверки.
|
||||
|
||||
## Задача 1 "Расчет себестоимости товаров"
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Создать простой механизм подстановки скидки в табличную часть документа Реализация. Сумму рассчитывать с учетом скидки.
|
||||
Необходимо реализовать возможность хранения и расчета себестоимости для остатков товаров
|
||||
|
||||
### Требования к результату
|
||||
|
||||
Прикрепить .dt выгруженной базы с данными.
|
||||
В регистре сведений Остатки товаров добавлен ресурс Сумма. В документах Покупка и Продажа реализован алгоритм заполнения этого ресурса при проведении.
|
||||
|
||||
### Процесс выполнения
|
||||
1. Используйте базу, полученную по итогам предыдущего задания.
|
||||
2. Добавить в регистр накопления Остатки товаров ресурс Сумма - Число (15, 2), Неотрицательное.
|
||||
3. Добавить в обработку проведения документа Покупка заполнение ресурса Сумма при проведении. Сумма заполняется соответствующим значением из табличной части.
|
||||
4. Переработать обработку проведения документа Продажа:
|
||||
- Перед выполнением запроса к базе данных необходимо записать пустой набор движений в регистр Остатки товаров.
|
||||
- В запросе необходимо получить остатки на дату документа по количеству и сумме.
|
||||
- Если товара не хватает, то не даем проводить документ. Пользователю выводим сообщение с информацией о том какого товара в каком количестве не хватает. Сообщение должно быть привязано к ячейке таблицы, в которую введено количество недостающего товара.
|
||||
- При формировании движений необходимо рассчитывать себестоимость как "СуммаОстаток / КоличествоОстаток * Количество".
|
||||
- Необходимо учитывать, что в документе может быть несколько строк с одним и тем же товаров.
|
||||
- Необходимо учитывать проблему копеек при расчете себестоимости, то есть если количество товара в документе равно остатку, то списываемую сумму не вычисляем математически, а просто списываем полный остаток.
|
||||
- В ресурс Сумма записываем рассчитанную себестоимость товара, который продаем.
|
||||
|
||||
1. Создать простой справочник Номенклатурная группа без иерархии.
|
||||
2. В справочник номенклатура добавить реквизит Номенклатурная группа.
|
||||
3. Создать документ "Скидки номенклатуры". В шапку вывести дату и номер документа.
|
||||
4. Добавить табличную часть документа с реквизитами - Объект - составного типа (Номенклатурная группа, Номенклатура), Процент скидки - тип числовой.
|
||||
5. Добавить периодический регистр сведений Скидки номенклатуры с измерением Объект (тип как в документе) и ресурсом Процент скидки.
|
||||
6. Делать движения в регистр при проведении документа Скидки номенклатуры;
|
||||
7. В табличную часть документа Реализация добавить реквизит Автоматическая скидка.
|
||||
8. В табличную часть добавить команду Применить скидку. В этом случае реализовать:
|
||||
* Если для номенклатуры из табличной части документа, установлена скидка в регистре сведений на дату документа, то заполнять ее в поле
|
||||
Автоматическая скидка и пересчитывать сумму с учетом скидки;
|
||||
* Если для номенклатуры не установлена скидка, а установлена для номенклатурной группы то применять скидку для номенклатурной группы.
|
||||
Имеется ввиду значение скидки для реквизита Номенклатурная группа Номенклатуры в табличной части документа;
|
||||
* Поиск скидок осуществлять через временные таблицы пакетного запроса с использованием менеджера временных таблиц;
|
||||
## Задача 2 (со звёздочкой) "Решение задач 5.1 - 5.3 самоучителя запросов"
|
||||
|
||||
### Подсказка: [результат выполнения домашнего задания](Examples/homework-6-5-example.md)
|
||||
### Описание задачи
|
||||
Составьте тексты запросов, удовлетворяющих условиям задач в тренажере.
|
||||
|
||||
### Требования к результату
|
||||
В поле статуса каждой задачи должно быть указано "Решение верно".
|
||||
|
||||
### Процесс выполнения
|
||||
1. Запустите базу в пользовательском режиме.
|
||||
2. Подготовьте текст запроса, удовлетворяющий заданию, в поле "Решение" для задание 5.1 - 5.3
|
||||
- Условие задания выводится справа от поля "Решение"
|
||||
- Для подготовки текста запроса можно воспользоваться конструктором запросов
|
||||
3. Проверьте решение с помощью команды "Проверить"
|
||||
4. Перейдите к следующей задаче с помощью команды "Далее >>"
|
||||
- Можно перейти к произвольному заданию нажав на название текущего задания
|
||||
|
||||
## Критерии оценки
|
||||
|
||||
Домашнее задание проверяется экспертом.
|
||||
|
||||
Успешным выполнением считается появление статуса "Решение верно" для всех задач из диапазона 5.1. - 5.3 и корректная работа алгоритма работы с себестооимостью.
|
||||
|
@ -1,23 +1,58 @@
|
||||
# Задание к занятию "Введение в СКД"
|
||||
# Задание к занятию "Основы СКД"
|
||||
|
||||
## Задача "Отчет Продажи по контрагентам"
|
||||
Все задачи обязательны к выполнению.
|
||||
Любые вопросы по решению задач задавайте в чате учебной группы.
|
||||
|
||||
## Цель задания
|
||||
|
||||
1. Научиться формировать отчеты с использованием СКД
|
||||
|
||||
## Чек-лист готовности к домашнему заданию
|
||||
|
||||
- [ ] Установить платформу 1С: Предприятие версии 8.3.22 или больше.
|
||||
|
||||
## Инструкция к заданию
|
||||
|
||||
1. Изучите структуру конфигурации в конфигураторе. Какие есть справочники, документы, регистры. Как они друг с другом связаны.
|
||||
2. Реализуйте отчет
|
||||
|
||||
## Задача 1 "Отчет Маржинальность продаж товаров за период"
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Создать отчет Продажи по контрагентам на СКД.
|
||||
Необходимо реализовать возможность хранения и расчета себестоимости для остатков товаров
|
||||
|
||||
### Требования к результату
|
||||
|
||||
Прикрепить файл внешнего отчета и выгрузку информационной базы (.dt)
|
||||
В регистре сведений Остатки товаров добавлен ресурс Сумма. В документах Покупка и Продажа реализован алгоритм заполнения этого ресурса при проведении.
|
||||
|
||||
### Процесс выполнения
|
||||
1. Используйте базу, полученную по итогам предыдущего задания. Убедитесь, что в регистре Остатки товаров и Продажи есть движения, и что в регистре Остатки товаров корректно рассчитана себестоимость. При необходимости перепроведите документы.
|
||||
2. Создайте новый отчет и включите его в подсистему Дополнительные задания.
|
||||
3. Создайте основную схему компоновки данных отчета.
|
||||
4. Реализуйте запрос, который будет получать информацию о себестоимости продаж товаров и количестве проданного из виртуальной таблицы Обороты регистра накопления Остатки товаров и информацию о сумме продаж из виртуальной таблицы Обороты регистра накопления Продажи
|
||||
5. Добавьте вычисляемые поля Прибыль и Маржинальная рентабельности. Прибыль расcчитывается как "СуммаПродаж - Себестоимость". Маржинальная рентабельность рассчитывается как "Прибыль / СуммаПродаж * 100" и учитывается в процентах. В формуле реализуйте проверку на 0 в делителе.
|
||||
|
||||
1. Создать внешний отчет.
|
||||
2. В свойстве отчета Основная схема компоновки данных нажать на кнопку Открыть схему компоновки данных.
|
||||
3. Добавить источник запрос и в нем реализовать получение данных из табличной части документа реализация. Данные по реализации получать за определенный период.
|
||||
4. В отчет вывести группировку по полю Контрагент.
|
||||
5. Для контрагентов вывести общую сумму продажи.
|
||||
6. Для каждого контрагента показать строки по номенклатуре.
|
||||
7. В этих строках отобразить поле: Номенклатура, и для каждой номенклатуры вывести количество, среднюю цену и сумму продажи.
|
||||
<details>
|
||||
<summary>Подсказка</summary>
|
||||
|
||||
### Подсказка: [результат выполнения домашнего задания](Examples/homework-6-6-example.md)
|
||||
*Маржинальность — это показатель рентабельности реализуемой продукции, который определяется числовым выражением - маржой. Маржинальность услуги, товара или иного проекта — это разница между стоимостью готовой продукции и себестоимостью, то есть затратами на их производство.*
|
||||
|
||||
</details>
|
||||
|
||||
6. Настройте ресурсы:
|
||||
- Прибыль, Себестоимость, Сумму продаж и Количество можно просто суммировать
|
||||
- Маржинальную рентабельность необходимо рассчитывать по формуле "Сумма(Прибыль) / Сумма(СуммаПродаж) * 100"
|
||||
7. Добавьте параметр Период с типом Стандартный период. Настройте расчет параметров НачалоПериода и КонецПериода по выражению от Периода и ограничьте их использование.
|
||||
8. На закладке настройки:
|
||||
- Добавьте группировку по Номенклатуре с учетом Иерархии
|
||||
- Добавьте в состав пользовательских настроек параметр Период
|
||||
- Добавьте в выбранные поля Количество, Себестоимость, СуммуПродаж, Прибыль и Маржинальную рентабельность.
|
||||
- С помощью условного оформления выделите красным фоном строки отчета, где маржинальная рентабельность менее 20%, а также ограничьте количество символов после запятой в колонке Маржинальная рентабельность двумя.
|
||||
|
||||
### Пример внешнего вида отчета
|
||||
![Пример внешнего вида отчета](img/homework-6-6-1.png)
|
||||
|
||||
## Критерии оценки
|
||||
|
||||
Домашнее задание проверяется экспертом.
|
||||
|
||||
Успешным выполнением считается корректно реализованный отчет "Маржинальность продаж товаров за период"
|
||||
|
@ -1,38 +1,54 @@
|
||||
# Задание к занятию "Работа с СКД"
|
||||
|
||||
## Задача "Отчет Продажи по контрагентам"
|
||||
Данное задание со звездочкой и не является обязательным. Вы можете его выполнить, чтобы лучше разобраться в работе с СКД.
|
||||
Любые вопросы по решению задач задавайте в чате учебной группы.
|
||||
|
||||
## Цель задания
|
||||
|
||||
1. Научиться формировать отчеты с использованием СКД
|
||||
|
||||
## Чеклист готовности к домашнему заданию
|
||||
|
||||
- [ ] Установить платформу 1С:Предприятие версии 8.3.22 или больше.
|
||||
|
||||
## Задача 1 (со звёздочкой) Анализ выгрузки
|
||||
|
||||
### Описание задачи
|
||||
|
||||
Создать отчет Продажи по контрагентам на СКД. Запрос используем из предыдущего задания. Добавляем набор данных - объект. Имя набора данных - ОтчетПоПродажам.
|
||||
Из модуля отчета организовать заполнение отчета из таблицы значений с возможностью выполнения расшифровки.
|
||||
Партнер передает информацию о продажах наших товаров за период в виде архива. Необходимо реализовать отчет для анализа данных архива, предоставленных партнером.
|
||||
|
||||
### Требования к результату
|
||||
|
||||
В отчете вместо набора данных Запрос использовать набор данных Объект. Переопределить событие (создать обработку события) ПриКомпоновкеРезультата модуля объекта отчета для передачи ТЗ в СКД. Прикрепить файл внешнего отчета и выгрузку информационной базы (.dt).
|
||||
|
||||
Внешний отчет, который позволяет выбрать архив, получает из него данные и формирует отчет.
|
||||
|
||||
### Процесс выполнения
|
||||
1. Скачайте и изучите [Пример архива](reference-data/export.zip), который отправляет поставщик
|
||||
2. Создайте внешний отчет, добавьте реквизит отчета АдресДанных, тип - строка.
|
||||
3. Создайте форму внешнего отчета, добавьте на форму команду Загрузить данные. При выполнении команды необходимо предлагать пользователю выбрать zip-файл, когда файл выбрать - сохранять его во временном хранилище. Адрес временного хранилища необходимо сохранить в реквизите отчета АдресДанных.
|
||||
4. Назначьте обработчик события ПриКомпоновкеРезультата в модуле объекта отчета и реализуйте алгоритм:
|
||||
- Отключите стандартную обработку
|
||||
- Проверьте заполнения АдресаДанных - если он пустой необходимо показать ошибку "Для формирования отчета необходимо выбрать файл архива"
|
||||
- Получите архив из временного хранилища
|
||||
- Получите имя временного файла и создайте новый каталог с этим именем с помощью методов ПолучитьИмяВременногоФайла() и СоздатьКаталог()
|
||||
- Распакуйте архив в новый каталог с помощью объекта ЧтениеZipФайла
|
||||
- Создайте таблицу значений для хранения данных файлов, добавьте колонки исходя из содержимого файлов и целевого внешнего вида отчета
|
||||
- Найдите все файлы в каталоге с помощью метода НайтиФайлы()
|
||||
- Прочитайте данные каждого файла с помощью Табличного документа и добавьте эти данные в таблицу значений
|
||||
- Удалите временные файлы
|
||||
- Сформируйте отчет программно вызывая объекты СКД с передачей сформированной таблицы значений как внешнего набора данных
|
||||
5. Создайте Основную схему компоновки данных
|
||||
- Добавьте в качества источника НаборДанных: Объект
|
||||
- Заполните колонки набора данных исходя из целевого внешнего вида отчета
|
||||
- Заполните ресурсы исходя из целевого внешнего вида отчета
|
||||
- Заполните настройки отчета исходя из целевого внешнего вида
|
||||
6. Проотестируйте работу отчета
|
||||
- Откройте отчет в любой информационной базе
|
||||
- Выберите в качестве файла [Пример архива](reference-data/export.zip)
|
||||
- Сформируйте отчет и сравните с примеров внешнего вида отчета
|
||||
|
||||
1. Изменяем внешний отчета из прошлого задания;
|
||||
2. Перекрыть событие ПриКомпоновкеРезультата() в модуле отчета. Убрать стандартную обработку;
|
||||
3. Создать запрос с текстом из предыдущего задания с параметром ограничения по дате;
|
||||
3. Получаем настройки компоновщика настроек. Создаем объект - ПараметрКомпоновкиДанных и из коллекции ПараметрыДанных
|
||||
из полученных настроек функцией НайтиЗначениеПараметра() возвращаем объект ЗначениеПараметраКомпоновкиДанных и устанавливаем значение параметра для запроса
|
||||
свойством Значение;
|
||||
4. Выгружаем результат запроса в таблицу значений;
|
||||
5. Для доступа к расшифровке в отчете - использовать параметр события ДанныеРасшифровки() при вызвове метода Выполнить() компоновщика макета
|
||||
и Инициализировать() процессора компоновки данных.
|
||||
6. Создаем объект КомпоновщикМакетаКомпоновкиДанных и функцией Выполнить() возвращаем результат в переменную.
|
||||
7. Создаем структуру - Название объекта в СКД и таблица значений с данными;
|
||||
8. Создаем и инициализируем объект ПроцессорКомпоновкиДанных;
|
||||
9. Очищаем параметр ДокументРезультат;
|
||||
10. Через объект ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент устанавливаем ДокументРезультат и выводим объект ПроцессорКомпоновкиДанных;
|
||||
11. В схеме компоновки данных добавляем набор данных - объект;
|
||||
12. Задаем имя объекта которое совпадает с наименованием ключа структуры с ТЗ;
|
||||
13. Создаем поля на вкладке Наборы данных - количество и имена полей должны совпадать с колонками переданной таблицы значений;
|
||||
14. Определяем правильный тип полей;
|
||||
15. Делаем настройки для полей как в прошлом задании;
|
||||
16. Проверяем формирование отчета в пользовательском режиме.
|
||||
### Пример внешнего вида отчета
|
||||
![Пример внешнего вида отчета](img/homework-6-7-1.png)
|
||||
|
||||
### Подсказка: [результат выполнения домашнего задания](Examples/homework-6-7-example.md)
|
||||
## Критерии оценки
|
||||
|
||||
Домашнее задание проверяется экспертом.
|
||||
|
||||
Успешным выполнением считается корректно реализованный отчет "Анализ выгрузки"
|
||||
|
BIN
img/homework-6-6-1.png
Normal file
BIN
img/homework-6-6-1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
BIN
img/homework-6-7-1.png
Normal file
BIN
img/homework-6-7-1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
BIN
reference-data/export.zip
Normal file
BIN
reference-data/export.zip
Normal file
Binary file not shown.
BIN
simulator/queries.dt
Normal file
BIN
simulator/queries.dt
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user