В начало

Отбор по дополнительной колонке журнала «Платежные документы»

           

Есть журнал документов, в котором собираются 2 платежных документа: [Поступление денежных средств] и [Списание денежных средств]. У журнала документов есть графа «Проект», которое соответствует общему реквизиту [Проект]. Кроме того у журнала документов имеется форма списка, на которой расположены следующие колонки: ВидДокумента, Дата, Номер, Проект и дополнительное поле Проект1, для которого значение будет вытягиваться из табличных частей документов, входящих в журнал документов. При этом поле «Проект» и поле «Проект1» вовсе не должны совпадать.

Рис. Журнал документов «Платежные документы»

            Чтобы осуществить вывод данных в дополнительное поле «Проект1»  необходимо с свойствах табличного поля «ЖурналДокументовСписок» на событии «ПриВыводеСтроки» прописать процедуру, листинг которой показан ниже.

Листинг. Процедура «ЖурналДокументовСписокПриВыводеСтроки»

Процедура ЖурналДокументовСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

            ОформлениеСтроки.Ячейки.Проект1.ОтображатьТекст = Истина;

            Для Каждого Стр Из ДанныеСтроки.Ссылка.ДвижениеДенежныхСредств Цикл

                        ОформлениеСтроки.Ячейки.Проект1.Текст = Стр.Проект1;

            КонецЦикла;

КонецПроцедуры

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

            Далее показана главная форма документа «Поступление денежных средств», на которой выделены поля «Проект», которое через свойство «Данные» связано с реквизитом «Проект» документа и поле «Проект1», которое является реквизитом табличной части «Движение денежных средств», расположенной на одноименной закладке.

Рис. Форма документа «Поступление денежных средств»

            Поскольку, поле «Проект1» не связано с реквизитами документов, входящих в журнал документов «Платежные документы», то отбор стандартными механизмами через кнопу «Отбор и сортировка» недоступны. Ниже показана вкладка «Отбор», на которой видны доступные для отбора реквизиты.

Рис. Виды отборов на кнопке «Отбор и сортировка»

            На рисунке видно поле «Проект», которое  присутствует в документах как реквизит, в журнале документов как графа, но вот дополнительного поля «Проект1» нет, а следовательно и отбор осуществить через «Воронку» нельзя.

            Для осуществления отбора по дополнительному полю «Проект1» предварительно на форму списка журнала документов «Платежные документы» добавим поле с именем «ПолеПроект1» с типом «СправочникСсылка.Проекты» и кнопку «ОтборПоПроекту1», на которую повесим событие при нажатии.

Листинг. Процедура на кнопке

Процедура Кнопка1Нажатие(Элемент)

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |           СписаниеДенежныхСредств.Ссылка,

                        |           СписаниеДенежныхСредствДвижениеДенежныхСредств.Проект1

                        |ПОМЕСТИТЬ втПлатежныеДокументы

                        |ИЗ

                        |           Документ.СписаниеДенежныхСредств.ДвижениеДенежныхСредств КАК СписаниеДенежныхСредствДвижениеДенежныхСредств

                        |                       ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеДенежныхСредств КАК СписаниеДенежныхСредств

                        |                       ПО (СписаниеДенежныхСредствДвижениеДенежныхСредств.Ссылка = СписаниеДенежныхСредств.Ссылка)

                        |

                        |ОБЪЕДИНИТЬ ВСЕ

                        |

                        |ВЫБРАТЬ

                        |           ПоступлениеДенежныхСредств.Ссылка,

                        |           ПоступлениеДенежныхСредствДвижениеДенежныхСредств.Проект1

                        |ИЗ

                        |           Документ.ПоступлениеДенежныхСредств.ДвижениеДенежныхСредств КАК ПоступлениеДенежныхСредствДвижениеДенежныхСредств

                        |                       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеДенежныхСредств КАК ПоступлениеДенежныхСредств

                        |                       ПО (ПоступлениеДенежныхСредствДвижениеДенежныхСредств.Ссылка = ПоступлениеДенежныхСредств.Ссылка)

                        |;

                        |

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |           втПлатежныеДокументы.Проект1,

                        |           втПлатежныеДокументы.Ссылка

                        |ИЗ

                        |           втПлатежныеДокументы КАК втПлатежныеДокументы

                        |ГДЕ

                        |           втПлатежныеДокументы.Проект1 = &Проект1";

           

            Запрос.УстановитьПараметр("Проект1", ПолеПроект1);

           

            Если ЗначениеЗаполнено(ПолеПроект1) Тогда

                        Результат = Запрос.Выполнить();

                        Выборка = Результат.Выбрать();

                        СЗ = Новый СписокЗначений;

                       

                        Пока Выборка.Следующий() Цикл

                                   СЗ.Добавить(Выборка.Ссылка);

                        КонецЦикла;

                       

                        Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;

                        Отбор.Ссылка.Значение = СЗ;

                        Отбор.Ссылка.Использование = Истина;

            Иначе

                        Отбор.Ссылка.Использование = Ложь;

            КонецЕсли;  

КонецПроцедуры

            Кроме того на кнопку «Очистка» поля «ПолеПроект1» тоже установим небольшую процедуру для очистки отбора.

Процедура ПолеПроектОчистка(Элемент, СтандартнаяОбработка)

            Отбор.Ссылка.Использование = Ложь;

КонецПроцедуры

 

            Далее показан результат отбора по типовому проекту №1.

Рис. Форма списка журнала документов «Платежные документы»