Пример использования формы расшифровки

&НаКлиенте

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

// Получить предварительные данные

ПредварительныеДанные = ПолучитьПредварительныеДанные(Расшифровка);

Если ПредварительныеДанные = Неопределено Тогда

Возврат;

КонецЕсли;

//Получить табличную часть для формы расшифровки

ТЧ = РасшифровкаПоРегистраторам1(ПредварительныеДанные.ПараметрНачДата,ПредварительныеДанные.ПараметрКонДата,ПредварительныеДанные.ПараметрСтатья,ПредварительныеДанные.ПараметрВладелец);

//Получить форму

ФормаРасшифровки = ПолучитьФорму("Отчет.ин_ПлатежныйКалендарь.Форма.ФормаРасшифровки",ПредварительныеДанные,ЭтаФорма);

//Заполнить её данными

Если НЕ (ТЧ = Неопределено) Тогда

ФормаРасшифровки.мДата1 = ПредварительныеДанные.ПараметрНачДата;

ФормаРасшифровки.мДата2 = ПредварительныеДанные.ПараметрКонДата;

ФормаРасшифровки.мСтатья = ПредварительныеДанные.ПараметрСтатья;

ФормаРасшифровки.СписокДокументов.Очистить();

Для Индекс = 0 По ТЧ.Количество() - 1 Цикл

НовСтр = ФормаРасшифровки.СписокДокументов.Добавить();

НовСтр.Документ =ТЧ[Индекс].Документ;

НовСтр.СуммаДокумента =ТЧ[Индекс].СуммаДокумента;

НовСтр.СуммаПоСтатье =ТЧ[Индекс].СуммаПоСтатье;

КонецЦикла;

КонецЕсли;

// открыть форму расшифровки

Если НЕ ФормаРасшифровки.Открыта() Тогда

ФормаРасшифровки.Открыть();

иначе

ФормаРасшифровки.Закрыть();

КонецЕсли;

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

// Получить предварительные данные

&НаСервере

Функция ПолучитьПредварительныеДанные(Расшифровка)

Перем ВыполненноеДействие;

РезультатФункции = Новый Структура;

ДанныеРасшифровкиКомпоновкиДанных = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);

МассивПолей = БухгалтерскиеОтчетыВызовСервера.ПолучитьМассивПолейРасшифровки(Расшифровка, ДанныеРасшифровкиКомпоновкиДанных, , Истина);

РезультатФункции.Вставить("ПараметрСтатья",Неопределено);

РезультатФункции.Вставить("ПараметрНачДата", Неопределено);

РезультатФункции.Вставить("ПараметрВладелец",Неопределено);

Для Каждого Элемент Из МассивПолей Цикл

Если ТипЗнч(Элемент) = Тип("ЭлементОтбораКомпоновкиДанных")Тогда

РезультатФункции.ПараметрВладелец = Элемент.ПравоеЗначение;

Продолжить;

КонецЕсли;

Если Элемент.Поле = "СтатьяОборотов" Тогда

РезультатФункции.ПараметрСтатья = Элемент.Значение;

ИначеЕсли Элемент.Поле = "Период" Тогда

РезультатФункции.ПараметрНачДата = Элемент.Значение;

Иначе

КонецЕсли;

КонецЦикла;

Если РезультатФункции.ПараметрСтатья = Неопределено или РезультатФункции.ПараметрНачДата = Неопределено Тогда

Возврат Неопределено;

КонецЕсли;

РезультатФункции.Вставить("ПараметрКонДата", КонецДня(РезультатФункции.ПараметрНачДата));

РезультатФункции.Вставить("ОткрытьЗначение", Ложь);

РезультатФункции.Вставить("Значение", ДанныеРасшифровкиКомпоновкиДанных.Элементы[Расшифровка].ПолучитьПоля()[0].Значение);

РезультатФункции.Вставить("ЭтоСсылка", Ложь);

Возврат РезультатФункции;

КонецФункции // ПолучитьПредварительныеДанные()

//Получить табличную часть для формы расшифровки

Функция РасшифровкаПоРегистраторам1(мДата1,мДата2,мСтатья, мПараметрВладелец)Экспорт

РезультатФункции = Новый Массив;

Сценарий = ПредопределенноеЗначение("Справочник.СценарииПланирования.ФАКТ");

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

Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ

| Факт.Регистратор КАК Документ,

| Факт.Регистратор.СуммаДокумента КАК СуммаДокумента,

| ВЫБОР

| КОГДА Факт.СтатьяОборотов.РасходДоход = ЗНАЧЕНИЕ(Перечисление.бит_РасходДоход.Расходование)

|

| ТОГДА -Факт.СуммаРеглОборот

| ИНАЧЕ Факт.СуммаРеглОборот

| КОНЕЦ КАК СуммаПоСтатье,

| Факт.СтатьяОборотов

|ИЗ

| РегистрНакопления.бит_ОборотыПоБюджетам.Обороты(

| &НачалоПериода {(&НачалоПериода)},

| &КонецПериода {(&КонецПериода)},

| Авто,

| "+?(ЗначениеЗаполнено(мСтатья),"СтатьяОборотов В ИЕРАРХИИ (&СтатьиОборотов)","СтатьяОборотов = Значение(Справочник.бит_СтатьиОборотов.ПустаяСсылка)")+"

| "+?(ЗначениеЗаполнено(мПараметрВладелец),"И БанковскийСчет.Владелец В(&мПараметрВладелец)","")+"

|И Сценарий = &Сценарий) КАК Факт";

Запрос.УстановитьПараметр("КонецПериода", мДата2); //Дата

Запрос.УстановитьПараметр("НачалоПериода", мДата1); //Дата

Запрос.УстановитьПараметр("СтатьиОборотов", мСтатья); //Статья оборотов

Запрос.УстановитьПараметр("Сценарий", Сценарий);

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

//Сценарии бюджетирования

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

Если РезультатЗапроса.Пустой()Тогда

Возврат Неопределено;

КонецЕсли;

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

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

ТЧНоваяСтрока = Новый Структура;

ТЧНоваяСтрока.Вставить("Документ", Выборка.Документ);

ТЧНоваяСтрока.Вставить("СуммаДокумента", Выборка.СуммаДокумента);

ТЧНоваяСтрока.Вставить("СуммаПоСтатье", Выборка.СуммаПоСтатье);

ТЧНоваяСтрока.Вставить("СтатьяОборотов", Выборка.СтатьяОборотов);

РезультатФункции.Добавить(ТЧНоваяСтрока);

КонецЦикла;

Возврат РезультатФункции;

КонецФункции