8.х Помогите автоматически заполнить реквизит "наименование" справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем a.shmaroff, 21 мар 2009.

  1. TopicStarter Overlay
    a.shmaroff
    Offline

    a.shmaroff

    Регистрация:
    21 мар 2009
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Проблемма в следующем: есть справочник "изделия" среди реквизитов этого справочника есть "тип","заводской номер". Сломал голову пытаясь автоматически заполнить поле "наименование", который должен состоять из значение реквизита "тип" + значение реквизита "заводской номер".
    Уткнулся в то, что "наименование" не отображается в списке реквизитов справочника, по этому никак не пойму, как к нему обратиться. Заранее благодарен. То, что до гордого звания "соискатель на звание "Чайник" ещё далеко, я и сам знаю.
  2. vitaly_mnpz
    Offline

    vitaly_mnpz Опытный в 1С

    Регистрация:
    15 фев 2009
    Сообщения:
    267
    Симпатии:
    0
    Баллы:
    26
    Наименование - это не реквизит, а свойство. Как и код.

    Код:
    СправочникВыборка = Справочники.Изделия.Выбрать();
    
    Пока СправочникВыборка.Следующий() Цикл
    СправочникОбъект = СправочникВыборка.Ссылка.ПолучитьОбъект();
    СправочникОбъект.Наименование = СокрЛП(СправочникВыборка.Тип)+" "+СокрЛП(СправочникВыборка.ЗаводскойНомер);
    СправочникОбъект.Записать();
    КонецЦикла;
    
  3. TopicStarter Overlay
    a.shmaroff
    Offline

    a.shmaroff

    Регистрация:
    21 мар 2009
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Попробовал. Создал Процедура СправочникСписокЗаводскойНомерОкончаниеВводаТекста(Элемент, СтандартнаяОбработка), запихнул туда процедуру, не работает. Может я что-то не так делаю?
  4. GvH
    Offline

    GvH Опытный в 1С

    Регистрация:
    12 авг 2008
    Сообщения:
    179
    Симпатии:
    0
    Баллы:
    26
    Вы бы код здесь показали, а так телепатов здесь нет.
  5. TopicStarter Overlay
    a.shmaroff
    Offline

    a.shmaroff

    Регистрация:
    21 мар 2009
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Код:
    Процедура СправочникСписокЗаводскойНомерОкончаниеВводаТекста(Элемент, СтандартнаяОбработка)  	
    
    СправочникВыборка = Справочники.ЛА.Выбрать();
    Пока СправочникВыборка.Следующий() Цикл   СправочникОбъект = СправочникВыборка.Ссылка.ПолучитьОбъект(); 
    СправочникОбъект.Наименование = СокрЛП(СправочникВыборка.Тип)+" "+СокрЛП(СправочникВыборка.БортовойНомер); 
    СправочникОбъект.Записать(); 
    КонецЦикла;  
    КонецПроцедуры
    

    В конфигураторе выглядит вот так. На выхлопе решил получить " Тип+Бортовой номер" (уж больно неудобно читать 10-значные номера). Поле "Заводской номер" заполняется после "Бортовой номер". Пробовал обработку события ПриИзменении поля "Заводской номер". Результат тот же: наименование не заполняется.
  6. unknown181538
    Offline

    unknown181538

    Регистрация:
    24 фев 2008
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    Отладчик юзайте. Посмотрите заходит ли прога в процедуру и какие конкретно значения где теряются.
  7. GvH
    Offline

    GvH Опытный в 1С

    Регистрация:
    12 авг 2008
    Сообщения:
    179
    Симпатии:
    0
    Баллы:
    26
    Ситуация такая:
    1. Редактирование в списке, то
    Код:
    Процедура СправочникСписокТипПриИзменении(Элемент)
    ТекущиеДанные = ЭлементыФормы.СправочникСписок.ТекущиеДанные;
    ТекущиеДанные.Наименование = Строка(ТекущиеДанные.Тип) + " " + Строка(ТекущиеДанные.ЗаводскойНомер);
    КонецПроцедуры
    
    2. Редактирование в диалоге, то
    Код:
     Процедура ТипПриИзменении(Элемент)
    Наименование = Строка(Тип) +  " " + Строка(ЗаводскойНомер);
    КонецПроцедуры
    
    ЗЫ:
    Таким образом прописываем событие и для Заводского номера.

    Если просто необходимо пройтись по справочнику Изделия, то
    так:

    Код:
    Запрос = Новый Запрос;
    
    Запрос.Текст = "
    |ВЫБРАТЬ
    |*
    |ИЗ
    |   Справочник.ЛА
    |";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаСтрок = РезультатЗапроса.Выбрать();
    Пока ВыборкаСтрок.Следующий() Цикл
    ОбъектЛА = ВыборкаСтрок.Ссылка.ПолучитьОбъект();
    ОбъектЛА.Наименование = Строка(ВыборкаСтрок.Тип) + " " + Строка(ВыборкаСтрок.ЗаводскойНомер);
    
    ОбъектЛА.Записать();
    
    КонецЦикла;
    
    Вопросы?

    Ну это вообще финиш.
    Если вчитываться в код, то получается, что вы хотите чтобы после ввода текста в колонке ЗаводскойНомер переформировывались все наименования справочника.
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Посмотрите в типовой УТ или УПП, как формируется наименование у серии номенклатуры
  9. TopicStarter Overlay
    a.shmaroff
    Offline

    a.shmaroff

    Регистрация:
    21 мар 2009
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Да, с УТ оказалась правильная идея (помогло) :unsure:

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