|
Не меняет ТекущуюСтроку в ТабличномПоле УПП Редакция1.3 | ☑ | ||
---|---|---|---|---|
0
Casper211
04.04.16
✎
10:51
|
Подскажите, как можно сменить ТекущуюСтроку в ТабличномПоле?
Данные: ДеревоЗначений. Пустая табличка. Я создаю новый узел дерева (1 уровень), затем создаю новый узел дерева 2 уровня. И после того, как я закончил запись, я хочу чтобы курсор приняв положение на родителя узла. ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; В процедуре ПередОкончаниемРедактирования (ПриОкончаниемРедактирования также пробовал) РодительТекущейСтроки = ?(мТекущаяСтрока.Родитель = НеОпределено, ДеревоЗапросов, мТекущаяСтрока.Родитель); Если мТекущаяСтрока.Родитель = НеОпределено Тогда Иначе РодительТекущейСтроки = мТекущаяСтрока.Родитель; ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; КонецЕсли; Нашел где-то, что надо вставить перед ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; вот это ЭлементыФормы.ДеревоЗапросов.ЗакончитьРедактированиеСтроки(Ложь); Но мне это не помогло В процедуре ПередОкончаниемРедактирования (ПриОкончаниемРедактирования также пробовал) Либо ничего не делает или Ошибка при установке значения атрибута контекста (ТекущаяСтрока): Невозможно изменить текущую строку Но если взять ячейку поля и при ОкончаниеВводаТекста сделать все то же, то работает: Процедура ДеревоЗапросовЦенаОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) РодительТекущейСтроки = ?(мТекущаяСтрока.Родитель = НеОпределено, ДеревоЗапросов, мТекущаяСтрока.Родитель); Если мТекущаяСтрока.Родитель = НеОпределено Тогда Иначе РодительТекущейСтроки = мТекущаяСтрока.Родитель; ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; КонецЕсли; КонецПроцедуры Но меня такое не устраивает. Помогите пожалуйста решить эту проблему. Буду очень благодарен. Спасибо за понимание! |
|||
1
Casper211
04.04.16
✎
11:02
|
Это все в внешней обработке.
|
|||
2
Casper211
04.04.16
✎
11:13
|
Никто не знает в чем может быть причина?
|
|||
3
AceVi
04.04.16
✎
11:24
|
Процедура ТабДокументовПроектПриИзменении(Элемент)
СледИндекс = ЭтаФорма.ТабДокументов.Индекс(ЭлементыФормы.ТабДокументов.ТекущаяСтрока)+1; Если СледИндекс < ТабДокументов.Количество() Тогда ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока = ТабДокументов.Получить(СледИндекс); ЭтаФорма.ЭлементыФормы.ТабДокументов.ТекущаяКолонка= ЭтаФорма.ЭлементыФормы.ТабДокументов.Колонки.СтатьяДДС; КонецЕсли; КонецПроцедуры Это пример текста обработки колонки приИзменении. попробуй не к элементам формы обратиться а через ЭтаФорма |
|||
4
Casper211
04.04.16
✎
11:40
|
(3) Ничего не поменялось, если я все правильно понял?
{Форма.Форма.Форма(213)}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока) ЭтаФорма.ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; по причине: Невозможно изменить текущую строку В процедуре ДеревоЗапросовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) если остановиться отладчиком перед ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; то ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока - та строка текущая то РодительТекущейСтроки - этот родитель который нужен и потом ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока - остается неизменным. А в процедуре ДеревоЗапросовПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ) ошибка - {Форма.Форма.Форма(213)}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока) ЭтаФорма.ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; по причине: Невозможно изменить текущую строку |
|||
5
AceVi
04.04.16
✎
11:45
|
(4) а если вместо
ЭтаФорма.ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока сделать ЭтаФорма.ДеревоЗапросов.ТекущаяСтрока |
|||
6
Casper211
04.04.16
✎
11:54
|
(5) {Форма.Форма.Форма(210)}: Поле объекта не обнаружено (ТекущаяСтрока)
ЭтаФорма.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; |
|||
7
ЛучшийПрограммер1С
04.04.16
✎
11:56
|
(6) Конечно, одно дело реквизит другое дело элемент формы.
|
|||
8
AceVi
04.04.16
✎
12:00
|
(6) или вот так
ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока |
|||
9
Casper211
04.04.16
✎
12:02
|
Я проанализировал для
Процедура ДеревоЗапросовЦенаОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) РодительТекущейСтроки = ?(мТекущаяСтрока.Родитель = НеОпределено, ДеревоЗапросов, мТекущаяСтрока.Родитель); Если мТекущаяСтрока.Родитель = НеОпределено Тогда Иначе РодительТекущейСтроки = мТекущаяСтрока.Родитель; ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; КонецЕсли; КонецПроцедуры когда отладчик останавливается на этой строке ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; переходит к Процедура ДеревоЗапросовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) ДеревоЗапросовПриАктивизацииСтроки(Элемент); Если мИдетДобавление Тогда Если ОтменаРедактирования Тогда мТекущаяСтрока = Неопределено; КонецЕсли; мИдетДобавление = Ложь; КонецЕсли; Модифицированность = Истина; КонецПроцедуры // ДеревоЗапросовПриОкончанииРедактирования() Потом Процедура ДеревоЗапросовПриАктивизацииСтроки(Элемент) НадоСохранять = Истина; Если мИдетДобавление Тогда Если мАктивизированаДобавляемаяЗапись Тогда // Произошла отмена добавления записи. НадоСохранять = Ложь; мАктивизированаДобавляемаяЗапись = Ложь; Иначе мАктивизированаДобавляемаяЗапись = Истина; КонецЕсли; КонецЕсли; мТекущаяСтрока = ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока; КонецПроцедуры // ДеревоЗапросовПриАктивизацииСтроки() |
|||
10
Casper211
04.04.16
✎
12:02
|
(8) {Форма.Форма.Форма(211)}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока)
ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока= РодительТекущейСтроки ; по причине: Невозможно изменить текущую строку |
|||
11
Casper211
04.04.16
✎
12:03
|
(9) и оно все работает, я понял, что оно изначально записывает текущая строка = неопределено и тогда меняет. Но в моем случае оно туда не идет
|
|||
12
Casper211
04.04.16
✎
12:09
|
(11) или нет(
|
|||
13
AceVi
04.04.16
✎
12:12
|
(9) (11)
А я вот тут ничего не понял - на какой строке останавливаеться отладчик - что это дает. Куда туда не идет, фраза - записывает неопредленно и Тогда меняеться совершенно не понятна. Давай последовательно еще раз. ТабличноеПоле (TableBox) ТекущаяСтрока (CurrentRow) Использование: Чтение и запись. как бы должно быть разрешено изменение текущей строки. |
|||
14
Casper211
04.04.16
✎
12:23
|
(13) где посмотреть разрешено ли изменение текущей строки?
|
|||
15
Casper211
04.04.16
✎
12:24
|
(13) ну наверное разрешено, так как из процедуры ДеревоЗапросовЦенаОкончаниеВводаТекста поля ввода "Цена" все работает
|
|||
16
Casper211
04.04.16
✎
12:27
|
блин я уже вообще запутался (
|
|||
17
ЛучшийПрограммер1С
04.04.16
✎
12:30
|
(16) Да вы уже всех запутали, сами не знаете, чего хотите.
|
|||
18
Casper211
04.04.16
✎
12:31
|
(17) хочу я то, что описал в самом начале
|
|||
19
Casper211
04.04.16
✎
12:34
|
возможно текущую сроку не меняет, потому что она еще не записана?
|
|||
20
ЛучшийПрограммер1С
04.04.16
✎
12:36
|
(19) А что Вы хотите поменять в текущей строке?
|
|||
21
Casper211
04.04.16
✎
12:41
|
(20) После создания узла дерева я хочу изменить положение курсора в табличном поле. То есть чтобы стала выделенной та строка, которая является радителем предыдущей.
|
|||
22
Casper211
04.04.16
✎
12:42
|
Вместо "предыдущей" - этой строки
|
|||
23
ЛучшийПрограммер1С
04.04.16
✎
12:48
|
(21) То есть в текущей строке ничего менять не надо?
|
|||
24
Casper211
04.04.16
✎
12:48
|
И потом дальше создавать элементы, которые будут иметь родителя этой текущей строки
|
|||
25
ЛучшийПрограммер1С
04.04.16
✎
12:49
|
(24) Вручную? Если программно, то зачем для этого устанавливать курсор?
|
|||
26
Casper211
04.04.16
✎
12:52
|
я создал елемент (узел 1) "Парам1" - текущая строка "Парам1" Родитель - неопределено
потом создал ище елемент (узел 2) "Парам 1 Парама 1" - текущая строка "Парам 1 Парама 1", родитель "Парам1" И после окончания редактирование строки, Текущой строкой станет родитель - "Парам1" , и курсор будет на "Парам1" |
|||
27
ЛучшийПрограммер1С
04.04.16
✎
12:52
|
Я так понял вручную. А почему ПередОкончаниемРедактирования а не При
|
|||
28
ЛучшийПрограммер1С
04.04.16
✎
12:53
|
(26) так что не нравится Вам?
|
|||
29
Casper211
04.04.16
✎
12:56
|
(27) ну нужно сделать чтобы так было "И после окончания редактирование строки, Текущой строкой станет родитель - "Парам1" , и курсор будет на "Парам1"
(28) простите я не знал где. Я попробовал и там и там. // Обработчик события при окончании редактирования строки в дереве запросов // Процедура ДеревоЗапросовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) РодительТекущейСтроки = ?(мТекущаяСтрока.Родитель = НеОпределено, ДеревоЗапросов, мТекущаяСтрока.Родитель); Если мТекущаяСтрока.Родитель = НеОпределено Тогда Иначе РодительТекущейСтроки = мТекущаяСтрока.Родитель; ЭлементыФормы.ДеревоЗапросов.ЗакончитьРедактированиеСтроки(Ложь); ЭлементыФормы.ДеревоЗапросов.ОбновитьСтроки(); ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= РодительТекущейСтроки ; КонецЕсли; ДеревоЗапросовПриАктивизацииСтроки(Элемент); Если мИдетДобавление Тогда Если ОтменаРедактирования Тогда мТекущаяСтрока = Неопределено; КонецЕсли; мИдетДобавление = Ложь; КонецЕсли; Модифицированность = Истина; КонецПроцедуры // ДеревоЗапросовПриОкончанииРедактирования() Вот так просто ничего не происходит, или я не там вставляю код. |
|||
30
ЛучшийПрограммер1С
04.04.16
✎
12:58
|
мТекущаяСтрока - это чо?
|
|||
31
Casper211
04.04.16
✎
12:59
|
(30)
Процедура ДеревоЗапросовПриАктивизацииСтроки(Элемент) НадоСохранять = Истина; Если мИдетДобавление Тогда Если мАктивизированаДобавляемаяЗапись Тогда // Произошла отмена добавления записи. НадоСохранять = Ложь; мАктивизированаДобавляемаяЗапись = Ложь; Иначе мАктивизированаДобавляемаяЗапись = Истина; КонецЕсли; КонецЕсли; мТекущаяСтрока = ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока; КонецПроцедуры // ДеревоЗапросовПриАктивизацииСтроки() |
|||
32
ЛучшийПрограммер1С
04.04.16
✎
13:07
|
ТекущаяСтрока это номер строки
|
|||
33
hhhh
04.04.16
✎
13:15
|
(31) при активизации нельзя. Активизация - это же и есть, когда меняется текущая строка. ТО есть вы из одной активизацию сразу другую фигачите.
|
|||
34
ЛучшийПрограммер1С
04.04.16
✎
13:30
|
Как-то так:
Процедура ДеревоЗапросовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= мТекущаяСтрока; КонецПроцедуры// ДеревоЗапросовПриОкончанииРедактирования() Процедура ДеревоЗапросовПриАктивизацииСтроки(Элемент) мТекущаяСтрока = ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока; КонецПроцедуры// ДеревоЗапросовПриАктивизацииСтроки() |
|||
35
ЛучшийПрограммер1С
04.04.16
✎
13:33
|
Может ПередНачаломДобавления запоминать родителя
|
|||
36
ЛучшийПрограммер1С
04.04.16
✎
13:37
|
(35) Да, как раз будет та строка что надо.
|
|||
37
ЛучшийПрограммер1С
04.04.16
✎
13:38
|
Процедура ДеревоЗапросовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= мТекущаяСтрока; КонецПроцедуры// ДеревоЗапросовПриОкончанииРедактирования() Процедура ДеревоЗапросовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) мТекущаяСтрока = ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока; КонецПроцедуры// |
|||
38
Casper211
04.04.16
✎
14:59
|
(37) не работает
|
|||
39
ЛучшийПрограммер1С
04.04.16
✎
15:02
|
(38) У меня работает
|
|||
40
Casper211
04.04.16
✎
15:12
|
Вставил
Процедура ДеревоЗапросовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) мТекущаяСтрока = ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока; КонецПроцедуры// Потом Процедура ДеревоЗапросовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) Если мТекущаяСтрока.Родитель = НеОпределено Тогда Иначе ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= мТекущаяСтрока.Родитель; КонецЕсли; КонецПроцедуры Отладчик проходит ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= мТекущаяСтрока.Родитель; и не перезаписывает текущую срока. И та строка которая нужна не активизируется |
|||
41
Casper211
04.04.16
✎
15:13
|
(39)
|
|||
42
ЛучшийПрограммер1С
04.04.16
✎
15:17
|
(40) что за бред, какой родитель
|
|||
43
Casper211
04.04.16
✎
15:27
|
(42) Простите пожалуйста, тогда я вас не понял. что написано в посте (37)
|
|||
44
ЛучшийПрограммер1С
04.04.16
✎
15:28
|
(43) Заработало?
|
|||
45
Casper211
04.04.16
✎
15:29
|
(44) вы наверное думаете что я уже совсем, но нет (
|
|||
46
Casper211
04.04.16
✎
15:32
|
(44) Если сделать 100% как в (37), то не работает
|
|||
47
Casper211
04.04.16
✎
15:33
|
Активизация сроки остается неизменной, на той строке как и была
|
|||
48
Casper211
04.04.16
✎
15:37
|
Вот здесь нашел, что "Событие ПриОкончанииРедактирования устанавливаю текущую строку -- не работает." пост (23)
v8: Спозиционироваться на строке дерева значений |
|||
49
ЛучшийПрограммер1С
04.04.16
✎
15:41
|
А как Вы заканчиваете редактирование?
|
|||
50
ЛучшийПрограммер1С
04.04.16
✎
15:42
|
мышкой на другое поле или по ентеру?
|
|||
51
Casper211
04.04.16
✎
15:43
|
(50) ентер
|
|||
52
Casper211
04.04.16
✎
15:44
|
(50) v8: v8: Спозиционироваться на строке дерева значений Remake
Что-то нашел, еще не разобрал, сейчас буду пробовать |
|||
53
ЛучшийПрограммер1С
04.04.16
✎
15:48
|
нет, ну в отладчике посмотрите
вот мы создаем строку 0, Затем создаем строку 1, ДеревоЗапросовПередНачаломДобавления запоминаем в мТекущаяСтрока 0 нажимаем ентер срабатывает ДеревоЗапросовПриОкончанииРедактирования и устанавливает ЭлементыФормы.ДеревоЗапросов.ТекущаяСтрока= 0 устанавливается соотв курсор на строку 0 Что не так? |
|||
54
Casper211
04.04.16
✎
17:07
|
(53) ой простите меня пожалуйста, у меня не табличное поле с типом Дерево. У меня сразу ДеревоЗначений.
|
|||
55
Casper211
04.04.16
✎
17:10
|
это у меня было раньше (я уже поменял табличное поле на дерево. А то данные не отображались.
P.S. Не судите строго, так у меня много ошибок, я только учусь (хотя уже немного большой промежуток времени. Но все никак не разберусь. |
|||
56
hhhh
04.04.16
✎
17:18
|
(55) всё-таки непонятно, зачем тебе перепрыгивать на родителя? Ведь и так всё нормально будет.
|
|||
57
Casper211
04.04.16
✎
17:21
|
(56) Чтобы когда создал элемент, при нажатии плюс, образовался элемент который будет иметь этого родителя (где был курсор). И так много раз. Что-то такое
|
|||
58
hhhh
04.04.16
✎
17:35
|
(57) если ты будешь внутри этой группы, просто будешь как обычно нажимать кнопку Добавить строку. С какого бодуна нужно, чтобы именно нажимать кнопку плюс? Кнопка плюс совсем для других целей предназначена.
|
|||
59
Casper211
04.04.16
✎
17:42
|
(58) ну "кнопку Добавить строку" я имел в виду
|
|||
60
ЛучшийПрограммер1С
05.04.16
✎
08:04
|
(54) Так и у меня дерево значений и всё работает, правда на управляемой форме а не на обычной
|
|||
61
Casper211
05.04.16
✎
16:18
|
(60) а у меня ОФ
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |