Обработка заполнения, помогите решить проблему
Прошу помощи ! Ситуация такая. В документе РТиУ сделал новый реквизит - ссылку на коммерческое предложение. Пытаюсь программно заполнять табличную часть "Товары".
Все бы ничего, но нужно заполнить еще поля где указываются счета и все такое прочее. Использую встроенную процедуру ТоварыНоменклатураПриИзменении();
На что одинэсина ругается и правильно делает, т.к. процедура производит обработку для текущей выделенной строки. Подскажите камрады как обойти все строки делая их текущими для запуска сей процедуры ? Хелп ми плиз )))))))
&НаСервере
Процедура ЗаполнитьТЧ ();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| TIM_КоммерческоеПредложениеСоставКП.Ссылка КАК Ссылка,
| TIM_КоммерческоеПредложениеСоставКП.НомерСтроки,
| TIM_КоммерческоеПредложениеСоставКП.Номенклатура,
| TIM_КоммерческоеПредложениеСоставКП.Количество,
| TIM_КоммерческоеПредложениеСоставКП.Цена,
| TIM_КоммерческоеПредложениеСоставКП.Сумма,
| TIM_КоммерческоеПредложениеСоставКП.Чертеж,
| TIM_КоммерческоеПредложениеСоставКП.ЕдиницаИзмерения
|ИЗ
| Документ.TIM_КоммерческоеПредложение.СоставКП КАК TIM_КоммерческоеПредложениеСоставКП
|ГДЕ
| TIM_КоммерческоеПредложениеСоставКП.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Объект.ЗаявкаИЗаказ );
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
НоваяСтрока.Количество = ВыборкаДетальныеЗаписи.Количество;
НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
НоваяСтрока.Цена = ВыборкаДетальныеЗаписи.Цена;
НоваяСтрока.Сумма = ВыборкаДетальныеЗаписи.Сумма;
НоваяСтрока.ЕдиницаИзмерения = ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
КонецЦикла;
КонецПроцедуры
ПоказатьВсе бы ничего, но нужно заполнить еще поля где указываются счета и все такое прочее. Использую встроенную процедуру ТоварыНоменклатураПриИзменении();
Для каждого Строка из Объект.Товары Цикл
ТоварыНоменклатураПриИзменении(Строка);
КонецЦикла;
На что одинэсина ругается и правильно делает, т.к. процедура производит обработку для текущей выделенной строки. Подскажите камрады как обойти все строки делая их текущими для запуска сей процедуры ? Хелп ми плиз )))))))
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот код, там достаточно много других процедур и функций еще вызывается, может можно как нибудь сделать обход полей и делать их текущими ?
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
// Получим общие параметры обработки для реквизитов документа
ПараметрыОбработки = РеализацияТоваровУслугФормыКлиент.ПодготовитьПараметрыОбработкиТоварыНоменклатураПриИзменении(
ЭтаФорма, ТекущиеДанные);
// Дополнительные поля, требующиеся для заполнения добавленных колонок табличного поля текущей формы.
ПараметрыОбработки.ДанныеСтрокиТаблицы.Вставить("Всего", ТекущиеДанные.Всего);
ПараметрыОбработки.ДанныеСтрокиТаблицы.Вставить("СчетДоходовВедетсяУчетПоНоменклатурнымГруппам", ТекущиеДанные.СчетДоходовВедетсяУчетПоНоменклатурнымГруппам);
ПараметрыОбработки.ДанныеСтрокиТаблицы.Вставить("СчетУчетаЗабалансовый", ТекущиеДанные.СчетУчетаЗабалансовый);
ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(ЭтаФорма, ПараметрыОбработки.ДанныеОбъекта);
ТоварыНоменклатураПриИзмененииНаСервере(
ПараметрыОбработки.ДанныеСтрокиТаблицы, ПараметрыОбработки.ДанныеОбъекта);
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ПараметрыОбработки.ДанныеСтрокиТаблицы);
КонецПроцедуры
ПоказатьФункция ПодготовитьПараметрыОбработкиТоварыНоменклатураПриИзменении(Форма, СтрокаТабличнойЧасти) Экспорт
Объект = Форма.Объект;
ЭтоКомиссия = РеализацияТоваровУслугФормыКлиентСервер.ПолучитьРеквизитФормы(Форма, "ЭтоКомиссия");
ДанныеСтрокиТаблицы = Новый Структура(
"Номенклатура, ЕдиницаИзмерения, Коэффициент, Количество,
|Цена, Сумма, СтавкаНДС, СуммаНДС,
|СчетУчета, ПереданныеСчетУчета,
|СчетДоходов, Субконто, СчетУчетаНДСПоРеализации, СчетРасходов,
|НомерГТД, СтранаПроисхождения");
ЗаполнитьЗначенияСвойств(ДанныеСтрокиТаблицы, СтрокаТабличнойЧасти);
ДанныеОбъекта = Новый Структура(
"Дата, ВидОперации, Организация, ДеятельностьНаПатенте,
|Склад, ТипЦен, ВалютаДокумента, КурсВзаиморасчетов, КратностьВзаиморасчетов,
|СуммаВключаетНДС, ДоговорКонтрагента,
|ЭтоКомиссия, Реализация");
ЗаполнитьЗначенияСвойств(ДанныеОбъекта, Объект);
ДанныеОбъекта.ЭтоКомиссия = ЭтоКомиссия;
ДанныеОбъекта.Реализация = Истина;
ПараметрыОбработки = Новый Структура();
ПараметрыОбработки.Вставить("ДанныеСтрокиТаблицы", ДанныеСтрокиТаблицы);
ПараметрыОбработки.Вставить("ДанныеОбъекта", ДанныеОбъекта);
Возврат ПараметрыОбработки;
КонецФункции
Показать&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(Знач Форма, ПараметрыОбъекта)
Объект = Форма.Объект;
Если ТипЗнч(ПараметрыОбъекта) <> Тип("Структура") Тогда
ПараметрыОбъекта = Новый Структура;
КонецЕсли;
ПараметрыОбъекта.Вставить("СуммаВключаетНДС", Объект.СуммаВключаетНДС);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот