Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 апр 2025, 03:53

Составной тип реквизита

Автор AnnaShan, 07 июн 2018, 19:54

0 Пользователей и 1 гость просматривают эту тему.

AnnaShan

Здравствуйте. Помогите, пожалуйста, разобраться.
Имеется документ Счет на оплату покупателю, в него подключается внешняя печатная форма. В печатной форме есть реквизит СсылкаНаОбъект с типом "ДокументСсылка.СчетНаОплатуПокупателю, СправочникСсылка.ДоговорыКонтрагентов". При открытии формы вызывается такая процедура
Процедура ПриОткрытии()
Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
      Возврат;
   КонецЕсли;
   Если ТипЗнч(СсылкаНаОбъект) = тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда
      СчетНаОплатуПокупателю = СсылкаНаОбъект;
      СсылкаНаОбъект = СсылкаНаОбъект.ДоговорКонтрагента;
      ВыбЗначениеМакетаПечати = 2;
   иначе   
      ВыбЗначениеМакетаПечати = 1;
   КонецЕсли;   
...
КонецПроцедуры
Объясните, пожалуйста, значение с каким из типов реквизита попадает в СсылкаНаОбъект и почему? Потому что нигде ранее не объявляется значение переменной 

ilyay

СсылкаНаОбъект - это реквизит формы. Или переменная формы.
Если это счет, тогда через точку получаем договор. Если договор, тогда не надо ничего делать.

AnnaShan

Цитата: ilyay от 08 июн 2018, 13:12
СсылкаНаОбъект - это реквизит формы. Или переменная формы.
Если это счет, тогда через точку получаем договор. Если договор, тогда не надо ничего делать.
Так я не совсем понимаю, как в эту переменную при открытии формы попадает ссылка на текущий счет на оплату? так как эта переменная нигде не инициализирована

ilyay

Переменная может инициализироваться в ПриЧтенииНаСервере, ПриСозданииНаСервере, а также может быть установлена извне после получения формы.
мояформа = получитьФорму("...");
мояформа.ссылкаНаОбъект = мояСсылка;
мояформа.Открыть();



AnnaShan

Цитата: ilyay от 08 июн 2018, 17:04
Переменная может инициализироваться в ПриЧтенииНаСервере, ПриСозданииНаСервере, а также может быть установлена извне после получения формы.
мояформа = получитьФорму("...");
мояформа.ссылкаНаОбъект = мояСсылка;
мояформа.Открыть();

у меня обычные формы, не управляемые, файл-серверная база, поэтому, как я понимаю, первые 2 варианта не актуальны. А с учетом того, что у меня это все происходит во внешней обработке, то как мне можно узнать, где именно извне может быть присвоен этот реквизит?
в модуле объекта обработки на кнопку печать только такая функция описана
Функция Печать() Экспорт
   Форма = ПолучитьФорму("Форма");
   Форма.Открыть();
КонецФункции
тоже инициализации не наблюдаю. Где еще посмотреть, подскажите, пожалуйста?
Добавлено: 08 июн 2018, 21:47


Вопрос больше не актуален, ответ найден

ilyay

Поймать присвоение нельзя, можно включить замер производительности и искать в выполненных строках.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск