Обработка заполнения, помогите решить проблему

1. Timmi.HT 07.03.14 03:32 Сейчас в теме
Прошу помощи ! Ситуация такая. В документе РТиУ сделал новый реквизит - ссылку на коммерческое предложение. Пытаюсь программно заполнять табличную часть "Товары".

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

	Запрос.УстановитьПараметр("Ссылка", Объект.ЗаявкаИЗаказ );

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

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

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


Все бы ничего, но нужно заполнить еще поля где указываются счета и все такое прочее. Использую встроенную процедуру ТоварыНоменклатураПриИзменении();

Для каждого Строка из Объект.Товары Цикл
	ТоварыНоменклатураПриИзменении(Строка);		
КонецЦикла;


На что одинэсина ругается и правильно делает, т.к. процедура производит обработку для текущей выделенной строки. Подскажите камрады как обойти все строки делая их текущими для запуска сей процедуры ? Хелп ми плиз )))))))
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Airlord 07.03.14 08:23 Сейчас в теме
В цикле, где добавляешь строки - там и добавляешь описание остальных реквизитов табличной части "Товары", типа:
НоваяСтрока.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварНаСкладе;
....


и т.д.
6. Timmi.HT 07.03.14 16:39 Сейчас в теме
(2) Airlord, Мне кажется так делать не стоит ))) Ведь уже есть стандартные процедуры ...
3. CaptainMorgan 07.03.14 08:30 Сейчас в теме
Не используй встроенную ТоварыНоменклатураПриИзменении();

Пиши свою.
Давай текст существующей ТоварыНоменклатураПриИзменении(); из неё сделаем новую.
5. Timmi.HT 07.03.14 16:38 Сейчас в теме
(3) CaptainMorgan, Процедура сверху, буду весьма благодарен если поможете ...
4. Timmi.HT 07.03.14 16:38 Сейчас в теме
Вот код, там достаточно много других процедур и функций еще вызывается, может можно как нибудь сделать обход полей и делать их текущими ?
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
	
	// Получим общие параметры обработки для реквизитов документа
	ПараметрыОбработки = РеализацияТоваровУслугФормыКлиент.ПодготовитьПараметрыОбработкиТоварыНоменклатураПриИзменении(
		ЭтаФорма, ТекущиеДанные);

	// Дополнительные поля, требующиеся для заполнения добавленных колонок табличного поля текущей формы.
	ПараметрыОбработки.ДанныеСтрокиТаблицы.Вставить("Всего", ТекущиеДанные.Всего);
	ПараметрыОбработки.ДанныеСтрокиТаблицы.Вставить("СчетДоходовВедетсяУчетПоНоменклатурнымГруппам", ТекущиеДанные.СчетДоходовВедетсяУчетПоНоменклатурнымГруппам);
	ПараметрыОбработки.ДанныеСтрокиТаблицы.Вставить("СчетУчетаЗабалансовый", ТекущиеДанные.СчетУчетаЗабалансовый);
	
	ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(ЭтаФорма, ПараметрыОбработки.ДанныеОбъекта);
	
	ТоварыНоменклатураПриИзмененииНаСервере(
		ПараметрыОбработки.ДанныеСтрокиТаблицы, ПараметрыОбработки.ДанныеОбъекта);
	
	ЗаполнитьЗначенияСвойств(ТекущиеДанные, ПараметрыОбработки.ДанныеСтрокиТаблицы);

КонецПроцедуры
Показать


Функция ПодготовитьПараметрыОбработкиТоварыНоменклатураПриИзменении(Форма, СтрокаТабличнойЧасти) Экспорт
	
	Объект = Форма.Объект;
	ЭтоКомиссия = РеализацияТоваровУслугФормыКлиентСервер.ПолучитьРеквизитФормы(Форма, "ЭтоКомиссия");

	ДанныеСтрокиТаблицы = Новый Структура(
		"Номенклатура, ЕдиницаИзмерения, Коэффициент, Количество,
		|Цена, Сумма, СтавкаНДС, СуммаНДС,
		|СчетУчета, ПереданныеСчетУчета,
		|СчетДоходов, Субконто, СчетУчетаНДСПоРеализации, СчетРасходов,
		|НомерГТД, СтранаПроисхождения");
	ЗаполнитьЗначенияСвойств(ДанныеСтрокиТаблицы, СтрокаТабличнойЧасти);
	
	ДанныеОбъекта = Новый Структура(
		"Дата, ВидОперации, Организация, ДеятельностьНаПатенте,
		|Склад, ТипЦен, ВалютаДокумента, КурсВзаиморасчетов, КратностьВзаиморасчетов,
		|СуммаВключаетНДС, ДоговорКонтрагента,
		|ЭтоКомиссия, Реализация");
	ЗаполнитьЗначенияСвойств(ДанныеОбъекта, Объект);
	ДанныеОбъекта.ЭтоКомиссия = ЭтоКомиссия;
	ДанныеОбъекта.Реализация  = Истина;
	
	ПараметрыОбработки = Новый Структура();
	ПараметрыОбработки.Вставить("ДанныеСтрокиТаблицы", 	ДанныеСтрокиТаблицы);
	ПараметрыОбработки.Вставить("ДанныеОбъекта", 		ДанныеОбъекта);
	
	Возврат ПараметрыОбработки;
	
КонецФункции
Показать


&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(Знач Форма, ПараметрыОбъекта)

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

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