• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы lira89
  • Дата начала
L

lira89

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

gorlanovmax

Попробуйте вот такую команду перед "ВыбратьЭлементы()"

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

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

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

vbs

Видимо, основное представление в справочнике установлено "в виде наименования".
Если нужно поменять наименование, сделай настройку "в виде кода", а потом верни обратно
 
G

gorlanovmax

Видимо, основное представление в справочнике установлено "в виде наименования".
Если нужно поменять наименование, сделай настройку "в виде кода", а потом верни обратно

ПорядокРеквизита тоже должен сработать
 
L

lira89

Для выборки по кодам используется процедура ПорядокКодов()
Вот спасибо, вот это помогло как надо))) А ПорядокРеквизита("Код") не сработал, там вроде надо устанавливать признак Сортировка, поэтому и выдавал ошибку.
 
V

vbs

Без установки способа выборки нельзя менять наименование, если основное представление "В виде наименования"
и менять код, если оно "В виде кода". В этих случаях делаем выборку по другому параметру
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!