Имя: Пароль:
1C
1С v8
обращение к элемнту табличной части справочника &НаКлиенте
0 herArt
 
21.01.14
17:01
Кто знает, подскажите как можно обратиться к элементу табличной части справочника из процедуры, работающей наКлиенте.
Вызываю из процедуры на клиенте функцию на сервере, в которой можно обратиться к табличной части справочника, но как этой функцией передать значения элементов табличной части понять не могу.
1 Euguln
 
21.01.14
17:04
(0) Структурой
2 Euguln
 
21.01.14
17:05
(0) Если нужна вся таблица, то создавай реквизит формы - таблица значений.
3 zladenuw
 
21.01.14
17:10
(0) а что ты хочешь делать дальше ?
4 Avganec
 
21.01.14
17:13
(0) "РеквизитФормыВЗначение" и "ЗначениеВРеквизитФормы" подойдет?
5 zladenuw
 
21.01.14
17:14
(4) так может он хочет текущую строку
6 herArt
 
21.01.14
17:20
вообще задача такая:
нужно, чтобы в отчете устанавливался отбор по всем элемментам табличной части справочника.
7 herArt
 
21.01.14
17:22
не могу понять, как её передать в форму отчёта
8 Avganec
 
21.01.14
17:22
(6) через (4) передавай то, что нужно, хоть Объект, хоть ТаблицуЗначений, хоть что, и на сервере обрабатывай.
9 Fram
 
21.01.14
17:24
(6) у таб части нет элементов. есть строки
10 Fram
 
21.01.14
17:25
(7) её - таб часть?
11 herArt
 
21.01.14
17:27
да табличную часть
12 Fram
 
21.01.14
17:29
похоже ты неправильно понял задачу. еще раз прочитай вдумайся
13 Euguln
 
21.01.14
17:31
(11) А табличная часть вида Параметр|Значение ?
14 Avganec
 
21.01.14
17:32
(11) если у тебя табличная часть справочника, то передавай весь объект на сервере, ТЧ передастся тоже, как элемент справочника.
15 herArt
 
21.01.14
17:34
всё равно не могу обратиться к строкам табличной части, пишет, что поле не обнаружено
16 zladenuw
 
21.01.14
17:34
(15) показывай код. что, куда и как.
17 herArt
 
21.01.14
17:40
пробовал как-то так:

&НаКлиенте

Процедура Сформировать(Команда)
    
    Если Продукция.Пустая() = Ложь Тогда
    номерСтроки=1;
        Для Каждого  текущийЭлемент из   ВыбратьСырьё(Продукция).табличнаячасть Цикл    
    КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить();
    КомпоновщикНастроек.Настройки.Отбор.Элементы[номерСтроки].ЛевоеЗначение = "ВидСырья";
    КомпоновщикНастроек.Настройки.Отбор.Элементы[номерСтроки].ПравоеЗначение = ТекущийЭлемент.ВидСырья;
    номерСтроки=номерСтроки+1;
    КонецЦикла;
    КонецЕсли;
    
        
        

    СкомпоноватьРезультат();



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


Функция ВыбратьСырьё(ВидПродукции)
Возврат Справочники.КомпонентыРазлива.НайтиПоНаименованию(ВидПродукции);                
КонецФункции
18 Avganec
 
21.01.14
17:40
(17) хм... а где вызов сервера?
19 herArt
 
21.01.14
17:41
функция ВыбратьСырьё обрабатывается на сервере
20 herArt
 
21.01.14
17:42
или я чего-то не догоняю)))
21 Avganec
 
21.01.14
17:43
(20) подготовь все данные на сервере это раз, передай на клиента например массив, структуру попроще, и пометь функцию, что она на сервере
22 SUA
 
21.01.14
17:44
(19) так возвращается только ссылка на элемент справочника
сделай что-то вроде
Справочники.КомпонентыРазлива.НайтиПоНаименованию(ВидПродукции).табличнаячасть.ВыгрузитьКолонку("ВидСырья")
23 SUA
 
21.01.14
17:45
и далее
Для Каждого  текущийЭлемент из   ВыбратьСырьё(Продукция) Цикл    
    КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить();
    КомпоновщикНастроек.Настройки.Отбор.Элементы[номерСтроки].ЛевоеЗначение = "ВидСырья";
    КомпоновщикНастроек.Настройки.Отбор.Элементы[номерСтроки].ПравоеЗначение = ТекущийЭлемент;
    номерСтроки=номерСтроки+1;
    КонецЦикла;
24 herArt
 
21.01.14
17:45
функцию помечал - результат тот же, по умолчанию же вроде как на сервере выполняется. Попробую передать массив
25 SUA
 
21.01.14
17:46
правда не спасет
надо (телепатирую) в отбор вид сравнения закинуть "в списке" и правое значение все полученные виды сырья
26 herArt
 
21.01.14
17:47
так пробовал пишет, что не соответствуют типы данных текущийЭлемент и ВыбратьСырьё
27 zladenuw
 
21.01.14
17:47
(25) таки да. и список вернет функция которая выгрузить с тч массив
28 zladenuw
 
21.01.14
17:49
&НаКлиенте

Процедура Сформировать(Команда)
    
    Если Продукция.Пустая() = Ложь Тогда
    ТекОтбор = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить();
    ТекОтбор.ЛевоеЗначение = "ВидСырья";
    ТекОтбор.ВидСравнения = ВидСравнения.ВСписке
    ТекОтбор.ПравоеЗначение = ПолучитьМассив(Продукция);ТекущийЭлемент.ВидСырья;
     КонецЕсли;      
        

    СкомпоноватьРезультат();
КонецПроцедуры

&НаСервере
Функция ВыбратьСырьё(ВидПродукции)
Возврат Справочники.КомпонентыРазлива.НайтиПоНаименованию(ВидПродукции).табличнаячасть.ВыгрузитьКолонку("ВидСырья");                
КонецФункции
29 herArt
 
21.01.14
17:49
правда не спасет
надо (телепатирую) в отбор вид сравнения закинуть "в списке" и правое значение все полученные виды сырья

немного не понял, можно поподробнее?
30 Avganec
 
21.01.14
17:50
(29) читай (28), правда там, где установка правого значения небольшой косяк, установи там указанную функцию.
31 herArt
 
21.01.14
17:51
ок теперь понял, буду пробовать. Спасибо!!!!