Ошибка Поле объекта не обнаружено (ДанныеПосещений)
у меня есть кусок кода в котором я не могу разобраться, я только учусь программированию на 1с и вот такая ошибка всё прикрепил ниже. у меня есть структура ток же прикрепил в скриншоте и ДанныеПосещений определенны как тип хранилеще значения
Ошибка
Поле объекта не обнаружено (ДанныеПосещений)
{Документ.РассписаниеТренеровок.Форма.ФормаДокумента.Форма(18)}:СтрокаПосещаемость.ДанныеПосещений = Новый Структура();
{Документ.РассписаниеТренеровок.Форма.ФормаДокумента.Форма(8)}:ЗаполнитьДанныеПосещаемости();
{Документ.РассписаниеТренеровок.Форма.ФормаДокумента.Форма(3)}:ОбновитьДанныеПосещаемости();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
&НаКлиенте
Процедура ЗаполнитьДанныеПосещаемости()
// Получаем таблицу дат тренировок
ТаблицаДаты = Объект.ДатыТренеровок;
Для Каждого СтрокаПосещаемость Из Объект.Посещаемость Цикл
СтрокаПосещаемость.ДанныеПосещений = Новый Структура();
Для Каждого СтрокаДаты Из ТаблицаДаты Цикл
ДатаТренировки = СтрокаДаты.Дата;
СтрокаПосещаемость.ДанныеПосещений.Вставить(ДатаТренировки, Ложь); //значение по умолчанию
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьОшибка
Поле объекта не обнаружено (ДанныеПосещений)
{Документ.РассписаниеТренеровок.Форма.ФормаДокумента.Форма(18)}:СтрокаПосещаемость.ДанныеПосещений = Новый Структура();
{Документ.РассписаниеТренеровок.Форма.ФормаДокумента.Форма(8)}:ЗаполнитьДанныеПосещаемости();
{Документ.РассписаниеТренеровок.Форма.ФормаДокумента.Форма(3)}:ОбновитьДанныеПосещаемости();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
Прикрепленные файлы:


Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(17) К сожалению, у нас всего 1 пара в неделю, ну, может, я не полноценно учусь, как вы и говорите, а так, поверхностно изучаю, но так или иначе мне нужна помощь, так как пока что того, что успел посмотреть за эти пару дней, недостаточно для понимания того, почему я не могу так сделать и как правильно нужно сделать, раз уж вы такой умный, могли бы и подсказать, а не кидаться странными обвинениями, что я не учусь и т. д.
(2) Он работает не с табличной частью прикладного объекта, а с ДанныеФормыКоллекция. Другое дело, что реквизит с типом хранилище значения в данных формы недоступен, с ним надо работать, например, в процедуре ПередЗаписьюНаСервере, обращаясь к ТЧ, полученной через ТекущийОбъект.
(20) задача что бы когда пользователь вводит дату в в документе, а именно показываю на скриншотах первый скрин сам документ второй уже зашли в него, после выбора даты эта дата должна создаваться в посещаемость со значением булево. полностью код выглядит вот так:
&НаКлиенте
Процедура ДатыТренеровокПриИзменении(Элемент)
ОбновитьДанныеПосещаемости();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДанныеПосещаемости()
ЗаполнитьДанныеПосещаемости();
СформироватьКолонкиПосещаемости();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДанныеПосещаемости()
// Получаем таблицу дат тренировок
ТаблицаДаты = Объект.ДатыТренеровок;
Для Каждого СтрокаПосещаемость Из Объект.Посещаемость Цикл
СтрокаПосещаемость.ДанныеПосещений = Новый Структура();
Для Каждого СтрокаДаты Из ТаблицаДаты Цикл
ДатаТренировки = СтрокаДаты.Дата;
СтрокаПосещаемость.ДанныеПосещений.Вставить(ДатаТренировки, Ложь); //значение по умолчанию
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьКолонкиПосещаемости()
ТаблицаДаты = Объект.ДатыТренеровок;
Для Каждого СтрокаДаты Из ТаблицаДаты Цикл
ДатаТренировки = СтрокаДаты.Дата;
ИмяКолонки = "Дата_" + Формат(ДатаТренировки, "ДФ=dd_MM_yy");
НоваяКолонка = ЭлементФормыПосещаемость.СоздатьКолонку(ИмяКолонки);
НоваяКолонка.Данные = "ДанныеПосещений[" + Строка(ДатаТренировки) + "]";
НоваяКолонка.Ширина = 50;
УстановитьРежимРедактированияКолонки (НоваяКолонка, "КакФлажок");
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьРежимРедактированияКолонки(Колонка, Режим)
Если Режим = "КакФлажок" Тогда
Колонка.РежимРедактирования = Перечисления.РежимРедактированияКолонкиТаблицы.КакФлажок;
ИначеЕсли Режим = "КакТекст" Тогда
Колонка.РежимРедактирования = Перечисления.РежимРедактированияКолонкиТаблицы.КакТекст;
ИначеЕсли Режим = "КакВыпадающийСписок" Тогда
Колонка.РежимРедактирования = Перечисления.РежимРедактированияКолонкиТаблицы.КакВыпадающийСписок;
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:



(22) ну вот смотрите, в даты тренировок нажимается кнопка добавить, после чего выбирается дата и вот после того как она выбрана, мы можем перейти в посещаемость и там у нас должен создаться столбик имя которого будет как раз датой, а значение тип булево. на втором скриншоте колонка должна появится после К посещению. на третьем скриншоте наглядно показал как должно получится
Прикрепленные файлы:



&НаКлиенте
Процедура ЗаполнитьДанныеПосещаемости()
ЗаполнитьДанныеПосещаемостиНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеПосещаемостиНаСервере()
// Получаем таблицу дат тренировок
ТаблицаДаты = Объект.ДатыТренеровок;
Для Каждого СтрокаПосещаемость Из Объект.Посещаемость Цикл
СтрокаПосещаемость.ДанныеПосещений = Новый Структура();
Для Каждого СтрокаДаты Из ТаблицаДаты Цикл
ДатаТренировки = СтрокаДаты.Дата;
СтрокаПосещаемость.ДанныеПосещений.Вставить(ДатаТренировки, Ложь); //значение по умолчанию
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьТолько в реквизит документа занести структуру невозможно. Предлагаю в табличную часть "Посещаемость" добавить реквизит "ДатаТренировки" с типом "Дата". Когда галочка устанавливается, в ТЧ "Посещаемость" добавляется запись с датой в реквизите "ДатаТренировки" из текущей колонки. Когда галочка снимается - запись удаляется.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот