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 142 13.09.18 14:33 Сейчас в теме
Что отладчик показывает при проходе? Значение увеличивается на 1?
3. andre solovij 13.09.18 14:38 Сейчас в теме
в отладчике не смотрел увеличения
4. user633533_encantado 2 13.09.18 14:38 Сейчас в теме
Что за уродливое добавление лидирующий нулей:

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

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

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

Мне что надо, процедура которая будет при создании новой номенклатуры формировать автоматически уникальный Артикул желательно с префиксом "МК"
9. user633533_encantado 2 13.09.18 15:17 Сейчас в теме
(8) А максимальный артикул какой ?
11. bmk74 13 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С
Салехард
зарплата от 80 000 руб. до 200 000 руб.
Полный день

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


Программист 1С
Санкт-Петербург
Полный день

Программист 1С
Санкт-Петербург
Полный день