Доп реквизит в в иерархическом справочнике
Есть многоуровневый иерархический справочник номенклатур. Хочу добавить реквизит дополнительного кода. Например у номенкл. свой код 23000234 а доп код будет например вот таким TV. Это смотря в какой папке буду добавлять. Если в папке телефоны, то доп код TEL и т.д. И при добавлении номенклатуры в какой то в конкретной папке, хочу чтобы автоматом вставился эго доп код в соответствии папки. И поставить запрет на редактирование.
По теме из базы знаний
- Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки
- Мастер выгрузки ЛЮБЫХ данных (остатков, цен, картинок, иерархии, доп. реквизитов, характеристик, штрихкодов и т.д.) в CSV / XLS / XLSX / MXL / ODS / PDF / DBF для ЛЮБЫХ баз, работающих на платформе 8.3... и выше
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Перенос номенклатуры в характеристики и редактирование дополнительных реквизитов номенклатуры и характеристик в УТ 11, КА 2, ERP 2
- Программное создание характеристик с дополнительными реквизитами в УНФ 1.6
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) Набросал быстренько на упр. формах в 1С:Рознице (хотя без разницы где, лишь бы были доп реквизиты). Смысл такой:
1. В общих настройках включаем использование доп. реквизитов
2. Создаем общий реквизит для номенклатуры с именем "ДопКод" (тип строка, настраиваем доступность как желаем)
3. Создаем расширение с одной процедурой для формы номенклатуры "ПриСозданииНаСервере" (вызываем ее перед типовой) для заполнения реквизита, в ней и описываем наш алгоритм, в зависимости от папки-родителя
См. скриншоты, накидал и код, проверил, работает.
1. В общих настройках включаем использование доп. реквизитов
2. Создаем общий реквизит для номенклатуры с именем "ДопКод" (тип строка, настраиваем доступность как желаем)
3. Создаем расширение с одной процедурой для формы номенклатуры "ПриСозданииНаСервере" (вызываем ее перед типовой) для заполнения реквизита, в ней и описываем наш алгоритм, в зависимости от папки-родителя
См. скриншоты, накидал и код, проверил, работает.
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
НаименованиеПапки = Объект.Родитель.Наименование;
ДопКод = "";
Если СтрНайти(ВРег(НаименованиеПапки), "ТЕЛЕФОНЫ") Тогда
ДопКод = "TEL";
КонецЕсли;
ДопКод_реквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "ДопКод");
НоваяСтрока = Объект.ДополнительныеРеквизиты.Добавить();
НоваяСтрока.Свойство = ДопКод_реквизит;
НоваяСтрока.Значение = ДопКод;
НоваяСтрока.ТекстоваяСтрока = ДопКод;
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
(6) Вдобавок странный у Вас пример. Значение доп. кода нужно брать из группы (из доп. реквизита как бы). и ставить для нового элемента. И неплохо бы проверить, что текущий элемент не группа. Да, и нужно к КОДУ номенклатуры префикс добавлять, а не в доп. реквизит номенклатуры что-то писать.
Вообще это вполне адекватный запрос владельца ИБ.
Вообще это вполне адекватный запрос владельца ИБ.
Если мы говорим о типовых конфигурациях, то там доп. реквизиты доступны ток для элементов. В Вашем случае проще добавить реквизит к номенклатуре. Указать использование "Для групп". В обработке "ПриУстановкиНовогоКода" параметру "Префикс" вычислить нужный префикс. Только проверку вставить, что это текущий элемент не группа.
(3) Конфигурация не типовая и обычное приложение. Вы правы по поводу наследование. Но как реализовать его. Иерархия групп примерна такая орг-подразд1-телевизор-изогнутые-lg. Мне бы поставить в группе Телевизоры доп код TV, и наследовать его по всем вложенным папкам и элементам, чтобы при создании папки или элемента внутри папки телевизоры, автоматом вставилась доп код. Или создать доп реквизит для групп и элементов и внешней обработкой пройтись по всем вложенным папкам и элементам, установить значение TV. И потом воспользоваться обработчиком заполнения?
Вопрос еще актуален) Как я понимаю мне нужно наследовать значении папки. Доп реквизите поставил для групп и элементов. Иерархия имеет 5 уровней. Орган-Подраздел-Телевизоры-LED-LG. Поставил значение доп реквизита в папке телевизоры и хочу чтобы она наследовала по всем вложенным папкам и элементам.
(10) Зачем доп реквизит, если у Вас база самописная. Добавить реквизит в справочник и не партесь с доп. реквизитами. Тем более если не типовая, как устроен функционал доп. реквизитов. Как в типовой или свои велосипеды?
Добавили реквизит в справочник. В модуле объекта справочника, событие "ПриУстановкиНовогоКода" прописываете алгоритм получения префикса. Получили - присвоили его параметру "Префикс".
Добавили реквизит в справочник. В модуле объекта справочника, событие "ПриУстановкиНовогоКода" прописываете алгоритм получения префикса. Получили - присвоили его параметру "Префикс".
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
ДопПрефикс = ПолучитьДопКод(Родитель);
Если ЗначениеЗаполнено(ДопПрефикс) Тогда
Префикс = ДопПрефикс;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьДопКод(РодительСсылки)
Если ЗначениеЗаполнено(РодительСсылки.ДопКод) Тогда
Возврат РодительСсылки.ДопКод;
ИначеЕсли ЗначениеЗаполнено(РодительСсылки.Родитель) Тогда
Возврат ПолучитьДопКод(РодительСсылки.Родитель);
Иначе
Возврат "";
КонецЕсли;
КонецФункции
Показать
(12) Да, с этим разобрался, наследованием от родителя. Но задачу мне не правильно объяснили. Доп код должен иметь вот такой вот вид оказывается: TV1, TV2, TV3 ....... TV100 и тд. Если это я нахожусь в папке телевизоры. А если в папке ноутбуки NOTE1 NOTE2....... , Если в папке Телефоны то TEL1, TEL2........и.т.д . Получается как обычный код но с префиксом по соответствии папки.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)