helpf.pro
Регистрация

v8: Система вылетает при открытии модального окна

Mokey
04.07.2014 09:47Прочитано: 6430

Всем ДД! Проблема следующая:

Есть обработка загрузки номенклатуры, которая по ходу ищет в справочнике похожие элементы и, если их несколько, выводит форму (самописную) в модальном режиме для выбора одного из них. Форма может открыться множество раз в одном цикле. Но, если нажать повторно поиск, без закрытия основной формы обработки, то при первой же попытке открыть форму модально для выбора система вылетает вообще! Пробовал через функцию ТаблицаЗначений.ВыбратьСтроку(), то же самое. Если закрыть-открыть основную форму и нажать поиск, то первый раз опять всё гладко, а потом вылет! Куда копать, гуру?

Yandex
Возможно, вас также заинтересует
Реклама на портале
DJ_Serega
04.07.2014 11:07Ответ № 1

Так вроде есть такой прикол с модальными одинаковыми формами. Вроде как и на 8.3.5 такие же проблемы. У меня с ошибкой вылетало "Неизвестный идентификатор формы". Я такие ситуации стараюсь обходить стороной.

Mokey
04.07.2014 16:22Ответ № 2

Вот и я хочу обойти, а у меня просто вылетает с сохранением данных. Неиспользовать выбор номенклатуры нельзя по логике, вот я и хочу выяснить, каким образом можно обойти.

E_Migachev
04.07.2014 16:25Ответ № 3

когда вызывате модальную форму основную как владельца указываете?

DJ_Serega
05.07.2014 18:11Ответ № 4

есть идея. А какая платформа используется?

Mokey
07.07.2014 10:07Ответ № 5

E_Migachev

Да, пробовал уже по-всякому, результат один и тот же.Помогает только закрытие/открытие формы самой обработки. Но это не удобно для пользователей. Им удобно выбирать следующий файл загрузки и обрабатывать его, но тут засада... вылет...

DJ_Serega

Платформа 8.2.17.157. Менять её не предлагать, никто сейчас не позволит этого сделать, оооочень много пользователей))

Mokey
07.07.2014 10:13Ответ № 6

вот сама процедура:

Код 1C v 8.2 УП
 Функция ОткрытьФормуДляВыбораНоменклатуры(Заголовок, ТЗ)
    ФП = ПолучитьФорму("ФормаПоиска", ЭтаФорма);
    ФП.ЭлементыФормы.Надпись1.Заголовок = Заголовок;
    ФП.ЭлементыФормы.табличноеПоле1.Значение = ТЗ;
    ФП.ЭлементыФормы.табличноеПоле1.СоздатьКолонки();
    Рез = ФП.ОткрытьМодально();
    Если НЕ Рез = Неопределено Тогда
        Возврат Рез;
    Иначе
        Возврат Справочники.Номенклатура.ПустаяСсылка();
    КонецЕсли;            
КонецФункции

На самой форме просто выбор одной из... номенклатуры и ОК, больше там ничего не происходит. Но, я уже писал, что не в форме дело, а в самой модальности, ибо даже если вставить ТЗ.ВыбратьСтроку() то же самое происходит.

E_Migachev
07.07.2014 12:14Ответ № 7

оххх... платформу бы надо давно обновить... может она и глючит.... а попробуй на локальном компе обновить.

Код совсем обычный - странно что вылетает

а если пред возвратом попробовать очищать ФП, например:

Код 1C v 8.х
  ФП=Неопределено;   
DJ_Serega
07.07.2014 12:34Ответ № 8

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

Вот рабочий код с 8.3.5.924:

Код 1C v 8.3
 &НаКлиенте
Процедура ПредупреждениеЗавершение(ДополнительныеПараметры) Экспорт



КонецПроцедуры




&НаКлиенте
Процедура Предупреждение1(Команда)

ПоказатьПредупреждение(Новый ОписаниеОповещения("ПредупреждениеЗавершение", ЭтотОбъект), "Это текст предупреждения");

КонецПроцедуры
Mokey
07.07.2014 12:52Ответ № 9

E_Migachev

Очищал, не помогает. Локально... базу надо локально иметь, а возможности нет пока такой, к сожалению. Спасибо.

DJ_Serega

спасибо, но не знаю, как окно предупреждения поможет мне с выбором элементов и возвратом их в форму-владельца.

DJ_Serega
07.07.2014 13:04Ответ № 10

(9) так можно попробовать переделать под открытие формы. Я поиграюсь о результатах сообщу.Хоть бери и через дополнительные объекты реализуй... От же ж задачка )

DJ_Serega
07.07.2014 13:10Ответ № 11

(9) вот так открылась форма.

Код 1C v 8.3
 



&НаКлиенте
Процедура ОткрытьФормуЗапрос(Команда)

ОткрытьФормуФрагмент(Новый ОписаниеОповещения("ОткрытьФормуЗавершение", ЭтаФорма));


КонецПроцедуры


&НаКлиенте
Процедура ОткрытьФормуЗавершение(Результат, ДополнительныеПараметры) Экспорт

Сообщить("Все отработало.");

КонецПроцедуры


&НаКлиенте
Процедура ОткрытьФормуФрагмент(Знач Оповещение)

ОткрытьФорму("Справочник.Пользователи.ФормаОбъекта", , ЭтаФорма);

ВыполнитьОбработкуОповещения(Оповещение);

КонецПроцедуры




Mokey
07.07.2014 13:45Ответ № 12

DJ_Serega

Спасибо, но на 8.3 пока не переходим, надо в текущих настройках всё реализовать

Mokey
07.07.2014 13:46Ответ № 13

Пы.Сы. Более того, реализвано всё в обычной форме, потому что обработка работает ещё с 8.0....

Mokey
10.07.2014 11:58Ответ № 14

UP-ну разок, может, у кого-то мысли свежие появились))

alle68
10.07.2014 14:52Ответ № 15

А почему не собрать все многозначности, потом определиться по всем позициям и затем записать разом?

Mokey
10.07.2014 15:03Ответ № 16

alle68

Как раз этого комментария я и ждал всё это время! Спасибо, товарищ!

Mokey
21.07.2014 11:13Ответ № 17

Многозначности все собраны в одну кучку, по всем позициям определились, осталось только дать пользователю совершить (или не совершить) выбор в пользу одной какой-то позиции и разом всё записать!

DJ_Serega
21.07.2014 11:22Ответ № 18

(17) все-таки 1С может все )

Mokey
21.07.2014 16:43Ответ № 19

DJ_Serega

Если бы ещё заставить её не вылетать.... вот была бы красота. А так покоя нет, пока есть проблема.

Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.