Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Таблица формы и ЗначениеВРеквизитФормы

Таблица формы и ЗначениеВРеквизитФормы
Я
   geminisf
 
26.07.21 - 11:31
Доброго всем дня. Столкнулся с проблемой. Есть код в модуле формы

&НаСервере
Процедура ДобавитьБазыВИсключенияНаСервере(ВыделенныеСтроки)

    ОбъектОбработки = РеквизитФормыВЗначение("Объект");
    ОбъектОбработки.ДобавитьБазыВИсключения(ВыделенныеСтроки);
    ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
 
КонецПроцедуры


&НаКлиенте
Процедура ДобавитьБазыВИсключения(Команда)
    
    ВыделенныеСтроки = Элементы.ТабБазы.ВыделенныеСтроки;
    ДобавитьБазыВИсключенияНаСервере(ВыделенныеСтроки);
    ЭтаФорма.ОбновитьОтображениеДанных();

КонецПроцедуры


Процедура в модуле объекта

Процедура ДобавитьБазыВИсключения(ВыделенныеСтроки) Экспорт    
    Для Каждого Стр из ВыделенныеСтроки Цикл        
            СтрБазыИсключения = ТабБазыИсключения.Добавить();
            СтрБазыИсключения.База = ТабБазы[Стр].База;                            
    КонецЦикла;    
    
КонецПроцедуры


Первый раз всё отрабатывает нормально. Если же попытаться добавить в исключения еще один элемент, то вываливается "Индекс находится за пределами массива". Такое ощущение, что каждый раз таблица формы "Элементы.ТабБазы" задваивается, т.к. индексы строк увеличиваются каждый раз на количество элементов в "ТабБазы".
   ДенисЧ
 
1 - 26.07.21 - 11:32
Это нормально и описано в документации (как минимум в книжке по УФ)
   lodger
 
2 - 26.07.21 - 11:47
потому что писать надо так, чтобы 
РеквизитФормыВЗначение и ЗначениеВРеквизитФормы использовались только в исключительных ситуациях. а просто, чтобы переложить из таб в таб - напиши в модуле формы.
это
а) ресурсоёмкая операция
б) имеет нюансы, которые надо учитывать. собственно, например (0) это и есть нюанс. это не таскание объекта, это пересоздание там, а тут это перезаполнение.
   geminisf
 
3 - 26.07.21 - 12:20
(1) Спасибо. Уже нашел.
   geminisf
 
4 - 26.07.21 - 12:21
(2) "а просто, чтобы переложить из таб в таб - напиши в модуле формы."
Так и сделал. Спасибо

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.