Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 14:54

ошибка Значение не является значением объектного типа

Автор mila1231, 19 апр 2016, 10:49

0 Пользователей и 1 гость просматривают эту тему.

mila1231

Записываю данные из табличного поля в документ. Если в табличном поле всего одна строка, то данные записываются без ошибок, если несколько то появляется ошибка {Обработка.Загрузка_данных.Форма.Форма.Форма(9)}: Значение не является значением объектного типа (контрагент)
НовДок = Документы.Загрузка_кем.СоздатьДокумент();
НовДок.Дата=ТекущаяДата();
НовДок.УстановитьНовыйНомер();

Для Каждого стр Из Таблица Цикл
нс=НовДок.данные.добавить();
нс.Контрагент= Строка(ЭлементыФормы.Таблица.ТекущиеДанные.контрагент);
нс.Марка_СИ= Строка(ЭлементыФормы.Таблица.ТекущиеДанные.Марка_СИ);
........

КонецЦикла;
НовДок.Записать(РежимЗаписиДокумента.Проведение);


из-за чего эта ошибка может появляться?

cska-fanat-kz

проверьте "ЭлементыФормы.Таблица.ТекущиеДанные" на Неопределено
    Если ЭлементыФормы.Таблица.ТекущиеДанные <> Неопределено Тогда
    ...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Ээээээээээ, цикл идет по
Цитата: mila1231 от 19 апр 2016, 10:49Для Каждого стр Из Таблица Цикл

а данные записываются из
Цитата: mila1231 от 19 апр 2016, 10:49Строка(ЭлементыФормы.Таблица.ТекущиеДанные.контрагент);

мне одному кажется, что это несколько неправильно.

mila1231

Цитата: vitasw от 19 апр 2016, 11:24
Ээээээээээ, цикл идет по
Цитата: mila1231 от 19 апр 2016, 10:49Для Каждого стр Из Таблица Цикл

а данные записываются из
Цитата: mila1231 от 19 апр 2016, 10:49Строка(ЭлементыФормы.Таблица.ТекущиеДанные.контрагент);

мне одному кажется, что это несколько неправильно.

возможно и не правильно...
смотрите есть обработка в ней табличное поле называется Таблица из этой табличной формы нужно данные записать в табличную форму документа она называется данные.
соответственно я нужному табличному реквизиту приравниваю текущее значение из табличного поля, которое на обработке, т.е Таблица.
Я согласна была бы, что не правильно. Но если я делаю загрузку из документа с одной строкой, то всё в норме, а если несколько строк, то ошибка.
Добавлено: 19 апр 2016, 11:35


Цитата: cska-fanat-kz от 19 апр 2016, 11:10
проверьте "ЭлементыФормы.Таблица.ТекущиеДанные" на Неопределено
    Если ЭлементыФормы.Таблица.ТекущиеДанные <> Неопределено Тогда
    ...
Сделала проверку, по условию, если =Неопределено, значит выводит сообщение... сообщение есть, но по сути я же правильно понимаю, одна из ячеек табличного поля должна быть пустой,а они все заполнены, пустых нет или нет я не права??

vitasw

Смешались вкучу кони-люди...
1. Текущие данные - это элемент формы и служит только для обращения к текущей строке таблицы формы и больше ни для чего другого.
2. Если уж начали перебирать циклом реквизит обработки, так и используйте реквизит обработки, а не элементы формы
Для Каждого стр Из Таблица Цикл
нс=НовДок.данные.добавить();   
нс.Контрагент= стр.контрагент;
...
КонецЦикла;

3. В обработке и в документе "Контрагент" имеет тип Строка?

mila1231

Цитата: vitasw от 19 апр 2016, 11:43
Смешались вкучу кони-люди...
1. Текущие данные - это элемент формы и служит только для обращения к текущей строке таблицы формы и больше ни для чего другого.
2. Если уж начали перебирать циклом реквизит обработки, так и используйте реквизит обработки, а не элементы формы
Для Каждого стр Из Таблица Цикл
нс=НовДок.данные.добавить();   
нс.Контрагент= стр.контрагент;
...
КонецЦикла;

3. В обработке и в документе "Контрагент" имеет тип Строка?

все поля строки.. но одна нужно одну из ячеек будет в дату преобразовать.. не подскажите как??:nhsrm:

cska-fanat-kz

а в каком виде у вас дата?
ДД.ММ.ГГГГ?
тогда нс.Дата = Дата(Число(Прав(стр.Дата,4)),Число(Сред(стр.Дата,4,2)),Число(Лев(стр.Дата,2)))
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

mila1231

Цитата: cska-fanat-kz от 19 апр 2016, 12:26
а в каком виде у вас дата?
ДД.ММ.ГГГГ?
тогда нс.Дата = Дата(Число(Прав(стр.Дата,4)),Число(Сред(стр.Дата,4,2)),Число(Лев(стр.Дата,2)))

даааа.. я сделала немного длиннее с отдельной функцией)))  счас посмотрела..возьму ваш вариант.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск