|
Вопрос по элементам цикла | ☑ | ||
---|---|---|---|---|
0
Nemirov
09.06.20
✎
16:00
|
Можно ли использовать Элементы одного цикла в другом Например: Для каждого Элемент1 из тзРезультат1 цикл //Элемент1 использовать в цикле Для каждого Элемент2 из тзРезультат2 цикл?
или как сделать что бы первоначальный цикл не маслал несколько раз второй цикл? Для каждого стр из тзРезультат цикл Если НЕ ИспользоватьАртикул Тогда Если Не СокрЛП(Стр.Наименование) = "" тогда Для Каждого СтрЗапроса из Выборка цикл Если Не СокрЛП(СтрЗапроса.Наименование) = "" тогда Если Сокрлп(СтрЗапроса.НоменклатураТЗПоставщика) = СокрЛП(Стр.Наименование) Тогда стр.НоменклатураСсылка = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(СтрЗапроса.НоменклатураНаша)); Иначе Отказ = Истина; Сообщить("Нет привязки номенклатуры " + СокрЛП(Стр.Наименование),СтатусСообщения.ОченьВажное); КонецЕсли ; КонецЕсли; КонецЦикла ; Продолжить; КонецЕсли; КонецЦикла; |
|||
1
Волшебник
модератор
09.06.20
✎
16:01
|
Можно
|
|||
2
Nemirov
09.06.20
✎
16:02
|
(1) Возвратом?
|
|||
3
lodger
09.06.20
✎
16:07
|
(0) задачу логически опиши нормально.
тебе не нужно 2 цикла и тем более не нужно "первоначальный цикл не маслал несколько раз второй цикл". нужен обход одного цикла и поиск по ключам в таблице\массиве. |
|||
4
palpetrovich
09.06.20
✎
16:08
|
НайтиСтроки пользуй
и вот это НайтиПоНаименованию - обязательно? сразу в тзРезультат нельзя получить? |
|||
5
Nemirov
09.06.20
✎
16:14
|
(4) все данные из файла беруться
|
|||
6
Nemirov
09.06.20
✎
16:15
|
(4) там только наименование строковое
|
|||
7
Волшебник
модератор
09.06.20
✎
16:15
|
(2) команда Прервать прерывает цикл, внутри которого она находится
|
|||
8
dka80
09.06.20
✎
16:15
|
Задачу опиши
|
|||
9
Nemirov
09.06.20
✎
16:16
|
(7) Спасибо
|
|||
10
Nemirov
09.06.20
✎
16:22
|
(8) Для каждого стр из тзРезультат цикл //Нужно обойти каждый элемент этой ТЗ
Для Каждого СтрЗапроса из Выборка цикл // Тут Беру элементы из выборки Если Сокрлп(СтрЗапроса.НоменклатураТЗПоставщика) = СокрЛП(Стр.Наименование) Тогда //чтобы сравнить элемент из выборки с элементом тзРезультат стр.НоменклатураСсылка = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(СтрЗапроса.НоменклатураНаша)); //Если истина тогда присваиваем стр.НоменклатураСсылка значение Выборки в // ссылочном виде Иначе Сообщить("Нет привязки номенклатуры " + СокрЛП(Стр.Наименование),СтатусСообщения.ОченьВажное); // иначе сообщаем ошибку так понятнее???? КонецЕсли; КонецЦикла ; КонецЦикла; |
|||
11
Nemirov
09.06.20
✎
16:24
|
(10) Но получается что вначале второй цикл пройдет все строки возвращается к следующей строчке первого цикла и так по порядку... Вопрос был в том как переделать циклы что бы каждая строчка первого цикла не крутила полностью второй цикл.
|
|||
12
Ёпрст
09.06.20
✎
16:28
|
(10) всё в топку
|
|||
13
Ёпрст
09.06.20
✎
16:30
|
Выборка - Это что у вас ?
|
|||
14
Ненавижу 1С
гуру
09.06.20
✎
16:31
|
+(12) все в запрос
|
|||
15
Nemirov
09.06.20
✎
16:31
|
(13) Внатуре!! Выборка = ЗапросТз.Выполнить().Выгрузить();
|
|||
16
Ёпрст
09.06.20
✎
16:32
|
(15) а ТзРезультат откуда ?
|
|||
17
Cthulhu
09.06.20
✎
16:38
|
ну так вместо второго говнокодо-цикла - тупо поиск в ТЗ.
|
|||
18
Nemirov
09.06.20
✎
16:42
|
(16) Тз Результат из файла в таблицу тип "строка"
|
|||
19
Волшебник
модератор
09.06.20
✎
16:43
|
Здесь достаточно одного запроса. Циклы вообще не нужны.
|
|||
20
Волшебник
модератор
09.06.20
✎
16:44
|
Надо одной строкой выгрузить список наименований номенклатуры поставщика в параметр запроса или временную таблицу, который выберет то, что есть в базе.
|
|||
21
Ёпрст
09.06.20
✎
16:50
|
(18) тогда тип того:
Не оптимально, но сойдёт, для области |
|||
22
Nemirov
09.06.20
✎
16:51
|
(20) Это хорошо но как я сравню строки в запросе если их надо отфарматировать от лишних символов как я делал в цикле?
|
|||
23
Волшебник
модератор
09.06.20
✎
17:01
|
(22) Тогда сначала цикл по таблице значений, форматирование. Потом запрос, который выбирает только то, что нужно. Потом цикл по результату запросу.
В данном случае цикла внутри цикла быть не должно. Номенклатур может быть 10 тысяч позиций. Если вложить циклами, то получится 100 000 000 витков. Поэтому надо изменять на поиск по индексу или доверить всю работу запросу. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |