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

Тема в разделе "1C и всё что с ней связано", создана пользователем lira89, 16 авг 2010.

  1. lira89

    lira89 Well-Known Member

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

    gorlanovmax Well-Known Member
    1C Team

    Регистрация:
    19 июн 2008
    Сообщения:
    286
    Симпатии:
    0
    Попробуйте вот такую команду перед "ВыбратьЭлементы()"

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

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

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Видимо, основное представление в справочнике установлено "в виде наименования".
    Если нужно поменять наименование, сделай настройку "в виде кода", а потом верни обратно
     
  4. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Спасибо за помощь)
     
  5. gorlanovmax

    gorlanovmax Well-Known Member
    1C Team

    Регистрация:
    19 июн 2008
    Сообщения:
    286
    Симпатии:
    0
    ПорядокРеквизита тоже должен сработать
     
  6. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Подобное не прокатит. Для выборки по кодам используется процедура ПорядокКодов()
     
  7. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Вот спасибо, вот это помогло как надо))) А ПорядокРеквизита("Код") не сработал, там вроде надо устанавливать признак Сортировка, поэтому и выдавал ошибку.
     
  8. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Без установки способа выборки нельзя менять наименование, если основное представление "В виде наименования"
    и менять код, если оно "В виде кода". В этих случаях делаем выборку по другому параметру
     
Загрузка...

Поделиться этой страницей