Добрый День!
Подскажите пожалуйста, как заполнить ТЧ документа "Товарно-транспортный документ" из ТЧ "Заказ Грузоотправителя"
В обоих документах одинаковые ресурсы

Код:

```1c
    Функция ЗаполнитьНаОсновании()
    ТТД = Объект.Ссылка;
    Если ТипЗнч(ТТД) = Тип("ДокументСсылка.уатТТД") Тогда
    ПутевойЛист = Объект.Выработка[0].ПутЛист;
    Если ЗначениеЗаполнено(ПутевойЛист) Тогда
    Если ТипЗнч(ПутевойЛист) =Тип("ДокументСсылка.уатПутевойЛист") Тогда
    МаршрутныйЛист = ПутевойЛист.ДокументОснование;
    Если ТипЗнч(МаршрутныйЛист) = Тип("ДокументСсылка.уатМаршрутныйЛист") Тогда
    ЗаказГрузоотправителя = МаршрутныйЛист.Заказы[0].ЗаказГрузоотправителя;
    Если ТипЗнч(ЗаказГрузоотправителя) = Тип("ДокументСсылка.уатЗаказГрузоотправителя") Тогда
    //Объект.Стоимость.Очистить();

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

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ЗаполнитьЗначенияСвойств(ТТД.Стоимость.Добавить(), ВыборкаДетальныеЗаписи);
    КонецЦикла;
    Возврат ВыборкаДетальныеЗаписи

    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецФункции
```

В результате получается ошибка

```1c
    {Документ.уатТТД.Форма.ФормаДокумента.Форма(1639)}: Ошибка при вызове метода контекста (Добавить)
    ЗаполнитьЗначенияСвойств(ТТД.Стоимость.Добавить(), ВыборкаДетальныеЗаписи);
    по причине:
    Объект недоступен для изменения.
```
---
```1c
    &НаКлиенте
    Процедура ЗаполнитьНаОснованииЗаказаТС(Команда)
    ЗаполнитьНаОсновании();
    КонецПроцедуры

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

Вот рабочий код, единственное "Количество" почему-то не выводится
---
Данные о Количестве были в реквизите КоличествоВыработка
---
Нельзя по ссылке менять документ, только по объекту.
(1) ТТД = Объект.Ссылка;
---
Возврат ВыборкаДетальныеЗаписи
Это строку уберите, и заменить на процедуру
---
Пробовал, программа намертво зависает, а с этой строчкой работает
---
Отличие процедур от функций значит не знаете?
---
У меня функция(НаСервере) передает данные в процедуру(кнопку)(НаКлиенте)
---
Зачем? На сервере там же заполняете документ и все.
---
Я правильно понимаю, что нужно создать процедуру(НаСервере) и в неё поместить Выборку?
---
Оставить все как есть, с предыдущими советами, функцию переделать на процедуру, убрать возврат значения, поставить ссылку на документ в запросе
---
И подскажите пожалуйста, как связать эти 2 документа, чтобы в результате, в документе, ТТД получалось то количество элементов, которое есть в связанном документе ЗаказГрузоотправителя(т.е. 1 а не 99 999)
---
```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | уатЗаказГрузоотправителяУслуги.Номенклатура КАК Номенклатура,
    | уатЗаказГрузоотправителяУслуги.Содержание,
    | уатЗаказГрузоотправителяУслуги.Количество КАК Количество,
    | уатЗаказГрузоотправителяУслуги.Цена КАК Цена,
    | уатЗаказГрузоотправителяУслуги.Сумма КАК Сумма,
    | уатЗаказГрузоотправителяУслуги.СтавкаНДС КАК СтавкаНДС,
    | уатЗаказГрузоотправителяУслуги.СуммаНДС КАК СуммаНДС
    |ИЗ
    | Документ.уатЗаказГрузоотправителя.Услуги КАК уатЗаказГрузоотправителяУслуги ГДЕ уатЗаказГрузоотправителяУслуги.Ссылка = &ДокументОснование";

    Запрос.УстановитьПараметр("ДокументОснование", ЗаказГрузоотправителя)

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

    Запрос.УстановитьПараметр("ДокументОснование", ЗаказГрузоотправителя);

    РезультатЗапроса = Запрос.Выполнить();
    ЗаказГрузоотправителя.Услуги

    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
```

На нажатие кнопки, процедура никак не реагирует, в чем ошибаюсь в запросе?
---
и процедуру Процедура ЗаполнитьНаОснованииЗаказаТС(Команда) вызывай с из процедуры с клиента и убери из неё слова Команда!
---
)Пробовал, программа намертво зависает, а с этой строчкой работает
Вру, зависает, но потом выводит данные. Так же 99 999
А может нужно установить связь?
---
Ну отбор в запросе по документу то надо ставить
---
1) Нафига это проверка, если вы находитесь в документе уатТТД
Если ТипЗнч(ТТД) = Тип("ДокументСсылка.уатТТД") Тогда

2) где в запросе условия на выборку

3) заполнить ТЧ можно с помощью конструции
Объект.Стоимость.Загрузить(Запрос.Выполнить().Выгрузить()) наименование полей выборки в запросе должно совпадать с наименованиями резвизитов ТЧ
---
заполнить ТЧ можно с помощью конструции
Объект.Стоимость.Загрузить(Запрос.Выполнить().Выгрузить()) наименование полей выборки в запросе должно совпадать с наименованиями резвизитов ТЧ
Я правильно Вас понимаю это для решения задачи без запроса

```1c
    Функция ЗаполнитьНаОсновании()
    ТТД = Объект.Ссылка;
    Если ТипЗнч(ТТД) = Тип("ДокументСсылка.уатТТД") Тогда
    ПутевойЛист = Объект.Выработка[0].ПутЛист;
    Если ЗначениеЗаполнено(ПутевойЛист) Тогда
    Если ТипЗнч(ПутевойЛист) =Тип("ДокументСсылка.уатПутевойЛист") Тогда
    МаршрутныйЛист = ПутевойЛист.ДокументОснование;
    Если ТипЗнч(МаршрутныйЛист) = Тип("ДокументСсылка.уатМаршрутныйЛист") Тогда
    ЗаказГрузоотправителя = МаршрутныйЛист.Заказы[0].ЗаказГрузоотправителя;
    Если ТипЗнч(ЗаказГрузоотправителя) = Тип("ДокументСсылка.уатЗаказГрузоотправителя") Тогда

    Объект.Стоимость.Загрузить(Запрос.Выполнить().Выгрузить())

    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецФункции
```

?
---
```1c
    ОбъектПриемник = ТТД.ПолучитьОбъект();
    ТЧПриемник = ОбъектПриемник.Стоимость;
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ЗаполнитьЗначенияСвойств(ТЧПриемник .Добавить(), ВыборкаДетальныеЗаписи);
    КонецЦикла;
```

Либо если доступен объект, то ТЧПриемник = Объект.Стоимость;
А зачем после этого заполнения вы возвращаете выборку? она где-то еще используется?
---
Исправил

```1c
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ЗаполнитьЗначенияСвойств(ТТД.Стоимость.Добавить(), ВыборкаДетальныеЗаписи);
```

   на

```1c
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ЗаполнитьЗначенияСвойств(Объект.Стоимость.Добавить(), ВыборкаДетальныеЗаписи);
```

Возникает ошибка

```1c
    {Документ.уатТТД.Форма.ФормаДокумента.Форма(1588)}: Ошибка при вызове метода контекста (ЗаполнитьНаОсновании)
    ЗаполнитьНаОсновании();
    по причине:
    Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
    по причине:
    Ошибка преобразования данных XDTO:
    Запись значения свойства 'ret':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
    по причине:
    Ошибка отображения типов:
    Отсутствует отображение для типа 'ВыборкаИзРезультатаЗапроса'
```

и в документе появляется больше 99 999 записей, почему так происходит?
(3)
(2)
---
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
             ЗаполнитьЗначенияСвойств(Объект.Стоимость.Добавить(), ВыборкаДетальныеЗаписи);
Ну а этот код где?
---
Спасибо, упустил из виду
---
попробуй копировать не Количество,а КоличествоУпаковок
---
Конструктор запроса
---
а блин...у тебя нестандартный документ, тогда извини, не заметил
---
Поле не найдено(КоличествоУпаковок)
Сам не понимаю почему так, вроде и там и там Количество
Куда ещё можно посмотреть?
---
типы значений можно сверить. А в отладке Запрос.Выполнить().Выгрузить() - там есть количество?
---
Добавил строку Количество = ВыборкаДетальныеЗаписи.Количество();
Смотрю через отладчик, показывает число
(31)
---
ааа..ммм... а зачем там скобки - Количество = ВыборкаДетальныеЗаписи.Количество(), должно быть просто Количество = ВыборкаДетальныеЗаписи.Количество
---
Этой строкой я проверял в отладчике, какое значение идет от Количество, м.б. там пустое значение, оказалось нет, показывает правильно, так же как в ЗаказеГрузоотправителя, но вот в ТТД так и не выводится
---
а ТТД стандартный? открой его реквизиты через конструктор запросов, там нет КоличествоУпаковок?
---
Не могу найти такой реквизит,
подскажите пожалуйста, а возможно ли в моем варианте прописать в Количество данные из ВыборкаДетальныеЗаписи отдельно от запроса?
---
Данные о Количестве были в реквизите КоличествоВыработка
---
я и говорю, что в том документе другая колонка)) в общем всё получилось, да?
---
Да, получилось, благодарю!
---
т.е. в запросе вместо "уатЗаказГрузоотправителяУслуги.Количество КАК Количество" напиши "уатЗаказГрузоотправителяУслуги.КоличествоУпаковок КАК КоличествоУпаковок "
---
Данные заполняются, но вместо 1 записи получается 99 999
---
в каком модуле расположена функция? в каком контексте она работает?
---
(5) в каком модуле расположена функция? в каком контексте она работает?
В модуле "кнопки" заполняет данные в документе Товарно-Транспортный Документ, вкладка Содержание
из документа Заказ Грузоотправителя, вкладка Услуги
---
```1c
    &НаКлиенте
    Процедура ЗаполнитьНаОснованииЗаказаТС(Команда)
    ЗаполнитьНаОсновании();
    КонецПроцедуры

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

Вот рабочий код, единственное "Количество" почему-то не выводится