Заполнить данные из связанного документа

1. Romakon92 04.07.17 13:18 Сейчас в теме
Добрый день!

Задача:
Необходимо создать кнопку, на вкладке "Стоимость", которая будет заполнять данные в документе "Товарно Транспортный Документ" (Рисунок 1)
Данные для заполнения нужно взять из "Заказа на ТС(ЗаказГрузоотправителя)", вкладка "Услуги" (Рисунок 2)

Решение:

Создаю Кнопку,
Код кнопки:
&НаКлиенте
Процедура ЗаполнитьДанныеИзЗаказа(Команда)
	ЗаполнитьДанныеИзЗаказаНаСервере();
КонецПроцедуры

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


Вопрос: Никак не догадаюсь как вывести данные из функции в процедуру. Подскажите пожалуйста, как это сделать?
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 04.07.17 13:26 Сейчас в теме
(1) Сделать ее процедурой, и заполнять контекст объекта?

Что-то вроде
НоваяСТрока = Объект.Стоимость.Добавить();
НоваяСтрока.Сумма = Сумма


и т.д.
3. Romakon92 04.07.17 13:35 Сейчас в теме
(2)Т.е. переименовать
Функция ЗаполнитьДанныеИзЗаказаНаСервере()

в
Процедура ЗаполнитьДанныеИзЗаказаНаСервере()

?

НоваяСТрока = Объект.Стоимость.Добавить();
НоваяСтрока.Сумма = Сумма

Дело в том, что мне не нужно добавлять Новые строки, а необходимо данные из поля документа Заказ Грузоотправителя передать в данные поля ТТД
Или я Вас не правильно понял?
4. Dream_kz 129 04.07.17 13:38 Сейчас в теме
(3) Да, переименовать.

Ну это пример, через точку Объект содержит все реквизиты доступные для изменения.
5. Romakon92 05.07.17 11:53 Сейчас в теме
Добрый день, подскажите пожалуйста, можно ли решить задачу следующим образом,
взять код процедуры "ОбработкаЗаполнения" и подставить его в модуль "кнопки"?
Процедура ОбработкаЗаполнения (ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.уатЗаказГрузоотправителя") Тогда
		// Заполнение шапки
		Для Каждого ТекСтрокаУслуги Из ДанныеЗаполнения.Услуги Цикл
			НоваяСтрока = Стоимость.Добавить();
			НоваяСтрока.Количество = ТекСтрокаУслуги.Количество;
			НоваяСтрока.НоменклатураУслуги = ТекСтрокаУслуги.Номенклатура;
			НоваяСтрока.Номенклатура = ТекСтрокаУслуги.Номенклатура;
			НоваяСтрока.СтавкаНДС = ТекСтрокаУслуги.СтавкаНДС;
			НоваяСтрока.Сумма = ТекСтрокаУслуги.Сумма;
			НоваяСтрока.СуммаНДС = ТекСтрокаУслуги.СуммаНДС;
			НоваяСтрока.Цена = ТекСтрокаУслуги.Цена;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры
Показать
6. Dream_kz 129 05.07.17 11:54 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот