|
1c 8.3 модальные и не модальные окна в цикле | ☑ | ||
---|---|---|---|---|
0
norets
04.12.16
✎
07:41
|
Добрый день!
Помогите разобраться в таком вопросе: Есть обработка для загрузки номенклатурного справочника из Excel. Требуется при создании вида номенклатуры выбрать ценовую группу. На текущий момент сделано так: <code> &НаКлиенте Процедура Прочитать(Команда) //Здесь идет чтение файла потом //Для и = 1 по что-тотам.количество() цикл // Тут мы прверяем есть ли группа номенклатуры и вид номенклатуры и //создаем если нет ГруппаИВид = Новый Массив; ГруппаИВид = НайтиГруппуИВидНоменклатуры(Гр); Если ГруппаИВид[0].Пустая() Тогда РодНом = СоздатьРодителя(Гр); Иначе РодНом = ГруппаИВид[0]; КонецЕсли; Если ГруппаИВид[1].Пустая() Тогда //ВложеннаяПроцедура(Новый ОписаниеОповещения("ОбработкаКомандыЗавершение", ЭтотОбъект)); СтруктураВида = Новый Структура; СтруктураВида.Вставить("Наименование", Гр); НаценкаНаГруппу = Неопределено; Если ВвестиЗначение(НаценкаНаГруппу, "Введите наценку для: " + Гр, Тип("СправочникСсылка.ЦеновыеГруппы")) Тогда //Вот здесь цикл останавливается пока не выберут ценовую группу СтруктураВида.Вставить("ЦеноваяГруппа", НаценкаНаГруппу); КонецЕсли; ВидНом = СоздатьВидНоменклатуры(СтруктураВида); Иначе ВидНом = ГруппаИВид[1]; КонецЕсли; // Продолжается цикл и создается элемент справочника КонецПроцедуры </code> (прошу прощения если не очень понятная процедура, но должно хватить. Если что - я полный код приложу) Все загружается, все хорошо если бы не одно но... Выскакивает предупреждение что использование модальных окон запрещено. Это можно отключить сняв конфигурацию с поддержки, чего делать не очень хочется. Есть дублер метода ВвестиЗначение() = ПоказатьВводЗначения(), но тогда цикл не останавливается и смысл теряется. Есть ли возможность использования метода ПоказатьВводЗначения() с остановкой цикла? Как в данной ситуации поступить? Еще раз прошу прощения за сумбурное объяснение. Если есть вопросы - отвечу. Заранее спасибо за помощь! |
|||
1
Garykom
гуру
04.12.16
✎
07:45
|
Вынеси указание наценок (все что требует действий пользователя) из цикла/процедур обработки.
Нажал кнопочку - считались все группы - показал их разом все пользователю, пусть проставит циферки - далее грузишь используя введенные данные. Для не модальности изучи http://its.1c.ru/docs/v8nonmodal/ http://xn----1-bedvffifm4g.xn--p1ai/news/отказ-от-модальных-окон-в-1с-8-3/ |
|||
2
Garykom
гуру
04.12.16
✎
07:47
|
(1)+ Суть отказа от модальности весь код делится на 2 части (процедуры/функции):
1. До вызова/показа формы/диалога не модального, он вызовет для обработки выбора/ввода данных 2. Постобработка результата обычной формы, не модальной |
|||
3
norets
04.12.16
✎
08:19
|
Спасибо за ответ! Выносить за пределы цикла не вариант, т.к. все равно идет проверка на то есть ли уже этот вид номенклатуры. И вид передается новым элементам справочника сразу после создания. Что так, что эдак все равно не очень удобно. Придется снимать с поддержки. Главное чтобы совсем не отказались от модальности). Еще раз спасибо!
|
|||
4
Garykom
гуру
04.12.16
✎
08:32
|
(3) Поймите что модальность это зло и от нее откажутся везде со временем.
Лучше заранее правильно переписать "логику работы" юзеры потом спасибо скажут. |
|||
5
Garykom
гуру
04.12.16
✎
08:34
|
>все равно идет проверка на то есть ли уже этот вид номенклатуры
Как раз все очень удобно будет и все можно правильно передавать. |
|||
6
norets
04.12.16
✎
09:29
|
Соглашусь что откажутся. Просто опыта не хватает чтобы понять принцип работы. Подскажите такой момент:
Получается что в цикле можно задать значение наценки только для списка выведя на экран все группы из файла, а по очереди никак? Т.е. действия пользователем будут выполняться только после всего цикла, так? Попытаюсь объяснить в чем проблема: У меня Excel файл считывается в ТЗ(таблица значений). Это можно сделать только &НаСервере, потом из ТЗ передаю в структуру, а структуру запихиваю в массив(есть понимание что что-то не так, но нашел только такой способ) который передаю в процедуру &НаКлиенте. Получая из массива и структуры данные создаю ( или нахожу существующий) элемент справочника ВидыНоменклатуры. При создании элемента самой номенклатуры передаю данные из вида и заполняю его. В случае если сначала считывать все виды номенклатуры из файла, мне придется к справочнику обращаться и перебирать его несколько раз. Это же тоже не очень хорошо, правда? Если есть возможность изменить логику - подскажите. Сейчас у меня происходит так: находим новый вид номенклатуры, пользователя спрашивают какую наценку ему присвоить, после чего для всей номенклатуры этого вида ( новых элементов) устанавливается эта наценка. |
|||
7
norets
04.12.16
✎
09:36
|
Я, наверное, не так объясняю... Нет у меня понмания как все это можно вывести за цикл. Все равно происходить перебор ( файла или справочника) и цикл не ждет ввода данных от пользователя. Вот что меня беспокоит.
|
|||
8
Мимохожий Однако
04.12.16
✎
09:39
|
В любом случае надо разделить на несколько этапов:
1. Прочитать файл, создать массив, закрыть файл 2. Обработать массив и создать все возможные виды. 3. Предложить пользователю форму с ответами на вопросы 4. Еще раз обработать полученные данные с учетом ответов. Если заранее выяснить возможные варианты, то и п.3, 4 может не понадобится вовсе. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |