1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-16 07:10:14 +02:00
1c-homeworks/homework-4-2.md
2023-01-18 19:58:00 +03:00

9.1 KiB

Задание к занятию «Формы справочников»

Задача 1. «Подбор программ в форму контрагента»

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

Создать в справочнике «Контрагенты» табличную часть с программами, которые контрагент-клиент использует, и реализовать подбор программ из справочника «Номенклатура» в форму контрагента.

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

Выгрузка информационной базы (.dt) с конфигурацией из предыдущих заданий, со справочниками «Контрагенты» и «Номенклатура», в которой:

  • к справочнику «Контрагенты» добавлена табличная часть «Программы» с реквизитом «Программа» типа СправочникСсылка.Номенклатура;
  • в форме контрагента есть таблица «Программы» с кнопкой «Подбор» в командной панели, открывающая форму выбора справочника «Номенклатура» в режиме подбора. Результат подбора не должен содержать дублей программ.

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

  1. Добавить к справочнику «Контрагенты» табличную часть «Программы».
  2. Добавить к табличной части индексированный реквизит «Программа» (СправочникСсылка.Номенклатура).
  3. Перетащить табличную часть на форму элемента, скрыв заголовок (мы выведем его отдельной декорацией). На форме появится таблица формы, содержащая программы, используемые контрагентом.
  4. Добавить команду «Подбор» и перетащить её кнопкой в командную панель таблицы формы с программами. В обработчике команды открыть форму выбора справочника «Номенклатура»:
    • передав в качестве владельца открываемой формы таблицу формы с программами, чтобы при выборе номенклатуры именно в таблице формы срабатывало событие «ОбработкаВыбора»;
    • в параметре ЗакрыватьПриВыборе передав Ложь, чтобы пользователь мог подобрать несколько программ без закрытия формы выбора.
  1. В обработчике события «ОбработкаВыбора» таблицы формы добавить выбранный элемент справочника «Номенклатура», если его ещё нет в таблице.
  2. Отключить автозаполнение командной панели таблицы формы. Вместо этого создать над таблицей группу, в которую:
  • добавить декорацию-надпись с заголовком «Программы:», которая заменит собственный заголовок таблицы;
  • добавить кнопки для команды добавления строки и для команды «Подбор»;
  • добавить группу-командную панель, источником команд которой указать табличную часть «Программы», чтобы заполнить оставшимися командами подменю «Ещё».

Задача 2. «Видимость помеченных на удаление элементов»

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

Скрыть помеченных на удаление контрагентов, дав возможность показать их по команде в подменю «Ещё».

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

Выгрузка информационной базы (.dt) с конфигурацией из предыдущих заданий, в форме списка справочника «Контрагенты» которой:

  • помеченные на удаление контрагенты выделяются серым цветом или зачеркнутым шрифтом и скрыты по умолчанию;
  • в «Ещё» есть команда «Показывать помеченных на удаление», выбор которой переключает пометку и управляет видимостью помеченных на удаление.

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

  1. Создать элемент стиля ШрифтПомеченныхНаУдаление (зачёркнутый) или ЦветПомеченныхНаУдаление (серый).
  2. В настройках условного оформления динамического списка контрагентов добавить условие на пометку удаления, применив стиль ко всей строке.
  3. В отборе динамического списка установить отбор по умолчанию ПометкаУдаления — Равно — Ложь. Важно: флажок «Включать в пользовательские настройки» для этого элемента нужно снять. После этого следует открыть «Свойства элемента пользовательских настроек» и установить режим редактирования «Недоступный»:

Свойства пользовательских настроек

  1. Создать булевский реквизит ПоказыватьПомеченныхНаУдаление.
  2. Создать команду ПоказыватьПомеченныхНаУдаление, в обработчике которой:
  • инвертировать реквизит ПоказыватьПомеченныхНаУдаление,
  • установить пометку кнопки согласно новому значению реквизита,
  • элемент отбора нужно найти в составе коллекции Список.КомпоновщикНастроек.Настройки.Отбор.Элементы по равенству свойства ЛевоеЗначение полю компоновки данных «ПометкаУдаления»:
ПолеПометкаУдаления = Новый ПолеКомпоновкиДанных(«ПометкаУдаления»);
НайденныйЭлементОтбора = Неопределено;
Для Каждого ЭлементОтбора Из Список.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
    Если ЭлементОтбора.ЛевоеЗначение = ПолеПометкаУдаления Тогда
			    НайденныйЭлементОтбора = ЭлементОтбора;
			    Прервать;
		  КонецЕсли;
КонецЦикла;

В отсутствие такого элемента его нужно создать:

Если НайденныйЭлементОтбора = Неопределено Тогда
    НайденныйЭлементОтбора = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(
			    Тип(«ЭлементОтбораКомпоновкиДанных»));
    НайденныйЭлементОтбора.ЛевоеЗначение = ПолеПометкаУдаления;
КонецЕсли;

Правым значением будет Ложь, видом сравнения — равно, а Использование будет зависеть от выбранного пользователем варианта:

НайденныйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НайденныйЭлементОтбора.ПравоеЗначение = Ложь;
НайденныйЭлементОтбора.Использование = Не ПоказыватьПомеченныхНаУдаление;
  1. В режиме Предприятия удостовериться, что помеченные на удаление контрагенты по умолчанию скрыты, но их можно показать и при этом они будут выделены особым образом.