|
Не открывается УФ | ☑ | ||
---|---|---|---|---|
0
ugra-86
01.11.23
✎
09:17
|
Подскажите пожалуйста, что на(ш)кодил неправильно? Программа зависает на строке ОткрытьФорму, и соответственно форма не открывается
&НаКлиенте Процедура ПриОткрытии(Отказ) Ключ = Новый Структура; Ключ.Вставить("Ключ", ОткрытьДок(Объект.ДокументОснование)); ОткрытьФорму("Документ.КарточкаРемонта.Форма.ФормаДокумента",Ключ); КонецПроцедуры Функция ОткрытьДок (ДокументОснование); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КарточкаРемонта.Ссылка КАК Ссылка, | КарточкаРемонта.ДокументОснование КАК ДокументОснование |ИЗ | Документ.КарточкаРемонта КАК КарточкаРемонта |ГДЕ | КарточкаРемонта.ДокументОснование = &ДокументОснование"; Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл КарточкаРемонта = ВыборкаДетальныеЗаписи.Ссылка; КонецЦикла; Возврат КарточкаРемонта; КонецФункции |
|||
1
vicof
01.11.23
✎
09:23
|
Ключ переименуй, по-дурацки смотрится.
Хрен знает, что там в этой форме написано при чтении и создании. Плюс карточка ремонта не всегда будет ссылкой. |
|||
2
breezee
01.11.23
✎
09:26
|
Пройдись через f10 отладкой. В какой момент не открывает?
|
|||
3
Timon1405
01.11.23
✎
09:28
|
выделить в переменную
КарточкаРемонта = ОткрытьДок(Объект.ДокументОснование); проверить возвращается ли что-то в нее и какого типа попробовать ОткрытьЗначение(КарточкаРемонта) - если открылось то дело в ОткрытьФорму, если нет то дело в ссылке |
|||
4
ugra-86
01.11.23
✎
09:30
|
При чтении и создании ничего нет. Документ карточка ремонта создается обработкой заполнения.
То, что не всегда будет ссылкой это понятно, допишу позже. Проверяю, когда "Возврат КарточкаРемонта" точно возвращает ссылку |
|||
5
ugra-86
01.11.23
✎
09:33
|
(2) В момент перехода на строку ОткрытьФорму
(3) В отладчике: Свойство=Ключ, Значение = "Карточка ремонта....",Тип = ДокументСсылка.КарточкаРемонта |
|||
6
maxab72
01.11.23
✎
10:30
|
А нет ли у нас дурного бесконечного цикла? При открытии открываем еще одну форму документа, при его открытии еще одного и так далее.
|
|||
7
ugra-86
01.11.23
✎
11:38
|
(6) Именно он и получается...
Переделал вот так: Процедура ПриОткрытии(Отказ) //Парам = Новый Структура; //Парам.Вставить("Парам", ОткрытьДок(Объект.ДокументОснование)); //ОткрытьФорму("Документ.КарточкаРемонта.Форма.ФормаДокумента",Парам); П = Новый Структура("Ключ", ОткрытьДок(Объект.ДокументОснование)); Форма = ПолучитьФорму("Документ.КарточкаРемонта.Форма.ФормаДокумента", П); Форма.Объект.Ссылка.Открыть();//теперь на этой строке выпадает ошибка "Метод объекта не обнаружен (Открыть)" КонецПроцедуры |
|||
8
maxab72
01.11.23
✎
11:40
|
У Ссылки нет метода Открыть, нужна форма к объекту.
|
|||
9
Kigo_Kigo
01.11.23
✎
11:46
|
А так?
ПоказатьЗначение(,Ссылка) |
|||
10
maxab72
01.11.23
✎
11:57
|
Просто Форма.Открыть()
|
|||
11
Gucci76
01.11.23
✎
12:02
|
А замер производительности что показывает?
|
|||
12
ugra-86
01.11.23
✎
12:07
|
(10) Парам = Новый Структура;
Парам.Вставить("Парам", ОткрытьДок(Объект.ДокументОснование)); Форма = ПолучитьФорму("Документ.КарточкаРемонта.Форма.ФормаДокумента",Парам); Форма.Открыть(); // вечный цикл (9) Так открывает, но новый документ, а не уже записанный |
|||
13
maxab72
01.11.23
✎
12:38
|
(12) Так получите форму конкретного записанного документа. Этот не запрещено.
|
|||
14
Salimbek
01.11.23
✎
13:31
|
(12) В самом начале "ПриОткрытии" проверяй
А дальше
|
|||
15
ugra-86
01.11.23
✎
13:48
|
Народ, спасибо за попытки и предложения помочь, но все равно попадаю в вечный цикл...
|
|||
16
maxab72
01.11.23
✎
13:52
|
(16) так не заходи в него. Добавь Отказ = ИСТИНА, и в параметры при открытии какой-нибудь флаг, чтоб по нему проверять, надо открыть или проигнорировать открытие формы.
|
|||
17
Мимохожий Однако
01.11.23
✎
14:04
|
(0) Функция ОткрытьДок() удивляет. Посмотри для начала, что она возвращает
|
|||
18
ugra-86
01.11.23
✎
14:08
|
(17)
Свойство: ОткрытьДок(Объект.ДокументОснование) Значение: Карточка ремонта 000000001 от 01.11.2023 16:03:16 Тип: ДокументСсылка.КарточкаРемонта |
|||
19
Мимохожий Однако
01.11.23
✎
14:26
|
(0) Процедура ПриОткрытии()где размещена? В той же форме, которую открываешь? Вот тебе и цикл
|
|||
20
Timon1405
01.11.23
✎
14:26
|
(15) так сформулируйте должен делать ваш код. вот ваша первая строчка "ПриОткрытии()" - она написана в форме чего? документа КарточкаРемонта? если вы уже в ней, зачем открыть хотите еще одну?
|
|||
21
ugra-86
01.11.23
✎
14:39
|
© Вон оно чё, Михалыч...
(19) (20) Спасибо, теперь понял. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |