Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Бэк-офисы платформы 1С

УНФ 1.6 Как сделать артикул номенклатуры уникальным ? : Бэк-офисы платформы 1С

16.04.2024 20:42


07.03.2018 23:58
leha_jazz
 
Цитата:
KirillHome Так же можно подсмотреть - как сделан контроль уникальности в УТ 11
Посмотрел УТ 11.4 : Артикул не уникален. УТ так же дает присваивать одинаковые значения Артикула в разных карточках номенклатуры.

Вот, не понимаю почему так реализована работа с Артикулами в 1С ? Может есть какой-то скрытый смысл ?
В моем понимании, в "Товароучетной программе" значение Артикула должно быть уникальным.
08.03.2018 00:12
KirillHome
 
По поводу контроля уникальности в УТ 11 - там проверяется наименование. И если он (контроль) включен - не даёт создать карточку с таким наименованием.
На основе этого можно сделать и работу с артикулом.

Поле артикул - действительно не уникальное поле.
Я вполне допускаю наличие одинакового артикула, к примеру, у мужских брюк и женской блузки.
У разных поставщиков - могут быть разные артикулы на одинаковый товар.

Чуть-чуть
Цитата:
Процесс присвоения артикула товарам начинается с производства, заканчивая свою технологическую цепочку на временном складе производства, где формируется окончательный артикул товара. Каждое предприятие разрабатывает свои артикулы. Они, конечно, могут пересекаться с другими торговыми организациями, но если только идет оборот одинаковых товаров и используется Европейский артикульный номер (ENA). В нем из тринадцатизначного кода берутся предпоследние три цифры. Это и будет артикул товара, но в основном он присваивается вручную и каждым предприятием - свой.
Возвращаясь к 1с.
Там нет такого "платформенного свойства" - уникальность.
То есть на уровне платформы мы не можем сказать, что какое-то поле "уникально" (кроме, пожалуй, поля "Код").
И если эта уникальность необходима - то мы должны организовывать её сами (к примеру, через справочник "Артикулы" и РС "Использованные артикулы"; или - через контроль "при записи" ("перед записью"?) объекта).

К примеру, поле ИНН - не уникально для контрагентов. То есть мы можем завести несколько контрагентов с одинаковым ИНН.
08.03.2018 13:18
Fomka
 
Цитата:
leha_jazz В моем понимании, в "Товароучетной программе" значение Артикула должно быть уникальным.
Вот у меня одежда. Под одним артикулом может быть десяток размеров. И это не только одежды касается.
Да, кто-то используется размерность в одной карточке в виде свойства. Но на мой взгляд это не так удобно.
Когда каждый размер это уникальная карточка номенклатуры со своим кодом то жить становится проще :)


Цитата:
KirillHome То есть на уровне платформы мы не можем сказать, что какое-то поле "уникально" (кроме, пожалуй, поля "Код").
И то с оговоркой. Оно может быть не уникальным в некоторых конфигурациях просто в виде настройки (прям флэшбэк, но не могу вспомнить где). Или, если в базе несколько юр лиц, то присваивание кодов идет в разрезе юр лиц и не обязательно с префиксами. Поэтому у одного и того же вида справочника или документа в каждом из юр лиц код может повторяться.
Но удобнее работать с префиксами, меньше путаницы.

ЗЫ Но этим и хороша 1С, немного манипуляций и у тебя уникально или не уникально все, что душе угодно :)
08.03.2018 13:41
KirillHome
 
Цитата:
Fomka И то с оговоркой. Оно может быть не уникальным в некоторых конфигурациях просто в виде настройки (прям флэшбэк, но не могу вспомнить где). Или, если в базе несколько юр лиц, то присваивание кодов идет в разрезе юр лиц и не обязательно с префиксами. Поэтому у одного и того же вида справочника или документа в каждом из юр лиц код может повторяться.
Но удобнее работать с префиксами, меньше путаницы.

ЗЫ Но этим и хороша 1С, немного манипуляций и у тебя уникально или не уникально все, что душе угодно :)
На сколько я помню полный код - всегда должен быть уникальный.
У нас не может быть двух товаров с кодом "1".
Но могут быть товары с кодом "1" и "00-00000001" и " 1"
Да, на печати, скорее всего, это будет выглядеть как 1, но это - разные, уникальные коды.
08.03.2018 17:51
Fomka
 
KirillHome, легко может :)
Если хочешь, то могу в понедельник в ЗУПе 3.1 показать сотрудников с одинаковым полным кодом, хотя этот справочник в принципе общий и к разным юр лицам отношения не имеет.
Еще полный код может быть случаться не уникальным в случае структуры с распределенными базами. Мелкие тонкости всякие, с которыми сам сталкивался.
09.03.2018 01:10
KirillHome
 
Fomka, да, в ЗУП-е даже ввели специальную настройку - "Контролируется уникальность табельных номеров" (настройка - "Кадровый учёт").
Для чего? Ну, возможно, что бы в текущих табельных номерах не было "дырок"? Не знаю.

А судя по коду вызова
Код:
		// Проверка уникальности кода справочника в пределах головного сотрудника.
		Если ГоловнойСотрудник = Ссылка
			Или ЭтоНовый() И ГоловнойСотрудник = ПолучитьСсылкуНового() Тогда
			КадровыйУчет.ПроверитьУникальностьТабельногоНомера(Код, Ссылка);
		КонецЕсли;
и обработки
Код:
Процедура ПроверитьУникальностьТабельногоНомера(ТабельныйНомер, Сотрудник) Экспорт
	
	Если Не ЗначениеЗаполнено(ТабельныйНомер) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Код", ТабельныйНомер);
	Запрос.УстановитьПараметр("Ссылка", Сотрудник);
	
	Запрос.Текст =
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
		|	Сотрудники.Ссылка
		|ИЗ
		|	Справочник.Сотрудники КАК Сотрудники
		|ГДЕ
		|	Сотрудники.Код = &Код
		|	И Сотрудники.ГоловнойСотрудник = Сотрудники.Ссылка
		|	И Сотрудники.Ссылка <> &Ссылка";
		
	РезультатЗапроса = Запрос.Выполнить();
	Если НЕ РезультатЗапроса.Пустой() Тогда
		
		ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru='Значение ""%1"" поля ""Таб. номер"" не уникально'"),
			ТабельныйНомер);
			
		ВызватьИсключение ТекстИсключения;
		
	КонецЕсли;
	
КонецПроцедуры
это "специально поломанный" функционал для внутреннего совместительства (все прочие коды не уникальными сделать у меня не получилось)
12.03.2018 10:20
Fomka
 
KirillHome, не, я имел ввиду без этой настройки. Хотя про нее в том числе писал до этого, но в какой то еще конфигурации видел похожее, ток не могу вспомнить где.
А вот например "уникальность" нумерации подразделений в ЗУПе :) И хочу заметить, что это штатным образом так сделано. В БП 3.0 тоже легко так сделать)

скрытое

(0,05Мб)
12.03.2018 17:57
KirillHome
 
Не буду спорить
Да, есть возможность создать элементы справочника, документы с неуникальным полем Код.

С другой стороны - это единственное поле, которое хоть как-то отвечает признаку "уникальность" (без использования механизма контроля объекта при записи, изменении).

Можно попробовать через регистр сведений (два регистра?) - "Занятые артикулы" (и, возможно, "Свободные артикулы").
Часовой пояс GMT +3, время: 20:42.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.