Имя: Пароль:
1C
1С v8
Перебор элементов табличной части
0 FuriKuri
 
02.07.13
13:43
1с 8.2 управляемые формы. Есть табличная часть товары с реквизитом номенклатура. Нужно при открытии формы перебрать все элементы табличной части и в каждой строке по номенклатуре заполнить поля Артикул и Код. Что-то не могу понять как получить ссылку на номенклатуру.

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

&НаСервере
Функция ПолучитьАртикул(Номенклатура)
   Ном = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура).ПолучитьОбъект();
   Артикул = Ном.Артикул;
   Возврат Артикул;
КонецФункции

&НаСервере
Функция ПолучитьКод(Номенклатура)
   Ном = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура).ПолучитьОбъект();
   Код = Ном.Код;
   Возврат Код;
КонецФункции

Но наименования может быть 2 одинаковых, тогда это не вариант. А получить ссылку напрямую не получается :(
1 ДенисЧ
 
02.07.13
13:44
А если Стр.Артикул=Стр.Номенклатура.Артикул?
2 ДенисЧ
 
02.07.13
13:44
Да и вообще... Получай на сервере объект и работай с его таблицей
3 Maxus43
 
02.07.13
13:44
поля артикул и код тоже входят в состав ТЧ? или это просто колонки не привязанные к данным?
4 FuriKuri
 
02.07.13
13:46
(1) так не прокатывает
(3) да, это просто колонки, а не реквизиты
5 Любопытная
 
02.07.13
13:52
&НаКлиенте
Процедура ПриОткрытии()
ПеребратьТЧНаСервере()
КонецПроцеуры

&НаСервере
Процедура ПеребратьТЧНаСервере()
ЭтотОбъект = РеквизитФормыВЗначение("Объект");
ТаблицаСАртикулами = ЭтотОбъект.Товары.Выгрузить();
ТаблицаСАртикулами.колонки.Добавить("Артикул");
Для Каждого стр из ТаблицаСАртикулами Цикл
 Стр.Артикул = Стр.Номенклатура.Артикул;
КонецЦикла;
ЗначениеВДанныеФормы(ТаблицаСАртикулами,ЭтаФорма.ТаблицаФормы);
КонецПроцедуры

Пожалуй, так
6 FuriKuri
 
02.07.13
13:54
(5)  Я сделал проще

&НаСервере
процедура ЗаполнитьАртикулКод()
   
   Таблица = Объект.Товары;
   Для каждого стр из Таблица цикл
       
       Если ЗначениеЗаполнено(Стр.Номенклатура) тогда
           Стр.Артикул=Стр.Номенклатура.артикул;
           Стр.Код = Стр.Номенклатура.Код;
       Конецесли;
   КонецЦикла;

КонецПроцедуры

Но спасибо за идею :)
7 Любопытная
 
02.07.13
13:56
(6)Так Артикул и код является колонками ТЧ объекта? Тогда конечно нафиг извращаться. Ты же вроде сказал, что они к объекту не имеют отношения
8 Maxus43
 
02.07.13
13:56
(6)>(1)
>>так не прокатывает
айайай
9 FuriKuri
 
02.07.13
13:57
(7) наверно неправильно выразился. Извините