Прошу помощи.
Нужно получить последний номер документа

```1c
    ВЫБРАТЬ ПЕРВЫЕ 1
    | ЗаказНаПроизводство2_2.Номер КАК Номер
    |ИЗ
    | Документ.ЗаказНаПроизводство2_2 КАК ЗаказНаПроизводство2_2
    |ГДЕ
    | ЗаказНаПроизводство2_2.ДокументОснование = Неопределено
    |УПОРЯДОЧИТЬ ПО
    | ЗаказНаПроизводство2_2.Дата УБЫВ
```

Запрос отрабатывает хорошо, если заказы упорядочены по дате, как только заказ создали задним числом, то ошибка.
Как изменить запрос, чтобы получить последний номер документа без упорядочивания по дате?
---
есть подписка на события, где устанавливается префикс... можно там подкорректировать
есть метод УстановитьНовыйНомер
есть событие ПриУстановкеНовогоНомера
нумерация будет продолжаться с учетом префикса ;))
---
Максимум(ЗаказНаПроизводство2_2.Номер)
???
---
```1c
    |ГДЕ
    | ЗаказНаПроизводство2_2.ДокументОснование = Неопределено
    | И МАКСИМУМ(ЗаказНаПроизводство2_2.Дата)
```
---
Максимум не срабатывает, т.к. префиксы менялись за последние 3 месяца несколько раз, т.е. максимальный номер дает неверный
---
Максимум не срабатывает, т.к. префиксы менялись за последние 3 месяца несколько раз, т.е. максимальный номер дает неверный

Навести порядок с нумерацией...

Функция ПОДСТРОКА берите правую часть.

З.Ы. Если ещё и длина разная то точно пора наводить порядок....
---
по экспериментируйте упорядочить по номеру, а также упорядочить по дате .
---
МоментВремени не то?

```1c
    ВЫБРАТЬ ПЕРВЫЕ 1
    КассоваяКнига.МоментВремени КАК МоментВремени
    ИЗ
    Документ.КассоваяКнига КАК КассоваяКнига

    УПОРЯДОЧИТЬ ПО
    МоментВремени УБЫВ
```
---
если это одноразово, то можно как-то так написать

```1c
    выбрать первые 1
    подстрока(номер, 3, 11) как номербезпрефикса,
    год(дата) как год
    из
    документ.док
    упорядочить по
    год убыв,
    номербезпрефикса убыв
```
---
Что значит одноразово? Объясните, пжл?)
 Мне надо чтобы многоразово работало, ежедневно
---
для разового использования, для корректировки нумерации
я просто не совсем понимаю зачем такой запрос использовать каждый день%))
возможно задачу нужно решать как-то по другому??
---
Делаем свою нумерацию заказов в производство
Если заказы в производство создаются на основании заказа клиента, тогда одна нумерация.
Если заказы в производство формируется самостоятельно (это нужно делать для выпуска полуфабрикатов), то у них своя нумерация "ПрефиксОрганизации+ПрефиксИБ-П+номер"
т.е. после префиксов перед цифрами добавляем букву П
Заказы в производство формируются каждый день
Если подкините идею, как задачу можно решать как-то по-другому - Буду оч признательна
---
Система ж позволяет вести автонумерацию по заданному шаблону номера объектов. К чему все эти извращения с нумерацией "вручную"?
---
Дайте ссылку, где посмотреть про это
---
https://its.1c.ru/db/v8318doc#bookmark:dev:TI000000308
---
есть подписка на события, где устанавливается префикс... можно там подкорректировать
есть метод УстановитьНовыйНомер
есть событие ПриУстановкеНовогоНомера
нумерация будет продолжаться с учетом префикса ;))
---
Да, это все пересмотрела, но в нашей ситуации немного сложнее.
Ведь это один и тот же документ.
И тут в зависимости есть/нет документ основание добавлять букву "П" в номер.
К стати Ваш запрос вроде отрабатывает, буду с ним пробовать.
Спасибо!
---
если Вы в префиксе добавите "П", но у Вас пойдет нумерация с префиксом "П"
возможно стоит пересмотреть префикс, если не нужен в префиксе "П", то проставлять "-", чтобы префикс нумерации был одной длины
---
Скажите, если знаете.
Когда закончится год, и начнется следующий.
Если мы программно задаем номера документов. С началом следующего года нумерация начнется с начала?
Или будет отрабатывать запрос, искать последний и увеличивать его на 1?
---
запрос показывает последний документ... если в ээтом году не было документов, то запрос покажет за прошлый год...
в условиях можно добавить год, чтобы проверялся год документа
---
Можете написать пример, как это условие задается в запросе?
Пожалуйста)
---
```1c
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Год", Год(ТекущаяДата()));
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |ПОДСТРОКА(номер, 3, 11) как номербезпрефикса,
    |ГОД(дата) как год
    |ИЗ
    |документ.док
    |ГДЕ
    |ГОД(дата) = &Год
    |УПОРЯДОЧИТЬ ПО
    |год убыв,
    |номербезпрефикса убыв";
```

но я бы советовал не заморачиваться и через установку префикса делать
---
Спасибо!
---
МоментВремени не помогает
Двойное упорядочнивание тоже не работает(
---
есть пример какой нужно номер получить??
---
пишите сложный запрос.
1. получайте упорядоченные выборки по префиксам
2. сравнивайте наибольшие номера у разных префиксов по их дате / моменту времени