|
ДанныеФормыВЗначение | ☑ | ||
---|---|---|---|---|
0
antihacker
14.11.17
✎
05:45
|
Всем привет !
Вот код. НаборКонстантОбъект = ДанныеФормыВЗначение(Элементы.Резервы,Тип("ТаблицаЗначений")); Для Каждого ТекСтрока Из НаборКонстантОбъект Цикл ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2)); КонецЦикла; ЗначениеВДанныеФормы(НаборКонстантОбъект, Элементы.Резервы); пишет Ошибка при вызове метода контекста (ДанныеФормыВЗначение) НаборКонстантОбъект = ДанныеФормыВЗначение(Резервы,Тип("ТаблицаЗначений")); ПОчему так надо ? Потому что поле СреднедневнаяЗарплата добавлен в ТЧ как реквизит формы. Остальные поля ТЧ от табличной части Объекта. Почему такая ошибка ? И на правильном пути ли я вообще ? |
|||
1
antihacker
14.11.17
✎
05:58
|
Вот полная ошибка
{Документ.НачислениеСуммРезерваКОтпуску.Форма.ФормаДокумента1.Форма(171)}: Ошибка при вызове метода контекста (ДанныеФормыВЗначение) НаборКонстантОбъект = ДанныеФормыВЗначение(Резервы,Тип("ТаблицаЗначений")); по причине: Несоответствие типов (параметр номер '1') Несоответствие типов (параметр номер '1') |
|||
2
ribuh
14.11.17
✎
06:20
|
Для Каждого ТекСтрока Из Резервы Цикл
....... КонецЦикла; Вполне достаточно, если Резервы - реквизит с типом таблица значений управляемой формы |
|||
3
antihacker
14.11.17
✎
07:39
|
НЕт
Поле объекта не обнаружено (СреднедневнаяЗарплата) Это потому что я добавил это поле на форме как дополнительное. В Объект.Резервы его нету. |
|||
4
ribuh
14.11.17
✎
07:44
|
(3) Вы путаетесь в показаниях... Определись уже, Объект.Резервыф - это ТЧ объекта, просто Резервы - может быть реквизитом формы, состав реквизитов этой табличной части задается или в реквизитах объекта, или в реквизитах формы...
и да, где вы цикл запускаете, чтобы уж совсем наверняка, это нужно делать &НаСервере |
|||
5
ribuh
14.11.17
✎
07:48
|
Аааа, кажется дошло, у вас в ТЧ объекта нет поля СреднедневнаяЗарплата, оно добавлено в форме.
Зачем такое извращение, не моё дело, конечно. Но тут опять жен на сервере, можно пойти таким путём: тз = Элементы.Резервы.Выгрузить(); получим таблицу значений, потом с ней делаем, что захочется, и загружаем обратно... |
|||
6
Sayan_mi
14.11.17
✎
07:59
|
Да если это таблица то проще Не ДанныеФормыВЗначение а РеквизитФормыВЗначение("Резервы") на выходе получите таблицу значений.
|
|||
7
antihacker
14.11.17
✎
11:34
|
НаборКонстантОбъект = РеквизитФормыВЗначение("Объект.Резервы");
Для Каждого ТекСтрока Из НаборКонстантОбъект.резервы Цикл ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2)); КонецЦикла; НаборКонстантОбъект = РеквизитФормыВЗначение("Объект.Резервы"); Для Каждого ТекСтрока Из НаборКонстантОбъект.резервы Цикл ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2)); КонецЦикла; ЗначениеВРеквизитФормы(НаборКонстантОбъект, "Объект.Резервы"); ПИШЕТ {Документ.НачислениеСуммРезерваКОтпуску.Форма.ФормаДокумента1.Форма(173)}: Поле объекта не обнаружено (резервы) Для Каждого ТекСтрока Из НаборКонстантОбъект.резервы Цикл ЗначениеВРеквизитФормы(НаборКонстантОбъект, "Объект.Резервы"); |
|||
8
antihacker
14.11.17
✎
11:37
|
Пробовал так
НаборКонстантОбъект = РеквизитФормыВЗначение("Объект"); Для Каждого ТекСтрока Из НаборКонстантОбъект.Резервы Цикл ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2)); КонецЦикла; ЗначениеВРеквизитФормы(НаборКонстантОбъект, "Объект"); ПИШЕТ {Документ.НачислениеСуммРезерваКОтпуску.Форма.ФормаДокумента1.Форма(175)}: Поле объекта не обнаружено (СреднедневнаяЗарплата) ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2)); |
|||
9
Sayan_mi
14.11.17
✎
11:45
|
Попробуй не Объект.Резервы, а просто Резервы и посмотри в отладчике что в текСтроку попадает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |