Как доработать таблицу списка документов

В списке документов основного модуля выводятся наиболее часто требуемые поля, характеризующие полученный пакет или документ.

Помимо основных полей списка, которые заполняются в модуле, существует 5 колонок для вывода дополнительных сведений. Они называются «ДопРеквизит1», «ДопРеквизит2» и т.д.

Для изменения заголовков, типов и допустимых данных для каждой из них используется событие ПолучитьНастройкиДополнительныхКолонокСпискаДокументов.

Формирование списка колонок происходит в основной форме модуля при изменении режима отображения документов.

Пример переименования 3 колонок: «ДопРеквизит1», «ДопРеквизит2», «ДопРеквизит3»:

Режим = Параметры.Режим;

Если Режим = "ПолученныеДокументы" Тогда

    ДопКолонки = Новый Массив;  // не более 5. Индекс элемента в массиве, увеличенный на единицу, совпадает с порядковым номером колонки
    ДопКолонки.Добавить(Новый Структура("Заголовок, Тип, ДопустимыеЗначения", "Состояние документа 1С", Новый ОписаниеТипов("Строка")));
    ДопКолонки.Добавить(Новый Структура("Заголовок, Тип, ДопустимыеЗначения", "Сумма в 1С", Новый ОписаниеТипов("Число")));
    ДопКолонки.Добавить(Новый Структура("Заголовок, Тип, ДопустимыеЗначения", "Расхождение", Новый ОписаниеТипов("Число")));

    Возврат ДопКолонки;

КонецЕсли;

Заполнение данными колонок «ДопРеквизит» происходит:

В первом варианте необходимо учитывать, что поля запроса с дополнительными данными должны иметь названия «ДопРеквизит1», «ДопРеквизит2» и т.д.

Во втором варианте заполнение происходит через непосредственное обращение к реквизиты таблицы СписокДокументов.

Обращение к событию происходит при каждом обновлении списка на форме модуля.

Пример заполнения значений дополнительных реквизитов с использованием события ПослеОбновленияСпискаДокументов:

СписокДокументов = Параметры.СписокДокументов;
Режим = Параметры.Режим;

Если Режим = "ПолученныеДокументы" Тогда

    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |   Парам.НомерСтроки,
    |   ВЫРАЗИТЬ(Парам.СуммаДокумента КАК ЧИСЛО) КАК СуммаДокументаДД,
    |   ВЫРАЗИТЬ(Парам.Документ КАК Документ.ПоступлениеТоваровУслуг) КАК Документ1С
    |ПОМЕСТИТЬ ВТ
    |ИЗ
    |   &СписокДокументов КАК Парам
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |   ВТ.НомерСтроки,
    |   ВЫБОР
    |       КОГДА ВТ.Документ1С ССЫЛКА Документ.ПоступлениеТоваровУслуг
    |           ТОГДА ВЫБОР
    |                   КОГДА ВЫРАЗИТЬ(ВТ.Документ1С КАК Документ.ПоступлениеТоваровУслуг).ПометкаУдаления
    |                       ТОГДА ""Удален""
    |                   КОГДА НЕ ВЫРАЗИТЬ(ВТ.Документ1С КАК Документ.ПоступлениеТоваровУслуг).Проведен
    |                       ТОГДА ""Не проведен""
    |                   ИНАЧЕ """"
    |                 КОНЕЦ
    |       ИНАЧЕ """"
    |   КОНЕЦ КАК СостояниеДокумента,
    |   ЕСТЬNULL(ВТ.Документ1С.СуммаДокумента, 0) КАК СуммаДокумента1С,
    |   ВТ.СуммаДокументаДД - ЕСТЬNULL(ВТ.Документ1С.СуммаДокумента, 0) КАК Расхождение
    |ИЗ
    |   ВТ КАК ВТ"
    );

    Запрос.УстановитьПараметр("СписокДокументов", СписокДокументов.Выгрузить( ,"НомерСтроки, Документ, СуммаДокумента"));
    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
        СписокДокументов[Выборка.НомерСтроки - 1].ДопРеквизит1 = Выборка.СостояниеДокумента;
        СписокДокументов[Выборка.НомерСтроки - 1].ДопРеквизит2 = Выборка.СуммаДокумента1С;
        СписокДокументов[Выборка.НомерСтроки - 1].ДопРеквизит3 = Выборка.Расхождение;
    КонецЦикла;

    Возврат ПолучитьНастройкиДополнительныхКолонокСпискаДокументов(Новый Структура("Режим", Режим));

КонецЕсли;