Имя: Пароль:
1C
1С v8
Проверка последовательности чисел
, , ,
0 арах
 
01.06.15
10:18
Привет народ. как быстро проверить по порядку ли идут числа в ТЗ и выдать список тех что пропущены... можно запросом можно циклом..
пример: 1,2,3,6,8
должно вернуть что нет 4,5,7.
1 Homer
 
01.06.15
10:25
максимальное значение 24 или 31?
2 Cube
 
01.06.15
10:25
(0) С текстом вопроса "выбрать записи первой таблицы, отсутствующие во второй таблице" тебе к гуглу...
3 Asmody
 
01.06.15
10:39
Отсортировать и пройтись циклом вообще не вариант?
4 Timon1405
 
01.06.15
10:39
Лето, сессия в разгаре
5 Sasha_H
 
01.06.15
10:42
Где модеры, вжарте бан за офф (4) уже не в первой теме такое...
6 Cube
 
01.06.15
10:43
(5) Ты не выспался?))
7 арах
 
01.06.15
10:43
(2) это конечно  да.. но у меня зарание не известно ни первое число не последнее...
как тогда сгенерить табличку с числами в запросе?
8 Cube
 
01.06.15
10:45
(7) Мало исходных данных. Телепатируя предвижу, что тебе нужно найти пропущенные номера документов, а у них тип не число...
9 арах
 
01.06.15
10:45
(3)если пропущено 1 число то да.. а если 2-3 подряд..?)
10 Cube
 
01.06.15
10:46
(9) О, ужас! Тогда увольняйся!))
11 butterbean
 
01.06.15
10:46
(7) не надо табличек и запросов, сделай циклом по таблице, просто запоминая значение предыдущей строки в переменную
12 арах
 
01.06.15
10:46
(8) ага номера, тип число
13 Sasha_H
 
01.06.15
10:47
(0) очень хороший вопрос, а вот. что по этому поводу говорится в одной умной книге "Алгоритмы. Построение и анализ":

Глава 1.  Роль алгоритмов в вычилениях

Вход: последовательность из п чисел (ai,аг,..., ап).
Выход: перестановка (изменение порядка) (а'^а^... ,а'п) входной последова-
тельности таким образом, что для ее членов выполняется соотношение
a'l ^ а!2 ^ • • • ^ а!п.
Например, если на вход подается последовательность C1,41,59,26,41,58), то
вывод алгоритма сортировки должен быть таким: B6,31,41,41,58,59). Подобная
входная последовательность называется экземпляром (instance) задачи сортиров-
ки. Вообще говоря, экземпляр задачи состоит из ввода (удовлетворяющего всем
ограничениям, наложенным при постановке задачи), необходимого для решения
задачи.
В информатике сортировка является основополагающей операцией (во многих
программах она используется в качестве промежуточного шага), в результате чего
появилось большое количество хороших алгоритмов сортировки. Выбор наиболее
подходящего алгоритма зависит от многих факторов, в том числе от количества
сортируемых элементов, от их порядка во входной последовательности, от воз-
можных ограничений, накладываемых на члены последовательности, а также от
того, какое устройство используется для хранения последовательности: основная
память, магнитные диски или накопители на магнитных лентах.
14 Heckfy
 
01.06.15
10:48
Сгенери вторую таблицу по количеству строк Максимум первой с колонкой, в которой цифры идут по порядку. Далее запросом слкей из с условием число из второй колонки не равно первой. Как то так.....
15 Cube
 
01.06.15
10:55
(12) Что это за наколенная поделка студента, в которой номера объектов имеют тип "число"?....
16 арах
 
01.06.15
10:55
(14) да так и буду делать.. есть пример генерации таблички в запросе?
17 арах
 
01.06.15
10:57
например с числами от 2000 до 4800
18 Cube
 
01.06.15
10:57
(16) Ща попробую...
19 Timon1405
 
01.06.15
11:00
(16) по аналогии с табличкой дат же!
ВЫБРАТЬ
   1 КАК Цифра
ПОМЕСТИТЬ ТаблицаЦифр
ОБЪЕДИНИТЬ

ВЫБРАТЬ
   2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   9

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    &НачЧисло +ТаблицаЦифр.Цифра + ТаблицаЦифр1.Цифра * 10 + ТаблицаЦифр2.Цифра * 100 + ТаблицаЦифр3.Цифра * 1000  как Число
    ИЗ
    ТаблицаЦифр КАК ТаблицаЦифр,
    ТаблицаЦифр КАК ТаблицаЦифр1,
    ТаблицаЦифр КАК ТаблицаЦифр2,
    ТаблицаЦифр КАК ТаблицаЦифр3
ГДЕ
    &НачЧисло +ТаблицаЦифр.Цифра + ТаблицаЦифр1.Цифра * 10 + ТаблицаЦифр2.Цифра * 100 + ТаблицаЦифр3.Цифра * 1000 <= &КонЧисло

УПОРЯДОЧИТЬ ПО
    Число
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ТаблицаЦифр
20 Cube
 
01.06.15
11:01
+(18) Знаменитая табличка для среза последних на каждую дату в запросе и тут подошла, даже без обработки напильником :)

ВЫБРАТЬ
    aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК НомерПериодаИзДиапазона
ИЗ
    (ВЫБРАТЬ
        0 КАК a
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        1
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        2
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        3
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        4
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        5
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        6
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        7
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        8
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        9) КАК aa
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК b
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК bb
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК c
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК cc
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК d
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК dd
        ПО (ИСТИНА)
ГДЕ
    aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d МЕЖДУ &ПервыйНомер И &ПоследнийНомер
21 Cube
 
01.06.15
11:03
(19) О, новый вариант старой телеги?)) Где надыбал? :)
22 Timon1405
 
01.06.15
11:05
23 Сияющий в темноте
 
01.06.15
17:22
Выбрать таблицацифр.число+1
Из таблицацифр как таблицацифр
Левое соединение таблицацифр как таблицауифр1
По таблицацифр.число=таблицацифр1.число+1
Где таблицацифр1.число есть нулл
24 bolobol
 
01.06.15
18:46
Половинным делением проверять соответствие значения номера псевдоиндексу строки, где псевдоиндекс = индекс + поправочный коэффициент количества пропущенных номеров + начальный номер.
25 Cube
 
02.06.15
04:38
(24) Зачётный алгоритм))
Независимо от того, куда вы едете — это в гору и против ветра!