#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекстОписания = ПолучитьОписаниеСчета(Параметры.Счет);
ОбновитьЗаголовокФормы(ЭтаФорма, Параметры.Счет);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ТекстОписанияПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Позиция = СтрНайти(ДанныеСобытия.Href, "ОписаниеСчета=");
Если Позиция > 0 Тогда
ПредставлениеСчета = Сред(ДанныеСобытия.Href, Позиция + 14);
Попытка
ТекстОписания = ПолучитьОписаниеСчета(ПредставлениеСчета);
ОбновитьЗаголовокФормы(ЭтаФорма, ПредставлениеСчета);
Исключение
КонецПопытки;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗаголовокФормы(Форма, Счет)
Если ЗначениеЗаполнено(Счет) Тогда
ТекстЗаголовка = НСтр("ru = 'Описание счета: %1'");
Форма.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстЗаголовка, Счет);
Иначе
Форма.Заголовок = НСтр("ru = 'Не указан счет'");
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьОписаниеСчета(Счет)
ТекстОписания = "";
Если ТипЗнч(Счет) = Тип("Строка") Тогда
Счет = ЗначениеИзСтрокиВнутр(Счет);
КонецЕсли;
Если Не ЗначениеЗаполнено(Счет) Тогда
Возврат ТекстОписания;
КонецЕсли;
ПланСчетов = ПланыСчетов.Хозрасчетный;
Макет = ПланСчетов.ПолучитьМакет("Описание");
ИмяСчета = ПланСчетов.ПолучитьИмяПредопределенного(Счет);
Попытка
Область = Макет.ПолучитьОбласть(ИмяСчета + "|Описание");
Исключение
Область = Макет.ПолучитьОбласть("ОписаниеНеЗадано|Описание");
КонецПопытки;
ЗаголовокHTMLДокумента =
"<HTML>
|<HEAD>
|<STYLE>
|BODY { FONT-SIZE: 10pt; FONT-FAMILY: Verdana }
|H1 { FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: Arial, Tahoma; TEXT-ALIGN: left }
|H2 { FONT-WEIGHT: bold; FONT-SIZE: 12pt; FONT-FAMILY: Arial, Tahoma; TEXT-ALIGN: left }
|</STYLE>
|</HEAD>
|";
ПодвалHTMLДокумента = "
|</HTML>";
ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Счет %1<br>%2'"),
Счет.Код,
Счет.Наименование);
ЗаголовокОписания = "<h1>" + ТекстЗаголовка + "</h1>";
СписокСубсчетов = "";
Выборка = ПланСчетов.Выбрать(Счет);
Пока Выборка.Следующий() Цикл
Если ПустаяСтрока(СписокСубсчетов) Тогда
УровеньСчета = Счет.Уровень();
Если УровеньСчета > 0 Тогда
ТекстСпискаСубсчетов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='К счету открыты следующие субсчета %1-го уровня:'"),
УровеньСчета + 1);
Иначе
ТекстСпискаСубсчетов = НСтр("ru='К счету открыты следующие субсчета:'");
КонецЕсли;
СписокСубсчетов = "<h2>" + ТекстСпискаСубсчетов + "</h2><ul>";
КонецЕсли;
ТекстСпискаСубсчетов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 ""%2""'"),
Выборка.Код,
Выборка.Наименование);
СписокСубсчетов = СписокСубсчетов + "<li><a href='ОписаниеСчета=" + ЗначениеВСтрокуВнутр(Выборка.Ссылка) + "'>"
+ ТекстСпискаСубсчетов + "</a></li>";
КонецЦикла;
СписокСубсчетов = СписокСубсчетов + "</ul>";
ОписаниеРодителя = "";
Если НЕ Счет.Родитель.Пустая() Тогда
РеквизитыРодителя = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Счет.Родитель, "Код, Наименование");
ТекстОписаниеРодителя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Описание счета %1 ""%2""'"),
РеквизитыРодителя.Код,
РеквизитыРодителя.Наименование);
ОписаниеРодителя = "<p><a href='ОписаниеСчета=" + ЗначениеВСтрокуВнутр(Счет.Родитель) + "'>"
+ ТекстОписаниеРодителя + "</a></p>";
КонецЕсли;
ТекстОписания = ЗаголовокHTMLДокумента
+ ЗаголовокОписания
+ "<p>" + СтрЗаменить(Область.ТекущаяОбласть.Текст, Символы.ПС, "<p></p>") + "</p>"
+ СписокСубсчетов
+ ОписаниеРодителя
+ ПодвалHTMLДокумента;
Возврат ТекстОписания;
КонецФункции
#КонецОбласти