Имя: Пароль:
1C
 
обход данных табличной части формы в УФ
,
0 LivingStar
 
25.07.15
08:58
Нужно обойти данные табличной части формы в управляемом приложении. Как это сделать?

    МояТаблица = ДанныеФормыВЗначение(ЭтаФорма.Товары, Тип("ТаблицаЗначений"));

так преобразовать не удается, не воспринимается ЭтаФорма.Товары

ФормаОбъекта = Объект.Ссылка.ПолучитьФорму();
Для Каждого Элемент Из ФормаОбъекта.Элементы Цикл
    Если Тип(Элемент) = Тип("ТабличноеПоле") Тогда //элемент формы - табличное поле
        Если Элемент.Имя = "Товары" Тогда
            Сообщить("Это табличное поле!! "  + Элемент.Имя );
            //ТабПоле = ФормаОбъекта.ЭлементыФормы.Товары.Значение;
            ТабПоле = Элемент.Значение;
            Колво = ТабПоле.Количество();
            Сообщить("Количество строк: " + Колво);
            Для Каждого ТекущаяСтрока Из ТабПоле Цикл
                Имя = ТекущаяСтрока.Номенклатура;
                Сообщить(Имя);
            КонецЦикла;                            
        КонецЕсли;    
    КонецЕсли;                                    
КонецЦикла;     // <-


так тоже не улавливает табличную часть товары
1 Рэйв
 
25.07.15
09:21
за столько лет создавания тем по всякой хрени уже пора научиться.
2 Dен
 
25.07.15
09:26
Для Каждого СтрокаТЧ Из Объект.Товары Цикл

КонецЦикла;
3 zak555
 
25.07.15
09:29
на клиенте или на сервере нужно обход ?
4 rphosts
 
25.07.15
09:48
(0) табличной части формы или табличной части объекта отображаемую на форме?

А попробовать ЭтаФорма.Элементы.Товары религия запрещает?
5 zak555
 
25.07.15
09:50
(4) как ты Элементы.Товары -- вытащишь данные по всем строкам ?
6 rphosts
 
25.07.15
10:06
(5) да, там только текущие данные. значит через Объект.Товары
7 LivingStar
 
25.07.15
10:48
(2) я же говорю там пусто, нужно формы табличную часть перебирать
8 LivingStar
 
25.07.15
10:49
(3) да не важно по суди, лучше с обработки, но главное получить, хоть где доступ к табличной части формы не объекта
9 LivingStar
 
25.07.15
10:49
(6) там нет этого реквизита, он есть в табличной части формы не объекта
10 zak555
 
25.07.15
11:09
(9) форма какая :?
11 LivingStar
 
25.07.15
11:10
(10 ) в (0) написано что УФ
12 zak555
 
25.07.15
11:11
(9) и нет основного реквизита Объект ?
13 rphosts
 
25.07.15
11:16
(9) скрин странички редактора формы из конфигуратора дай
14 LivingStar
 
25.07.15
11:25
15 zak555
 
25.07.15
11:27
ДанныеФормыКолекции можно обойти
16 LivingStar
 
25.07.15
11:27
(15) подскажите как? вы же видите на снимке, там пусто в УпаковкаКлиента
17 LivingStar
 
25.07.15
11:27
а при открытии документа есть в табличной части формы документа
18 rphosts
 
25.07.15
11:28
(11) и давно это стало окном редактора? окно редактора выглядит типа так http://catalog.mista.ru/upload/iblock/11a/mngform1.png
19 LivingStar
 
25.07.15
11:28
(15) я фот так хотел, но ошибка на товары
20 LivingStar
 
25.07.15
11:29
21 rphosts
 
25.07.15
11:30
(20) убери свои свойства и в окне реквизитов сделай так что-\бы было видно твои ТОВАРЫ
22 rphosts
 
25.07.15
11:32
(16) для того что ты видишь в ДанныеФормаКоллекция сделай обход в цикле
Для Каждого Строка Из <то что у тебя в ДанныеФормаКоллекция> Цикл
23 LivingStar
 
25.07.15
11:32
(22) упаковка клиента их вижно
24 rphosts
 
25.07.15
11:34
(23) окно реквизитов - это правое верхнее, Карл, правое верхнее
25 rphosts
 
25.07.15
11:35
Это форма Документа? Форма Элемента справочника? Произвольная форма?
26 rphosts
 
25.07.15
11:35
покажи окно реквизитов
27 LivingStar
 
25.07.15
11:37
(25) документа
28 LivingStar
 
25.07.15
11:37
как получить ДанныеФормаКоллекция для перебора?
29 rphosts
 
25.07.15
11:38
(28)  см (26)
30 zak555
 
25.07.15
11:39
ДанныеСтроки = Объект.Товары.НайтиПоИдентификатору (Индекс);
31 LivingStar
 
25.07.15
11:40
(30) каких реквизитов?
32 zak555
 
25.07.15
11:44
ещё раз

на клиенте ты можно обойти элементы, которые получены клиентов (не все, которые есть на сервере -- если ты читаешь данные с сервера)

для обхода на клиенте можно использовать конструкцию вида

ТЧ = Объект.Товары;

Для каждого стр Из ТЧ Цикл

    Сообщить(стр.МойРеквизит);

КонецЦикла;
33 rphosts
 
25.07.15
11:52
+(32) если требуемый реквизит не выводится в форме но очень нужен - следует указать этому реквизит что егоиспользовать всегда, если требуемый реквизит - рраз именование другого реквизита ( т.е. субреквизит а не самостоятельный реквизит) за его значением придётся сходить на сервео
34 zak555
 
25.07.15
12:14
хотя порционность на клиенте относится к динамическому списку
35 LivingStar
 
25.07.15
13:34
(32) вы понимаете что там какие вы примеры приводите пусто в этом реквизите? проблема в этом
36 LivingStar
 
25.07.15
13:46
при выводе строки можно использовать в модуле формы документа?
37 LivingStar
 
25.07.15
13:58
это было оформление строк в обычном приложении а как в управляемом?
38 Остап Сулейманович
 
25.07.15
14:03
(37) Кто такой Объект.Товары? Если ДинамическийСписок - сливай воду. Обход невозможен. Только аналогичный запрос и уже тогда обход его результата.
Если ТабличнаяЧасть то все вполне доступно через
Для Каждого текСтрока ИЗ Объект.Товары Цикл
39 LivingStar
 
25.07.15
14:11
(38) обычная табличная часть документа, но что вы пишете там пусто, есть на форме документа визуально только
40 Рэйв
 
25.07.15
14:13
(39)Если ума нет  и походу не будет:-)...Ты похоже нас до старости будешь утомлять своими тупыми темами...
41 LivingStar
 
25.07.15
14:13
(40) так а чт оподсказать чт ото можешь? что пишете не подходит я же объясняю
42 Рэйв
 
25.07.15
14:15
(41)Могу конечно.И даже знаю ответ.
Нот я тебе еще пару лет тому назад сказал, что тебе идиоту принципиально помогать не буду
43 LivingStar
 
25.07.15
15:19
Up!
44 ДенисЧ
 
25.07.15
16:11
(40) тебе немного осталось, так что не переэживай.
45 LivingStar
 
27.07.15
13:08
убрал составной тип у реквизита, он сейчас типа справочник, так внего при присвоении элемента все равно строка пишется, это как так?
47 H A D G E H O G s
 
27.07.15
13:10
"Иногда они возвращаются"
48 LivingStar
 
27.07.15
13:10
(46) ну и что бросать? что подскажете?
49 H A D G E H O G s
 
27.07.15
13:15
(48) Бросать пудрить мозги работодателям и идти работать в МакДак.
50 hhhh
 
27.07.15
13:16
(45) сделай нормальную загрузку. У тебя пусто, потому что ничего и не загрузил.
51 el7cartel
 
27.07.15
13:17
а сегодня пятница?
52 LivingStar
 
27.07.15
13:18
(50) я уже при загрузке это делаю, загружается только строка

Вроде при создании нового элемента он прописывается, а при его нахождении, когда есть его ссылка, в поле встает все равно строка
53 Timon1405
 
27.07.15
13:18
(50) ты не понимаешь, пока данные в таком виде, виноват, "тот, прошлый Вася, который криво их загрузил", а тут Д'Артаньян их "правит". Если же будет загрузка с 0, ответственность уже будет целиком его, а оно ему надо?
54 LivingStar
 
27.07.15
13:19
(53) так загрузка уже моя, я его переделал немного, сейчас проблема чт оссылка присваевается как строка в реквизит табличной части
55 el7cartel
 
27.07.15
13:20
(54) ну так посмотри какой тип у тебя в табличной части
56 LivingStar
 
27.07.15
13:21
(55) СправочникСсылка.УпаковкаНоменклатурыКлиента, сейчас только поправил, убрав строку и составной тип сам убрался потом

все равно присваивается как строка
57 LivingStar
 
27.07.15
13:21
счас етстирование и исправление выполнится попробую новый реквизит создать
58 vyaz
 
27.07.15
13:21
(54) ну это было уже в прошлой ветке, не повторяйся
59 hhhh
 
27.07.15
13:22
(54) ну вы присваиваете в реквизит ТЧ товары, тогда и нужно смотреть в Объект.Товары, уже неделю об этом вам талдычим, а вы всё равно какие-то фантастические варианты пробуете.
60 el7cartel
 
27.07.15
13:24
(54) два варианта, либо получаешь тип строку, либо в табличной части тип строка. Это трудно понять...печаль
61 LivingStar
 
27.07.15
13:24
(59) У объекта путь к данным Объект.Товары.УпаковкаКлиента
62 LivingStar
 
27.07.15
13:24
(61+)  у реквизита табличной части
63 LivingStar
 
27.07.15
13:26
(60) я нахожу элемент справочник ссылка и его возвращаю, в реквизите НоваяСтрока.УпаковкаКлиента тип строка в отладчике, и ссылка в него присваивается как строка, в конфигураторе это справочник
64 el7cartel
 
27.07.15
13:28
(63) "НоваяСтрока.УпаковкаКлиента тип строка " ну ты же сам ответил! ну будь мужиком поменяй тип данных)))
65 LivingStar
 
27.07.15
13:35
(64) так в конфигураторе его тип Справочник.УпаковкиНоменклатурыКлиентов
66 DexterMorgan
 
27.07.15
13:39
до сотки то дойдет?
67 hhhh
 
27.07.15
13:40
(66) да уже 5 веток было.
68 hhhh
 
27.07.15
13:41
(65) показывайте как присваиваете это поле, там может строку пишете в этот справочник?
69 DexterMorgan
 
27.07.15
13:42
(65) какая у тебя зп?
70 el7cartel
 
27.07.15
13:43
у тс каждая ветка просто шедевр)))
71 Бубка Гоп
 
27.07.15
13:43
Нет, так не бывает, наверно это тролль
72 LivingStar
 
27.07.15
13:50
НоменклатураКлиента = Док.Sheets(1).Cells(ДанныеНачинаютсяС, 3).Value;
        Пока СокрЛП(НоменклатураКлиента) <>"" Цикл
            НоваяСтрока = Объект.Товары.Добавить();
            // 2015_06_08 LivingStar ->
            Номенклатура = Неопределено;
            НоваяСтрока.НоменклатураКлиента= ПолучитьНоменклатуруКлиентаНаСервере(НоменклатураКлиента,Номенклатура, ОбъектСсылка);
            Если ЗначениеЗаполнено(Номенклатура) Тогда // И Не ЗначениеЗаполнено(Стр.Номенклатура) Тогда
                НоваяСтрока.Номенклатура = Номенклатура;
            КонецЕсли;    
            // <- LivingStar
            НоваяСтрока.Наименование = Док.Sheets(1).Cells(ДанныеНачинаютсяС, 3).Value;
            НоваяСтрока.ЕдиницаИзмерения = Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value;
            //XXX_23-04-14++
            //НоменклатураВБазе = Справочники.НоменклатураКлиента.НайтиПоНаименованию(Док.Sheets(1).Cells(ДанныеНачинаютсяС, 3).Value,,,Параметры.ОбъектСсылка.Партнер);
            Если ЗначениеЗаполнено(НоваяСтрока.Наименование) Тогда
                НоменклатураВБазе = ПолучитьНоменклатуруВБазе(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.ОбъектСсылка, "Партнер"), НоваяСтрока.Наименование);
            Иначе
                НоменклатураВБазе = ПредопределенноеЗначение("Справочник.НоменклатураКлиента.ПустаяСсылка");
            КонецЕсли;             
            //--
            Если НоменклатураВБазе = ПредопределенноеЗначение("Справочник.НоменклатураКлиента.ПустаяСсылка") Тогда
                НоваяСтрока.НоменклатураКлиента = Док.Sheets(1).Cells(ДанныеНачинаютсяС, 3).Value;
                //НоваяСтрока.Упаковка = Справочники.УпаковкиНоменклатуры.НайтиПоНаименованию(Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value);
                НоваяСтрока.ВидРеквизитаНоменклатураКлиента = Ложь;
                // LivingStar 2015_07_08 ->
                //НоваяСтрока.Упаковка = ВернутьУпаковкуНаСервере(НоваяСтрока.Номенклатура, "УпаковкаНоменклатуры", Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value);
                // <- LivingStar
                // XXX++
                Если НоваяСтрока.Свойство("УпаковкаКлиента") тогда
                    Новаястрока.УпаковкаКлиента = Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value;
                КонецЕсли;
                //--
                // LivingStar 2015_07_08 ->                                                                                           ТипЗнч(НоваяСтрока.УпаковкаКлиента) = Тип("Строка")
                Новаястрока.УпаковкаКлиента = ВернутьУпаковкуНаСервере(НоваяСтрока.НоменклатураКлиента, "УпаковкаНоменклатурыКлиента", ?(ТипЗнч(НоваяСтрока.УпаковкаКлиента) = Тип("Строка"), НоваяСтрока.УпаковкаКлиента, НоваяСтрока.УпаковкаКлиента.Наименование));
                // <- LivingStar
            Иначе
                НоваяСтрока.НоменклатураКлиента = НоменклатураВБазе;
                НоваяСтрока.Номенклатура = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НоменклатураВБазе, "Номенклатура");
                //НоваяСтрока.Упаковка = Справочники.УпаковкиНоменклатуры.НайтиПоНаименованию(Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value,,,НоменклатураВБазе.Номенклатура);
                // LivingStar 2015_07_08 ->
                //НоваяСтрока.Упаковка = ВернутьУпаковкуНаСервере(НоваяСтрока.Номенклатура, "УпаковкаНоменклатуры", Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value);
                // <- LivingStar
                НоваяСтрока.ВидРеквизитаНоменклатураКлиента = Истина;
                //XXX++
                Если НоваяСтрока.Свойство("УпаковкаКлиента") тогда
                    //УпаковкаКлиента = Справочники.УпаковкиНоменклатурыКлиентов.НайтиПоНаименованию(Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value,,,НоменклатураВБазе);                
                    УпаковкаКлиента = ЭлементСправочникаПоискПоНаименованию("УпаковкиНоменклатурыКлиентов",Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value, НоменклатураВБазе);
                    // LivingStar 2015_07_25 ->
                    //ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка.УпаковкиНоменклатурыКлиентов");
                    //Новаястрока.УпаковкаКлиента.ОграничениеТипа = ОписаниеТипа;
                    //Новаястрока.УпаковкаКлиента.Значение = ОписаниеТипа.ПривестиЗначение();
                    //Новаястрока.УпаковкаКлиента.ВыбиратьТип = Ложь; //это на всякий случай                     
                    // <-
                    Если УпаковкаКлиента = ПредопределенноеЗначение("Справочник.УпаковкиНоменклатурыКлиентов.ПустаяСсылка") Тогда
                        //ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value);
                        //Если НЕ ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.ПустаяСсылка() Тогда
                        //    НоваяУпаковкаКлиента = Справочники.УпаковкиНоменклатурыКлиентов.СоздатьЭлемент();
                        //    НоваяУпаковкаКлиента.ЕдиницаИзмерения = ЕдиницаИзмерения;
                        //    НоваяУпаковкаКлиента.Коэффициент = 1;
                        //    НоваяУпаковкаКлиента.Владелец = НоменклатураВБазе;
                        //    НоваяУпаковкаКлиента.Наименование = Справочники.УпаковкиНоменклатуры.СформироватьНаименование(НоваяУпаковкаКлиента.ЕдиницаИзмерения, НоваяУпаковкаКлиента.Коэффициент, НоменклатураВБазе.Номенклатура.ЕдиницаИзмерения);
                        //    НоваяУпаковкаКлиента.Записать();
                        //    НоваяСтрока.УпаковкаКлиента = НоваяУпаковкаКлиента.Ссылка;
                        //Иначе     
                        //НоваяСтрока.УпаковкаКлиента = Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value;
                        //КонецЕсли;
                        // LivingStar 2015_07_08 ->
                        Новаястрока.УпаковкаКлиента = ВернутьУпаковкуНаСервере(НоваяСтрока.НоменклатураКлиента, "УпаковкаНоменклатурыКлиента", Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value);
                        // <- LivingStar
                    Иначе
                        НоваяСтрока.УпаковкаКлиента = ПредопределенноеЗначение("Справочник.УпаковкиНоменклатурыКлиентов.ПустаяСсылка");
                        НоваяСтрока.УпаковкаКлиента = УпКл(Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value,НоваяСтрока.НоменклатураКлиента);
                        НоваяСтрока.УпаковкаКлиента = УпаковкаКлиента.Ссылка;
                        // LivingStar 2015_07_08 ->
                        НоваяСтрока.УпаковкаКлиента = ВернутьУпаковкуНаСервере(НоваяСтрока.НоменклатураКлиента, "УпаковкаНоменклатурыКлиента", Док.Sheets(1).Cells(ДанныеНачинаютсяС, 5).Value);
                        // <- LivingStar
                    КонецЕсли;
                КонецЕсли;
                //--

            КонецЕсли;
73 hhhh
 
27.07.15
13:58
(72) ну давайте ВернутьУпаковкуНаСервере(), что там? Вероятно там полная ахинея.
74 Бубка Гоп
 
27.07.15
14:00
75 LivingStar
 
27.07.15
14:22
(73) правлю
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс