Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 06:38

Генерация артикула

Автор SkyNetYar, 29 ноя 2014, 16:46

0 Пользователей и 1 гость просматривают эту тему.

SkyNetYar

Доброго времени суток!
Розница 2.1 появилась потребность генерировать автоматически артикул при создании карточки номенклатуры,генерируется он нормально но при создании новой карточки он снова тот же, необходимо делать к артикулу +1 в значение ну и проверка дублей..

Справочник.Номенклатура.ФормаЭлемента.ПриСозданииНаСервере
Если НЕ ЗначениеЗаполнено(Объект.Артикул) Тогда
Объект.Артикул = ор_ОбщийМодуль.ПолучитьНовыйАртикул();
КонецЕсли;

Общий модуль.ор_ОбщийМодуль.Модуль
Функция ПолучитьНовыйАртикул() Экспорт

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Артикул ПОДОБНО ""_____""
| И (Номенклатура.Артикул ПОДОБНО ""%1%""
| ИЛИ Номенклатура.Артикул ПОДОБНО ""%2%""
| ИЛИ Номенклатура.Артикул ПОДОБНО ""%3%""
| ИЛИ Номенклатура.Артикул ПОДОБНО ""%4%""
| ИЛИ Номенклатура.Артикул ПОДОБНО ""%5%""
| ИЛИ Номенклатура.Артикул ПОДОБНО ""%6%""
| ИЛИ Номенклатура.Артикул ПОДОБНО ""%7%""
| ИЛИ Номенклатура.Артикул ПОДОБНО ""%8%""
| ИЛИ Номенклатура.Артикул ПОДОБНО ""%9%"")
|
|УПОРЯДОЧИТЬ ПО
| Артикул УБЫВ";
Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();
Строка = Строка(Результат.Артикул);
СтрокаЧисел = "";
Для Индекс = 1 По СтрДлина(Строка) Цикл
Символ = Сред(Строка, Индекс, 1);
Если КодСимвола(Символ) >= 48 И КодСимвола(Символ) <= 57 Тогда
СтрокаЧисел = СтрокаЧисел + Символ;
КонецЕсли;
КонецЦикла;

СледАртикул = "";
Попытка
СледАртикул = Число(СтрокаЧисел) + 1;
Исключение
КонецПопытки;

Возврат Формат(СледАртикул, "ЧГ=0");

КонецФункции

Функция ПроверитьАртикулНаДубликат( Номенклатура ) Экспорт

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Артикул = &Артикул";
Если НЕ Номенклатура.ЭтоНовый() Тогда
Запрос.Текст = Запрос.Текст + " И Номенклатура.Ссылка <> &Номенклатура";
КонецЕсли;
Запрос.УстановитьПараметр("Артикул", Номенклатура.Артикул);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура.Ссылка);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда

Возврат ПолучитьНовыйАртикул();

КонецЕсли;

Возврат Номенклатура.Артикул;

КонецФункции

SkyNetYar

Ну или может у кого есть свой метод генерации артикула и проверки на дубли с добавлением нового +1 ?

freez1301

судя по всему результат запроса всегда возвращает одну и ту же позицию номенклатуры.
Может использовать что то типа МАКС(Артикул) ?

SkyNetYar

Ну тут нестандартный подход к созданию артикула ,он жестко 6-ти значный с 1 начинается,вобщем то я разобрался,но хотелось бы увидеть простой способ генерации штрихкода с задаваемыми параметрами..

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск