В конце указывается уровень группировки по умолчанию. А как дать понять к какому уровню группировки относится конкретный вывод в табличную часть? Всё решается параметрами вида:
ТабДок.Вывести(ОбластьТушка,<уровнь группировки>,<название группы>,<Истина/Ложь - раскрыто/свернуто по умолчанию>);
Эта ошибка может появляться, если при открытии формы списка задаётся «жесткий» отбор, который конфликтует с пользовательским отбором (выбран тот-же отбор, что и «принудительный»). Я решил эту проблему следующим образом: при открытии формы читаю пользовательские отборы, и если вижу что его отбор тот же что и назначаемый, назначаемый отключаю и вывожу сообщение о конфликте:
&НаСервере
Функция ПОлучитьОтборы()
возврат Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВывестиПредупреждение=ложь;
ОтборыПользователя= ПОлучитьОтборы();
для каждого эл из ОтборыПользователя.Отбор.Элементы цикл
если эл.ЛевоеЗначение="ТО_КО" тогда
ВывестиПредупреждение=истина;
конецесли;
конеццикла;
если ВывестиПредупреждение=ложь тогда
Список.Отбор.Элементы.Очистить();
Отбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Список.Отбор.ДоступныеПоляОтбора.Элементы.Найти("ТО_КО").Поле;
Отбор.ПравоеЗначение =ЭтаФорма.Подразделение;
Отбор.Использование=Истина;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
иначе
Сообщить("ВНИМАНИЕ! У вас конфликт отборов. Снимите галочку с отбора ТО_КО");
конецесли;
//ПодключитьОбработчикИзмененияДанных("ДокументСписок.Отбор", "ПосчитатьИтогиНаСервере", Истина);
ПодключитьОбработчикОжидания("ПосчитатьИтогиНаКлиенте",3,ложь);
КонецПроцедуры
Столкнулся с интересной особенностью 1С: если на форме списка присутствуют пользовательские фильтры, и пользователь «включил/выключил» этот фильтр, то нет никакого способа это событие отловить
Единственное решение какое я придумал, это подключение обработчика ожидания при событии на открытие формы вида:
&НаКлиенте
Функция ПосчитатьИтогиНаКлиенте()
ПосчитатьИтогиНаСервере();
КонецФункции
Функция ПосчитатьИтогиНаСервере()
ВсеЭлементы=СписокВКоллекциюЗначений();
ЗадолженостьПоУведомлению=0;ОстатокЗадолженности=0;ТекущаяЗадолженость=0;
для каждого стр из ВсеЭлементы цикл
ЗадолженостьПоУведомлению=ЗадолженостьПоУведомлению+стр.ЗадолженостьПоУведомлению;
ОстатокЗадолженности=ОстатокЗадолженности+стр.ОстатокЗадолженности;
ТекущаяЗадолженость=ТекущаяЗадолженость+стр.ТекущаяЗадолженость;
КонецЦикла;
элементы.Список.ПодчиненныеЭлементы.ЗадолженостьПоУведомлению.ТекстПодвала=ЗадолженостьПоУведомлению;
элементы.Список.ПодчиненныеЭлементы.ОстатокЗадолженности.ТекстПодвала=ОстатокЗадолженности;
элементы.Список.ПодчиненныеЭлементы.ТекущаяЗадолженость.ТекстПодвала=ТекущаяЗадолженость;
КонецФункции
Задача: обеспечить раскраску строк по условию на форме списка
Решение: может быть разным, в зависимости от сложности условий и способа вывода данных на форму.
Вариант 1: данные формируются запросом СКД, динамически:
В этом случае заходим во вкладку «Условное оформление» и настраиваем собственно условия:
Вариант 2: данные формируются «как обычно».
В этом случае в свойствах формы ищем реквизит «Условное оформление» и настраиваем по тому-же принципу как и в Варианте 1
Вариант 3: подходит для «сложных» вариантов оформления, когда при помощи первого и второго варианта, нужного эффекта добиться не удалось. В свойстве «ПриОткрытии» размещаем код вида:
&НаКлиенте
Процедура УстановитьУсловноеОформлениеДляПоляДатаДоговора()
// Создание элемента условного оформления
ЭлементыОформления = СписокПартийДС.УсловноеОформление.Элементы.Добавить();
ЭлементыОформления.Использование = Истина;
// Настройка оформляемого поля
Поля = ЭлементыОформления.Поля.Элементы.Добавить();
Поля.Использование = Истина;
Поля.Поле = Новый ПолеКомпоновкиДанных("ДатаДог");
Поля = ЭлементыОформления.Поля.Элементы.Добавить();
Поля.Использование = Истина;
// Создание условия для элемента оформления
Отбор = ЭлементыОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.Использование = Истина;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаДог");
Отбор.ПравоеЗначение = ТекущаяДата() + 31557600;
// Установка цвета оформления
Оформление = ЭлементыОформления.Оформление;
Оформление.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЦветФона"), WebЦвета.ЛососьСветлый);
КонецПроцедуры