|
Открытие псевдомодального окна в цикле | ☑ | ||
---|---|---|---|---|
0
Юрий П
04.12.19
✎
07:47
|
Задача такая. В обработке делается обход таблицы и для каждой строки с пустой номенклатурой нужно открыть форму из которой нужно выбрать номенклатуру и подставить в текущую строку.
&НаКлиенте Процедура МояПроцедура(Команда) Для каждого стр из ТаблицаДанных Цикл Если стр.Номенклатура.Пустая() Тогда Оповещение = Новый ОписаниеОповещения("ОбработкаВыбора", ЭтотОбъект, стр); ОткрытьФорму("Обработка.МояОбработка.Форма.ВыборНоменклатуры", Новый Структура("Наименование", стр.Наименование), ЭтаФорма,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбора(Результат, СтокаТаблицы) Экспорт Если ЗначениеЗаполнено(Результат) Тогда СтокаТаблицы.Номенклатура = Результат; КонецЕсли; КонецПроцедуры Значение выбирается и подставляется, но из-за отсутствия модальности цикл не останавливается при открытии формы. Формы открывается лишь раз и выбранное значение подставляется в последнюю строку. Как решить эту проблему? |
|||
1
Тихий омут
04.12.19
✎
07:56
|
Головой и руками, не?
*Прочувствуйте всю мощь и удобство асинхронных методов! ЗЫ. Извините за троллизм, не удержался. Муки эти были пережиты полной мерой при переходе с 7.7 сразу на УФ, такси, с жестким запретом на модальность... То, что требовало трёх строчек кода, превращается... внезапно превращается... И как руководству, ни бум бум не смыслящему в 1с, объяснить, почему вместо трёх минут нужно полчаса... |
|||
2
Юрий П
04.12.19
✎
08:03
|
(1) Ваша ирония мне понятна и близка. Но все же хотелось бы услышать что-то конкретное.
|
|||
3
MyNick
04.12.19
✎
08:05
|
(1) А вы попробуйте освоить и закодить хотя бы простое веб приложение. С АПИшкой на стороне сервера, принимающей и отдающей данные в JSON (да хотя бы PHP) и клиентской частью на JS с динамической подгрузкой данных, отсутствием блокирования интерфейса и вот этим всем.
Тогда ирония будет не по поводу асинхронных методов, а по поводу их нелепости применения там, где они совсем никаким боком. |
|||
4
MyNick
04.12.19
✎
08:07
|
(0) Обработка выбора должна управлять следующей итерацией выбора. Цикл естественно убрать.
|
|||
5
Лефмихалыч
04.12.19
✎
08:08
|
ОбработкаВыбора()
ПодставитьВТаблицуВсюХерню(); ЗапуститьПодставлятор(); Конец ЗапуститьПодставлятор() НайтиПервуюБольнуюСтрокуВТаблице(); ПоказатьВопрос("", ОбработкаВыбора); Конец |
|||
6
Лефмихалыч
04.12.19
✎
08:08
|
классека
|
|||
7
MyNick
04.12.19
✎
08:09
|
В МояПроцедура вызываем НайтиСтрокуСПустойНоменклатуройИВыбрать.
В Обработке выбора делаем то же самое. Когда пустые номенклатуры закончатся, все остановится. Нафиг циклы? |
|||
8
Лефмихалыч
04.12.19
✎
08:10
|
надо не псевдомодальные городить а псевдоцикл
|
|||
9
acht
04.12.19
✎
08:11
|
(0) В параметрах оповещения протягивай таблицу и текущий итератор цикла. В обработке выбора принимай решение что делать.
|
|||
10
MyNick
04.12.19
✎
08:11
|
(9) цикл нафиг не нужен
|
|||
11
Тихий омут
04.12.19
✎
08:14
|
Помимо всего перечисленного есть ещё вариант изменить подход к UI - показать форму с табличкой/списком только тех строк, где юзер должен прощёлкать и выбрать/подобрать нужные значения. Плюс в том, что юзеру сразу будет виден весь объём предстоящей работы, а в цикле - хз когда оно закончится
|
|||
12
Тихий омут
04.12.19
✎
08:16
|
(3) падаю ниц пред Вашим скиллом... не претендую:)
|
|||
13
Юрий П
04.12.19
✎
08:33
|
(4) Благодарю. Так и сделал.
|
|||
14
Сияющий в темноте
04.12.19
✎
08:55
|
ну,в 1с еще есть асинхронность-а попробуйте тоже самое на чистом webe сделать.
что такое цикл-это повтор вызова функции при завершении диалога(формы) условие выхода из цикла-окончание таблицы,то есть,ТекущаяСтрока>КоличествоСтрок. не забываем сместить текущую строку. на самом деле,проверяем текущую,если ошибка,то показываем пользователю диалог,если ошибок нет-переход на новую строку. при показе диалога мы ввходим из функции цикла,сохраняя в параметрах номер текущей строки. |
|||
15
MyNick
04.12.19
✎
09:31
|
(14) а что там на чистом вебе не сделать? Асинхронность?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |