ОБСУЖДЕНИЕ

7.7 Открытие формы отчета с параметрами

8 ответов 6,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Добрый день! Подскажите, пожалуйста, как определить, какое значение передается в "Форма.Параметр"? У меня в одном случае это может быть документ, а в другом отчет. Соответственно, и имена реквизитов, передаваемых в параметрах, разные. Иными словами, как проверить, что Форма.Параметр это "Отчет"?
 
ТипЗначения()
ТипЗначенияСтр()
 
ТипЗначения() пробовала, он почему-то всегда 100, и для документа тоже.
 
Выложите код открытия формы.
 
Код:
Процедура ПриОткрытии() 
Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
Если ТипЗначенияСтр(Форма.Параметр) = "ГрупповойКонтекст" Тогда
Контрагент = Форма.Параметр.Клиент; 
Фирма = Константа.ОснФирма;
ЦФУ = Форма.Параметр.ЦФУ;
Дата1 = Форма.Параметр.Дата1;
Дата2 = Форма.Параметр.Дата2;
Валюта = Константа.ОсновнаяВалютаБухг;
ИначеЕсли (Форма.Параметр.Вид() = "РасходнаяКредит") или (Форма.Параметр.Вид() = "Счет") Тогда
Контрагент = Форма.Параметр.Контрагент; 
Фирма = Константа.ОснФирма;
ЦФУ = Форма.Параметр.ЦФУ;
Дата1 = НачМесяца(Форма.Параметр.ДатаДок);
Дата2 = КонМесяца(Форма.Параметр.ДатаДок);
Валюта = Форма.Параметр.Валюта;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

На ИначеЕсли выполнение не идет и в случае открытия из документа выдает ошибку.
 
ТипЗначенияСтр(Форма.Параметр) = "ГрупповойКонтекст" всегда при передаче в качестве параметра формы документа, справочника, отчета.
Что отличить одно от другого я делаю:
ЭтоДок = 1; // признак Дока
Попытка
Д = Форма.Параметр.ДатаДок;
Исключение
ЭтоДок = 0;
КонецПопытки;
 
А если документ не записан?
 
Усе буде добра.
Форма тоже имеет этот параметр.
 
ТипЗначенияСтр(Форма.Параметр) = "ГрупповойКонтекст" всегда при передаче в качестве параметра формы документа, справочника, отчета.
Что отличить одно от другого я делаю:
ЭтоДок = 1; // признак Дока
Попытка
Д = Форма.Параметр.ДатаДок;
Исключение
ЭтоДок = 0;
КонецПопытки;

Спасибо за подсказку