Вход | Регистрация

1С:Предприятие ::

Метки: 

ДанныеФормыВЗначение

Я
   antihacker
 
14.11.17 - 05:45
Всем привет !
Вот код.
    НаборКонстантОбъект = ДанныеФормыВЗначение(Элементы.Резервы,Тип("ТаблицаЗначений"));
    
    Для Каждого ТекСтрока Из НаборКонстантОбъект Цикл
        
        ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2));
        
    КонецЦикла;
    
    ЗначениеВДанныеФормы(НаборКонстантОбъект, Элементы.Резервы);

пишет

Ошибка при вызове метода контекста (ДанныеФормыВЗначение)
    НаборКонстантОбъект = ДанныеФормыВЗначение(Резервы,Тип("ТаблицаЗначений"));


ПОчему так надо ? Потому что поле СреднедневнаяЗарплата  добавлен в ТЧ как реквизит формы. Остальные поля ТЧ от табличной части Объекта.

Почему такая ошибка ? И на правильном пути ли я вообще ?
 
 
   antihacker
 
1 - 14.11.17 - 05:58
Вот полная ошибка 
{Документ.НачислениеСуммРезерваКОтпуску.Форма.ФормаДокумента1.Форма(171)}: Ошибка при вызове метода контекста (ДанныеФормыВЗначение)
    НаборКонстантОбъект = ДанныеФормыВЗначение(Резервы,Тип("ТаблицаЗначений"));
по причине:
Несоответствие типов (параметр номер '1')
Несоответствие типов (параметр номер '1')
   ribuh
 
2 - 14.11.17 - 06:20
Для Каждого ТекСтрока Из Резервы Цикл

.......

КонецЦикла;

Вполне достаточно, если Резервы - реквизит с типом таблица значений управляемой формы
   antihacker
 
3 - 14.11.17 - 07:39
НЕт

Поле объекта не обнаружено (СреднедневнаяЗарплата)

Это потому что я добавил это поле на форме как дополнительное.

В Объект.Резервы его нету.
   ribuh
 
4 - 14.11.17 - 07:44
(3) Вы путаетесь в показаниях... Определись уже, Объект.Резервыф - это ТЧ объекта, просто Резервы - может быть реквизитом формы, состав реквизитов этой табличной части задается или в реквизитах объекта, или в реквизитах формы...
и да, где вы цикл запускаете, чтобы уж совсем наверняка, это нужно делать &НаСервере
   ribuh
 
5 - 14.11.17 - 07:48
Аааа, кажется дошло, у вас в ТЧ объекта нет поля СреднедневнаяЗарплата, оно добавлено в форме.
Зачем такое извращение, не моё дело, конечно. Но тут опять жен  на сервере, можно пойти таким путём:
тз = Элементы.Резервы.Выгрузить();
получим таблицу значений, потом с ней делаем, что захочется, и загружаем обратно...
   Sayan_mi
 
6 - 14.11.17 - 07:59
Да если это таблица то проще Не ДанныеФормыВЗначение а РеквизитФормыВЗначение("Резервы") на выходе получите таблицу значений.
   antihacker
 
7 - 14.11.17 - 11:34
НаборКонстантОбъект = РеквизитФормыВЗначение("Объект.Резервы");
    
    Для Каждого ТекСтрока Из НаборКонстантОбъект.резервы Цикл
        
        ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2));
        
    КонецЦикла;    НаборКонстантОбъект = РеквизитФормыВЗначение("Объект.Резервы");
    
    Для Каждого ТекСтрока Из НаборКонстантОбъект.резервы Цикл
        
        ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2));
        
    КонецЦикла;
    
    ЗначениеВРеквизитФормы(НаборКонстантОбъект, "Объект.Резервы");

ПИШЕТ

{Документ.НачислениеСуммРезерваКОтпуску.Форма.ФормаДокумента1.Форма(173)}: Поле объекта не обнаружено (резервы)
    Для Каждого ТекСтрока Из НаборКонстантОбъект.резервы Цикл




    
    ЗначениеВРеквизитФормы(НаборКонстантОбъект, "Объект.Резервы");
   antihacker
 
8 - 14.11.17 - 11:37
Пробовал так

    НаборКонстантОбъект = РеквизитФормыВЗначение("Объект");
    
    Для Каждого ТекСтрока Из НаборКонстантОбъект.Резервы Цикл
        
        ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2));
        
    КонецЦикла;
    
    ЗначениеВРеквизитФормы(НаборКонстантОбъект, "Объект");


ПИШЕТ

{Документ.НачислениеСуммРезерваКОтпуску.Форма.ФормаДокумента1.Форма(175)}: Поле объекта не обнаружено (СреднедневнаяЗарплата)
        ТекСтрока.СреднедневнаяЗарплата = ?(ТекСтрока.Дней = 0, 0, Окр(ТекСтрока.БазаРасчета / ТекСтрока.Дней, 2));
   Sayan_mi
 
9 - 14.11.17 - 11:45
Попробуй не Объект.Резервы, а просто Резервы и посмотри в отладчике что в текСтроку попадает.


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует