|
программное добавление строки в табличную часть | ☑ | ||
---|---|---|---|---|
0
Bilkinbill
15.01.19
✎
09:35
|
Всем привет!
Есть ТЧ на упр.форме.Пользователь жмет на спец.кнопку и после этого необходимо добавить строку после текущей выделенной строки. Копал в сторону Вставить() и Сдвинуть() и РежимВводаСтрок, но это не совсем так как нужно...Что порекомендуете?! |
|||
1
Василий Алибабаевич
15.01.19
✎
09:37
|
(0) "но это не совсем так как нужно"
Хотелось бы для начала понять - "а как нужно?" |
|||
2
Bilkinbill
15.01.19
✎
09:40
|
(1) нужно,чтобы строка добавилась после той,которая выделена пользователем или после той, в которой указан именно этот текущий пользователь.
|
|||
3
Bilkinbill
15.01.19
✎
09:43
|
В ТЧ 5 строк с указанием пользователей согласующих данный документ, пользователь жмет на кнопку "передать согласование другому" и после этого должна добавится строка +1 от той где указан нажимающий пользователь.
|
|||
4
Bilkinbill
15.01.19
✎
09:55
|
При нажатии на кнопку "передать согласование другому" вызывается форма, в которой указывается должностное лицо,которому передаёт согласование нажавший на эту кнопку,соответственно у нажавшего в строке ТЧ укажется,что он передал согласование, а "новый пользователь" должен появится под строкой того,кто перенаправил док.
|
|||
5
DrWatson
15.01.19
✎
09:55
|
(0) Что табличная часть, что таблица значений на форме - одинаково, есть метод Вставить(<Индекс>) - вставляет перед нужной строкой, которую ты найдёшь как тебе надо. И что в этом методе не так?
|
|||
6
Bilkinbill
15.01.19
✎
09:58
|
(5) мне нужно после, а не перед.какой индекс указать для той строки, в которой указан нажимающий на кнопку пользователь
|
|||
7
hhhh
15.01.19
✎
09:59
|
(4) режимВводаСтрок - это то что нужно. Вы наверно просто не разобрались по-пьяни
РежимВводаСтрокТаблицы (TableRowInputMode) Значения ВКонецОкна (EndOfWindow) ВКонецСписка (EndOfList) ПередТекущейСтрокой (BeforeCurrentRow) ПослеТекущейСтроки (AfterCurrentRow) Описание: Содержит варианты режимов ввода строк в таблице управляемой формы. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). |
|||
8
Bilkinbill
15.01.19
✎
10:00
|
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
НоваяСтрока = Объект.Согласование.Вставить(1); НоваяСтрока.ДолжностноеЛицо = ВыбранноеЗначение.ДолжностноеЛицо; Конецесли; Так не работает |
|||
9
DrWatson
15.01.19
✎
10:00
|
(6) после от текущей - это перед следующей.
Вставить(<Индекс>+1); |
|||
10
Василий Алибабаевич
15.01.19
✎
10:01
|
(2) "нужно,чтобы строка добавилась после той,которая выделена пользователем"
Визуально "после" или "перед" зависит от того, по какому полю в данный момент отсортирована табличка. И в общем случае абсолютно не зависит от физического порядка. |
|||
11
DrWatson
15.01.19
✎
10:04
|
(8) я так понимаю в результате этого кода должна появится вторая строка. А что происходит, что не так?
Давай сразу больше описания. Писать "не работает" не поможет. |
|||
12
DrWatson
15.01.19
✎
10:06
|
(10) "Визуально" и "физический порядок" это что такое в таблицах? Не путайте ТС.
|
|||
13
Мимохожий Однако
15.01.19
✎
10:07
|
(0) Конфигурация?Платформа?Какой объект содержит в себе ТЧ?
|
|||
14
Bilkinbill
15.01.19
✎
10:10
|
(12) В результате этого кода система добавляет строку после если выделена первая строка, перед,если выделена строка в середине и во вторую строку,если выделена последняя строка в ТЧ.
|
|||
15
Bilkinbill
15.01.19
✎
10:11
|
(14) а мне нужно, чтобы добавилась после той строки, где указан пользователь который нажал на соответствующую кнопку
|
|||
16
DrWatson
15.01.19
✎
10:14
|
(14) Объект.Согласование.Вставить(1) добавляет строку в разных местах в зависимости от текущей строки? Фантастика.
|
|||
17
hhhh
15.01.19
✎
10:16
|
(15) так а где у вас тут поиск этой строки?
|
|||
18
НЕА123
15.01.19
✎
10:17
|
(16)
из (2) >после той,которая выделена пользователем или после той... никакой фантастики - просто магия. |
|||
19
Bilkinbill
15.01.19
✎
10:18
|
(16) именно так и происходит
|
|||
20
DrWatson
15.01.19
✎
10:20
|
(19) Я бы начал с того что усомнился, что именно код (8) добавляет строки (14).
|
|||
21
Bilkinbill
15.01.19
✎
10:33
|
(20) какие будут предложения, кроме тех,что нужно вызвать грамотного программиста или мне нужно уволиться?
|
|||
22
hhhh
15.01.19
✎
10:41
|
(21) ну хотя бы вывести сюда код программы по этой спецкнопке
|
|||
23
СвинТуз
15.01.19
✎
10:42
|
(21)
(7) прочти |
|||
24
Bilkinbill
15.01.19
✎
10:48
|
(22)
ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ДолжностноеЛицо",ПараметрыСеанса.КанцТекущееДолжностноеЛицо); НайденныеСтроки=Объект.Согласование.НайтиСтроки(ПараметрыОтбора); Если НайденныеСтроки <> Неопределено Тогда Для каждого Строка Из НайденныеСтроки Цикл Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда НоваяСтрока = Объект.Согласование.Вставить(1); НоваяСтрока.ДолжностноеЛицо=ВыбранноеЗначение.ДолжностноеЛицо; КонецЕсли; КонецЦикла; КонецЕсли; |
|||
25
Bilkinbill
15.01.19
✎
10:51
|
(24) этот код вставлен в ОбработкуВыбора табличной части
|
|||
26
JeHer
15.01.19
✎
10:59
|
(25) добавь реквизит НомерСтроки в Объект.Согласование и вставляй по индексу = НомерСтроки. Только не забудь после каждой вставки перенумеровать НомерСтроки в Объект.Согласование
|
|||
27
hhhh
15.01.19
✎
11:00
|
(25) вот это очень странная строчка
НоваяСтрока = Объект.Согласование.Вставить(1); вы что-то отбираете, найденные строки и всё такое. Потом вдруг плюете на все и пишете Вставить(1). Почему вддруг "1"? Бред какой-то. |
|||
28
Bilkinbill
15.01.19
✎
11:01
|
(27) ваши предложения по существу?!
|
|||
29
DrWatson
15.01.19
✎
11:06
|
(21) сделай готовую обработку, которую можно запустить отдельно от твоей конфигурации. Например, вместо поиска строки нужно будет ввести конкретный индекс. Главное, чтобы там проявлялась проблема (14). Выкладывай, посмотрю.
|
|||
30
hhhh
15.01.19
✎
13:47
|
(28) по существу, указывай во вставить нормальный индекс и не вешай нам лапшу на уши.
|
|||
31
Bilkinbill
15.01.19
✎
14:09
|
(30) нормальный индекс-это какой? Можно конкретнее, а не только эмоции
|
|||
32
hhhh
15.01.19
✎
14:17
|
(31) ну в отладчике посмотри какие там индексы в найденных строках
|
|||
33
Bilkinbill
15.01.19
✎
14:17
|
(30) в (22) какие изменения нужно внести?
|
|||
34
hhhh
15.01.19
✎
14:35
|
(33) лучше всё выбросить конечно. Потому что вообще непонятно, зачем всё это.
|
|||
35
Bilkinbill
15.01.19
✎
15:04
|
(34) это проще всего...но нельзя так быстро сдаваться
|
|||
36
Bilkinbill
15.01.19
✎
15:05
|
Всем спасибо, вопрос решился записью вида
НоваяСтрока = Объект.Согласование.Вставить(НайденныеСтроки[0].НомерСтроки); |
|||
37
PiotrLoginov
15.01.19
✎
15:19
|
Нет там рисков использования номера строки вместо индекса?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |