11. Формы

Ссылки:


Процедура Печать(ТабДок) Экспорт

//создание нового табличного документа

ТабДок = Новый ТабличныйДокумент;

//получение макета для печати расходной накладной

Макет = Документы.РасходнаяНакладная.ПолучитьМакет("Основной");

//получим область "Заголовок" как новый табличный документ (!)

Область = Макет.ПолучитьОбласть("Заголовок");

//укажем параметры области

Область.Параметры.НомерДокумента = Номер;

Область.Параметры.От = Дата;

Область.Параметры.Кому = Контрагент;

//выведем заполненную область "Заголовок" в табличный документ

ТабДок.Вывести(Область);

//выведем область "Шапка" в табличный документ

ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));

//получение области "Строка"

//обратите внимание, что это можно сделать до цикла по строкам

Область = Макет.ПолучитьОбласть("Строка");

//вывод строк документа в печатную форму

Для Каждого СтрСостава Из Состав Цикл

//заполнение параметров области из строки табличной части

Область.Параметры.Заполнить(СтрСостава);


//вывод сформированной области в табличный документ

ТабДок.Вывести(Область);


КонецЦикла;

//вывод области "Подвал"

Область = Макет.ПолучитьОбласть("Подвал");

Область.Параметры.ИтогоКоличество = Состав.Итог("Количество");

Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");

ТабДок.Вывести(Область);

//установим параметры отображения табличного документа

ТабДок.ТолькоПросмотр = Истина;

ТабДок.ОтображатьЗаголовки = Истина;

ТабДок.ОтображатьСетку = Ложь;


//покажем табличный документ на экране

ТабДок.Показать();

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


Доступ к макету из серверной функции

&НаСервере

Функция ПечатьТаблицы(ТЗ)

Перем ТабДокумент, КоличествоЭкземпляров, НаПринтер, Представление, НепосредственнаяПечать;

ТабДокумент = Новый ТабличныйДокумент;

ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Амортизация_Адреса";

Макет =РеквизитФормыВЗначение("Объект").ПолучитьМакет("Таблица");

Возврат ТабДокумент;

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

Доступ к другой форме внешней обработки

&НаКлиенте

Процедура Сформировать()

СформироватьОтчетНаСервере();

ПараметрыОтчета = Новый Структура("ТабДок,", СформироватьОтчетНаСервере() );

ПараметрыОтчета.Вставить("ИмяПараметровПечати","ПАРАМЕТРЫ_ПЕЧАТИ_Амортизация_Адреса");

ПараметрыОтчета.Вставить("КоличествоЭкземпляров", 1);

ПараметрыОтчета.Вставить("Представление","Данные по амортизации по адресам");

ПараметрыОтчета.Вставить("НепосредственнаяПечать",Ложь);

ОткрытьФорму("ВнешняяОбработка.АмортизацияОСпоАдресам.Форма.ФормаРезультата",ПараметрыОтчета,ЭтаФорма);

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

Как не открывая форму внешней обработки выполнить ее процедуру для определенного объекта?

Обработка = ВнешниеОбработки.Создать(ИмяФайла);

Обработка.Печать(Ссылка);

Как открыть форму внешней обработки?

Обработка = ВнешниеОбработки.ПолучитьФорму(ИмяФайла); Обработка.Открыть();

Как открыть форму?

ФормаДокумента = СсылкаНаДокумент.ПолучитьФорму(); ФормаДокумента.Открыть();

Обработка = ВнешниеОбработки.ПолучитьФорму("C:\Внешние\СпецОтчет.epf", ИмяФормы, , Ключ); Обработка.Открыть();

Как отрыть форму отчета так, чтобы она не перекрывала собой ту форму, из которой она открыта?

Форма = Отчеты.ОтчетДиаграмма.ПолучитьФорму("ФормаОсновная", ЭтаФорма); Форма.ПоложениеОкна = ВариантПоложенияОкна.НеПерекрыватьВладельца; Форма.Открыть();

Как открыть форму отчета на весь экран?

СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное; ИзмененятьСпособОтображенияОкна = ИзменениеСпособаОтображенияОкна.Запретить;

Как из формы документа открыть форму списка данного документа, спозиционировавшись на нем же?

ФормаСписка = Документы[Метаданные().Имя].ПолучитьФормуСписка(); ФормаСписка.ПараметрТекущаяСтрока = Ссылка; ФормаСписка.Открыть(); ФормаСписка = Документы[Метаданные().Имя].ПолучитьФормуСписка( , , Новый УникальныйИдентификатор());

В документе есть реквизит "Контрагент". Как открыть форму подчиненного ему справочника "ДоговорыКонтрагентов"?

Если Не Контрагент.Пустая() Тогда ФормаПодчиненныхДоговоров = Справочники.ДоговорыКонтрагентов.ПолучитьФормуСписка(); ФормаПодчиненныхДоговоров.ПараметрОтборПоВладельцу = Контрагент; ФормаПодчиненныхДоговоров.Открыть(); КонецЕсли;

Как в форме отобразить картинку, сохраненную в реквизите справочника?

// Значение, сохраненное в реквизите справочника, имеющем тип // ХранилищеЗначения, можно только получить. СохраненнаяКартинка = Фотография.Получить(); Если СохраненнаяКартинка <> Неопределено Тогда // Если в хранилище было что-нибудь заранее записано… ЭлементыФормы.Фото.Картинка = СохраненнаяКартинка; КонецЕсли;

Как в журнале документов "УчетКадров" отобрать только документы "ПриемНаРаботу"?

ЖурналДокументовСписок.Отбор.ВидДокумента.Установить(Метаданные.Документы.ПриемНаРаботу);

Как узнать интервал дат в открытом текущем журнале?

Если ЖурналДокументовСписок.Отбор.Дата.Использование Тогда Сообщить(ЖурналДокументовСписок.Отбор.Дата); Иначе Сообщить("Без ограничения по датам"); КонецЕсли;

Как при открытии справочника сделать отбор по контрагентам, входящим в список?

Процедура ПриОткрытии() СправочникСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке; СправочникСписок.Отбор.Ссылка.Значение = СписокКонтрагентов; СправочникСписок.Отбор.Ссылка.Использование = Истина; КонецПроцедуры

Как обеспечить, чтобы для выбора значения покупателя в расходной накладной справочник контрагенты открывался сразу с открытой группой "Покупатели"?

Процедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка) Если Элемент.Значение.Пустая() Тогда СтандартнаяОбработка = Ложь; ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора( , Элемент); ФормаВыбора.ВыборПокупателя = Истина; ФормаВыбора.Открыть(); КонецЕсли; КонецПроцедуры Если ВыборПокупателя Тогда ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина; ЭлементыФормы.СправочникСписок.ТекущийРодитель = Константы.ГруппаПокупатели.Получить(); КонецЕсли;Если ВыборПокупателя Тогда ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина; ЭлементыФормы.СправочникСписок.ТекущийРодитель = Справочники.Контрагенты.Покупатели; КонецЕсли;

Как в форме обеспечить выбор реквизита, подчиненного Владельцу?

// При начале выбора реквизита Помещение вызывается процедура:Процедура ПомещениеНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ФормаВыбора = Справочники.ПереченьПомещенийОбъекта.ПолучитьФормуВыбора( , Элемент); ФормаВыбора.СправочникСписок.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно; ФормаВыбора.СправочникСписок.Отбор.Владелец.Использование = Истина; ФормаВыбора.СправочникСписок.Отбор.Владелец.Значение = Владелец; Помещение = ФормаВыбора.ОткрытьМодально(); Если Помещение <> неопределено Тогда ЭлементыФормы.Помещения.ТекущаяСтрока.Помещение = Помещение; КонецЕсли; КонецПроцедуры

Незакрывающая форма при выборе

Форма = ОткрытьФорму("Справочник.ФизическиеЛица.ФормаВыбора",Новый Структура("РежимВыбора, ЗакрыватьПриВыборе", Истина, Ложь), ЭтаФорма);

Сохранение и восстановление пользовательских настроек формы

&НаСервере

Процедура ПриСохраненииПользовательскихНастроекНаСервере(Настройки)

БухгалтерскиеОтчетыВызовСервера.ПриСохраненииПользовательскихНастроекНаСервере(ЭтаФорма, Настройки);

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

&НаСервере

Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Настройки)

БухгалтерскиеОтчетыВызовСервера.ПриЗагрузкеПользовательскихНастроекНаСервере(ЭтаФорма, Настройки);

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

Как подготовить список выбора элемента формы

&НаКлиенте

Процедура АналитикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

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

ДанныеВыбора = ПолучитьСписокВидовДопаналитики(); // ПолучитьСписокВидовДопаналитики формирует по запросу и возвращает список

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

Вызов обработки, её инициализация, и запуск её процедур модуля объекта из других объектов по аналогии работы как с документом

Загрузчик = Обработки.СборДанных.Создать();

Загрузчик.Конфигурация = Конфигурация;

Загрузчик.КаталогКонфигурации = КаталогКонфигурации;

Загрузчик.Пользователь = Пользователь;

Загрузчик.Пароль = Пароль;

Сообщить("Начало сбора сведений о структуре метаданных конфигурации");

Результат = Загрузчик.ЗаполнитьСтруктуруКонфигурации();

Открытие форм через сведения метаданных

- При не управляемых формах

//ТипМетаданных = {"Справочники", "Документы", "Отчеты", ...} ТипМетаданных = "Документы";

// ТекОбъект = {"АвансовыйОтчет", "РКО", ...} ТекОбъект = "АвансовыйОтчет";

ТекстКода = ТипМетаданных + "[ТекОбъект].ПолучитьФорму(ФормаОбъекта).Открыть();";

Выполнить(ТекстКода);

- При управляемых формах

//ТипМетаданных = {"Справочники", "Документы", "Отчеты", ...} ТипМетаданных = "Документы";

// ТекОбъект = {"АвансовыйОтчет", "РКО", ...} ТекОбъект = "АвансовыйОтчет";

Если ТипМетаданных = "Справочники" Тогда

ПутьКФорме = "Справочник." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "Документы" Тогда

ПутьКФорме = "Документ." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "ЖурналыДокументов" Тогда

ПутьКФорме = "ЖурналДокументов." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "Перечисления" Тогда

ПутьКФорме = "Перечисление." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "Отчеты" Тогда

ПутьКФорме = "Отчет." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "Обработки" Тогда

ПутьКФорме = "Обработка." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "ПланыВидовХарактеристик" Тогда

ПутьКФорме = "ПланВидовХарактеристик." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "ПланыСчетов" Тогда

ПутьКФорме = "ПланСчетов." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "ПланыВидовРасчета" Тогда

ПутьКФорме = "ПланВидовРасчета." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "РегистрыСведений" Тогда

ПутьКФорме = "РегистрСведений." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "РегистрыНакопления" Тогда

ПутьКФорме = "РегистрНакопления." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "РегистрыБухгалтерии" Тогда

ПутьКФорме = "РегистрБухгалтерии." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "РегистрыРасчета" Тогда

ПутьКФорме = "РегистрРасчета." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "БизнесПроцессы" Тогда

ПутьКФорме = "БизнесПроцесс." +ТекОбъект+".Форма."+ФормаОбъекта;

ИначеЕсли ТипМетаданных = "Задачи" Тогда

ПутьКФорме = "Задача." +ТекОбъект+".Форма."+ФормаОбъекта;

Иначе

Возврат;

КонецЕсли;

ОткрытьФорму(ПутьКФорме,,ЭтаФорма);

Получение списка форм

//ТипМетаданных = {"Справочники", "Документы", "Отчеты", ...} ТипМетаданных = "Документы";

// ТекОбъект = {"АвансовыйОтчет", "РКО", ...} ТекОбъект = "АвансовыйОтчет";

ТипОбъектов = Метаданные[ТипМетаданных];

Для Каждого ИмяФормы Из ТипОбъектов[ТекОбъект].Формы Цикл

ЭлементыФормы.СписокФормОбъекта.СписокВыбора.Добавить(ИмяФормы.Имя);

КонецЦикла;

Переопределить событие формы

Форма.УстановитьДействие("ПередЗаписью", "МП_ПередЗаписью");