mirror of
https://github.com/netology-code/1c-homeworks.git
synced 2024-11-24 08:02:20 +02:00
81 lines
9.1 KiB
Markdown
81 lines
9.1 KiB
Markdown
# Задание к занятию «Формы справочников»
|
|
|
|
## Задача 1. «Подбор программ в форму контрагента»
|
|
|
|
### Описание задачи
|
|
Создать в справочнике «Контрагенты» табличную часть с программами, которые контрагент-клиент использует, и реализовать подбор программ из справочника «Номенклатура» в форму контрагента.
|
|
|
|
### Требования к результату
|
|
|
|
Выгрузка информационной базы (.dt) с конфигурацией из предыдущих заданий, со справочниками «Контрагенты» и «Номенклатура», в которой:
|
|
* к справочнику «Контрагенты» добавлена табличная часть «Программы» с реквизитом «Программа» типа СправочникСсылка.Номенклатура;
|
|
* в форме контрагента есть таблица «Программы» с кнопкой «Подбор» в командной панели, открывающая форму выбора справочника «Номенклатура» в режиме подбора. Результат подбора не должен содержать дублей программ.
|
|
|
|
### Процесс выполнения
|
|
|
|
1. Добавить к справочнику «Контрагенты» табличную часть «Программы».
|
|
2. Добавить к табличной части индексированный реквизит «Программа» (СправочникСсылка.Номенклатура).
|
|
3. Перетащить табличную часть на форму элемента, скрыв заголовок (мы выведем его отдельной декорацией). На форме появится таблица формы, содержащая программы, используемые контрагентом.
|
|
4. Добавить команду «Подбор» и перетащить её кнопкой в командную панель таблицы формы с программами. В обработчике команды открыть форму выбора справочника «Номенклатура»:
|
|
* * передав в качестве владельца открываемой формы таблицу формы с программами, чтобы при выборе номенклатуры именно в таблице формы срабатывало событие «ОбработкаВыбора»;
|
|
* * в параметре ЗакрыватьПриВыборе передав Ложь, чтобы пользователь мог подобрать несколько программ без закрытия формы выбора.
|
|
5. В обработчике события «ОбработкаВыбора» таблицы формы добавить выбранный элемент справочника «Номенклатура», если его ещё нет в таблице.
|
|
6. Отключить автозаполнение командной панели таблицы формы. Вместо этого создать над таблицей группу, в которую:
|
|
* добавить декорацию-надпись с заголовком «Программы:», которая заменит собственный заголовок таблицы;
|
|
* добавить кнопки для команды добавления строки и для команды «Подбор»;
|
|
* добавить группу-командную панель, источником команд которой указать табличную часть «Программы», чтобы заполнить оставшимися командами подменю «Ещё».
|
|
|
|
## Задача 2. «Видимость помеченных на удаление элементов»
|
|
|
|
### Описание задачи
|
|
Скрыть помеченных на удаление контрагентов, дав возможность показать их по команде в подменю «Ещё».
|
|
|
|
### Требования к результату
|
|
Выгрузка информационной базы (.dt) с конфигурацией из предыдущих заданий, в форме списка справочника «Контрагенты» которой:
|
|
* помеченные на удаление контрагенты выделяются серым цветом или зачеркнутым шрифтом и скрыты по умолчанию;
|
|
* в «Ещё» есть команда «Показывать помеченных на удаление», выбор которой переключает пометку и управляет видимостью помеченных на удаление.
|
|
|
|
### Процесс выполнения
|
|
1. Создать элемент стиля ШрифтПомеченныхНаУдаление (зачёркнутый) или ЦветПомеченныхНаУдаление (серый).
|
|
2. В настройках условного оформления динамического списка контрагентов добавить условие на пометку удаления, применив стиль ко всей строке.
|
|
3. В отборе динамического списка установить отбор по умолчанию ПометкаУдаления — Равно — Ложь. Важно: флажок «Включать в пользовательские настройки» для этого элемента нужно снять. После этого следует открыть «Свойства элемента пользовательских настроек» и установить режим редактирования «Недоступный»:
|
|
|
|
![Свойства пользовательских настроек](homework-4-3.png)
|
|
|
|
4. Создать булевский реквизит ПоказыватьПомеченныхНаУдаление.
|
|
5. Создать команду ПоказыватьПомеченныхНаУдаление, в обработчике которой:
|
|
* инвертировать реквизит ПоказыватьПомеченныхНаУдаление,
|
|
* установить пометку кнопки согласно новому значению реквизита,
|
|
* элемент отбора нужно найти в составе коллекции Список.КомпоновщикНастроек.Настройки.Отбор.Элементы по равенству свойства ЛевоеЗначение полю компоновки данных «ПометкаУдаления»:
|
|
|
|
```bsl
|
|
ПолеПометкаУдаления = Новый ПолеКомпоновкиДанных(«ПометкаУдаления»);
|
|
НайденныйЭлементОтбора = Неопределено;
|
|
Для Каждого ЭлементОтбора Из Список.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
|
|
Если ЭлементОтбора.ЛевоеЗначение = ПолеПометкаУдаления Тогда
|
|
НайденныйЭлементОтбора = ЭлементОтбора;
|
|
Прервать;
|
|
КонецЕсли;
|
|
КонецЦикла;
|
|
```
|
|
|
|
В отсутствие такого элемента его нужно создать:
|
|
|
|
```bsl
|
|
Если НайденныйЭлементОтбора = Неопределено Тогда
|
|
НайденныйЭлементОтбора = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(
|
|
Тип(«ЭлементОтбораКомпоновкиДанных»));
|
|
НайденныйЭлементОтбора.ЛевоеЗначение = ПолеПометкаУдаления;
|
|
КонецЕсли;
|
|
```
|
|
|
|
Правым значением будет Ложь, видом сравнения — равно, а Использование будет зависеть от выбранного пользователем варианта:
|
|
|
|
```bsl
|
|
НайденныйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
|
|
НайденныйЭлементОтбора.ПравоеЗначение = Ложь;
|
|
НайденныйЭлементОтбора.Использование = Не ПоказыватьПомеченныхНаУдаление;
|
|
```
|
|
|
|
6. В режиме Предприятия удостовериться, что помеченные на удаление контрагенты по умолчанию скрыты, но их можно показать и при этом они будут выделены особым образом.
|