Здравствуйте
Имею таблицу значений (ТЗ)в ней находятся номера Партия (колонки Партия, номер)
123 45 789
Номера идут не по порядку, а с разрывами(интервалами).Номер на единичку всегда больше.
Мне надо получить даные в виде
1-3
4-5
7-9
и загруить из в другую ТЗ_Интервалы (Колонки Партия, НомерС, НомерПо)
Что надо сравнивать в ТЗ что бы получить это ?
Это можно сравнить с ведением БСО по номерам
Есть остаток номеров на складе с 1 по 100. (100 штук)Номера идут попорядку. Номера могут расходовать и перемещать и перекомплектововать(в любом порядке). Мы допустим израсходовали с 5 по 25. Остаок номеров на складе остался с 1 по 4 и с 26 по 100. В регистре они же храняться ПОШТУЧНО 1234 и 26 27 ... 100. Мне надо при подборе в таблицу значений формы подбора загрузить интервалы 1-4 и 26-100(Что можно было выбирать интервалы) ,Они подбираются в документы (интервалами) , там выставляется вид обработки и т.д.
Я запросом сформировал остаток с регистра остатков и результат загрузил в таблицу значение (ТЗ)(промежуточную).Теперь надо обойти эту таблицу значений (ТЗ) и сформировать интервалы.
Может как то по другому надо
почему нельзя сделать интервалы 1-5, 7-9?
не понял что у тебя хранится в ТЗ, но алгоритм создания интервалов я бы сделал так: Изменено 04.06.13 08:17:25
(3) ivan232, Да, интервалы я опечатался, будут те которые вы написали 1-5, 7-9
В ТЗ
ИЗМЕРЕНИЯ
Партия (Это документы ли ссылка на спр., не изменяется никогда)
Номер (Это номер партии, он мжет изменяться (Число,10)).
Если можно примените к алгоритму с обходом к ТЗ и прокоментируйте(а то меня смущает ОбщийНабор - что это строка). тк. еще у меня будут манипуляции потому я выгрузжаю в ТЗ.
Для каждого строкаТЗ из ТЗ Цикл
При вашем коде выдает ошбику
{Документ.БСО_Акт_Использованных.Форма.ФормаДокумента.Форма(390)}: Индекс находится за границами массива m1 = ТЗ[к].Номер;
и не отображает никаких нитервалов
Сделал так, показывате первый интервал правильно до разрыаа, а потом ошибка с индексом тоже
{Документ.БСО_Акт_Использованных.Форма.ФормаДокумента.Форма(406)}: Индекс находится за границами массива m2 = ТЗ[к+1].Номер;
Попробуйте так:
Для к = 1 по ТЗ.Количество()-1 Цикл
чтобы индекс всегда был в пределах массива, просто когда к=ТЗ.Количество(), то ТЗ[к+1] выдаёт ошибку.
прошу прощения за ошибку - в условии цикла нужно бежать до предпоследнего элемента, а т.к. индексация в таблице значений идет с 0, то нужно использовать следующее условие:
Ошибка с индексами пропала, но появилась с последним нитевалом
(забаыно, но сейчас даже при ТЗ.Количество()-1) не сообщает ошибку с индексами
Имею интевал 100 по 199 (есть списанные 102-105, 110-120, 135-140)
Получаем результат
100 - 101
106 - 109
121 - 134
-58, должно быть 141-199
Все заработала ,
Ворос №1
А почму ты хочешь отнимать 2 , а не 1 Мы же начинаем с 0
Ворос №2
В последнем интервале надо наверное добавить 1 или на М2 переправитьИзменено 11.06.13 13:43:00
вот тут проблема, Вы же итератор уже задали в выражении Для К = 1 по ТЗ.Количество()-2 Цикл , а потом ещё принудительно увеличиваете КИзменено 11.06.13 14:02:55