|
Поиск свободного номера документа | ☑ | ||
---|---|---|---|---|
0
Falex
07.11.13
✎
15:10
|
Здравствуйте. Подскажите как имея начальный номер, например 11, найти
первый свободный номер больше, чем 11 (с учетом и без префикса)? Спасибо. |
|||
1
RomaH
naïve
07.11.13
✎
15:12
|
Запрос.Текст =
"ВЫБРАТЬ | ВременныйНомерПациентаДляПрофосмотра.НомерПациента КАК НомерПациента |ИЗ | РегистрСведений.ВременныйНомерПациентаДляПрофосмотра КАК ВременныйНомерПациентаДляПрофосмотра |ГДЕ | ВременныйНомерПациентаДляПрофосмотра.НаправлениеНаПрофосмотр.Дата > &ВремяЖизни | |ДЛЯ ИЗМЕНЕНИЯ | |УПОРЯДОЧИТЬ ПО | НомерПациента"; ВыборкаНомеров = Запрос.Выполнить().Выбрать(); ВременныйНомер = 1; Пока ВыборкаНомеров.Следующий() Цикл Если ВыборкаНомеров.НомерПациента > ВременныйНомер Тогда //Если ВременныйНомер = 13 // ИЛИ ВременныйНомер = 666 Тогда //Иначе Прервать; //КонецЕсли; КонецЕсли; ВременныйНомер = ВременныйНомер + 1; КонецЦикла; |
|||
2
KARSH
07.11.13
✎
15:13
|
через счетчик и запрос с конструкцией ПОДОБНО
|
|||
3
dk
07.11.13
✎
15:15
|
Дата > &ВремяЖизни
суров ) |
|||
4
Falex
07.11.13
✎
15:17
|
"через счетчик и запрос с конструкцией ПОДОБНО"
пример есть? |
|||
5
Холодильник
07.11.13
✎
15:19
|
жесть.. не проще использовать УстановитьНовыйНомер() ?
Создаешь новый док, устанавливаешь ему нов номер и запоминаешь этот номер |
|||
6
mikecool
07.11.13
✎
15:19
|
(5) а если есть 11, 15, то новый будет 16
но можно использовать 12,13,14 |
|||
7
Холодильник
07.11.13
✎
15:20
|
(6) ерунда получится, если 11 и 15 будет за октябрь, а 12 - за ноябрь
|
|||
8
KARSH
07.11.13
✎
15:23
|
(4) что то типа вот такого (не проверял в рабочей, так что может надо допилить)
НомерНачальный = 11; Для а = НомерНачальный По 9999999999 Цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Номер ПОДОБНО &Номер"; Запрос.УстановитьПараметр("Номер", Префикс + "%" + а); Результат = Запрос.Выполнить().Выбрать(); Если НЕ Результат.Следующий() Цикл Сообщить("Пустой номер " + а); Прервать; КонецЦикла; КонецЦикла; |
|||
9
KARSH
07.11.13
✎
15:24
|
(8) жестковато для производительности, но как вариант
|
|||
10
Falex
07.11.13
✎
15:51
|
Спасибо. Сработало. А далее при установке номера через УстановитьНовыйНомер будет устанавливаться номера с учетом "дырок" в номерах документа за период?
|
|||
11
WildSery
07.11.13
✎
15:53
|
выбрать 0 н
поместить вт_цифры объединить все выбрать 1 объединить все выбрать 2 объединить все выбрать 3 объединить все выбрать 4 объединить все выбрать 5 объединить все выбрать 6 объединить все выбрать 7 объединить все выбрать 8 объединить все выбрать 9; выбрать цифра1.н + цифра2.н*10 + цифра3.н*100 ч поместить вт_числовой_ряд из вт_цифры как цифра1 внутреннее соединение вт_цифры как цифра2 по истина внутреннее соединение вт_цифры как цифра3 по истина; выбрать min(вт_числовой_ряд.ч) как НомерПациента из вт_числовой_ряд левое соединение РегистрСведений.Больные по Больные.НомерПациента = вт_числовой_ряд.ч где Больные.НомерПациента is null |
|||
12
KARSH
07.11.13
✎
16:02
|
(10) в типовых конфигурациях в настройках конфигурации "Режим автонумирации" стоит в не освобождать автоматически, поэтому автоматически пробелы заполняться не будут, если перевести в режим "Освобождать автоматически", то будет, но в этому случае и (5) вариант будет нормально работать и быстрее моей :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |