Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=5506)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Справочник номенклатура установить префиксы по группам

Автор: bodka 01.12.11, 16:14

Подскажите пожалуйста, почему не работает этот код?

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

    

    

    
    КонецПроцедуры

Автор: pablo 01.12.11, 16:21

А как Вы определили, что код не работает?
Хотя можно догадаться, что вы ссылку на родителя сравниваете с наименованием родителя

Автор: bodka 01.12.11, 16:27

Цитата(pablo @ 01.12.11, 16:21) http://pro1c.org.ua/index.php?act=findpost&pid=37942
При создании нового элемента создается с артикулом "У", без разницы в какой группе


По рукам бы мне дал кто-нибудь... Вот так надо
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
            Если Родитель.Наименование = "Товары"  Тогда
    Префикс = "ТОВ";
Иначе
    Префикс = "У";
КонецЕсли;    
КонецПроцедуры

Автор: Vofka 01.12.11, 16:50

Цитата
По рукам бы мне дал кто-нибудь...

icon_smiley124.gif

Цитата
Вот так надо

Так выше вам так и написали. Почему бы не сказать http://pro1c.org.ua/index.php?showtopic=2314 человеку.

Автор: bodka 02.12.11, 14:14

Попробовал немного усложнить

Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
    
        Если Родитель.Наименование = "АвтоВертолетыГаражи" Тогда
        Префикс = "А";
    ИначеЕсли Родитель.Наименование = "АзбукаЛогикаПирамидкиКубикиКаталки" Тогда
        Префикс = "Аз";
    ИначеЕсли Родитель.Наименование = "БытоваяТехника" Тогда
        Префикс = "Б";
    Иначе
        СтандартнаяОбработка = Истина;
        КонецЕсли;
КонецПроцедуры


в 1 условии "АвтоВертолетыГаражи" ставится "Аз"
во 2 и 3 все правильно
Стандартная обработка не срабатывает?
Подскажите пожалуйста в чем подвох, хотя когда было только первые два условия, то все работало.

Автор: pablo 02.12.11, 14:25

Посмотрите в отладчике

Автор: Flexy 02.12.11, 14:26

Цитата(bodka @ 02.12.11, 14:14) *
Стандартная обработка не срабатывает?
Подскажите пожалуйста в чем подвох, хотя когда было только первые два условия, то все работало.

Конечно не срабатывает.Она ведь стоит в блоке Иначе.
По условию отрабатывает блок Если.

Автор: bodka 02.12.11, 14:42

Цитата(Flexy @ 02.12.11, 14:26) http://pro1c.org.ua/index.php?act=findpost&pid=37979
А почему тогда не срабатывает 1 блок, если я создаю элемент в этой группе, то ставится "Аз".

Изменил префикс для 1 группы на "Г" и по всем группам стало работать правильно... Вот только стандартная обработка не работает?

Автор: Flexy 02.12.11, 14:48

Попробуйте так

Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
    
        Если Родитель.Наименование = "АвтоВертолетыГаражи" Тогда
        Префикс = "А";
    ИначеЕсли Родитель.Наименование = "АзбукаЛогикаПирамидкиКубикиКаталки" Тогда
        Префикс = "Аз";
    ИначеЕсли Родитель.Наименование = "БытоваяТехника" Тогда
        Префикс = "Б";
   КонецЕсли;
КонецПроцедуры

Автор: logist 02.12.11, 17:00

Ужас какой... А почему для этих целей нельзя использовать артикул, например?
А что будет если кто-то изменит наименование родителя, не думали? Может логичнее сделать их предопределенными?

Автор: alex040269 02.12.11, 17:37

Цитата(Flexy @ 02.12.11, 15:48) *
Попробуйте так

Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
    
        Если Родитель.Наименование = "АвтоВертолетыГаражи" Тогда
        Префикс = "А";
    ИначеЕсли Родитель.Наименование = "АзбукаЛогикаПирамидкиКубикиКаталки" Тогда
        Префикс = "Аз";
    ИначеЕсли Родитель.Наименование = "БытоваяТехника" Тогда
        Префикс = "Б";
   КонецЕсли;
КонецПроцедуры


А если кто-то изменит наименование папки? Что тогда?

Автор: Flexy 02.12.11, 17:45

Цитата(alex040269 @ 02.12.11, 17:37) *
А если кто-то изменит наименование папки? Что тогда?

Я не в курсе.Не проверял.
Как вариант добавить
...
Иначе
СтандартнаяОбработка = Ложь;
Сообщить("Группа не найдена");
Возврат;

Или действительно делать группы предопределенными.

Автор: sava1 02.12.11, 20:50

Позволю себе 5 копеек.
Если уж коряжить в конфе - то проще добавить реквизит Префикс
и устанавливать в коде одной строчкой

Автор: Virgo 02.12.11, 21:05

Лучше создать Регистр сведений "Префиксы справочников" из двух измерений - "Справочник" и "Префикс". Потом в процедуре установки кода выгружать этот регистр в таблицу значений, отсортировать по убыванию уровня справочника и далее перебором строк проверять на принадлежность родителю и т.о. получить префикс.

Автор: Flexy 02.12.11, 21:49

Цитата(Virgo @ 02.12.11, 21:05) *
Лучше создать Регистр сведений "Префиксы справочников" из двух измерений - "Справочник" и "Префикс". Потом в процедуре установки кода выгружать этот регистр в таблицу значений, отсортировать по убыванию уровня справочника и далее перебором строк проверять на принадлежность родителю и т.о. получить префикс.

Имхо, автору это сложно будет реализовать.

Автор: alex040269 03.12.11, 20:07

Цитата(Flexy @ 02.12.11, 21:49) *
Имхо, автору это сложно будет реализовать.


зато полезно. можно взять на заметку и реализовать в будущем. на крайний случай - предопределенные значения и/или запрет изменения.

Автор: sava1 04.12.11, 16:41

создать Регистр сведений "Префиксы справочников" из двух измерений - "Справочник" и "Префикс".

Автору нужно изменять префикс в пределах справочника в зависимости от родителя...

Автор: Домовик 04.12.11, 23:12

та довідник Номенклатура звісно.


Bodka, уточнюйте у бухгалтерів, для чого їм це, бо побудуєте красивий будинок на піску.

крім того, що Родитель може хтось переіменувати, ще сам елемент (Товар) можна попереміщати по папкам, а якщо будете присвоювати новий префікс в новій папці - конфлікт по унікальності.



Читається алгорим між Найменуванням і префіксом - літери верхнього регістру можна взять. для унікальності щось додумати....+код...чи не поміститься...

Автор: bodka 09.12.11, 12:46

Оставил присвоение префикса по родителю...
Запретил создавать и редактировать группы... Пока устраивает...

Процедура ПриЗаписи(Отказ)
    Если ЭтоГруппа Тогда
        Отказ = Истина;
    КонецЕсли;
    
КонецПроцедуры

Автор: logist 09.12.11, 12:57

Цитата(bodka @ 09.12.11, 12:46) *
Запретил создавать и редактировать группы... Пока устраивает...

А если надо будет создать или отредактировать группу, Вы полезете временно править конфигурацию?... классное решение ))

Я бы на всякий случай пошел таким путем
Процедура ПриЗаписи(Отказ)
        Отказ = ЭтоГруппа И НЕ РольДоступна("ПолныеПрава");
КонецПроцедуры

Автор: Домовик 09.12.11, 13:40

Для чего это нужно бухгалтерам?
Может Вам программисты совсем другой путь подскажут. )

А если элемент будете перемещать из папки в папку?

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua