KirillHome➤ Так же можно подсмотреть - как сделан контроль уникальности в УТ 11
Посмотрел УТ 11.4 : Артикул не уникален. УТ так же дает присваивать одинаковые значения Артикула в разных карточках номенклатуры.
Вот, не понимаю почему так реализована работа с Артикулами в 1С ? Может есть какой-то скрытый смысл ?
В моем понимании, в "Товароучетной программе" значение Артикула должно быть уникальным.
По поводу контроля уникальности в УТ 11 - там проверяется наименование. И если он (контроль) включен - не даёт создать карточку с таким наименованием.
На основе этого можно сделать и работу с артикулом.
Поле артикул - действительно не уникальное поле.
Я вполне допускаю наличие одинакового артикула, к примеру, у мужских брюк и женской блузки.
У разных поставщиков - могут быть разные артикулы на одинаковый товар.
Чуть-чуть
Цитата:
Процесс присвоения артикула товарам начинается с производства, заканчивая свою технологическую цепочку на временном складе производства, где формируется окончательный артикул товара. Каждое предприятие разрабатывает свои артикулы. Они, конечно, могут пересекаться с другими торговыми организациями, но если только идет оборот одинаковых товаров и используется Европейский артикульный номер (ENA). В нем из тринадцатизначного кода берутся предпоследние три цифры. Это и будет артикул товара, но в основном он присваивается вручную и каждым предприятием - свой.
Возвращаясь к 1с.
Там нет такого "платформенного свойства" - уникальность.
То есть на уровне платформы мы не можем сказать, что какое-то поле "уникально" (кроме, пожалуй, поля "Код").
И если эта уникальность необходима - то мы должны организовывать её сами (к примеру, через справочник "Артикулы" и РС "Использованные артикулы"; или - через контроль "при записи" ("перед записью"?) объекта).
К примеру, поле ИНН - не уникально для контрагентов. То есть мы можем завести несколько контрагентов с одинаковым ИНН.
leha_jazz➤ В моем понимании, в "Товароучетной программе" значение Артикула должно быть уникальным.
Вот у меня одежда. Под одним артикулом может быть десяток размеров. И это не только одежды касается.
Да, кто-то используется размерность в одной карточке в виде свойства. Но на мой взгляд это не так удобно.
Когда каждый размер это уникальная карточка номенклатуры со своим кодом то жить становится проще :)
Цитата:
KirillHome➤ То есть на уровне платформы мы не можем сказать, что какое-то поле "уникально" (кроме, пожалуй, поля "Код").
И то с оговоркой. Оно может быть не уникальным в некоторых конфигурациях просто в виде настройки (прям флэшбэк, но не могу вспомнить где). Или, если в базе несколько юр лиц, то присваивание кодов идет в разрезе юр лиц и не обязательно с префиксами. Поэтому у одного и того же вида справочника или документа в каждом из юр лиц код может повторяться.
Но удобнее работать с префиксами, меньше путаницы.
ЗЫ Но этим и хороша 1С, немного манипуляций и у тебя уникально или не уникально все, что душе угодно :)
Fomka➤ И то с оговоркой. Оно может быть не уникальным в некоторых конфигурациях просто в виде настройки (прям флэшбэк, но не могу вспомнить где). Или, если в базе несколько юр лиц, то присваивание кодов идет в разрезе юр лиц и не обязательно с префиксами. Поэтому у одного и того же вида справочника или документа в каждом из юр лиц код может повторяться.
Но удобнее работать с префиксами, меньше путаницы.
ЗЫ Но этим и хороша 1С, немного манипуляций и у тебя уникально или не уникально все, что душе угодно :)
На сколько я помню полный код - всегда должен быть уникальный.
У нас не может быть двух товаров с кодом "1".
Но могут быть товары с кодом "1" и "00-00000001" и " 1"
Да, на печати, скорее всего, это будет выглядеть как 1, но это - разные, уникальные коды.
KirillHome, легко может :)
Если хочешь, то могу в понедельник в ЗУПе 3.1 показать сотрудников с одинаковым полным кодом, хотя этот справочник в принципе общий и к разным юр лицам отношения не имеет.
Еще полный код может быть случаться не уникальным в случае структуры с распределенными базами. Мелкие тонкости всякие, с которыми сам сталкивался.
Fomka, да, в ЗУП-е даже ввели специальную настройку - "Контролируется уникальность табельных номеров" (настройка - "Кадровый учёт").
Для чего? Ну, возможно, что бы в текущих табельных номерах не было "дырок"? Не знаю.
А судя по коду вызова
Код:
// Проверка уникальности кода справочника в пределах головного сотрудника.
Если ГоловнойСотрудник = Ссылка
Или ЭтоНовый() И ГоловнойСотрудник = ПолучитьСсылкуНового() Тогда
КадровыйУчет.ПроверитьУникальностьТабельногоНомера(Код, Ссылка);
КонецЕсли;
и обработки
Код:
Процедура ПроверитьУникальностьТабельногоНомера(ТабельныйНомер, Сотрудник) Экспорт
Если Не ЗначениеЗаполнено(ТабельныйНомер) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Код", ТабельныйНомер);
Запрос.УстановитьПараметр("Ссылка", Сотрудник);
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| Сотрудники.Ссылка
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.Код = &Код
| И Сотрудники.ГоловнойСотрудник = Сотрудники.Ссылка
| И Сотрудники.Ссылка <> &Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Значение ""%1"" поля ""Таб. номер"" не уникально'"),
ТабельныйНомер);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецПроцедуры
это "специально поломанный" функционал для внутреннего совместительства (все прочие коды не уникальными сделать у меня не получилось)
KirillHome, не, я имел ввиду без этой настройки. Хотя про нее в том числе писал до этого, но в какой то еще конфигурации видел похожее, ток не могу вспомнить где.
А вот например "уникальность" нумерации подразделений в ЗУПе :) И хочу заметить, что это штатным образом так сделано. В БП 3.0 тоже легко так сделать)
Не буду спорить
Да, есть возможность создать элементы справочника, документы с неуникальным полем Код.
С другой стороны - это единственное поле, которое хоть как-то отвечает признаку "уникальность" (без использования механизма контроля объекта при записи, изменении).
Можно попробовать через регистр сведений (два регистра?) - "Занятые артикулы" (и, возможно, "Свободные артикулы").