Добрый день. Поставили задачу, не знаю как подступиться (стажер).
Создал печатную форму документа поставки. Номер договора в шапке вычисляется так "Дата"+"-"+"порядковый номер за день". В день у них 5-10 договоров, нужно чтобы у каждого был разные порядковый номер за день, но! самое непонятное что они должны иметь возможность распечатать ещё раз через несколько дней от этого контрагента договор с тем же номером что был в первый тот раз.
Мне посоветовали доп.реквизит сделать или регистр сведений. Но я не знаю как это всё грамотно организовать. Если доп реквизит делать, то для следующего договора нужно обращаться куда то в регистр другого и добавлять единицу, а как узнать какой из них последний без регистра сведений.
Читаю сейчас про регистр сведений. УТ 11.4.13.209 проф.
---
Если дата договора у тебя постоянная и время также не изменяется при перезаписи., достаточно отсортировать ТЗ по дате и получать порядковый номер договора.

Вот примерный код из функции, кот. вычисляет порядковый код;

```1c
    //Договор - это объект
    ТЗ = Новый ТаблицаЗначений;
    Тз.Колонки.Добавить("ДатаДоговора");
    Для Каждого СтрокаДоговора из Договор Цикл
    НоваяСтрока = ТЗ.Добавить();
    НоваяСтрока.ДатаДоговора = СтрокаДоговора.Дата;
    КонецЦикла;

    ТЗ.Сортировать("ДатаДоговора");

    //Получить Номер
    Счетчик = 1;
    Для Каждого СтрокаТЗ из ТЗ Цикл

    Если ДатаДоговора = СтрокаТЗ.ДатаДоговора Тогда
    Номердоговора = Формат(СтрокаТЗ.ДатаДоговора, "ДЛФ=D") + "-" +Строка( Счетчик);
    Возврат Номердоговора;
    КонецЕсли;

    Счетчик = Счетчик + 1;

    КонецЦикла;
```

Но это все можно сделать один запросом.
Единственное условие для запроса будет - дата и без Пометок на удаление (и по Контрагенту, желательно)
---
Если дата договора у тебя постоянная и время также не изменяется при перезаписи., достаточно отсортировать ТЗ по дате и получать порядковый номер договора.

Вот примерный код из функции, кот. вычисляет порядковый код;

```1c
    //Договор - это объект
    ТЗ = Новый ТаблицаЗначений;
    Тз.Колонки.Добавить("ДатаДоговора");
    Для Каждого СтрокаДоговора из Договор Цикл
    НоваяСтрока = ТЗ.Добавить();
    НоваяСтрока.ДатаДоговора = СтрокаДоговора.Дата;
    КонецЦикла;

    ТЗ.Сортировать("ДатаДоговора");

    //Получить Номер
    Счетчик = 1;
    Для Каждого СтрокаТЗ из ТЗ Цикл

    Если ДатаДоговора = СтрокаТЗ.ДатаДоговора Тогда
    Номердоговора = Формат(СтрокаТЗ.ДатаДоговора, "ДЛФ=D") + "-" +Строка( Счетчик);
    Возврат Номердоговора;
    КонецЕсли;

    Счетчик = Счетчик + 1;

    КонецЦикла;
```

Но это все можно сделать один запросом.
Единственное условие для запроса будет - дата и без Пометок на удаление (и по Контрагенту, желательно)
---
Спасибо, буду пробовать
---
Регистр и доп. реквизиты (доп. сведения) не нужны.
но если вздумаешь.

Вот примерный код, чтобы получить доп. реквизит:

```1c
    Функция ПолучитьЗначениеДопРеквизита(Свойство, Объект)

    ДопРеквизиты = Объект.ДополнительныеРеквизиты.Выгрузить();

    Для Каждого СтрокаТЗ из ДопРеквизиты Цикл
    Если СтрокаТЗ.Свойство.Заголовок = Свойство Тогда
    Возврат СтрокаТЗ.Значение;
    КонецЕсли;
    КонецЦикла;

    Возврат Ложь; //Неопределено

    КонецФункции
```
---
печатать договор или с заказа или с реализации. там уже номер можно брать от времени или номера документа или аля код клиента/номер документа