Доп реквизит в в иерархическом справочнике

1. El_Ninio 13.01.20 17:41 Сейчас в теме
Есть многоуровневый иерархический справочник номенклатур. Хочу добавить реквизит дополнительного кода. Например у номенкл. свой код 23000234 а доп код будет например вот таким TV. Это смотря в какой папке буду добавлять. Если в папке телефоны, то доп код TEL и т.д. И при добавлении номенклатуры в какой то в конкретной папке, хочу чтобы автоматом вставился эго доп код в соответствии папки. И поставить запрет на редактирование.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. limonas 10 13.01.20 19:27 Сейчас в теме
(1) Набросал быстренько на упр. формах в 1С:Рознице (хотя без разницы где, лишь бы были доп реквизиты). Смысл такой:
1. В общих настройках включаем использование доп. реквизитов
2. Создаем общий реквизит для номенклатуры с именем "ДопКод" (тип строка, настраиваем доступность как желаем)
3. Создаем расширение с одной процедурой для формы номенклатуры "ПриСозданииНаСервере" (вызываем ее перед типовой) для заполнения реквизита, в ней и описываем наш алгоритм, в зависимости от папки-родителя
См. скриншоты, накидал и код, проверил, работает.

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
	
	Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		НаименованиеПапки = Объект.Родитель.Наименование;
		
		ДопКод = "";
		Если СтрНайти(ВРег(НаименованиеПапки), "ТЕЛЕФОНЫ") Тогда
			ДопКод = "TEL";
		КонецЕсли; 
		
		ДопКод_реквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "ДопКод");
		
                НоваяСтрока = Объект.ДополнительныеРеквизиты.Добавить();
		НоваяСтрока.Свойство = ДопКод_реквизит;
		НоваяСтрока.Значение = ДопКод;
		НоваяСтрока.ТекстоваяСтрока = ДопКод;
		
		
	КонецЕсли;
	
КонецПроцедуры
Показать
Прикрепленные файлы:
El_Ninio; +1 Ответить
7. PhoenixAOD 62 14.01.20 00:48 Сейчас в теме
(6)
2. Создаем общий реквизит для номенклатуры с именем "ДопКод" (тип строка, настраиваем доступность как желаем)
вот это не понятно , зачем лезть в конфу, когда можно включить режим совместимости 8.3.12 и запилить этот реквизит сразу в расширение.
8. TimurD 6 14.01.20 10:22 Сейчас в теме
(6) Доп. реквизит для группы нужен. А в типовых ТЧ ДопоплнительныеРеквизиты доступна ток для элементов. Самое простое (как уже говорил ранее) это добавить нормальный реквизит, сделать доступным ток для групп. И далее по тексту...
9. TimurD 6 14.01.20 10:25 Сейчас в теме
(6) Вдобавок странный у Вас пример. Значение доп. кода нужно брать из группы (из доп. реквизита как бы). и ставить для нового элемента. И неплохо бы проверить, что текущий элемент не группа. Да, и нужно к КОДУ номенклатуры префикс добавлять, а не в доп. реквизит номенклатуры что-то писать.
Вообще это вполне адекватный запрос владельца ИБ.
2. TonyaKhomich 5 13.01.20 17:49 Сейчас в теме
А зачем? И Вопрос не совсем понятен, что Вы хотите узнать?
3. TimurD 6 13.01.20 17:53 Сейчас в теме
Если мы говорим о типовых конфигурациях, то там доп. реквизиты доступны ток для элементов. В Вашем случае проще добавить реквизит к номенклатуре. Указать использование "Для групп". В обработке "ПриУстановкиНовогоКода" параметру "Префикс" вычислить нужный префикс. Только проверку вставить, что это текущий элемент не группа.
4. TonyaKhomich 5 13.01.20 17:55 Сейчас в теме
(3)Речь не о группе, а об элементе) а коТа прописать нельзя) его гладить и кормить надо!
5. TimurD 6 13.01.20 18:00 Сейчас в теме
(4) Я чуть не верно написал сначала
11. El_Ninio 15.01.20 14:46 Сейчас в теме
(3) Конфигурация не типовая и обычное приложение. Вы правы по поводу наследование. Но как реализовать его. Иерархия групп примерна такая орг-подразд1-телевизор-изогнутые-lg. Мне бы поставить в группе Телевизоры доп код TV, и наследовать его по всем вложенным папкам и элементам, чтобы при создании папки или элемента внутри папки телевизоры, автоматом вставилась доп код. Или создать доп реквизит для групп и элементов и внешней обработкой пройтись по всем вложенным папкам и элементам, установить значение TV. И потом воспользоваться обработчиком заполнения?
10. El_Ninio 15.01.20 11:47 Сейчас в теме
Вопрос еще актуален) Как я понимаю мне нужно наследовать значении папки. Доп реквизите поставил для групп и элементов. Иерархия имеет 5 уровней. Орган-Подраздел-Телевизоры-LED-LG. Поставил значение доп реквизита в папке телевизоры и хочу чтобы она наследовала по всем вложенным папкам и элементам.
12. TimurD 6 16.01.20 11:59 Сейчас в теме
(10) Зачем доп реквизит, если у Вас база самописная. Добавить реквизит в справочник и не партесь с доп. реквизитами. Тем более если не типовая, как устроен функционал доп. реквизитов. Как в типовой или свои велосипеды?
Добавили реквизит в справочник. В модуле объекта справочника, событие "ПриУстановкиНовогоКода" прописываете алгоритм получения префикса. Получили - присвоили его параметру "Префикс".

Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
	ДопПрефикс = ПолучитьДопКод(Родитель);
	
	Если ЗначениеЗаполнено(ДопПрефикс) Тогда
		Префикс = ДопПрефикс;
	КонецЕсли;
КонецПроцедуры

Функция ПолучитьДопКод(РодительСсылки)
	Если ЗначениеЗаполнено(РодительСсылки.ДопКод) Тогда
		Возврат РодительСсылки.ДопКод;
	ИначеЕсли ЗначениеЗаполнено(РодительСсылки.Родитель) Тогда 
		Возврат ПолучитьДопКод(РодительСсылки.Родитель);
	Иначе
		Возврат "";
	КонецЕсли;
КонецФункции
Показать
13. El_Ninio 16.01.20 14:26 Сейчас в теме
(12) Да, с этим разобрался, наследованием от родителя. Но задачу мне не правильно объяснили. Доп код должен иметь вот такой вот вид оказывается: TV1, TV2, TV3 ....... TV100 и тд. Если это я нахожусь в папке телевизоры. А если в папке ноутбуки NOTE1 NOTE2....... , Если в папке Телефоны то TEL1, TEL2........и.т.д . Получается как обычный код но с префиксом по соответствии папки.
14. TimurD 6 16.01.20 15:48 Сейчас в теме
(13) Получается TV это префикс + своя нумерация в каждой папке (причем числовая)? Я понимаю, если это для артикула делалось, но код то зачем трогать? Лучше, если Вы объясните для этого нужно использовать артикул.
15. El_Ninio 16.01.20 16:00 Сейчас в теме
(14)Код не трогаем. Доп код для парсинга сайта. Схему не я придумал, а люди которые делают проект. Мне просто сказали делать вот так) Код номенклатуры остаются просто добавляется доп реквизит
16. El_Ninio 16.01.20 17:28 Сейчас в теме
(14)Своя нумерация в каждой папке необязательно. Главное чтобы стояло префикс и число соответствующей папке. Если товар создается вложенных папках папки телевизор тогда префикс должен быть TV а если вложенных папках папки Ноутбук то NOTE и так далее
17. TimurD 6 16.01.20 17:34 Сейчас в теме
(16) Тогда нумератор свой делайте. Перед записью формируйте этот доп. код, если не заполнен. Делов то.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот