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

Метод Добавить

Автор Ruslan09609, 29 ноя 2018, 12:47

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

Ruslan09609

Добрый день!
Мне надо ТЧ одного документа загрузить в ТЧ другого документа я это смог реализовать вот этим кодом : Процедура КнопкаВыполнитьНажатие(Кнопка)
   ЗаказПок=ЗаказПокупателя.ПолучитьОбъект();
   ЗаказПок.Товары.Загрузить(ЗаказНаПроизводство.Товары.Выгрузить());
   ЗаказПок.Записать(РежимЗаписиДокумента.Запись);
   Сообщить("Загрузка завершена");
        КонецПроцедуры
Минус кода - мне нужно залить данные ТЧ двух документов в один документ!
Метод загрузить очищает данные в документе а мне надо чтобы он не очищал а добавлял.
Методом Добавить не получается ! Помогите пожалуйста

antoneus

Что значит "не получается"? Показывай как пытаешься делать.

Ruslan09609

Цитата: antoneus от 29 ноя 2018, 12:59
Что значит "не получается"? Показывай как пытаешься делать.
Процедура КнопкаВыполнитьНажатие(Кнопка)
   ЗаказПок=ЗаказПокупателя.ПолучитьОбъект();
   ЗаказПок.Товары.Добавить(ЗаказНаПроизводство.Товары.Выгрузить());
   ЗаказПок.Записать(РежимЗаписиДокумента.Запись);
   Сообщить("Загрузка завершена");
КонецПроцедуры

antoneus

Процедура КнопкаВыполнитьНажатие(Кнопка)
   ЗаказПок=ЗаказПокупателя.ПолучитьОбъект();
   Для каждого ТекСтрока из ЗаказНаПроизводство.Товары Цикл
      ЗаполнитьЗначенияСвойств(ЗаказПок.Товары.Добавить(), ТекСтрока);
   КонецЦикла;
   ЗаказПок.Записать(РежимЗаписиДокумента.Запись);
   Сообщить("Загрузка завершена");
КонецПроцедуры


Ты бы это, хоть синтакс-помощник почитал бы.

Ruslan09609

Цитата: antoneus от 29 ноя 2018, 13:45
Процедура КнопкаВыполнитьНажатие(Кнопка)
   ЗаказПок=ЗаказПокупателя.ПолучитьОбъект();
   Для каждого ТекСтрока из ЗаказНаПроизводство.Товары Цикл
      ЗаполнитьЗначенияСвойств(ЗаказПок.Товары.Добавить(), ТекСтрока);
   КонецЦикла;
   ЗаказПок.Записать(РежимЗаписиДокумента.Запись);
   Сообщить("Загрузка завершена");
КонецПроцедуры


Ты бы это, хоть синтакс-помощник почитал бы.
Спасибо большое что вникаете в мою проблему!Получилось,насчет синтаксиса я читал насчет метода добавить,а надо было читать о методе "ЗаполнитьЗначенияСвойств".

antoneus

Его можно читать подряд) Какие есть функции, процедуры и методы, какие они принимают аргументы, что делают и что возвращают. Весьма увлекательное чтение.

Ruslan09609

Цитата: antoneus от 29 ноя 2018, 14:10
Его можно читать подряд) Какие есть функции, процедуры и методы, какие они принимают аргументы, что делают и что возвращают. Весьма увлекательное чтение.
Если у вас есть время покажите пожалуйста,если-бы я вдруг захотел из ЗаказПок.Товары колонку сумма загрузить в ЗаказНаПроизводства.Товары в колонку количество,как бы я смог это реализовать ?
Метод добавить насколько я понимают загружает только если у колонок идентичное название,может есть способ задать псевдоним для колонки сумма в ЗаказНаПроизводства.Товары и дать ей псевдоним количество?Только как это сделать?)   

antoneus

Метод Добавить ничего не загружает, он добавляет в табличную часть строку и возвращает ее. То есть, можно написать

НоваяСтрока = ЗаказНаПроизводство.Товары.Добавить();

и в переменной НоваяСтрока у нас окажется добавленная в табличную часть строка. Теперь мы можем делать с этой переменной что хотим (в разумных пределах, конечно) и, обращаясь через точку к реквизитам табличной части в этой строке, присваивать им тоже что захотим (опять-таки не забывая про разумные пределы), например

НоваяСтрока.Количество = 500

где Количество - имя реквизита табличной части Товары. Соответственно, если мы хотим заполнить табличную часть документа ЗаказНаПроизводство данными из табличной части документа ЗаказПок, но при этом немножко пошалить и засунуть сумму в колонку количество, то кто ж нам помешает?

Для каждого ТекСтрока из ЗаказПок.Товары Цикл
   НовСтрока = ЗаказНаПроизводство.Товары.Добавить();//получили новую строку ТЧ со всеми пирогами
   ЗаполнитьЗначенияСвойств(НовСтрока, ТекСтрока);
   //скопировали строку, но в количестве - количество, а нам нужна сумма
   НовСтрока.Количество = ТекСтрока.Сумма;//вот и все!
КонецЦикла

oleg-x

Если из двух ТЧ надо слить в одну и у Вас эти объекты записаны в базе, то можно сделать запросом.
Делаете запрос с объединением. В запросе отбираете ТЧ нужных документов и задаете название как в итоговом документе.
А потом просто загружаете результат запроса в итоговую ТЧ.
Запрос = Новый Запрос;
Запрос.Текст "Текст запроса к ТЧ документов" //Важно, документы предварительно должны быть записаны, так как если объект не записан, то загрузятся данные из базы.
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ТЧ.Загрузить(РезультатЗапроса);
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Теги:

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

Рейтинг@Mail.ru

Поиск