СКД отбор по таблице значений или таблице документа
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Использование СКД для произвольных отборов.
В качестве примера берется непростая задача:
Отбор в табличной части документа «Реализация товаров услуг» по нескольким реквизитам и их комбинациям. Типовой механизм позволяет только найти элементы в одной колонке (не динамический список) см:
Для настройки фильтра будем использовать условное оформление формы.
На форме добавим в ТЧ Товары реквизит «Видимость» булево и настроим условное оформление строки не него. В дальнейшем Для Строк попадающих в отбор будем проставлять Видимость = Истина, для остальных Ложь.
1 Обработка Установка отбора по табличной части . основной параметр – таблица значений.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Тест = Ложь;
Если Тест Тогда
Возврат;
КонецЕсли;
УстановитьНачальныеНастройки();
КонецПроцедуры
Для тестирования Тест = Истина. ДокументСсылка выбирается вручную на форме.
&НаКлиенте
Процедура ДокументСсылкаПриИзменении(Элемент)
УстановитьНастройкиДляТеста();
КонецПроцедуры
2 Установка настроек
&НаСервере
Процедура УстановитьНастройкиДляТеста()
//отличие от УстановитьНачальныеНастройки
//здесь нет установленных параметров формы
//которые устанавливаются программно при вызове формы
Для начала получим таблицу значений:
ТабДок = Объект.ДокументСсылка.Товары.Выгрузить();
Т.к. Таблица для отбора находится на клиенте, преобразуем ТЗ в массив структур
МассивСтруктур = ТаблицуВМассивСтруктур(ТабДок);
Теперь заполним таблицу для отбора:
Для Каждого Стр Из МассивСтруктур Цикл
ТабДляОтбора.Добавить(Стр);
КонецЦикла;
// Преобразуем таблицу значений в массив структур для передачи клиенту (форме).
скд = РеквизитФормыВЗначение("Объект").ПолучитьСхемуОтбора();
Получаем схему СКД по умолчанию она пустая.
НастроитьПоляСхемы(СКД, ТабДок.Колонки);
Заполняем поля схемы и передаем ее клиенту и передаем управление компановщику настроек
Теперь от нас ничего не зависит.
АдресСхемы = ПоместитьВоВременноеХранилище(скд, УникальныйИдентификатор);
// МассивСтруктур и АдресСхемы - реквизиты формы. они нам нужны на клиенте.
Объект.КомпановщикНастроекОтбора.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
Объект.КомпановщикНастроекОтбора.ЗагрузитьНастройки(скд.НастройкиПоУмолчанию);
КонецПроцедуры
Полное описание во вложении
Вступайте в нашу телеграмм-группу Инфостарт