Выдает ошибку "Поле объекта не обнаружено"
Я хочу реализовать функцию, при которой данные будут автоматически заполняться на основе информации из другого документа.
&НаКлиенте
Процедура Подбор(Команда)
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина);
ФормаВыбора=ОткрытьФорму("Документ.УчетПеремещенияОборудования.Форма.ФормаДляСписания", ПараметрыФормы, Элементы.ТабличнаяЧастьСписания);
ПользовательскийОтбор = ФормаВыбора.Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ФормаВыбора.Список.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки);
ПользовательскийОтбор.Элементы.Очистить();
ЭлементОтбора = ПользовательскийОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ЭлементОтбора.Использование = Истина;
УжеСписали = СписанныеМатериалы();
ЭлементОтбора.ПравоеЗначение = УжеСписали;
КонецПроцедуры
Ошибка
Поле объекта не обнаружено (ТабличнаяЧастьСписания)
{Документ.СписаниеОборудования.Форма.ФормаДокумента.Форма(46)}: ФормаВыбора=ОткрытьФорму("Документ.УчетПеремещенияОборудования.Форма.ФормаДляСписания", ПараметрыФормы, Элементы.ТабличнаяЧастьСписания);
Полный код в форме документа
&НаКлиенте
Процедура СписанияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Нафиг = Ложь;
Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл
Для Каждого Строка Из Объект.ТабличнаяЧастьСписания Цикл
Если Строка.ДокументОснование = ВыбранныйЭлемент Тогда
НаФиг = Истина;
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Уже добавлено - " + Строка(ВыбранныйЭлемент);
Сообщение.Сообщить();
КонецЕсли;
КонецЦикла;
Если Нафиг=Ложь Тогда
НоваяСтрока = Объект.ТабличнаяЧастьСписания.Добавить();
НоваяСтрока.ДокументОснование = ВыбранныйЭлемент;
КонецЕсли;
Нафиг = Ложь;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция СписанныеМатериалы()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| СписаниеОборудованияТабличнаяЧастьСписания.ДокументОснование
|ИЗ
| Документ.СписаниеОборудования.ТабличнаяЧастьСписания КАК СписаниеОборудованияТабличнаяЧастьСписания";
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ДокументОснование");
КонецФункции
&НаКлиенте
Процедура Подбор(Команда)
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина);
ФормаВыбора=ОткрытьФорму("Документ.УчетПеремещенияОборудования.Форма.ФормаДляСписания", ПараметрыФормы, Элементы.ТабличнаяЧастьСписания);
ПользовательскийОтбор = ФормаВыбора.Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ФормаВыбора.Список.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки);
ПользовательскийОтбор.Элементы.Очистить();
ЭлементОтбора = ПользовательскийОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ЭлементОтбора.Использование = Истина;
УжеСписали = СписанныеМатериалы();
ЭлементОтбора.ПравоеЗначение = УжеСписали;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить ("ОбновитьПеремещенияТабличнуюЧасть");
КонецПроцедуры
&НаКлиенте
Процедура СписанияПослеУдаления(Элемент)
Оповестить ("ОбновитьПеремещенияТабличнуюЧасть");
КонецПроцедуры
Ответы (2 шт):
Автор решения: santavital
→ Ссылка
ФормаВыбора=ОткрытьФорму("Документ.УчетПеремещенияОборудования.Форма.ФормаДляСписания", ПараметрыФормы, Элементы.ТабличнаяЧастьСписания);
Почему Элементы.ТабличнаяЧастьСписания ?
Должно быть прото ТабличнаяЧастьСписания (таб-часть объекта)
Автор решения: dahoonpao
→ Ссылка
Табличная часть - самостоятельная структура, тебе не нужно обращаться к ней через элементы, обращайся просто по имени:
ТабличнаяЧастьСписания