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

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 значений
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)