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