Перезаполнить табличную часть связанного документа.

1. applesound 1 13.01.20 15:44 Сейчас в теме
Добрый день.
Перезаполняю табличную часть документа ТаможеннаяДекларацияИмпорт.Товары из документа ПоступлениеТоваровУслуг
В Модуле формы документа обращаюсь к критериям отбора. Планирую получить ссылку на декларацию и перезаполнить табличную чать.
Вопрос:
Верно ли начал решение?

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

	ТекущийДокумент = ТекущийОбъект;
	РезультатФункции = Новый Массив;
	Если Метаданные.КритерииОтбора.СвязанныеДокументы.Тип.СодержитТип(ТипЗнч("Таможенная декларация на импорт"))Тогда
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ
		|	СвязанныеДокументы.Ссылка КАК Ссылка
		|ИЗ
		|	КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СвязанныеДокументы";
		Запрос.УстановитьПараметр("ЗначениеКритерияОтбора",ТекущийДокумент);
		РазультатЗапроса = Запрос.Выполнить();
		ВыборкаДетальныеЗаписи = РазультатЗапроса.Выбрать();
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			РезультатФункции.Добавить(ВыборкаДетальныеЗаписи.Ссылка);		
		КонецЦикла;
	КонецЕсли;
	
	КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 13.01.20 16:04 Сейчас в теме
5. applesound 1 13.01.20 17:45 Сейчас в теме
(2)При проведении док. Поступление - перезаполнить табличную часть связанного с ним док. Таможенная декларация. Причина: Создали Поступление, на основании создали Таможенную декларацию - Всё ОК. Одумались, поменяли в поступлении некоторые позиции, за декларацию забыли. В итоге имеем: Декларацию не соответствует поступлению.
3. coollerinc 186 13.01.20 16:34 Сейчас в теме
Вот это зачем?
"Если Метаданные.КритерииОтбора.СвязанныеДокументы.Тип.СодержитТип(ТипЗнч("Таможенная декларация на импорт"))Тогда"


да все нормально, единственное у вас в связанных документах может быть много других типов документов. Я бы обращался напрямую к таблице ТаможеннаяДекларацияИмпорт
4. applesound 1 13.01.20 17:40 Сейчас в теме
(3)
Вот это зачем?
"Если Метаданные.КритерииОтбора.СвязанныеДокументы.Тип.СодержитТип(ТипЗнч("Таможенная декларация на импорт"))Тогда

КритерииОтбора содержится много вариантов документов, этой строкой пытаюсь типизировать отбор, только Таможенная декларация на импорт
7. coollerinc 186 13.01.20 18:00 Сейчас в теме
(4)нет, ни какой типизации не будет, у вас всегда будет истина
6. Гарин 1 13.01.20 17:56 Сейчас в теме
В Таможенной декларации в ТЧ Товары есть реквизит ДокументПоступления, запрос нужно не через Критерии отбора делать, а к ТЧ документа ТаможеннаяДекларацияИмпорт, в условии запроса указать ДокументПоступления
alex-l19041; +1 Ответить
8. applesound 1 14.01.20 12:04 Сейчас в теме
(6)
Далаю следующем образом, ошибок много. Если есть возможность направьте.

Документ ПоступлениеТоваровУслуг в Модуле формы:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

КонецПроцедуры
Показать
11. applesound 1 14.01.20 15:14 Сейчас в теме
(8)Нашёл ошибку.
Вместо

|ГДЕ 
| ТаможеннаяДекларацияИмпортТовары.Ссылка = &Ссылка 
| И ТаможеннаяДекларацияИмпортТовары.Ссылка.Проведен = ИСТИНА" 


Нужно
|ГДЕ
| ТаможеннаяДекларацияИмпортТовары.Ссылка.Проведен = ИСТИНА
| И ТаможеннаяДекларацияИмпортТовары.Ссылка.ПоступлениеТоваров = &ПоступлениеТоваров"
9. Гарин 1 14.01.20 14:27 Сейчас в теме
"ВЫБРАТЬ
|	ТаможеннаяДекларацияИмпортТовары.НомерСтроки КАК НомерСтроки,
|	ТаможеннаяДекларацияИмпортТовары.Номенклатура КАК Номенклатура,
|	ТаможеннаяДекларацияИмпортТовары.Характеристика КАК Характеристика,
|	ТаможеннаяДекларацияИмпортТовары.Упаковка КАК Упаковка,
|	ТаможеннаяДекларацияИмпортТовары.КоличествоУпаковок КАК КоличествоУпаковок,
|	ТаможеннаяДекларацияИмпортТовары.Количество КАК Количество,
|	ТаможеннаяДекларацияИмпортТовары.СуммаНДС КАК СуммаНДС,
|	ТаможеннаяДекларацияИмпортТовары.СтранаПроисхождения КАК СтранаПроисхождения,
|	ТаможеннаяДекларацияИмпортТовары.НомерГТД КАК НомерГТД
|ИЗ
|	Документ.ТаможеннаяДекларацияИмпорт.Товары КАК ТаможеннаяДекларацияИмпортТовары
|ГДЕ
|	ТаможеннаяДекларацияИмпортТовары.ДокументПоступления = &Ссылка
|	И ТаможеннаяДекларацияИмпортТовары.Ссылка.Проведен = ИСТИНА"
Показать


поправил запрос
applesound; +1 Ответить
10. Гарин 1 14.01.20 14:28 Сейчас в теме
а в цикле неправильный код, совсем
к сожалению нет времени написать как надо
Оставьте свое сообщение

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