Установка Артикула при создании новой номенклатуры

1. user1304317 20.10.20 15:45 Сейчас в теме
При первой записи не отрабатывается запись. Только после повторной записи - присваивается нужный код

	
Функция СТ_УстановитьАртикулКод()
	Если (Артикул = "7981" ИЛИ Артикул = "7980") Тогда
		Если СтрДлина(Код) = 11 Тогда
			ЧастьКода = Прав(Код, 7);
		ИначеЕсли СтрДлина(Код) = 10 Тогда
			ЧастьКода = Прав(Код, 6);
		КонецЕсли;
		Возврат Артикул + ЧастьКода;
	Иначе
		Возврат Код;
	КонецЕсли;
КонецФункции

Показать
По теме из базы знаний
Найденные решения
17. user1304317 22.10.20 10:08 Сейчас в теме
(3)
(15)
(2)
ИМХО, все просто.
Добавил процедуру перед записью с проверкой ЭтоНовый.
Процедура СТ_УстановитьАртикул()
	Если ПустаяСтрока(Код) Тогда
		УстановитьНовыйКод(); // нужно было лишь это добавить и все.
	КонецЕсли;
	
	Если (Артикул = "7981" ИЛИ Артикул = "7980") Тогда
		Если СтрДлина(Код) = 11 Тогда
			ЧастьКода = Прав(Код, 7);
		ИначеЕсли СтрДлина(Код) = 10 Тогда
			ЧастьКода = Прав(Код, 6);
		КонецЕсли;
		Артикул =  Артикул + ЧастьКода;
	Иначе
		Артикул =  Код;
	КонецЕсли;
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Torin 799 20.10.20 15:48 Сейчас в теме
(1)Используй этот Код в
Процедура ПослеЗаписи()
, так как КОД еще не присвоен!
5. FatPanzer 20.10.20 15:58 Сейчас в теме
(2) Нууу... Два раза записывать придется. Это если форму не закрывать. А если это срабатывает при Сохранить и Закрыть - то и записи никакой не будет уже...

Вообще что за фигня непонятная. Длина Кода какая-то... Если он устанавливается программно - то его можно получить еще перед записью... Если он устанавливается автоматически - то причем тут его длина?
6. user1304317 20.10.20 15:59 Сейчас в теме
(5) Потому что, кто-то из разработчиков добавил в момент внедрения два проблема справа. Якобы кто-то писал об этом ТЗ.
10. user1304317 20.10.20 16:03 Сейчас в теме
(5) Тут вы права, что нужно два раза записывать.
11. user1304317 20.10.20 16:04 Сейчас в теме
17. user1304317 22.10.20 10:08 Сейчас в теме
(3)
(15)
(2)
ИМХО, все просто.
Добавил процедуру перед записью с проверкой ЭтоНовый.
Процедура СТ_УстановитьАртикул()
	Если ПустаяСтрока(Код) Тогда
		УстановитьНовыйКод(); // нужно было лишь это добавить и все.
	КонецЕсли;
	
	Если (Артикул = "7981" ИЛИ Артикул = "7980") Тогда
		Если СтрДлина(Код) = 11 Тогда
			ЧастьКода = Прав(Код, 7);
		ИначеЕсли СтрДлина(Код) = 10 Тогда
			ЧастьКода = Прав(Код, 6);
		КонецЕсли;
		Артикул =  Артикул + ЧастьКода;
	Иначе
		Артикул =  Код;
	КонецЕсли;
КонецПроцедуры
Показать
4. nomad_irk 76 20.10.20 15:58 Сейчас в теме
(1)такие вещи необходимо выполнять асинхронно.
Записали элементы, регламентное задание посмотрело у кого не заполнен артикул, установила по правилу и еще раз записало элементы в БД.
7. FatPanzer 20.10.20 16:00 Сейчас в теме
(4) Артикул уже заполнен ))) Надо его просто переформировать в зависимости от длины кода. Отсюда встает вопрос - а почему у кода может быть разная длина?
8. nomad_irk 76 20.10.20 16:02 Сейчас в теме
(7)Етить, я не заметил......Уникальность, автонумерация вообще не интересует, видимо......
12. user1304317 20.10.20 16:04 Сейчас в теме
(8) Пользователь в артикуле должен ввести либо 7980 или 7981. Затем при записи должны присвоиться ему часть цифр поля "Код".
15. nomad_irk 76 20.10.20 16:23 Сейчас в теме
(12)Да вы поймите простую вещь: когда у вас нет еще элемента в БД, кода у него тоже нет.
Даже если получать код нового элемента до записи элемента в БД, то при определенных обстоятельствах можно словить дубль кода.
16. user1304317 20.10.20 16:24 Сейчас в теме
9. user1304317 20.10.20 16:03 Сейчас в теме
(7) Я не знаю, но сейчас, если встать на реквизит "Код", то там явно видно, что есть пробел. Оттуда я и добавил проверку.
Я предлагал РЗ, но все были против.

Поэтому решил задать вопрос на форуме экспертам.
13. RocKeR_13 1348 20.10.20 16:20 Сейчас в теме
(1) В какой момент хоть присваиваете?
14. user1304317 20.10.20 16:22 Сейчас в теме
(13) Пробовал после записи, и перед записью
3. FatPanzer 20.10.20 15:55 Сейчас в теме
Оставьте свое сообщение

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