11. Формы
Ссылки:
Процедура Печать(ТабДок) Экспорт
//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент;
//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная.ПолучитьМакет("Основной");
//получим область "Заголовок" как новый табличный документ (!)
Область = Макет.ПолучитьОбласть("Заголовок");
//укажем параметры области
Область.Параметры.НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;
//выведем заполненную область "Заголовок" в табличный документ
ТабДок.Вывести(Область);
//выведем область "Шапка" в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));
//получение области "Строка"
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть("Строка");
//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл
//заполнение параметров области из строки табличной части
Область.Параметры.Заполнить(СтрСостава);
//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);
КонецЦикла;
//вывод области "Подвал"
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ИтогоКоличество = Состав.Итог("Количество");
Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");
ТабДок.Вывести(Область);
//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;
//покажем табличный документ на экране
ТабДок.Показать();
КонецПроцедуры
Доступ к макету из серверной функции
&НаСервере
Функция ПечатьТаблицы(ТЗ)
Перем ТабДокумент, КоличествоЭкземпляров, НаПринтер, Представление, НепосредственнаяПечать;
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Амортизация_Адреса";
Макет =РеквизитФормыВЗначение("Объект").ПолучитьМакет("Таблица");
Возврат ТабДокумент;
КонецФункции
Доступ к другой форме внешней обработки
&НаКлиенте
Процедура Сформировать()
СформироватьОтчетНаСервере();
ПараметрыОтчета = Новый Структура("ТабДок,", СформироватьОтчетНаСервере() );
ПараметрыОтчета.Вставить("ИмяПараметровПечати","ПАРАМЕТРЫ_ПЕЧАТИ_Амортизация_Адреса");
ПараметрыОтчета.Вставить("КоличествоЭкземпляров", 1);
ПараметрыОтчета.Вставить("Представление","Данные по амортизации по адресам");
ПараметрыОтчета.Вставить("НепосредственнаяПечать",Ложь);
ОткрытьФорму("ВнешняяОбработка.АмортизацияОСпоАдресам.Форма.ФормаРезультата",ПараметрыОтчета,ЭтаФорма);
КонецПроцедуры
Как не открывая форму внешней обработки выполнить ее процедуру для определенного объекта?
Обработка = ВнешниеОбработки.Создать(ИмяФайла);
Обработка.Печать(Ссылка);
Как открыть форму внешней обработки?
Обработка = ВнешниеОбработки.ПолучитьФорму(ИмяФайла); Обработка.Открыть();
Как открыть форму?
ФормаДокумента = СсылкаНаДокумент.ПолучитьФорму(); ФормаДокумента.Открыть();
Обработка = ВнешниеОбработки.ПолучитьФорму("C:\Внешние\СпецОтчет.epf", ИмяФормы, , Ключ); Обработка.Открыть();
Как отрыть форму отчета так, чтобы она не перекрывала собой ту форму, из которой она открыта?
Форма = Отчеты.ОтчетДиаграмма.ПолучитьФорму("ФормаОсновная", ЭтаФорма); Форма.ПоложениеОкна = ВариантПоложенияОкна.НеПерекрыватьВладельца; Форма.Открыть();
Как открыть форму отчета на весь экран?
СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное; ИзмененятьСпособОтображенияОкна = ИзменениеСпособаОтображенияОкна.Запретить;
Как из формы документа открыть форму списка данного документа, спозиционировавшись на нем же?
ФормаСписка = Документы[Метаданные().Имя].ПолучитьФормуСписка(); ФормаСписка.ПараметрТекущаяСтрока = Ссылка; ФормаСписка.Открыть(); ФормаСписка = Документы[Метаданные().Имя].ПолучитьФормуСписка( , , Новый УникальныйИдентификатор());
В документе есть реквизит "Контрагент". Как открыть форму подчиненного ему справочника "ДоговорыКонтрагентов"?
Если Не Контрагент.Пустая() Тогда ФормаПодчиненныхДоговоров = Справочники.ДоговорыКонтрагентов.ПолучитьФормуСписка(); ФормаПодчиненныхДоговоров.ПараметрОтборПоВладельцу = Контрагент; ФормаПодчиненныхДоговоров.Открыть(); КонецЕсли;
Как в форме отобразить картинку, сохраненную в реквизите справочника?
// Значение, сохраненное в реквизите справочника, имеющем тип // ХранилищеЗначения, можно только получить. СохраненнаяКартинка = Фотография.Получить(); Если СохраненнаяКартинка <> Неопределено Тогда // Если в хранилище было что-нибудь заранее записано… ЭлементыФормы.Фото.Картинка = СохраненнаяКартинка; КонецЕсли;
Как в журнале документов "УчетКадров" отобрать только документы "ПриемНаРаботу"?
ЖурналДокументовСписок.Отбор.ВидДокумента.Установить(Метаданные.Документы.ПриемНаРаботу);
Как узнать интервал дат в открытом текущем журнале?
Если ЖурналДокументовСписок.Отбор.Дата.Использование Тогда Сообщить(ЖурналДокументовСписок.Отбор.Дата); Иначе Сообщить("Без ограничения по датам"); КонецЕсли;
Как при открытии справочника сделать отбор по контрагентам, входящим в список?
Процедура ПриОткрытии() СправочникСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке; СправочникСписок.Отбор.Ссылка.Значение = СписокКонтрагентов; СправочникСписок.Отбор.Ссылка.Использование = Истина; КонецПроцедуры
Как обеспечить, чтобы для выбора значения покупателя в расходной накладной справочник контрагенты открывался сразу с открытой группой "Покупатели"?
Процедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка) Если Элемент.Значение.Пустая() Тогда СтандартнаяОбработка = Ложь; ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора( , Элемент); ФормаВыбора.ВыборПокупателя = Истина; ФормаВыбора.Открыть(); КонецЕсли; КонецПроцедуры Если ВыборПокупателя Тогда ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина; ЭлементыФормы.СправочникСписок.ТекущийРодитель = Константы.ГруппаПокупатели.Получить(); КонецЕсли;Если ВыборПокупателя Тогда ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина; ЭлементыФормы.СправочникСписок.ТекущийРодитель = Справочники.Контрагенты.Покупатели; КонецЕсли;
Как в форме обеспечить выбор реквизита, подчиненного Владельцу?
// При начале выбора реквизита Помещение вызывается процедура:Процедура ПомещениеНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ФормаВыбора = Справочники.ПереченьПомещенийОбъекта.ПолучитьФормуВыбора( , Элемент); ФормаВыбора.СправочникСписок.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно; ФормаВыбора.СправочникСписок.Отбор.Владелец.Использование = Истина; ФормаВыбора.СправочникСписок.Отбор.Владелец.Значение = Владелец; Помещение = ФормаВыбора.ОткрытьМодально(); Если Помещение <> неопределено Тогда ЭлементыФормы.Помещения.ТекущаяСтрока.Помещение = Помещение; КонецЕсли; КонецПроцедуры
Незакрывающая форма при выборе
Форма = ОткрытьФорму("Справочник.ФизическиеЛица.ФормаВыбора",Новый Структура("РежимВыбора, ЗакрыватьПриВыборе", Истина, Ложь), ЭтаФорма);
Сохранение и восстановление пользовательских настроек формы
&НаСервере
Процедура ПриСохраненииПользовательскихНастроекНаСервере(Настройки)
БухгалтерскиеОтчетыВызовСервера.ПриСохраненииПользовательскихНастроекНаСервере(ЭтаФорма, Настройки);
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Настройки)
БухгалтерскиеОтчетыВызовСервера.ПриЗагрузкеПользовательскихНастроекНаСервере(ЭтаФорма, Настройки);
КонецПроцедуры
Как подготовить список выбора элемента формы
&НаКлиенте
Процедура АналитикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = ложь;
ДанныеВыбора = ПолучитьСписокВидовДопаналитики(); // ПолучитьСписокВидовДопаналитики формирует по запросу и возвращает список
КонецПроцедуры
Вызов обработки, её инициализация, и запуск её процедур модуля объекта из других объектов по аналогии работы как с документом
Загрузчик = Обработки.СборДанных.Создать();
Загрузчик.Конфигурация = Конфигурация;
Загрузчик.КаталогКонфигурации = КаталогКонфигурации;
Загрузчик.Пользователь = Пользователь;
Загрузчик.Пароль = Пароль;
Сообщить("Начало сбора сведений о структуре метаданных конфигурации");
Результат = Загрузчик.ЗаполнитьСтруктуруКонфигурации();
Открытие форм через сведения метаданных
- При не управляемых формах
//ТипМетаданных = {"Справочники", "Документы", "Отчеты", ...} ТипМетаданных = "Документы";
// ТекОбъект = {"АвансовыйОтчет", "РКО", ...} ТекОбъект = "АвансовыйОтчет";
ТекстКода = ТипМетаданных + "[ТекОбъект].ПолучитьФорму(ФормаОбъекта).Открыть();";
Выполнить(ТекстКода);
- При управляемых формах
//ТипМетаданных = {"Справочники", "Документы", "Отчеты", ...} ТипМетаданных = "Документы";
// ТекОбъект = {"АвансовыйОтчет", "РКО", ...} ТекОбъект = "АвансовыйОтчет";
Если ТипМетаданных = "Справочники" Тогда
ПутьКФорме = "Справочник." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "Документы" Тогда
ПутьКФорме = "Документ." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "ЖурналыДокументов" Тогда
ПутьКФорме = "ЖурналДокументов." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "Перечисления" Тогда
ПутьКФорме = "Перечисление." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "Отчеты" Тогда
ПутьКФорме = "Отчет." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "Обработки" Тогда
ПутьКФорме = "Обработка." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "ПланыВидовХарактеристик" Тогда
ПутьКФорме = "ПланВидовХарактеристик." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "ПланыСчетов" Тогда
ПутьКФорме = "ПланСчетов." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "ПланыВидовРасчета" Тогда
ПутьКФорме = "ПланВидовРасчета." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "РегистрыСведений" Тогда
ПутьКФорме = "РегистрСведений." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "РегистрыНакопления" Тогда
ПутьКФорме = "РегистрНакопления." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "РегистрыБухгалтерии" Тогда
ПутьКФорме = "РегистрБухгалтерии." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "РегистрыРасчета" Тогда
ПутьКФорме = "РегистрРасчета." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "БизнесПроцессы" Тогда
ПутьКФорме = "БизнесПроцесс." +ТекОбъект+".Форма."+ФормаОбъекта;
ИначеЕсли ТипМетаданных = "Задачи" Тогда
ПутьКФорме = "Задача." +ТекОбъект+".Форма."+ФормаОбъекта;
Иначе
Возврат;
КонецЕсли;
ОткрытьФорму(ПутьКФорме,,ЭтаФорма);
Получение списка форм
//ТипМетаданных = {"Справочники", "Документы", "Отчеты", ...} ТипМетаданных = "Документы";
// ТекОбъект = {"АвансовыйОтчет", "РКО", ...} ТекОбъект = "АвансовыйОтчет";
ТипОбъектов = Метаданные[ТипМетаданных];
Для Каждого ИмяФормы Из ТипОбъектов[ТекОбъект].Формы Цикл
ЭлементыФормы.СписокФормОбъекта.СписокВыбора.Добавить(ИмяФормы.Имя);
КонецЦикла;
Переопределить событие формы
Форма.УстановитьДействие("ПередЗаписью", "МП_ПередЗаписью");