0
geminisf
26.07.21
✎
11:31
|
Доброго всем дня. Столкнулся с проблемой. Есть код в модуле формы
&НаСервере
Процедура ДобавитьБазыВИсключенияНаСервере(ВыделенныеСтроки)
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
ОбъектОбработки.ДобавитьБазыВИсключения(ВыделенныеСтроки);
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьБазыВИсключения(Команда)
ВыделенныеСтроки = Элементы.ТабБазы.ВыделенныеСтроки;
ДобавитьБазыВИсключенияНаСервере(ВыделенныеСтроки);
ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры
Процедура в модуле объекта
Процедура ДобавитьБазыВИсключения(ВыделенныеСтроки) Экспорт
Для Каждого Стр из ВыделенныеСтроки Цикл
СтрБазыИсключения = ТабБазыИсключения.Добавить();
СтрБазыИсключения.База = ТабБазы[Стр].База;
КонецЦикла;
КонецПроцедуры
Первый раз всё отрабатывает нормально. Если же попытаться добавить в исключения еще один элемент, то вываливается "Индекс находится за пределами массива". Такое ощущение, что каждый раз таблица формы "Элементы.ТабБазы" задваивается, т.к. индексы строк увеличиваются каждый раз на количество элементов в "ТабБазы".
|
|
2
lodger
26.07.21
✎
11:47
|
потому что писать надо так, чтобы
РеквизитФормыВЗначение и ЗначениеВРеквизитФормы использовались только в исключительных ситуациях. а просто, чтобы переложить из таб в таб - напиши в модуле формы.
это
а) ресурсоёмкая операция
б) имеет нюансы, которые надо учитывать. собственно, например (0) это и есть нюанс. это не таскание объекта, это пересоздание там, а тут это перезаполнение.
|
|