Имя: Пароль:
1C
1С v8
Помогите с заполнением табличной части
,
0 katerinaUniv
 
29.03.17
15:00
БП 3.0.49.17, пишу внешнюю обработку для заполнения табличной части перемещения. Нужно установить параметры запроса, для этого нужны значения дата и складОтправитель документа. Не получается обратиться к значениям.
1 katerinaUniv
 
29.03.17
15:01
склад = ПолучитьЗначениеРеквизита(ВладелецФормы.объект.СкладОтправитель);
    дата = ПолучитьЗначениеРеквизита(ВладелецФормы.объект.Дата);
    тз = ПолучитьОстатки(склад, дата);
    Если тз.Количество()> 0 Тогда
        Для Каждого текСтрока Из тз Цикл
            нСтрока = ВладелецФормы.Объект.Товары.Добавить();
            нСтрока.Номенклатура = текСтрока.Номенклатура;
            нСтрока.КоличествоМест = 1;
            нСтрока.Коэффициент = 1;
            нСтрока.Количество = текСтрока.Количество;
            нСтрока.СчетУчета = текСтрока.СчетУчета;
            нСтрока.НовыйСчетУчета = текСтрока.СчетУчета;
        КонецЦикла;
    КонецЕсли;
2 katerinaUniv
 
29.03.17
15:01
&НаСервере
Функция ПолучитьЗначениеРеквизита(чтоТо)
    Возврат РеквизитФормыВЗначение(чтоТо);
КонецФункции
3 katerinaUniv
 
29.03.17
15:01
ВладелецФормы.объект - тип данных ДанныеФормыСтруктура
4 katerinaUniv
 
29.03.17
15:15
помогите, если кто знает, в чем причина
5 h-sp
 
29.03.17
15:27
(4) правильнее писать

склад = ВладелецФормы.объект.СкладОтправитель;
    дата = ВладелецФормы.объект.Дата;
6 katerinaUniv
 
29.03.17
15:31
(5) не получается, когда передаю в функцию на сервере, где выполняется запрос, выдает ошибку о неверном типе данных
7 katerinaUniv
 
29.03.17
15:32
(5){ВнешняяОбработка.ЗаполнениеПоСкладу.Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (ПолучитьОстатки)
    тз = ПолучитьОстатки(склад, дата);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
8 katerinaUniv
 
29.03.17
15:32
Это реквизиты формы, а мне нужны их значения
9 butterbean
 
29.03.17
15:34
какой тип у ВладелецФормы.объект.СкладОтправитель??
10 katerinaUniv
 
29.03.17
16:01
(9) типЗнч показывает тип "Склад"
11 katerinaUniv
 
29.03.17
16:15
я понимаю, что метод РеквизитФормыВЗначение работает у меня для текущей формы
12 katerinaUniv
 
29.03.17
16:16
Нужно найти способ из структуры данных формы вытащить то, что мне необходимо
13 FIXXXL
 
29.03.17
16:23
(7) ты каким то макаром ТаблицуЗначений передаешь
смотри с отладчиком
14 dezss
 
29.03.17
16:32
(1) вот не люблю я переопределять стандартные названия, кроме запроса)))

А если "дата" переименовать?
15 dezss
 
29.03.17
16:35
(14) и применить способ из (5)
16 butterbean
 
29.03.17
16:36
(10) отладчиком посмотри, нет такого типа "Склад"
17 dezss
 
29.03.17
16:38
тьфу...тм там реально, походу, попытка вернуть из ПолучитьОстатки(склад, дата); ТЗ.
(1) это на клиенте выполняется?
18 katerinaUniv
 
29.03.17
16:40
ПолучитьОстатки() выполняется на сервере
19 katerinaUniv
 
29.03.17
16:40
а вызывается эта функция из процедуры на клиенте
20 katerinaUniv
 
29.03.17
16:41
как посмотреть отладчиком внешнюю обработку?
21 FIXXXL
 
29.03.17
16:44
(19) на клиенте вот это
тз = ПолучитьОстатки(склад, дата);
    Если тз.Количество()> 0 Тогда

вызывает ошибку
нет ТЗ на клиенте
22 h-sp
 
29.03.17
16:45
(19) всю вот эту фигню нужно на сервер

   тз = ПолучитьОстатки(склад, дата);
    Если тз.Количество()> 0 Тогда
        Для Каждого текСтрока Из тз Цикл
            нСтрока = ВладелецФормы.Объект.Товары.Добавить();
            нСтрока.Номенклатура = текСтрока.Номенклатура;
            нСтрока.КоличествоМест = 1;
            нСтрока.Коэффициент = 1;
            нСтрока.Количество = текСтрока.Количество;
            нСтрока.СчетУчета = текСтрока.СчетУчета;
            нСтрока.НовыйСчетУчета = текСтрока.СчетУчета;
        КонецЦикла;
    КонецЕсли;
23 katerinaUniv
 
29.03.17
16:46
(22) сервер говорит, что не знает, что такое ВладелецФормы.Объект.Товары.Добавить()
24 katerinaUniv
 
29.03.17
16:47
(21) эта функция возвращает таблицу значений на клиент, разве на клиенте не бывает таблиц значений?
25 FIXXXL
 
29.03.17
16:47
(24) нет
26 h-sp
 
29.03.17
16:47
(24) не бывает
27 h-sp
 
29.03.17
16:48
(24) возвращай массив структур тогда
28 FIXXXL
 
29.03.17
16:49
(24) но можешь сделать финт ушами:
завести реквизит формы с типом ТЗ, нарисовать колонки
гонять форму с клиента на сервер, заполнить реквизит и вернуться обратно
на клиенте перебирать строки реквизита
29 dezss
 
29.03.17
16:52
я голосую за (27)
30 katerinaUniv
 
29.03.17
16:55
(27) что это и как?
31 h-sp
 
29.03.17
17:01
(30) массив не знаешь что такое?
32 FIXXXL
 
29.03.17
17:01
33 katerinaUniv
 
29.03.17
17:08
(32) если я помещаю на сервере тз в хранилище, то потом на клиенте делаю что-то типа хранилище.Получить()
снова ошибки не будет? я же получу оттуда таблицу значений
34 dezss
 
29.03.17
17:08
(27) еще и безконтекстный вызов можно сделать, тогда...
35 dezss
 
29.03.17
17:09
(33) нет
36 dezss
 
29.03.17
17:09
(35) хранилище очистится, как только выйдешь с сервера...вроде так..
37 dezss
 
29.03.17
17:10
(33) делай как в (27) и в (32) тебе подсказали...так лучше...
ну или как в (28)
38 katerinaUniv
 
29.03.17
17:16
сделала как в (28)
39 katerinaUniv
 
29.03.17
17:16
спасибо всем за подсказки и помощь, если кому нужно, могу скинуть рабочую обработку
40 dezss
 
29.03.17
17:25
(39) Да зачем нам обработка.
Главное что фотка в профиле есть ;)
41 katerinaUniv
 
29.03.17
17:37
(40) я уже с красными волосами) только фото сюда никак не скину ;)