|
Помогите организовать цикл | ☑ | ||
---|---|---|---|---|
0
BayoNet
05.08.13
✎
16:52
|
Сижу туплю. Есть таблица значений две колонки: "номенклатура" и "ТипНоменклатуры" под типом номенклатуры подразумевается является ли она готовым комплектом или комплектующей. ТаблицаЗначений по строкам строится таким образом: комплект, потом несколько строк входящих в нее комплектующих, потом новый комплект итд, количество комплектующих для разных комплектов разное.
Запускаю цикл по каждой строке ТЗ, нужно перед каждым новым комплектом открыть модально форму для записи новой спецификации. |
|||
1
BayoNet
05.08.13
✎
16:53
|
Фрм = ПолучитьФорму("ФормаСпецификации");
Если Стр.Тип = "М" Тогда Фрм.СтрокаМ = Стр.Строка; СтрокаМеню = Фрм.тзМеню.Добавить(); СтрокаМеню.Блюдо = ИдентификацияНоменклатуры.Найти(Стр.Строка,"Строка").Элемент; Иначе СтрокаСпециф = Фрм.Спецификация.Добавить(); СтрокаСпециф.Комплектующая = ИдентификацияНоменклатуры.Найти(Стр.Строка,"Строка").Элемент; КонецЕсли; Если Стр.Тип = "М" Тогда Фрм.ОткрытьМодально(); КонецЕсли; |
|||
2
salvator
05.08.13
✎
16:55
|
Что спросить-то хотел?
|
|||
3
BayoNet
05.08.13
✎
16:56
|
что то никак не придумаю, как отловить последнюю комплектующую, перед новым комплектом
|
|||
4
salvator
05.08.13
✎
16:58
|
(3) Сделай дерево
|
|||
5
Сти
05.08.13
✎
16:59
|
(3) Зачем отлавливать последнюю комплектующую, когда все можно сделать в момент, когда позиция в ТЗ уже на строке с новым комплектом?
|
|||
6
BayoNet
05.08.13
✎
17:02
|
(5) как?
|
|||
7
fisher
05.08.13
✎
17:03
|
(6) Признаком начала нового комплекта является номенклатура, отличная от номенклатуры в предыдущей строке (в отсортированной таблице). Ну и последний комплект отработать.
|
|||
8
fisher
05.08.13
✎
17:07
|
Если совсем ступор - то можешь и последнюю отлавливать. "Заглядывая" в следующую. Хуже, но не сильно.
|
|||
9
fisher
05.08.13
✎
17:10
|
Вообще, лучше, конечно, избегать этой фигни в принципе.
Работать с вложенными коллекциями, обходом по группировкам и т.п. |
|||
10
BayoNet
05.08.13
✎
17:11
|
(8) Я так и думаю уже, по номеру строки "загляну" в тип следующей, что то не хочется с деревом связываться из-за разовой работы загрузки. Спасибо
|
|||
11
Сти
05.08.13
✎
17:14
|
Как-то так
Также можно не использовать ТЗ[0], используя переменные вместо Фрм.СтрокаМ и поставив проверки условий в цикле. А можно вообще бежать по ТЗ с конца к началу, типа ТЗКолСтрок = ТЗ.Количество(); Для x = 0 по ТЗКолСтрок Цикл Строка = ТЗ[ТЗКолСтрок - x - 1] КонецЦикла; Тогда, натыкаясь на М, открывать форму. |
|||
12
SherifSP
05.08.13
✎
17:15
|
Дерево самый оптимальный, читабельный и быстрый вариант, а то что ты тут пытаешься разработать, это велосипед )
|
|||
13
Сти
05.08.13
✎
17:18
|
(12) Деревья лучше, конечно. Но не всегда, например, сортировка в многоуровневом дереве это нечто. А была как-то нужна, и тогда с ТЗ оказалось все быстрее, хотя жутко некрасиво, нечитабельно, и непонятно, да и поля лишние в ТЗ появились. Сам не мог понять свой код через пару месяцев )
|
|||
14
SherifSP
05.08.13
✎
17:19
|
(13) А представь если бы читал кто то другой)
|
|||
15
SherifSP
05.08.13
✎
17:20
|
+(14) Вон Fish например, он бы тебя не раз вспомнил))
|
|||
16
Сти
05.08.13
✎
17:24
|
(15) Да пусть вспоминает, я икать не буду ) А тот код тоже был одноразовым, просто порядок в файловом хламе наводил, и пытался понять что это было и зачем, нужно или нет.
|
|||
17
Сти
05.08.13
✎
17:27
|
(11) а тут так, конечно же, в том посте споткнулся в одном месте:
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |