Помогите с заполнением ТЧ внешней обработки

1. VKuser176006367 26.11.19 10:39 Сейчас в теме
Я совсем начинающий в этом деле, поэтому наверное вопрос могу поставить не совсем верно, но все же. В табличной части внешней обработки должна заполняться колонка "Цена", причем эти данные должны браться из регистра сведений "Цены номенклатуры". На форме обработки я создал кнопку "Заполнить", в ее команду вписал код:

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


Но при нажатии на кнопку колонка "Цена" всё равно не заполняется. Необходимые для этого данные в регистре есть, я проверял.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. DmitriyTih 26.11.19 10:57 Сейчас в теме
(1) Поставьте точку останова на строке в цикле и посмотрите что происходит, может там цены нулевые или в тч "Товары" вообще нет данных и ТЧ в которой надо заполнить цены по-другому называется, бывает
4. danjer74 4 26.11.19 10:57 Сейчас в теме
(1) Добавь в запрос параметр виртуальной таблицы Период и Номенклатуру из табличной части внешней обработки. И просто перезаполни Объект.Товары.

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
		|	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
		|ИЗ
		|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, Номенклатура В (&Параметр)) КАК ЦеныНоменклатурыСрезПоследних";
	
	Запрос.УстановитьПараметр("Параметр", Объект.Товары);
	Запрос.УстановитьПараметр("Период", Период);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;
Показать
Как то так
9. danjer74 4 26.11.19 15:20 Сейчас в теме
(1)Надо для среза последних добавить параметры. Да и загрузить все в один прием. Я писал об этом в 4.
2. user-z99999 70 26.11.19 10:56 Сейчас в теме
5. DmitriyTih 26.11.19 10:58 Сейчас в теме
(2) Что записать? Внешнюю обработку?
6. lmnlmn 69 26.11.19 11:55 Сейчас в теме
К сожалению, не ясен контекст в котором ведется ваша работа. Если речь про управляемую форму, то используйте метод формы "ОбновитьОтображениеДанных" после программного заполнения ТЧ.

P.S. В вашем коде запрос два раза выполняется. Первый раз получаете "Результат" и не используете его выполняя запрос заново при выгрузке ТЗ.
7. VKuser176006367 26.11.19 14:34 Сейчас в теме
(6) Спасибо за совет. Я так понимаю этот метод стоит использовать в самом конце кода?
8. lmnlmn 69 26.11.19 14:46 Сейчас в теме
(7) Да. После того как завершено программное изменение ТЧ объекта форму следует проинформировать что на сервере данные изменились и надо обновить их отображение.
Оставьте свое сообщение

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