helpf.pro
Регистрация

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

bless18
01.11.2010 11:48Прочитано: 15853
Здравствйте, пишу функцию
Код 1C v 8.х
 Функция ФормКоррСчета()
ОгрДлины = 50;
СтрокаТЗ = ЭлементыФормы.ПеремещениеТМЗ.ТекущиеДанные;
Если НЕ ПустаяСтрока(ЭлементыФормы.ПеремещениеТМЗ.Колонки.ВидТМЗ) И Не ПустаяСтрока(ЭлементыФормы.ПеремещениеТМЗ.Колонки.ВидТМЗПолучил) И
Не ПустаяСтрока(ЭлементыФормы.ПеремещениеТМЗ.Колонки.Товар) И Не ПустаяСтрока(ЭлементыФормы.ПеремещениеТМЗ.Колонки.ТоварПолучил) Тогда

СчетТМЗ = СтрокаТЗ.ВидТМЗ.СчетТМЗ;
СчетТМЗПолучил = СтрокаТЗ.ВидТМЗПолучил.СчетТМЗ;

ЭлементыФормы.ФормКоррСчета.Заголовок =
"Дт " + СчетТМЗПолучил.Код +
" // " + СокрЛП(СтрокаТЗ.ТоварПолучил.ПолныйКод()) +" (" + СокрЛП(Лев(СтрокаТЗ.ТоварПолучил.Наименование, ОгрДлины))+")"+
Символы.ПС +
"Кт " + СчетТМЗ.Код +
" // " + СокрЛП(СтрокаТЗ.Товар.ПолныйКод()) +" ("+СокрЛП(Лев(СтрокаТЗ.ТоварПолучил.Наименование, ОгрДлины))+")";
Иначе
КоррСчет = "";
КонецЕсли;
Возврат КоррСчет;
КонецФункции

Вызываю ее в процедуре приАктивизацииСтроки() - строка табличного поля
Все работает, но когда удаляю строку в ТЧ, получаю ошибку
{Документ.ПеремещениеТМЗ.Форма.ФормаДокумента(274)}: Значение не является значением объектного типа (ВидТМЗ)
СчетТМЗ = СтрокаТЗ.ВидТМЗ.СчетТМЗ;
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
01.11.2010 12:16Ответ № 1
(0) bless18, Потому что когда ты удяляешь строку ТекущиеДанные очищяются!
СтрокаТЗ = ЭлементыФормы.ПеремещениеТМЗ.ТекущиеДанные;

Если ты получаешь через Активизацию строки, то у тебя в процедуре должны быть параметры строки:
Код 1C v 8.х
 Функция ФормКоррСчета(Элемент)   

и .ВидТМЗ.СчетТМЗ; получай из этого Элемента
bless18
02.11.2010 11:08Ответ № 2
То есть писать Элемент.ВидТМЗ.СчетТМЗ?
E_Migachev
02.11.2010 11:18Ответ № 3
(2) Вроде как да, но лучше в отладчике посмотреть - что представляет из себя Элемент
bless18
02.11.2010 11:30Ответ № 4
Элемент представляет собой табличное поле, у которого имеются ВидТМЗ, но СчетТМЗ через него не виден. Дает ошибку

{Документ.ПеремещениеТМЗ.Форма.ФормаДокумента(274)}: Поле объекта не обнаружено (СчетТМЗ)
СчетТМЗ = Элемент.Колонки.ВидТМЗ.СчетТМЗ;


ВидТМЗ имеет тип справочник, а СчетТМЗ является реквизитом этого справочника
E_Migachev
02.11.2010 11:38Ответ № 5
(4) Должно быть так: Элемент.ТекущаяСтрока.ВидТМЗ.СчетТМЗ;
bless18
02.11.2010 11:56Ответ № 6
Так работает, пока не удаляю строчку табличной части, а когда удаляю, то Элемент.ТекущаяСтрока = Непределено, а поле Элемент.ТекущаяСтрока.ВидТМЗ.СчетТМЗ не обнаружено
E_Migachev
02.11.2010 11:58Ответ № 7
(6) потому что как ты удаляешь строку, пропадает активизация!
И пока ты на какой-нибудь строке не щелкнешь - ничего не посчитает...
можно например программно - после удаления установить выдление следующей строки, если оно надо *13
bless18
02.11.2010 12:08Ответ № 8
а может тогда не надо вызывать через Активацию строки эту функцию?
Мне нужно, чтобы при выводе данных в табличную часть, показывалась информация с какого на какой счет переместили товар, это делается с помощью функции ФормКоррСчет(Элемент), я никак не могу найти такой ее вызов, чтобы при выводе данных появлялась информация *09
E_Migachev
02.11.2010 12:26Ответ № 9
Сделай в Таблиной части дополнительную колонку Счет Товара и в Собитии ПриВыводеСтроки пропиши вывод счета в эту колонку!
bless18
02.11.2010 13:03Ответ № 10
Спасибо! Попробую так )
bless18
03.11.2010 08:21Ответ № 11
немного неточно выразилась..
после того, как выведутся данные в ТЧ, в поле Надпись выводится информация о том, с какого счета на какой переместили товар..
я завела еще 2 реквизита ТЧ: СчетДт и СчетКт, имеющие тип СправочникСсылка.СчетаТМЗ и получаю в них код через процедуру ПриВыводеСтроки:
Код 1C v 8.х
 
Процедура ПеремещениеТМЗПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
СтрокаТЗ = ПеремещениеТМЗ.Выгрузить().Колонки;
Запрос = Новый Запрос("ВЫБРАТЬ
| ТиповойОстатки.Счет КАК Счет,
| ТиповойОстатки.Субконто1 КАК Номенклатура,
| ТиповойОстатки.Счет.Ссылка КАК сч
|ИЗ
| РегистрБухгалтерии.Типовой.Остатки(&Дата, , &ВидыСубконто, ) КАК ТиповойОстатки
|
|СГРУППИРОВАТЬ ПО
| ТиповойОстатки.Счет,
| ТиповойОстатки.Субконто1,
| ТиповойОстатки.Счет.Ссылка");

ВидыСубконто = Новый Массив;
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура);
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоТиповые.МестаХранения);
Запрос.УстановитьПараметр("ВидыСубконто",ВидыСубконто);
Запрос.УстановитьПараметр("Дата", ?(ЭтоНовый(),Дата(1,1,1),Дата));

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СчетКтДт = Справочники.ВидыТМЗРаботУслуг.НайтиПоРеквизиту("СчетТМЗ", Выборка.Сч).Код;
СтрокаТЗ.СчетДт = СчетКтДт;
СтрокаТЗ.СчетКт = СчетКтДт;
КонецЦикла;
ФормКоррСчета(ПеремещениеТМЗ);
КонецПроцедуры


Дает ошибку Поле СчетДт недоступно для записи
E_Migachev
03.11.2010 09:34Ответ № 12
СчетДт - ты добавила его как реквизит табличной части или просто колонку?

Вот, посмотри на эту тему:
v8: Табличное поле ~ Дополнительная вычисляемая или текстовая колонка в табличной части, списке, журнале
Как сделать чтобы в колонке табличного поля выводились текущие остатки?
bless18
05.11.2010 08:17Ответ № 13
Оо, спасибо большое! )
bless18
05.11.2010 08:22Ответ № 14
Еще такой вопрос. При выборе номенклатуры в ТЧ в поле единица измерения должна отображаться единица, которая записана в справочнике Номенклатура
Поле единица измерения имеет тип СправочникСсылкаКлассификаторЕдиницИзмерения
Пишу
Код 1C v 8.х
 
СтрокаТЧ.ЕдИзм = СтрокаТЧ.Товар.ЕдИзм

Ничего не выводит.. *13
E_Migachev
07.11.2010 20:36Ответ № 15
(14) bless18, тип колонки какой?
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.