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

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) Тогда нумератор свой делайте. Перед записью формируйте этот доп. код, если не заполнен. Делов то.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

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

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)