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

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

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

Автор: burza 27.02.18, 14:57

Есть УТ 2.3 В справочнике номенклатура есть характеристики(характеристики отдельный справочник, номенклатура стоит родитель). Как в характеристики в одно поле втянуть данные с номенклатуры?
Сделал запрос, а вот как теперь подставить данные что была проверка на родителя. То есть нужно в Характеристике в поле seo_title вписывать автоматом что-то в таком роде(Запрос.ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.КатегорияTITLE + Запрос.ХарактеристикиНоменклатуры.Владелец.Производитель + Запрос.ХарактеристикиНоменклатуры.Владелец.Модель)
вот запрос. Тыкните носом что нужно сделать)

Код

      Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
    |ХарактеристикиНоменклатуры.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.КатегорияTITLE,
    |ХарактеристикиНоменклатуры.Владелец.Производитель,
    |ХарактеристикиНоменклатуры.Владелец.Модель
    | ИЗ
    |Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры";
        
            
        ТбЗнач = Запрос.Выполнить().Выгрузить();
        
        Если ЭтаФорма.seo_title  = "" Тогда
        ЭтаФорма.seo_title  = "Купить" + Запрос.ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.КатегорияTITLE + Запрос.ХарактеристикиНоменклатуры.Владелец.Производитель + Запрос.ХарактеристикиНоменклатуры.Владелец.Модель;                 
        КонецЕсли;



Автор: Vofka 27.02.18, 15:27

seo_title это поле на форме? Если да, то в ПриОткрытии можно написать что-то такое (на работоспособность не проверял):

Если seo_title = "" И 
    НЕ Ссылка.Пустая() Тогда

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |ХарактеристикиНоменклатуры.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.КатегорияTITLE КАК КатегорияTITLE,
    |ХарактеристикиНоменклатуры.Владелец.Производитель КАК Производитель,
    |ХарактеристикиНоменклатуры.Владелец.Модель КАК Модель
    |ИЗ
    |    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
    |ГДЕ
    |    ХарактеристикиНоменклатуры.Ссылка = &Ссылка
    |";

    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    
    seo_title = "Купить " + Выборка.КатегорияTITLE + " " + Выборка.Производитель + " " + Выборка.Модель;
    
КонецЕсли;

Автор: burza 27.02.18, 16:18

Vofka @ Сегодня, 15:27 * ,
Да все верно! Большое вам спасибо!!!))

Автор: logist 27.02.18, 18:56

Цитата(burza @ 27.02.18, 14:57) *
Тыкните носом что нужно сделать

Почитать какие-то базовые книжки по программированию в 1С, что бы не страдать тыканьем типа этого:
Цитата(burza @ 27.02.18, 14:57) *
Запрос.ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.КатегорияTITLE + Запрос.ХарактеристикиНоменклатуры.Владелец.Производитель + Запрос.ХарактеристикиНоменклатуры.Владелец.Модель;


Автор: burza 28.02.18, 15:19

Vofka @ Вчера, 15:27 * ,
Как теперь с этого сделать обработку чтобы она весь справочник пройшла и сделала что в запросе?

burza @ Сегодня, 14:46 * ,
При открытии формы все работает.Теперь нужно весь справочник переделать, а вручную открывать каждый документ и сохранять это ппц)

Автор: logist 28.02.18, 15:38

Цитата(burza @ 28.02.18, 15:19) *
При открытии формы все работает.Теперь нужно весь справочник переделать, а вручную открывать каждый документ и сохранять это ппц)

Код выше меняет поле на форме, а не данные в самом справочнике.

Автор: burza 01.03.18, 8:58

logist @ Сегодня, 15:38 * ,
Вы уважаемый капитан очевидность чтоли. Где у ваших постах помощь я не вижу! Вот уважаемы VOFKA помог, а вы так абы написать.

Сделал так может кому будет полезно . Вофке еще раз спасибо)

СправочникВыборка = Справочники.ХарактеристикиНоменклатуры.Выбрать();
Пока СправочникВыборка.Следующий() Цикл
СправочникОбъект = СправочникВыборка.Ссылка.ПолучитьОбъект();
Если СправочникОбъект.seo_title = "" тогда
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка", СправочникОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |ХарактеристикиНоменклатуры.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.Наименование,
    |ХарактеристикиНоменклатуры.Владелец.НоменклатурнаяГруппа.КатегорияTITLE КАК КатегорияTITLE,
    |ХарактеристикиНоменклатуры.Владелец.Производитель КАК Производитель,
    |ХарактеристикиНоменклатуры.Владелец.Модель КАК Модель,
    |ХарактеристикиНоменклатуры.Владелец.НаименованиеПолное КАК НаименованиеПолное,
    |ХарактеристикиНоменклатуры.ДополнительноеОписаниеНоменклатуры КАК ДополнительноеОписаниеНоменклатуры
    |ИЗ
    |    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
    |ГДЕ
    |    ХарактеристикиНоменклатуры.Ссылка = &Ссылка
    |";

    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();

СправочникОбъект.seo_title = "Купить " + Выборка.КатегорияTITLE + " " + Выборка.Производитель + " " + Выборка.Модель + " " + Выборка.Наименование + " в Киеве Украина Недорого!!!";



СправочникОбъект.Записать();
КонецЕсли
КонецЦикла;


Автор: sava1 01.03.18, 9:08

burza @ Сегодня, 8:58 * ,
хреново - запрос в цикле.
сначала пишем запрос, условие

ХарактеристикиНоменклатуры..seo_title = ""


потом обход по выборке

начало транзакции
получаем объект
изменяем seo_title
записываем

после обхода - фиксируем транзакцию

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