Здравствуйте, есть такой код:
Как можно останавливать процесс, до обработки всего кода, а после продолжить цикл. В коде происходит поиск сотрудника по ИД, если находит, то просто добавляем данные в ТЧ, а если нет, нужно спросить пользователя, что привязать ли ИД к сотруднику, если да, то открываем форму справочника сотрудники, выбираем и записываем ид в доп реквизит, а если нет переходим к следующей итерации. Сейчас получается, что открываются сразу куча вопросов и уже потом их обрабатываю, через асинх тоже пробовал, да окно открывается и асинх ждет оповещения, но я нажимаю да, открывается окно справочника и сверху окно с вопросом, блокируя форму справочника сотрудника.
Идентификтор = "";
Для Каждого Стр2 Из Идентификаторы Цикл
НайдемСотрудника = ПоискПоИд(Стр2.Идентификатор);
Если Не ЗначениеЗаполнено(НайдемСотрудника) Тогда
ЗадатьВопросАсинх(Стр2.Идентификатор)
Иначе
Отбор = Новый Структура();
Отбор.Вставить("Идентификатор", Стр2.Идентификатор);
Резолт = ТаблицаНаФорме.НайтиСтроки(Отбор);
Для Каждого Элем Из Резолт Цикл
НСтр = Таб.Добавить();
НСтр.Сотрудник = НайдемСотрудника;
КонецЦикла;
КонецЕсли;
КонецЦикла;
&НаКлиенте
Процедура Демо_ЗадатьВопросАсинх(Стр)
Парам = Новый Структура;
Парам.Вставить("ИД", Стр);
Отбор = Новый Структура();
Отбор.Вставить("Идентификатор", Стр);
Резолт = ТаблицаНаФорме.НайтиСтроки(Отбор);
ПоказатьВопрос(Новый ОписаниеОповещения("ПередЗакрытиемЗавершение", ЭтотОбъект, Парам),
"Идентификатор " + Стр + ", для сотрудника " + Резолт[0].Имя + " не найден. Назначить сотруднику идентификатор?", РежимДиалогаВопрос.ДаНет,,,,);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытиемЗавершение(РезультатВопроса, Парам) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Оповещение = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,Парам);
ОткрытьФорму("Справочник.Сотрудники.Форма.ФормаВыбора", Парам, ЭтаФорма,,,,Оповещение );
КонецЕсли;
КонецПроцедуры
ПоказатьКак можно останавливать процесс, до обработки всего кода, а после продолжить цикл. В коде происходит поиск сотрудника по ИД, если находит, то просто добавляем данные в ТЧ, а если нет, нужно спросить пользователя, что привязать ли ИД к сотруднику, если да, то открываем форму справочника сотрудники, выбираем и записываем ид в доп реквизит, а если нет переходим к следующей итерации. Сейчас получается, что открываются сразу куча вопросов и уже потом их обрабатываю, через асинх тоже пробовал, да окно открывается и асинх ждет оповещения, но я нажимаю да, открывается окно справочника и сверху окно с вопросом, блокируя форму справочника сотрудника.
По теме из базы знаний
- Развитие управляемого интерфейса в 1С 8.2 - 1С 8.3
- Как читать чужой код? Часть 1. Общие вопросы. Доработка чужого кода. Code review
- Зачем и как читать чужой код? Какой результат ожидаем получить? Основные подходы
- Как прокачать руководителей проектов внедрения? Опыт Инфостарта
- Использование асинхронных методов в платформе «1С:Предприятие 8»
Найденные решения
(5)
Только нужна будет еще одна проверка на уникальность содтрудников, что они один идентификатор двум сотрудникам не назначили
отдельную форму
Да. Собираешь всех ненайденных, показываешь табличку с двумя колонками - идентификатор и пустой сотрудник. Они просто выбирают во второй колонке сотрудника и всё. По одной кнопке перезаписываешь сразу всех.
Только нужна будет еще одна проверка на уникальность содтрудников, что они один идентификатор двум сотрудникам не назначили
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)
Только нужна будет еще одна проверка на уникальность содтрудников, что они один идентификатор двум сотрудникам не назначили
отдельную форму
Да. Собираешь всех ненайденных, показываешь табличку с двумя колонками - идентификатор и пустой сотрудник. Они просто выбирают во второй колонке сотрудника и всё. По одной кнопке перезаписываешь сразу всех.
Только нужна будет еще одна проверка на уникальность содтрудников, что они один идентификатор двум сотрудникам не назначили
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот