Имя: Пароль:
1C
1С v8
Элементыформы и программно вводимая строка
0 егаис
 
19.02.13
17:41
Комрады, подскажите в простом вопросе, туплю
Программно ввожу
   Товар = Товары.Добавить();
   Товар.Номенклатура = СерийныйНомер.Владелец;
       ПриИзмененииНоменклатурыТовары(ЭлементыФормы.Товары.ТекущиеДанные);

Как передать несозданную строку в типовую процедуру обработки номенклатуры в УТ 10? Спасибо
1 егаис
 
19.02.13
17:42
ошибка
{ОбщийМодуль.ОбщегоНазначения.Модуль(917)}: Значение не является значением объектного типа (Имя)
   ИмяТабличнойЧасти = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Имя;

т.к.
ЭлементыФормы.Товары.ТекущиеДанные = Неопределено
2 Reset
 
19.02.13
17:42
добавленную строку, наверное?
Товар <-- вот она
3 егаис
 
19.02.13
17:43
(2) нет, там вроде как элемент формы должен передаваться
4 Reset
 
19.02.13
17:44
(3) Позвольте не согласиться, коллега.
5 Reset
 
19.02.13
17:44
Хотя бы в (1) взор вперьте: СтрокаТабличнойЧасти
6 егаис
 
19.02.13
17:45
штатно при выборе вручную товара Элемент это ПолеВвода
Тараканы в голове (
7 hhhh
 
19.02.13
17:54
(6) ЭлементыФормы.Товары.ТекущиеДанные - это строка табличной части, это не элемент формы.
8 егаис
 
19.02.13
17:56
Функция СМКСертификат(СерийныйНомер, СШК) Экспорт

   Товар = Товары.Добавить();
   Товар.Номенклатура = СерийныйНомер.Владелец;
   ПриИзмененииНоменклатурыТовары(Товар); ошибка!
   ПриИзмененииНоменклатурыТовары(ЭлементыФормы.Товары.ТекущиеДанные); ошибка, потому что неопределено!

       
   Возврат Истина;

КонецФункции //

как достучаться до вводимой строки?
9 Reset
 
19.02.13
17:59
(8) Процедуру ПриИзмененииНоменклатурыТовары предъявите
10 егаис
 
19.02.13
17:59
штатная УТ-шная
Процедура ПриИзмененииНоменклатурыТовары(Элемент)

   СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;

   // Выполнить общие действия для всех документов при изменении номенклатуры.
   ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

   ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти);

   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   
   УчетСерийныхНомеров.ПроверитьСерийныеНомера(СтрокаТабличнойЧасти, ЭтотОбъект);

   // Ввод состава набора
   УправлениеЗапасами.ДобавитьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);

КонецПроцедуры // ПриИзмененииНоменклатурыТовары()
11 егаис
 
19.02.13
18:04
епт, все просто
этаформа.товары[товар.номерстроки-1]
12 Reset
 
19.02.13
18:04
ЭлементыФормы.Товары.ТекущаяСтрока=Товар;
ПриИзмененииНоменклатурыТовары("ЗдесьПофигЧтоХотьЧертаЛысого");
13 Reset
 
19.02.13
18:08
(11) Это то же самое, что просто "Товар"
14 Reset
 
19.02.13
18:11
Я бы написал вместо вызова ПриИзмененииНоменклатурыТовары:
   ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(Товар, ЭтотОбъект);
   ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти);
   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(Товар, ЭтотОбъект);
   УчетСерийныхНомеров.ПроверитьСерийныеНомера(Товар, ЭтотОбъект);
   // Ввод состава набора
   УправлениеЗапасами.ДобавитьСоставНабора(Товар, ЭтотОбъект);

Тогда не пришлось бы менять текущую строку. А ПриИзмененииНоменклатурыТовары - это обработчик события, его явно вызывать некрасиво [имхо]
15 Reset
 
19.02.13
18:13
И не называл бы новую строку табличной части Товар.

НоваяСтрока=Товары.Добавить();
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.