Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
10 мая 2025, 01:40

Заполнение табличной части из другой формы

Автор vladimir15921, 20 апр 2023, 08:25

0 Пользователей и 1 гость просматривают эту тему.

LexaK

voliga, а зачем вы используете Табличный документ?
замените его на ТЗ (коллекцию формы)
если помогло нажмите: Спасибо!

antoneus

Только структуру надо на каждом проходе цикла новую создавать, а то получится полный массив одинаковых структур)

voliga

antoneus, Максим75 , sali  , Afinogen 

Огромное Вам СПАСИБО за помощь!!!!!!!!!!!  :zebzdr:  :zebzdr:  :zebzdr:
Все получилось!!!!

Таким же новичкам как я, оставлю здесь решение:

В модуле формы
&НаКлиенте
Процедура ОткрытьФормуВвода(Команда)
      ОписаниеОп = Новый ОписаниеОповещения("ПослеЗакрытияФормыПодбора",ЭтаФорма,Неопределено);
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ДокСсылка", Объект.Ссылка);
    ОткрытьФорму("Обработка.ВставкаКнигаЗатрат1.Форма.Форма", ПараметрыФормы,ЭтаФорма,,,,ОписаниеОп,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
   
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияформыПодбора(Результат,ДопПараметры = Неопределено) Экспорт   
МассивДокументов = Результат;
ЗаписатьМассивНаСервере(МассивДокументов);
Сообщить("Загрузка завершенна");
КонецПроцедуры   

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


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

В модуле обработки
&НаКлиенте
Процедура Команда1(Команда) 
   
МассивСтруктур = Новый Массив;
Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл
    НоваяСтрока = Новый Структура;
        НоваяСтрока.Вставить ("Номенклатура",СокрЛП(ТабДок.Область("R" + Строка(НомерСтроки)+ "C1").Текст));
        НоваяСтрока.Вставить ("Количество",СокрЛП(ТабДок.Область("R" + Строка(НомерСтроки)+ "C2").Текст));
        МассивСтруктур.Добавить(НоваяСтрока); 
        КонецЦикла;
Закрыть(МассивСтруктур);
КонецПроцедуры


Похожие темы (5)

Рейтинг@Mail.ru

Поиск