При записи элемента справочника номенклатуры скопировать код в артикул

1. Aleck1281 05.03.25 16:17 Сейчас в теме
Пытаюсь при записи элемента номенклатуры скопировать автоматически сгенерированный код в артикул.
В процедуре ПриЗаписи модуля объекта добавляю:
Если Артикул="" Тогда
		Артикул=Код;
	КонецЕсли;

При трассировке реквизит заполняется, но когда карточка записалась, оказывается, что поле артикула пустое.
Пробовал написать так:
Если Артикул="" Тогда
		ЭтотОбъект.Артикул=Код;
	КонецЕсли;

Результат тот же.
Подскажите, что я не так делаю?
По теме из базы знаний
Найденные решения
9. miniogn 45 05.03.25 17:45 Сейчас в теме
Процедура ПередЗаписью(Отказ)
	ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	Если ДополнительныеСвойства.ЭтоНовый Тогда
		Реквизит1 = Код;
		Записать();
	КонецЕсли;
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Pavel Rodinchenko 05.03.25 16:23 Сейчас в теме
(1) Перенести код в процедуру ПередЗаписью
В ПриЗаписи объект уже записан в базу
3. Aleck1281 05.03.25 17:00 Сейчас в теме
(2) На этом моменте код еще не установлен
4. user2107191 05.03.25 17:19 Сейчас в теме
5. Aleck1281 05.03.25 17:32 Сейчас в теме
(4) Так я ж написал, что хочу скопировать автоматически сгенерированный код.
7. user2107191 05.03.25 17:44 Сейчас в теме
(5) Ну так сгенерируй автоматически...
6. Aleck1281 05.03.25 17:33 Сейчас в теме
(4) Программа где-то ж устанавливает и записывает код в элемент справочника?
8. user2107191 05.03.25 17:44 Сейчас в теме
(6) Конечно. Всего-то делов - надо почитать СП.
9. miniogn 45 05.03.25 17:45 Сейчас в теме
Процедура ПередЗаписью(Отказ)
	ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	Если ДополнительныеСвойства.ЭтоНовый Тогда
		Реквизит1 = Код;
		Записать();
	КонецЕсли;
КонецПроцедуры
Показать
10. Aleck1281 05.03.25 18:28 Сейчас в теме
(9) Достаточно было добавить Записать()

Если ЭтотОбъект.Артикул="" Тогда
		ЭтотОбъект.Артикул=Код;
		ЭтотОбъект.Записать();
	КонецЕсли;
11. miniogn 45 05.03.25 18:32 Сейчас в теме
(10) Не. Это уже не будет "автоматически сгенерированный код". Артикул будет переписан при ручном изменении кода.
12. Aleck1281 05.03.25 18:36 Сейчас в теме
(11) Так я ж поставил проверку на пустое значение. К тому же поставлен запрет на ручное изменение кода
13. user1206119 103 06.03.25 18:37 Сейчас в теме
Процедура ПередЗаписью(Отказ)

Если ЭтотОбъект.ЭтоНовый()=Ложь Тогда //Старый артикул не трогаем!!!
иначе
    ЭтотОбъект.Артикул  = ЭтотОбъект.УстановитьНовыйКод(); //Добавить префикс, если в справочнике есть.
КонецЕсли;
КонецПроцедуры;
Показать
14. user1936660 06.03.25 18:42 Сейчас в теме
(13)
Если ЭтотОбъект.ЭтоНовый()=Ложь Тогда //Старый артикул не трогаем!!!
иначе
У тебя мозг вывихнут.
user1206119; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот