Доброе время суток!
Помогите пожалуйста - знающие?!*
Имеется один справочник "Реестр Актов"
Как создать нумерацию в одном справочнике с тремя префиксами (реквизит с перечислением "АКТ Брак", "АКТ о несоответствии", "АКТ об отсутствии документации")
К примеру: при выборе (форме элементов) реквизит с перечислением Актов (Код Акта) присваивался автоматически номер с префиксом выбранного акта.
АКТ Брак - Б-001
АКТ о несоответствии - Н-002
АКТ об отсутствии документации - Д-003
---
В модуле справочника

```1c
    Процедура ПередЗаписью(Отказ)

    ЭтотОбъект.УстановитьНовыйКод( ПолучитьПрефиксАкта(ВидАкта) );

    КонецПроцедуры

    Функция ПолучитьПрефиксАкта(ВидАкта)

    Если ВидАкта = Перечисления.ВидыАктов.Брак Тогда
    Возврат "Б-";
    ИначеЕсли ВидАкта = Перечисления.ВидыАктов.Несоответствие Тогда
    Возврат "Н-";
    ИначеЕсли ВидАкта = Перечисления.ВидыАктов.ОтсутствиеДокументации Тогда
    Возврат "Д-";
    Иначе
    Возврат "А-";
    КонецЕсли;

    КонецФункции
```
---
В модуле справочник

Немного подкорректировал )))

```1c
    Процедура ПередЗаписью(Отказ)

    ЭтотОбъект.УстановитьНовыйКод(ПолучитьПрефиксАкта(КодАкта));

    КонецПроцедуры

    Функция ПолучитьПрефиксАкта(КодАкта)

    Если КодАкта = Перечисления.Акты.АКТБрак Тогда
    Возврат "Б-";
    ИначеЕсли КодАкта = Перечисления.Акты.АКТОНесоответствии Тогда
    Возврат "Н-";
    ИначеЕсли КодАкта = Перечисления.Акты.АКТОбОтсутствииДокументации Тогда
    Возврат "Д-";
    Иначе
    Возврат "А-";
    КонецЕсли;

    КонецФункции
```

спасибо все получилось.

п.с. хочу еще разобраться (скрин во вложении) с префиксами все отлично получилось теперь количество точнее длину кода увеличьте до "4", а то к примеру Б-01 маловато будет т.к. объем актов за день может достигать до 30 и более, четверо сотрудников одновременно работают и в среднем делают на одного пользователя актов шт. 10.
---
Ну так увеличьте длину кода в справочнике до нужного вам размера. Откройте справочник в конфигураторе, и на вкладке "Данные" см. поле "Длина кода".
---
да все уже так сделал получилось ))))
---
В модуле справочника

```1c
    Процедура ПередЗаписью(Отказ)

    ЭтотОбъект.УстановитьНовыйКод( ПолучитьПрефиксАкта(ВидАкта) );

    КонецПроцедуры

    Функция ПолучитьПрефиксАкта(ВидАкта)

    Если ВидАкта = Перечисления.ВидыАктов.Брак Тогда
    Возврат "Б-";
    ИначеЕсли ВидАкта = Перечисления.ВидыАктов.Несоответствие Тогда
    Возврат "Н-";
    ИначеЕсли ВидАкта = Перечисления.ВидыАктов.ОтсутствиеДокументации Тогда
    Возврат "Д-";
    Иначе
    Возврат "А-";
    КонецЕсли;

    КонецФункции
```
---
В модуле справочник

Немного подкорректировал )))

```1c
    Процедура ПередЗаписью(Отказ)

    ЭтотОбъект.УстановитьНовыйКод(ПолучитьПрефиксАкта(КодАкта));

    КонецПроцедуры

    Функция ПолучитьПрефиксАкта(КодАкта)

    Если КодАкта = Перечисления.Акты.АКТБрак Тогда
    Возврат "Б-";
    ИначеЕсли КодАкта = Перечисления.Акты.АКТОНесоответствии Тогда
    Возврат "Н-";
    ИначеЕсли КодАкта = Перечисления.Акты.АКТОбОтсутствииДокументации Тогда
    Возврат "Д-";
    Иначе
    Возврат "А-";
    КонецЕсли;

    КонецФункции
```

спасибо все получилось.

п.с. хочу еще разобраться (скрин во вложении) с префиксами все отлично получилось теперь количество точнее длину кода увеличьте до "4", а то к примеру Б-01 маловато будет т.к. объем актов за день может достигать до 30 и более, четверо сотрудников одновременно работают и в среднем делают на одного пользователя актов шт. 10.
---
Ну так увеличьте длину кода в справочнике до нужного вам размера. Откройте справочник в конфигураторе, и на вкладке "Данные" см. поле "Длина кода".
---
да все уже так сделал получилось ))))
---
спасибо за помощь все получилось, только вот проблема одна появилась.
Когда в справочник, хочу внести изменения в реестре после записи и сохранения изменяется номер Акта (пример: Б-0001 после корректировки и записи номер изменяется по порядку на Б-0002 и так далее).
Как устранить эту проблему?!
---
```1c
    Процедура ПередЗаписью(Отказ)
    Если ЭтоНовый() Тогда
    УстановитьНовыйКод(ПолучитьПрефиксАкта(КодАкта));
    КонецЕсли;
    КонецПроцедуры
```
---
Процедура ПередЗаписью(Отказ)
    Если ЭтоНовый() Тогда
         УстановитьНовыйКод(ПолучитьПрефиксАкта(КодАкта));
    КонецЕсли;
КонецПроцедуры

Спасибо огромное)))))