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

1. andre solovij 13.09.18 14:28 Сейчас в теме
Доброго Дня! УПП 1.3 (1.3.110.2) При создании новой номенклатуры нужно, что бы автоматически заполнялся Артикул, написал процедуру, и вставил нее ПередЗаписью

но вот в чем дело, артикул создается, и всегда один и тот же, нет уникальности, до этого в справочник номенклатуры были введены в ручном режиме по некоторым позициям Артикулы
вот сама процедура, подскажите что делаю не так

Процедура ЗаполнитьАртикул(ЭтотОбъект) 
	Максимальный = 0;
	Запрос = Новый Запрос;
	Запрос.Текст="ВЫБРАТЬ
	             |	МАКСИМУМ(Номенклатура.Артикул) КАК Артикул
	             |ИЗ
	             |	Справочник.Номенклатура КАК Номенклатура
	             |
	             |УПОРЯДОЧИТЬ ПО
	             |	Артикул";
				 
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() = 0 Тогда
		ЭтотОбъект.Артикул = "000001";
	Иначе	
		 Выборка.Следующий();
		Максимальный = Число(Выборка.Артикул);
		
		НомерАртикула = Максимальный +1;
		Если НомерАртикула < 10 Тогда
			ЭтотОбъект.Артикул = "00000"+Строка(НомерАртикула);
		ИначеЕсли НомерАртикула < 100 Тогда
			ЭтотОбъект.Артикул = "0000"+Строка(НомерАртикула);
		ИначеЕсли НомерАртикула < 1000 Тогда
			ЭтотОбъект.Артикул = "000"+Строка(НомерАртикула);
		ИначеЕсли НомерАртикула < 10000 Тогда
			ЭтотОбъект.Артикул = "00"+СтрЗаменить(Строка(НомерАртикула),Символ(160),"");
		ИначеЕсли НомерАртикула < 100000 Тогда
			ЭтотОбъект.Артикул = "0"+СтрЗаменить(Строка(НомерАртикула),Символ(160),"");
		Иначе 
			ЭтотОбъект.Артикул = Строка(НомерАртикула);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
Показать
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tolyan_ekb 104 13.09.18 14:33 Сейчас в теме
Что отладчик показывает при проходе? Значение увеличивается на 1?
+
3. andre solovij 13.09.18 14:38 Сейчас в теме
в отладчике не смотрел увеличения
+
4. user633533_encantado 11 13.09.18 14:38 Сейчас в теме
Что за уродливое добавление лидирующий нулей:

Формат(Число(Артикул), "ЧЦ=7; ЧВН=; ЧГ=")

В консоле глянь, что у тебя твой запрос по артикулам выдает.
+
5. andre solovij 13.09.18 14:53 Сейчас в теме
Отладчик Запросов выдает один последний вводимый Артикул
+
6. andre solovij 13.09.18 14:54 Сейчас в теме
Если я ставлю Реквизит Артикула тип "Число" то тогда нумерация по Артикулам работает, а при тип "Строка" нет
+
7. bmk74 234 13.09.18 14:59 Сейчас в теме
Иначе
ЭтотОбъект.Артикул = Строка(НомерАртикула);

Что то чувствую я тут вот это отрабатывает
Добавте
|УПОРЯДОЧИТЬ ПО
| Артикул Убыв
";
+
8. andre solovij 13.09.18 15:16 Сейчас в теме
пробовал, Убыв ставить , ничего не помогает, при создании новой номенклатуры, формируется один и тот же артикул "000005"

Мне что надо, процедура которая будет при создании новой номенклатуры формировать автоматически уникальный Артикул желательно с префиксом "МК"
+
9. user633533_encantado 11 13.09.18 15:17 Сейчас в теме
(8) А максимальный артикул какой ?
+
11. bmk74 234 13.09.18 15:36 Сейчас в теме
(8)
ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| Артикул УБЫВ

Если у вас есть в артикуле кроме цифр и букв, то вам надо делать немного по другому
ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Справочник.Номенклатура.Артикул ПОДОБНО "MK[0-9][0-9][0-9][0-9][0-9][0-9]"
|УПОРЯДОЧИТЬ ПО
| Артикул УБЫВ

Запрос.Выполнить.Выбрать()
Если Запрос.Следующий() Тогда
НомерЧислом = Число(Прав(Выборка.Артикул,6))+1;
НовАртикул = "МК"+Формат(НомерЧислом,"ЧЦ=6; ЧВН=; ЧГ=");
ИНАЧЕ
НовАртикул = "МК000001";
Показать
+
10. andre solovij 13.09.18 15:35 Сейчас в теме
6 цифр плюс префикс итого 8 значений
+
Внимание! Тема сдана в архив

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