Имя: Пароль:
1C
1C 7.7
v7: Сравнение массивов
0 Eeakie
 
28.12.18
13:30
Добрый день. Нужно найти первое незанятое число в массиве.

Например, есть массив {1,2,4}. Нужно сравнить его с массивом {1,2,3,4,5} и дать первое незанятое число. В этом случае 3.

Первый массив делается селектом из БД. Второй, я полагаю, надо делать через временную таблицу циклом. Максимум значений будет 99999. Как проще организовать сравнение? Может в SQL есть что-то простое?
1 ДенисЧ
 
28.12.18
13:32
Загнать оба массива в скуль и full join (или left, если у тебя один гарантированно полный).
Где NULL - там дырка
2 Eeakie
 
28.12.18
13:34
(1) Логично. Пробую.
3 Mikeware
 
28.12.18
13:41
если селектом из БД - значит, стоит 1спп. если есть 1спп - то в ей есть http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#leftjoin
4 Mikeware
 
28.12.18
13:41
ну, еще в ней есть установитьФильтр, и все такое
5 Eeakie
 
28.12.18
14:12
Хм. А чем в 1сине сделать запрос?

if object_id('tempdb.dbo.#numbers') is null create table #numbers(n int)

declare @n int
set @n = 1

while @n < 100
    begin
        insert into #numbers values (@n)
        set @n = @n + 1
    end

select * from #numbers
drop table #numbers

Через RecordSet 1с в ТЗ пусто. Напрямую из SQL всё нормально выполняется.
6 Mikeware
 
28.12.18
14:23
(5) дык он у тебя результат по следнего возвращает
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс