Не основная форма обработки и содержимое реквизитов объекта #771783


#0 by LisaAlisa
Подскажите. пожалуйста, почему при обращении к процедурам и функциям объекта из модуля неосновной формы обработки не видны значения реквизитов объекта, в частности табличных частей? "МояТабличнаяЧасть" - реквизит объекта, в отладчике Тип и значение имеет ВнешняяОбработкаТабличнаяЧасть.ВнешняяОбработка1.МояТабличнаяЧасть
#1 by LisaAlisa
Форма2 вызывается из основной формы Форма через ОткрытьФорму
#2 by lubitelxml
я так понимаю вы про управляемые формы. В процедуре с директивой &НаКлиенте так отображается, попробуйте в процедуре с директивой &НаСервере
#3 by LisaAlisa
Да, формы управляемые. В форме2 &НаСервере В модуле объекта в процедуре СоздатьНоменклатуру не видно значения реквизитов объекта
#4 by lubitelxml
покажите весь код
#5 by LisaAlisa
чего именно? процедур в модуле формы или модуле объекта? может, значения реквизитов вообще не видны в экспортных процедурах? СоздатьНоменклатуру экспортная
#6 by lubitelxml
СоздатьНоменклатуру покажи. Это процедура модуля объекта или модуля менеджера?
#7 by LisaAlisa
Это функция в модуле объекта
#8 by LisaAlisa
в я привела максимально упрощенный код
#9 by lubitelxml
Переменную с именем "Строка" переименуйте
#10 by lubitelxml
а вообще - код выкинуть и переписать все по нормальному. Почитайте для начала про управляемые формы
#11 by LisaAlisa
не думаю, что дело в имени переменной, потому что в других процедурах так же недоступны значения объекта
#12 by rozer76
в "Объект" точно тот объект экспортные функции которого которые хотите вызвать?
#13 by rozer76
+ тип посмотрите его
#14 by LisaAlisa
объект имеет тип ДанныеФормыСтруктура, ОбработкаОбъект - ВнешняяОбработкаОбъект.ВнешняяОбработка1
#15 by LisaAlisa
Вот та же проблема с еще одной формой этой обработки. Это процедуры описаны в НЕосновной форме объекта. В процедуре СоздатьКонтрагентов я могу увидеть значения реквизитов только через ЭтаФорма.ВладелецФормы.Объект, но в СоздатьКонтрагентовНаСервере это уже недоступно. Там же переходя в ОбработкаОбъект.СоздатьПартнеровКонтрагентов(ТаблицаНесопоставленныхКонтрагентов); выполнение переходит в процедуру модуля объекта СоздатьПартнеровКонтрагентов, но при этом все реквизиты объекта имеют значения неопределено
#16 by RomanYS
ээээ... А где там обращение к "реквизитам объекта"?
#17 by LisaAlisa
обращение идет в процедуре, описанной в модуле объекта. Дело в том, что я вот здесь ОбработкаОбъект.СоздатьПартнеровКонтрагентов(ТаблицаНесопоставленныхКонтрагентов);   обращаюсь к той самой процедуре модуля объекта, и именно там нечитаемы реквизиты объекта. В этой процедуре я создаю нового контрагента и пытаюсь реквизит объекта заполнить этим новым значением, но реквизит не меняется
#18 by RomanYS
ближе к делу. Ты приводишь куски кода, а потом говоришь что не работает где-то "там" в другом месте. Где и что у тебя не получается.
#19 by LisaAlisa
ок. Из формы (не основной) я обращаюсь к функции модуля объекта. Из одной формы я обращаюсь к функции создания номенклатуры, из другой - к процедуре создания контрагентов. В я описала, как создаю номенклатуру, она записывается успешно. После этого я должна в "МояТабличнаяЧасть" - реквизит объекта - записать эту новую номенклатуру, а так же записать её в таблицу-реквизит формы. но "МояТабличнаяЧасть" имеет тип неопределено и в процедуре модуля объекта, и в процедуре формы. поэтому не могу это сделать. Функция СоздатьНоменклатуру имеет Возврат НоменклатураСсылка; - но это значение не возвращается в форму, поэтому не могу заполнить и таблицу формы. Получается, элемент создала, но не могу его записать ни в объект, ни в реквизит формы. Форму открываю так         ОткрытьФорму(
#20 by LisaAlisa
раньше обращение к реквизитам объекта было в функции СоздатьНоменклатуру, но я убрала эту часть, т.к. она не работает. Заполняю реквизиты пока обходным путем. Сначала создаю номенклатуру, а потом в основной форме вызываю процедуру по заполнению реквизитов, где приходится искать новую номенклатуру
#21 by RomanYS
МояТабличнаяЧасть - это реквизит (не табличная часть?) обработки? Какого она типа (по метаданным обработки)? Что ты в неё пытаешься засунуть(присвоить)?
#22 by LisaAlisa
МояТабличнаяЧасть - реквизит объекта, табличная часть. Я пытаюсь перебрать строки этой ТЧ и некоторые из них заполнить ссылкой на созданную номенклатуру. НО она недоступна,пустая в момент создания номенклатуры, хотя на самом деле строки есть
#23 by RomanYS
"реквизит объекта, табличная часть" = ТЧ обработки? "недоступна" это как? "пустая" - всё таки это ТЧ, в утверждалось, что неопределено. опять тоже самое, ты приводишь код, который работает. А спрашиваешь почему не работал код, который ты убрала. Покажи ошибку и тебе (может быть) объяснят почему она возникает.
#24 by LisaAlisa
Не записывается ничего в "МояТабличнаяЧасть", если эту функцию вызываю из неосновной формы. В этом случае МояТабличнаяЧасть имеет значение ВнешняяОбработкаТабличнаяЧасть.ВнешняяОбработка1.МояТабличнаяЧасть, тип такой же ВнешняяОбработкаТабличнаяЧасть.ВнешняяОбработка1.МояТабличнаяЧасть
#25 by LisaAlisa
в отладчике не видно ни колонок ТЧ, ни значений
#26 by RomanYS
Если ТЧ пустая, то твой код её не изменит. Покажи результат: &НаСервере
#27 by LisaAlisa
результат Хотя ТЧ совершенно точно заполнена, она заполняется в основной форме, откуда и вызывается форма сопоставления контрагентов
#28 by BlackBytes
а где и когда заполнялась МояТабличнаяЧасть?         КонецЦикла; тут отладчиком и смотри есть или нету
#29 by RomanYS
ну вот ты и добралась до правильного вопроса "Как в УФ передать контекст из одной формы (обработки) в другую форму (при её открытии)?"
#30 by LisaAlisa
т.е. в дополнительные параметры надо передать объект?
#31 by LisaAlisa
ТЧ заполнялась в основной форме обработки, из которой вызывается форма сопоставления контрагентов
#32 by RomanYS
+ общего контекста/объекта у форм нет, поэтому контекст этот надо передавать явно, например КопироватьДанныеФормы(ЭтаФорма.ВладелецФормы.Объект, Объект); И не забыть потом вернуть данные обратно. Если на допформе ТЧ не отображается, то проще редактировать ТЧ основной формы: ...
#33 by LisaAlisa
RomanYS , огромное спасибо!!! Вы мне очень помогли!!!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С