Имя: Пароль:
1C
1С v8
Волшебная таблица значений
0 mulder_mulder
 
02.07.15
21:40
Добрый день.
Столкнулся с проблемой
Есть у меня форма. На форме таблица значений. (3 строки / 54 колонки) Заполняется программно.

Задача, находить в ячейках нужную информацию.
Делаю так:

Процедура Таблица53хНедельногоГрафикаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    объект.ИмяВыделяемогоСтолбца = элементы.Таблица53хНедельногоГрафика.ТекущийЭлемент.имя;
    объект.НомерВыделяемойСтроки = элементы.Таблица53хНедельногоГрафика.ТекущаяСтрока;
    сообщить(объект.ИмяВыделяемогоСтолбца);
    сообщить(объект.НомерВыделяемойСтроки);
КонецПроцедуры

С определением колонок проблем как ни странно,нет.
А вот со строками засада.

Стоит отчистить таблицу, и заполнить заново, как программа начинает опередлять строки в место 0/1/2 как 3/4/5.
отчищаю таблицу, и заполняю заново. Показывает - 6/7/8.

Проверяю программно количество строк - 3. Что делать?
Если это баг, то как можно ещё найти координаты ячейки по клику?

Заранее благодарен.
1 Сниф
 
02.07.15
21:45
(0) а это управляемые формы или что?

объект.НомерВыделяемойСтроки = элементы.Таблица53хНедельногоГрафика.ТекущаяСтрока;

Имхо, ТекущаяСтрока имеет тип отличный от числа, там не номер строки.
2 Лефмихалыч
 
02.07.15
21:48
код кривой, как турецкая сабля, а с таблицей значений нормально все. Отлаживай по шагам свое это "отчищение"
3 Nirvana
 
02.07.15
21:48
По индексу текущей строки в таблице.
4 ДенисЧ
 
02.07.15
21:50
Кстати, в книжке по УФ это описано
5 mulder_mulder
 
02.07.15
21:53
(1)
Форма списка Документов.

(2)
Чего там кривого-то в отчищении. этаформа.Таблица53хНедельногоГрафика.Очистить();

(3) Код можно?

(4)Читал.До 36 страницы ещё понятно более менее, а потом в интернет полез :).
6 Лефмихалыч
 
02.07.15
21:54
(5) >Чего там кривого-то в отчищении
ну, вот это самое и кривое, во-первых, а, во-вторых, - все, что вокруг
7 ДенисЧ
 
02.07.15
21:55
(5) нужно было до 340й страницы дочитать...
8 Сниф
 
02.07.15
21:56
ИндексТекСтроки = Таблица53хНедельногоГрафика.Индекс(ЭлементыФормы.Таблица53хНедельногоГрафика.ТекущаяСтрока);

объект.НомерВыделяемойСтроки = ИндексТекСтроки ;
9 mulder_mulder
 
02.07.15
21:58
(6) Других функций очищения таблицы, не нашёл. Подскажите прямой код, как русский меч-кладенец :)
(7)  стр 340 Выполнение и работ с запросами во встроенном языке
(8) Благодарю. Сейчас опробую.
10 ДенисЧ
 
02.07.15
22:00
(9) Я говорю про книгу по УФ. А не по языку.
11 mulder_mulder
 
02.07.15
22:03
(8) Говорит, что все номера строк у меня (-1).
(10) Ах,вон чего... А я только конфигурирование и администрирование на время отпуска домой стащил. :)
12 Сниф
 
02.07.15
22:06
(11) все правильно, индекс начинается с 0, а НомерСтроки с 1, таким образом НомерСтроки = Индекс +1
13 mulder_mulder
 
02.07.15
22:12
(12) Щёлкаю по третьей строке, а он мне -1
Щёлкаю по второй, а он мне -1
Щёлкаю по первой -1.

А номера строки получаются,при элементы.Таблица53хНедельногоГрафика.ТекущаяСтрока

0/1/2 Как вы и говорили
С нуля счёт идёт.
14 Сниф
 
02.07.15
22:20
(13) я боюсь спросить что такое "объект", тем более, что такое "объект.НомерВыделяемойСтроки"

А так?
сообщить(Таблица53хНедельногоГрафика.Индекс(ВыбраннаяСтрока)+1);
15 mulder_mulder
 
03.07.15
08:58
(14) Кажет одни нули на всех строках

Объект - это реквизит формы который указывает на документ, в состав которого и входит данная форма.
16 mulder_mulder
 
03.07.15
08:59
(14) А в этом документе, есть реквизит - НомерВыделяемойСтроки.
17 mulder_mulder
 
03.07.15
09:53
В общем, получилось обойти этот баг таким образом:
запустил цикл на отчистку изменяемых значений.

...
ПереборСтрок = этаформа.Таблица53хНедельногоГрафика;
    КолвоСтрок=ПереборСтрок.Количество();
    
    для а=0 по КолвоСтрок-1 цикл
        ИмяОбъектаППР = ПереборСтрок.Получить(а);
        ИмяОбъектаППР.нед1= "";
        ИмяОбъектаППР.нед2= "";
        ИмяОбъектаППР.нед3= "";
        ИмяОбъектаППР.нед4= "";
        ИмяОбъектаППР.нед5= "";
        ИмяОбъектаППР.нед6= "";
        ИмяОбъектаППР.нед7= "";
        ИмяОбъектаППР.нед8= "";
        ИмяОбъектаППР.нед9= "";
        ИмяОбъектаППР.нед10= "";
        ИмяОбъектаППР.нед11= "";
        ИмяОбъектаППР.нед12= "";
        ИмяОбъектаППР.нед13= "";
        ИмяОбъектаППР.нед14= "";
        ИмяОбъектаППР.нед15= "";
        ИмяОбъектаППР.нед16= "";
        ИмяОбъектаППР.нед17= "";
        ИмяОбъектаППР.нед18= "";
        ИмяОбъектаППР.нед19= "";
        ИмяОбъектаППР.нед20= "";
        ИмяОбъектаППР.нед21= "";
        ИмяОбъектаППР.нед22= "";
        ИмяОбъектаППР.нед23= "";
        ИмяОбъектаППР.нед24= "";
        ИмяОбъектаППР.нед25= "";
        ИмяОбъектаППР.нед26= "";
        ИмяОбъектаППР.нед27= "";
        ИмяОбъектаППР.нед28= "";
        ИмяОбъектаППР.нед29= "";
        ИмяОбъектаППР.нед30= "";
        ИмяОбъектаППР.нед31= "";
        ИмяОбъектаППР.нед32= "";
        ИмяОбъектаППР.нед33= "";
        ИмяОбъектаППР.нед34= "";
        ИмяОбъектаППР.нед35= "";
        ИмяОбъектаППР.нед36= "";
        ИмяОбъектаППР.нед37= "";
        ИмяОбъектаППР.нед38= "";
        ИмяОбъектаППР.нед39= "";
        ИмяОбъектаППР.нед40= "";
        ИмяОбъектаППР.нед41= "";
        ИмяОбъектаППР.нед42= "";
        ИмяОбъектаППР.нед43= "";
        ИмяОбъектаППР.нед44= "";
        ИмяОбъектаППР.нед45= "";
        ИмяОбъектаППР.нед46= "";
        ИмяОбъектаППР.нед47= "";
        ИмяОбъектаППР.нед48= "";
        ИмяОбъектаППР.нед49= "";
        ИмяОбъектаППР.нед50= "";
        ИмяОбъектаППР.нед51= "";
        ИмяОбъектаППР.нед52= "";
        ИмяОбъектаППР.нед53= "";
    конеццикла;

Кстати, может кто знает оператор который бы менял имена переменных Давно ищу такое решение. А то иногда забадываешься писать.
g = 53;
к примеру: нед53 = нед{g}
18 fishb1
 
03.07.15
10:10
(17)
А = 53;
Б53 = "Тест";
Ц = Вычислить("Б" + А);
Сообщить(Ц);
19 Гёдза
 
03.07.15
10:13
это не индекс, а идентификатор
20 Гёдза
 
03.07.15
10:13
у тз есть метод найтипоидентификатору()
21 mulder_mulder
 
03.07.15
11:11
(20) Понял. Получившийся из сложения букв и цифр блок указать в качестве параметра поиска. Интерсно, чего это я раньше не замечал такого приёма? Благодарю.


Благодарю всех, за участие. Эту проблему обошли.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn