Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Автозаполнение таб. части документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
rpervak
Здравствуйте !
1С:Предприятие 8.2 (8.2.19.121)
УПП 1.3.39.1

Помогите, пожалуйста. Есть документ. В нем таб. часть "Заказы".

Как сделать автозаполнение остальных колонок данными из таб. части "Товары" "Заказа покупателя", если в первой колонке выбирается "Заказа покупателя" ?
Привожу код:
Процедура ЗаказыЗаказПокупателяПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.Заказы.ТекущиеДанные;
    Документ = СтрокаТабличнойЧасти.ЗаказПокупателя.Товары; // Здесь где-то ошибка
    Запрос = Новый Запрос;
    Запрос.Текст ="
    |   ВЫБРАТЬ
    |    ЗаказПокупателяТовары.Ссылка,
    |    ЗаказПокупателяТовары.Номенклатура.Артикул,
    |    ЗаказПокупателяТовары.Номенклатура,
    |    ЗаказПокупателяТовары.Количество,
    |    ЗаказПокупателяТовары.КоличествоМест,
    |    ЗаказПокупателяТовары.Ссылка.Ответственный
    |ИЗ
    |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
    |ГДЕ
    |    ЗаказПокупателяТовары.Ссылка = &Документ";
Запрос.УстановитьПараметр("Документ", Документ);     //Заказ покупателя
    Результат = Запрос.Выполнить();
    ТабЗнач = Результат.Выбрать();
    
    Для Каждого СтрТовар Из ТабЗнач Цикл
        НоваяСтрока = Заказы.Добавить();
        НоваяСтрока.ЗаказПокупателя = СтрТовар.Ссылка;
        НоваяСтрока.Артикул = СтрТовар.Номенклатура.Артикул;
        НоваяСтрока.Номенклатура = СтрТовар.Номенклатура;
        НоваяСтрока.Количество = СтрТовар.Количество;
        НоваяСтрока.КоличествоМ2 = СтрТовар.Количество;
        НоваяСтрока.КоличествоМест = СтрТовар.КоличествоМест;
        НоваяСтрока.Ответственный = СтрТовар.НоваяСтрока.Количество;
    КонецЦикла;    

КонецПроцедуры


Спасибо !
Petre
Документ = СтрокаТабличнойЧасти.ЗаказПокупателя;

И помните, что первая строка уже существует - это текущая.
Vofka
Документ = ЭлементыФормы.Товары.ТекущиеДанные.ЗаказПокупателя;
rpervak
Цитата(Petre @ 30.11.15, 16:38) необходимо зарегистрироваться для просмотра ссылки
Документ = СтрокаТабличнойЧасти.ЗаказПокупателя;

И помните, что первая строка уже существует - это текущая.


Цитата
err {Документ.ФормированиеПаллет.Форма.ФормаДокумента.Форма(423)}: Итератор для значения не определен
Для Каждого СтрТовар Из ТабЗнач Цикл
Petre
Пока ТабЗнач.Следующий() Цикл
rpervak
Цитата(Vofka @ 30.11.15, 16:42) необходимо зарегистрироваться для просмотра ссылки
Документ = ЭлементыФормы.Товары.ТекущиеДанные.ЗаказПокупателя;



Вы имели ввиду:
Документ = ЭлементыФормы.Заказы.ТекущиеДанные.ЗаказПокупателя;


Цитата
err {Документ.ФормированиеПаллет.Форма.ФормаДокумента.Форма(423)}: Итератор для значения не определен
Для Каждого СтрТовар Из ТабЗнач Цикл
Petre
А внутри цикла СтрТовар заменить на ТабЗнач.
rpervak
Спасибо ! Уже заработало, но мне
НоваяСтрока = Заказы.Добавить();
добавляет строку ниже, а как сделать, что бы данные попадали в текущую строку ?

Vofka
rpervak, не надо выделять НЕ код тегами кода!
rpervak
Извините, не буду.

Как вариант можно удалять 1-ю строку. Но он, кажется, не конструктивный ?
Petre
Либо удалять первую строку, либо добавить флаг первой строки и условие в цикле: если первая строка - заполняем текущую строку, если не первая - создаем новые.
rpervak
Спасибо всем ! Тему закрываю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.