1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-24 08:02:20 +02:00
1c-homeworks/homework-6-2.md
2020-06-27 11:28:28 +03:00

7.3 KiB

Задание к занятию "Условия и подзапросы"

Задача № 1 "Отбор номенклатуры при обновлении цен в документе Реализация"

Описание задачи

Изменить процедуру для команды "Обновить цены" документа Реализация. Перечень номенклатуры получать не передачей элементов массива, а используя вложенный запрос к табличной части текущего документа.

Требования к результату

Прикрепить .cf файл из прошлого задания в котором внести изменения для получения перечня элементов номенклатуры вложенным запросом к табличной части документа Реализация.

Процесс выполнения

  1. Использовать файл *.cf конфигурацию из прошлого задания.

  2. В форме документа Реализация для серверной процедуры команды Обновить цены внести следующие изменения:

    • Убрать заполнение массива элементов номенклатуры;
    • Для запроса получения цен убрать заполнение параметра СписокНоменклатуры;
    • В конструкторе запроса в параметрах виртуальной таблицы в поле условие удалить предыдущее условие и вместо него -
      • вызвать конструктор запроса в поле условие;
      • построить запрос к табличной части документа Реализация с выборкой одного поля Номенклатура.Ссылка;
      • В операторе ГДЕ указать параметр для отбора определенной ссылки документа реализация;
      • Нажать на ОК. Полученый текст запроса использовать для условия отбора измерения Номенклатура;
    • Для запроса добавить установку параметра документа реализации текущей ссылкой, при этом проверять чтобы ссылка была не пустая;
    • Если ссылка пустая то Возврат;
  3. Проверить заполнение цен для всех товаров из табличной части документа Реализация нажатием на кнопку Обновить цены.

Задача № 2 "Заполнение строк табличной части по отбору в документе Реализация"

Описание задачи

Добавить команду "Заполнить строки" в табличной части документа Реализация. При заполнении добавить возможность отбора по номенклатурной группе и диапазону цен. Заполнять номенклатуру и цены из регистра Цены номенклатуры.

Требования к результату

Прикрепить .cf файл с внесенными изменениями по реализации заполнения табличной части документа Реализация из регистра сведений Цены номенклатура по отбору.

Процесс выполнения

  • В Конфигураторе добавить обработку ПодборРН. В обработке -
    • создать форму и реквизиты формы ГруппаТовара - тип справочник Номенклатура с возможностью выбора только групп, ЦенаС, ЦенаПо - тип такой же как у реквизита Цена в регистре сведений Цены номенклатуры;
    • Разместить реквизиты на форме;
    • Добавить команду Заполнить и соответственно кнопку на форму. При нажатии на кнопку вызвать команду Закрыть с правильным кодом возврата диалога в качестве параметра;
    • Перекрыть событие ПриЗакрытии() в котором заполнить структуру значений реквизитов ГруппаТовара, ЦенаС и ЦенаПо. Структуру передать в качестве параметра в команде ОповеститьОВыборе().
  • Для командной панели табличной части документа Реализация добавить команду ЗаполнитьСтроки и соответственно кнопку;
  • Перекрыть событие для команды ЗаполнитьСтроки в котором реализовать вызов формы обработки ПодборРН;
  • Для формы документа перекрыть событие ОбработкаВыбора на клиенте и реализовать вызов процедуры ОбработкаВыбораНаСервере с передачей параметра ВыбранноеЗначение. Этот параметр содержит структуру значений полученных при закрытии обработки ПодборРН;
  • Реализовать процедуру ОбработкаВыбораНаСервере следующимо образом
    • Проверять если есть строки в ТЧ документа реализация тогда выводить сообщение с предложением их удалить;
    • Если дали согласие удалить строки - очищаем табличную часть иначе выходим из процедуры;
    • Создать запрос. Текст запроса выбирает последние цены на дату документа Реализация из регистра сведений Цены номенклатуры.
    • Условие в срезе текста запроса формировать динамически в зависимости от полученных значений параметров в структуре. При этом возможны варианты - заполнена или не заполнена группа номенклатуры. ЦенаС, ЦенаПо могут быть равны нулю или больше нуля. Так же в зависимости от этих условий устанавливать необходимые параметры запроса.
    • Результат запроса добавить в табличную часть. Это реквизиты Номенклатура и Цена.