|
Проблемы с "НайтиСтроки" | ☑ | ||
---|---|---|---|---|
0
daringer
15.04.15
✎
10:38
|
Добрый день! Возникла проблема с методом "НайтиСтроки" в Таблице значений (ДанныеФормыКоллекция).
К примеру в таблице данных 5 строк, я вызываю процедуру рекурсивно с разными отборами, в цикле присваиваю значения в определенные колонки таблицы,и на некоторой итерации отладчик показывает значение Стр.КакойТоРеквизит = "Какое то значение", но в самой таблице данных это значение остается пустым. Почему Стр имеет значение, а в таблице это значение пустой, ведь "НайтиСтроки" возвращает ссылки на строки таблицы? НайденныеСтроки = ТаблицаДанных.НайтиСтроки(Отбор); Для каждого Стр из НайденныеСтроки цикл Стр.КакойТоРеквизит = "Какое то значение"; КонецЦикла; |
|||
1
Альбатрос
15.04.15
✎
10:42
|
Вообще-то, НайтиСТроки возвращает массив с ссылками на строки таблицы
|
|||
2
asady
15.04.15
✎
10:42
|
(0) косяк у тебя в коде.
|
|||
3
Альбатрос
15.04.15
✎
10:42
|
выложи весь код
|
|||
4
daringer
15.04.15
✎
10:43
|
И к чему это сказано? Понятное дело что массив
|
|||
5
Альбатрос
15.04.15
✎
10:44
|
(4) Да я хз, понятное это дело тебе или нет
|
|||
6
Альбатрос
15.04.15
✎
10:44
|
код выкладывай
|
|||
7
Drac0
15.04.15
✎
10:47
|
(0) Чудеса... Но чудес не бывает. Код давай.
|
|||
8
daringer
15.04.15
✎
10:48
|
&НаСервере
Процедура ВывестиПроверки(СтрОборудование,ТаблицаПроверки,Родитель,ГруппаЛеваяПравая,ГруппаЛевая,ГруппаПравая,Знач Уровень,ИмяВладельца) МассивРеквизитовДляДобавления = Новый Массив; СчетчикПроверок = 0; Для Каждого СтрПроверка из ТаблицаПроверки цикл СчетчикПроверок = СчетчикПроверок + 1; Проверка = СтрПроверка.Проверка; ЗаголовокПроверки = Проверка.Наименование; ИмяРеквизита = СтрЗаменить("id"+Новый УникальныйИдентификатор,"-","_"); ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка.ЗначенияПроверок"); МассивРеквизитовДляДобавления.Добавить(Новый РеквизитФормы(ИмяРеквизита,ОписаниеТипа,,ЗаголовокПроверки)); НовСтр = СоответствиеРеквизитовПроверки.Добавить(); НовСтр.ВидПоляФормы = "ПолеВвода"; НовСтр.ИмяРеквизита = ИмяРеквизита; НовСтр.Заголовок = ""+СчетчикПроверок+" - "+ЗаголовокПроверки; НовСтр.Проверка = Проверка; НовСтр.ИмяРеквизитаОборудование = СтрОборудование.ИмяРеквизита; НовСтр.ПроверятьОбязательно = Проверка.ПроверятьОбязательно; НовСтр.ЕстьЗависимыеПроверки = Проверка.ЕстьЗависимыеПроверки; НовСтр.Уровень = Уровень; НовСтр.ИмяВладельца = ИмяВладельца; Если НовСтр.ЕстьЗависимыеПроверки тогда НовСтр.ЗависимыеПроверки.Загрузить(ПолучитьСписокЗависимыхПроверок(Проверка)); КонецЕсли; Если ПроверкиЗагруженыИзОбъекта тогда НовСтр.РезультатПроверки = СтрПроверка.РезультатПроверки; НовСтр.Файл = СтрПроверка.Файл; КонецЕсли; КонецЦикла; ИзменитьРеквизиты(МассивРеквизитовДляДобавления); Если ИмяВладельца = Неопределено тогда НайдСтроки = СоответствиеРеквизитовПроверки.НайтиСтроки(Новый Структура("ИмяРеквизитаОборудование",СтрОборудование.ИмяРеквизита)); Иначе НайдСтроки = СоответствиеРеквизитовПроверки.НайтиСтроки(Новый Структура("ИмяРеквизитаОборудование,ИмяВладельца",СтрОборудование.ИмяРеквизита,ИмяВладельца)); КонецЕсли; Для каждого СтрРеквизит из НайдСтроки цикл СтрРеквизит.ЭтоПодчиненныйЭлемент = СтрРеквизит.Уровень>1; ГруппаДляРеквизитов = ДобавитьНовуюГруппу("ГруппаДляРеквизитов"+СтрЗаменить("id"+Новый УникальныйИдентификатор,"-","_"),ГруппаЛевая,,,,,,СтрРеквизит.Уровень=1); СтрРеквизит.ИмяГруппыДляРеквизитов = ГруппаДляРеквизитов.Имя; ПробелыВЗаголовке =""; Сч = 0; Пока Истина цикл Сч=Сч+1; Если Сч = СтрРеквизит.Уровень тогда Прервать КонецЕсли; ПробелыВЗаголовке = ПробелыВЗаголовке + Символы.Таб; КонецЦикла; Если ПробелыВЗаголовке<>"" тогда ПробелыВЗаголовке=ПробелыВЗаголовке+"?"; КонецЕсли; НовЭлементЗаголовок = ДобавитьНовуюНадпись("ЗаголовокДляЗначенияПроверки"+СтрЗаменить("id"+Новый УникальныйИдентификатор,"-","_"),ГруппаДляРеквизитов,ПробелыВЗаголовке+СтрРеквизит.Заголовок,?(СтрРеквизит.Уровень=1,Новый Шрифт(,,Истина),Неопределено),,40); НовЭлемент = ДобавитьНовоеПолеВводаФормы(СтрРеквизит.ИмяРеквизита,ГруппаДляРеквизитов,"",СтрРеквизит.ИмяРеквизита,Ложь,,15,,"Нет"); НовЭлемент.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать; НовЭлемент.КнопкаВыпадающегоСписка = Истина; НовЭлемент.РедактированиеТекста = Ложь; НовЭлемент.ОтображениеКнопкиВыбора = ОтображениеКнопкиВыбора.ОтображатьВВыпадающемСписке; ЗаполнитьСписокДоступныхЗначенийПроверки(НовЭлемент.СписокВыбора,СтрРеквизит.Проверка,СтрРеквизит.ЗначенияВыбора); ЭтаФорма[СтрРеквизит.ИмяРеквизита] = СтрРеквизит.ЗначениеПроверки; НовЭлемент.УстановитьДействие("ПриИзменении","ПриИзмененииРезультатаПроверки"); ДобавитьЭлементЗвездочка(СтрРеквизит.ИмяРеквизита,ГруппаДляРеквизитов,СтрРеквизит.ПроверятьОбязательно); // НовЭлемент = ДобавитьНовоеПолеВводаФормы("Решение"+СтрРеквизит.ИмяРеквизита,ГруппаДляРеквизитов,"","Решение"+СтрРеквизит.ИмяРеквизита,Ложь,,15); НоваяГруппа = ДобавитьНовуюГруппу("ГруппаДекорации"+СтрРеквизит.ИмяРеквизита,ГруппаПравая); НовЭлемент = ДобавитьНовуюКартинку("Декорация"+СтрРеквизит.ИмяРеквизита,НоваяГруппа,?(СтрРеквизит.ЗначениеКорректно,БиблиотекаКартинок.СобытиеВыполнено,БиблиотекаКартинок.Предупреждение),,,,Истина); НовЭлемент.УстановитьДействие("Нажатие","НажатиеНаИндикацию"); НовЭлемент = ДобавитьНовуюНадпись("Файл"+СтрРеквизит.ИмяРеквизита,НоваяГруппа,"Приложить файл",,,,Истина); НовЭлемент.УстановитьДействие("Нажатие","ПриложитьФайл"); НовЭлемент = ДобавитьНовуюКартинку("Справка"+СтрРеквизит.ИмяРеквизита,НоваяГруппа,БиблиотекаКартинок.Справка,,,,Истина); НовЭлемент.УстановитьДействие("Нажатие","НажатиеНаСправку"); Если СтрРеквизит.ЕстьЗависимыеПроверки тогда Уровень = Уровень + 1; ВывестиПроверки(СтрОборудование,СтрРеквизит.ЗависимыеПроверки,Родитель,ГруппаЛеваяПравая,ГруппаЛевая,ГруппаПравая,Уровень,СтрРеквизит.ИмяРеквизита); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
9
daringer
15.04.15
✎
10:55
|
||||
10
Defender aka LINN
15.04.15
✎
11:06
|
(9) Все просто. В табло у тебя не вторая строка.
|
|||
11
Альбатрос
15.04.15
✎
11:07
|
(10) +1
|
|||
12
Альбатрос
15.04.15
✎
11:08
|
(9) Скрин нам ничего не объясняет. Не понятно какие строки нашлись в НайдСтроки
|
|||
13
daringer
15.04.15
✎
11:15
|
||||
14
daringer
15.04.15
✎
11:25
|
В проблемной строке СоответствиеРеквизитовПроверки.Индекс(СтрРеквизит) возвращает -1
|
|||
15
daringer
15.04.15
✎
11:30
|
В общем отладчик показывает таблицу, в которой индекс проблемной строки = 1, метод Индекс возвращает -1, чо за х.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |