Наименование справочника в 1с77

lira89

Well-known member
12.03.2010
154
0
#1
Здравствуйте. столкнулась с такой проблемой. Есть справочник "Учебные группы", в котором наименование формируется путем слияния трех реквизитов следующим образом:
Код:
Процедура ПриЗаписи()
Наименование = СокрЛП(Префикс)+СокрЛП(НомерКурса)+СокрЛП(НомерГруппы);
Записать();
КонецПроцедуры
Есть обработка, которая должна увеличить номер курса (т.е. реквизит НомерКурса=НомерКурса+1 ) и соответственно должно измениться наименование элемента в этом справочнике в зависимости от измененного курса. вот кусок кода обработки, где происходит изменение и выскакивает ошибка:
Код:
Пока СпрУчГруппы.ПолучитьЭлемент() = 1 Цикл
СпрУчГруппы.НомерКурса=СпрУчГруппы.НомерКурса+1;
СпрУчГруппы.Наименование = СокрЛП(СпрУчГруппы.Префикс)+СокрЛП(СпрУчГруппы.НомерКурса)+СокрЛП(СпрУчГруппы.НомерГруппы);
СпрУчГруппы.Записать();
КонецЦикла;
При запуске обработки выдает ошибку:
СпрУчГруппы.Наименование = СокрЛП(СпрУчГруппы.Префикс)+СокрЛП(СпрУчГруппы.НомерКурса)+СокрЛП(СпрУчГруппы.Но
мерГруппы);
{Обработка.ПереводНаСледКурс.Форма.Модуль(12)}: Изменено Наименование! Может быть нарушена последовательность выборки!
Вопросы:
1 Что это за ошибка и как ее исправить?
2 Почему при выполнении кода СпрУчГруппы.Записать(); действие не переходит в процедуру ПриЗаписи() в форме элемента справочника "Учебные группы" , а приходиться заново формировать Наименование в обработке?
 

gorlanovmax

Well-known member
19.06.2008
286
0
#2
Попробуйте вот такую команду перед "ВыбратьЭлементы()"

ПорядокРеквизита(<?>); (вставить реквизит "Код")
OrderByAttribute(<?>);
Синтаксис:
ПорядокРеквизита(<ИмяРеквизита>)
Назначение:
Установить порядок выборки элементов справочника по возрастанию значения реквизита.
Параметры:
<ИмяРеквизита> - строка с именем реквизита, по возрастанию значений которого выполняется выборка.

Тогда у Вас выборка будет не по наименованию, а по коду. Вполне вероятно, что перестанет ругаться.

Процедура при записи у Вас не срабатывет, потому что Вы меняете элемент программно. Предопределенные процедуры срабатывеют только, если Вы работаете с документом интерактивно.
 

vbs

Well-known member
18.02.2007
1 708
1
#3
Видимо, основное представление в справочнике установлено "в виде наименования".
Если нужно поменять наименование, сделай настройку "в виде кода", а потом верни обратно
 

gorlanovmax

Well-known member
19.06.2008
286
0
#5
Видимо, основное представление в справочнике установлено "в виде наименования".
Если нужно поменять наименование, сделай настройку "в виде кода", а потом верни обратно
ПорядокРеквизита тоже должен сработать
 

lira89

Well-known member
12.03.2010
154
0
#7
Для выборки по кодам используется процедура ПорядокКодов()
Вот спасибо, вот это помогло как надо))) А ПорядокРеквизита("Код") не сработал, там вроде надо устанавливать признак Сортировка, поэтому и выдавал ошибку.
 

vbs

Well-known member
18.02.2007
1 708
1
#8
Без установки способа выборки нельзя менять наименование, если основное представление "В виде наименования"
и менять код, если оно "В виде кода". В этих случаях делаем выборку по другому параметру