При первой записи не отрабатывается запись. Только после повторной записи - присваивается нужный код

```1c
    Функция СТ_УстановитьАртикулКод()
    Если (Артикул = "7981" ИЛИ Артикул = "7980") Тогда
    Если СтрДлина(Код) = 11 Тогда
    ЧастьКода = Прав(Код, 7);
    ИначеЕсли СтрДлина(Код) = 10 Тогда
    ЧастьКода = Прав(Код, 6);
    КонецЕсли;
    Возврат Артикул + ЧастьКода;
    Иначе
    Возврат Код;
    КонецЕсли;
    КонецФункции
```
---
(15)
(2)
ИМХО, все просто.
Добавил процедуру перед записью с проверкой ЭтоНовый.

```1c
    Процедура СТ_УстановитьАртикул()
    Если ПустаяСтрока(Код) Тогда
    УстановитьНовыйКод(); // нужно было лишь это добавить и все.
    КонецЕсли;

    Если (Артикул = "7981" ИЛИ Артикул = "7980") Тогда
    Если СтрДлина(Код) = 11 Тогда
    ЧастьКода = Прав(Код, 7);
    ИначеЕсли СтрДлина(Код) = 10 Тогда
    ЧастьКода = Прав(Код, 6);
    КонецЕсли;
    Артикул = Артикул + ЧастьКода;
    Иначе
    Артикул = Код;
    КонецЕсли;
    КонецПроцедуры
```
---
Используй этот Код в
```1c
    Процедура ПослеЗаписи()
```
 , так как КОД еще не присвоен!
---
Нууу... Два раза записывать придется. Это если форму не закрывать. А если это срабатывает при Сохранить и Закрыть - то и записи никакой не будет уже...

Вообще что за фигня непонятная. Длина Кода какая-то... Если он устанавливается программно - то его можно получить еще перед записью... Если он устанавливается автоматически - то причем тут его длина?
---
Потому что, кто-то из разработчиков добавил в момент внедрения два проблема справа. Якобы кто-то писал об этом ТЗ.
---
Тут вы права, что нужно два раза записывать.
---
НЕ работает.
---
(15)
(2)
ИМХО, все просто.
Добавил процедуру перед записью с проверкой ЭтоНовый.

```1c
    Процедура СТ_УстановитьАртикул()
    Если ПустаяСтрока(Код) Тогда
    УстановитьНовыйКод(); // нужно было лишь это добавить и все.
    КонецЕсли;

    Если (Артикул = "7981" ИЛИ Артикул = "7980") Тогда
    Если СтрДлина(Код) = 11 Тогда
    ЧастьКода = Прав(Код, 7);
    ИначеЕсли СтрДлина(Код) = 10 Тогда
    ЧастьКода = Прав(Код, 6);
    КонецЕсли;
    Артикул = Артикул + ЧастьКода;
    Иначе
    Артикул = Код;
    КонецЕсли;
    КонецПроцедуры
```
---
такие вещи необходимо выполнять асинхронно.
Записали элементы, регламентное задание посмотрело у кого не заполнен артикул, установила по правилу и еще раз записало элементы в БД.
---
Артикул уже заполнен ))) Надо его просто переформировать в зависимости от длины кода. Отсюда встает вопрос - а почему у кода может быть разная длина?
---
Етить, я не заметил......Уникальность, автонумерация вообще не интересует, видимо......
---
Пользователь в артикуле должен ввести либо 7980 или 7981. Затем при записи должны присвоиться ему часть цифр поля "Код".
---
Да вы поймите простую вещь: когда у вас нет еще элемента в БД, кода у него тоже нет.
Даже если получать код нового элемента до записи элемента в БД, то при определенных обстоятельствах можно словить дубль кода.
---
Окей, благодарю.
---
Я не знаю, но сейчас, если встать на реквизит "Код", то там явно видно, что есть пробел. Оттуда я и добавил проверку.
Я предлагал РЗ, но все были против.

Поэтому решил задать вопрос на форуме экспертам.
---
В какой момент хоть присваиваете?
---
Пробовал после записи, и перед записью
---
Годный хардкод...