|
Как задать фиксированное положение строки в ТЧ ? | ☑ | ||
---|---|---|---|---|
0
Олеся999
31.08.15
✎
11:03
|
Здравствуйте. Подскажите пожалуйста как задать фиксированное положение строки в ТЧ, что бы после нажатия кнопки выделенная строка оставалось на месте, а не перепрыгивала на самую первую ?
http://lvkr.ru/f/npaGU6/1280.jpg |
|||
1
butterbean
31.08.15
✎
11:04
|
запомнить строку, а потом сделать опять текущей
|
|||
2
Cube
31.08.15
✎
11:05
|
(0) У тебя таблица на форме обновляется просто. Запомни текущую позицию и после обновления установи текущую строку на ту, которую запомнила.
|
|||
3
Олеся999
31.08.15
✎
11:07
|
(2) (1) А как это сделать ?)
|
|||
4
Cube
31.08.15
✎
11:13
|
(3) СП:
ТаблицаФормы.ТекущаяСтрока (FormTable.CurrentRow) ТаблицаФормы (FormTable) ТекущаяСтрока (CurrentRow) Использование: Чтение и запись. Описание: Тип: Произвольный. Идентификатор текущей строки таблицы. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. Примечание: Если устанавливаемое значение не является допустимым (такое значение отсутствует) для данной таблицы, то такая установка игнорируется. Тип определяется расширением таблицы. |
|||
5
Олеся999
31.08.15
✎
11:16
|
Типо что то такого ?
СтрС= Объект.Продукция.ТекущаяСтрока; ТабЧ=ДанныеФормыКоллекция.Выгрузить(); ДанныеФормыКоллекция.Загрузить( ТабЧ); ТаблицаФормы.ТекущаяСтрока= СтрС ; |
|||
6
Cube
31.08.15
✎
11:19
|
(5) Ага, только, по-моему, так не сработает, потому что после выгрузки/загрузки идентификаторы строк таблицы на форме сбиваются и надо сначала найти строку таблицы-источника по идентификатору строки на форме, запомнить, а потом найти ещё раз и установить... Надеюсь, понятно объяснил :)
|
|||
7
vicof
31.08.15
✎
11:19
|
(6) +1
|
|||
8
Mort
31.08.15
✎
11:20
|
Что-то у меня подозрения, что связь между строкой ДО и строкой ПОСЛЕ существует только в голове автора.
|
|||
9
Олеся999
31.08.15
✎
11:22
|
(5) СтрС= Объект.Продукция.ТекущаяСтрока;
ТабЧ=ДанныеФормыКоллекция.Выгрузить(); ДанныеФормыКоллекция.Загрузить( ТабЧ); Объект.Продукция.ТекущаяСтрока= СтрС ; Точнее так .... Но ошибки : {Документ.ЗаявкаНаПоставку.Форма.ФормаДокумента.Форма(143,10)}: Переменная не определена (ДанныеФормыКоллекция) (8)Так а как? |
|||
10
Cube
31.08.15
✎
11:23
|
(9) Лучше покажи код кнопки "Ввести диапазон"...
|
|||
11
Олеся999
31.08.15
✎
11:27
|
(10) &НаКлиенте
Процедура ВвестиДиапазон(Команда) Если БезномернаяПродукция=ложь тогда Если ДиапазонОт = 0 Тогда ПоказатьПредупреждение(, "Задайте начало диапазона", 5); ТекущийЭлемент = Элементы.ДиапазонОт; Возврат; КонецЕсли; Если ДиапазонДо = 0 Тогда ПоказатьПредупреждение(, "Задайте окончание диапазона", 5); ТекущийЭлемент = Элементы.ДиапазонДо; Возврат; КонецЕсли; Если ДиапазонОт >= ДиапазонДо Тогда ПоказатьПредупреждение(, "Начало диапазона должно быть меньше окончания", 5); ТекущийЭлемент = Элементы.ДиапазонОт; КонецЕсли; //Если Элементы.Продукция1Продукция.Пустая() Тогда // ПоказатьПредупреждение(, "Выберите продукцию", 5); // ТекущийЭлемент = Элементы.Продукция1Продукция; //КонецЕсли; ИсходнаяДл = СтрДлина(ДиапазонОт); Для Сч = ДиапазонОт По ДиапазонДо Цикл НС = Объект.Товары.Добавить(); ЧислоСтр = Формат(Сч, "ЧДЦ=; ЧН=Пусто; ЧГ=0"); НС.ШК = Лев("0000000", ИсходнаяДл - СтрДлина(ЧислоСтр)) + ЧислоСтр; НС.Продукция = Элементы.Продукция.ТекущиеДанные.Продукция; НС.Количество = "1"; КонецЦикла; Для Сч2 = ДиапазонОт По ДиапазонДо Цикл НСС=Объект.ТаблицаДиапазон.Добавить(); ДапазонИнт = ""+ДиапазонОт+"-"+ДиапазонДо; ЧислоСтр2 = Формат(Сч2, "ЧДЦ=; ЧН=Пусто; ЧГ=0"); НСС.НомерШК = ДапазонИнт;// НСС.НаименованияПродукция = Элементы.Продукция.ТекущиеДанные.Продукция; //НС2.Количество2 = "1"; КонецЦикла; иначе ИсходнаяДл = СтрДлина(ДиапазонОт); Для Сч = ДиапазонОт По ДиапазонДо Цикл НС = Объект.Товары.Добавить(); ЧислоСтр = Формат(Сч, "ЧДЦ=; ЧН=Пусто; ЧГ=0"); //НС.ШК = Лев("0000000", ИсходнаяДл - СтрДлина(ЧислоСтр)) + ЧислоСтр; НС.Продукция = Элементы.Продукция.ТекущиеДанные.Продукция; НС.Количество = "1"; КонецЦикла; Для Сч2 = ДиапазонОт По ДиапазонДо Цикл НСС=Объект.ТаблицаДиапазон.Добавить(); ДапазонИнт = ""+ДиапазонОт+"-"+ДиапазонДо; ЧислоСтр2 = Формат(Сч2, "ЧДЦ=; ЧН=Пусто; ЧГ=0"); //НСС.НомерШК = ДапазонИнт;// НСС.НаименованияПродукция = Элементы.Продукция.ТекущиеДанные.Продукция; //НС2.Количество2 = "1"; КонецЦикла; КонецЕсли; //ДиапазонОт = ""; //ДиапазонДо = ""; ВвестиДиапазонНаСервере(); // ВЫДЕЛ.ПОЗИЦИЯ В ТАБЛИЦЕ ПРОДУКЦИЯ //СтрС= Объект.Продукция.ТекущаяСтрока; //ТабЧ=ДанныеФормыКоллекция.Выгрузить(); //ДанныеФормыКоллекция.Загрузить( ТабЧ); //Объект.Продукция.ТекущаяСтрока= СтрС ; КонецПроцедуры &НаСервере Процедура ВвестиДиапазонНаСервере() тзРез2 = Объект.ТаблицаДиапазон.Выгрузить(); тзРез2.Свернуть("НомерШК,НаименованияПродукция"); тзРез2.Сортировать("НомерШК"); Объект.ТаблицаДиапазон.Загрузить(тзРез2); //вввввввввввввввввввввввввввв тзРез = Объект.Товары.Выгрузить(); тзРез.Свернуть("Продукция","Количество"); тзРез.Сортировать("Продукция"); Объект.Продукция.Загрузить(тзРез); //тзРез3 = Объект.Товары.Выгрузить(); //тзРез3.Свернуть("Продукция","Количество"); //тзРез3.Сортировать("Продукция"); //Объект.Товары2.Загрузить(тзРез3); КонецПроцедуры |
|||
12
Cube
31.08.15
✎
11:33
|
(11) Вместо строки
ВвестиДиапазонНаСервере(); напиши что-то вроде ТекСтрока = Элементы.Продукция.ТекущиеДанные.ПолучитьИдентификатор(); ВвестиДиапазонНаСервере(); Элементы.Продукция.ТекущаяСтрока = Элементы.Продукция.НайтиПоИдентификатору(ТекСтрока); Мог немного запутаться, т.к. непроспался)) |
|||
13
Олеся999
31.08.15
✎
11:38
|
(12) {Документ.ЗаявкаНаПоставку.Форма.ФормаДокумента.Форма(144)}: Метод объекта не обнаружен (НайтиПоИдентификатору)
Элементы.Продукция.ТекущаяСтрока = Элементы.Продукция.НайтиПоИдентификатору(ТекСтрока); |
|||
14
Cube
31.08.15
✎
11:40
|
(13) Ну так потому что надо писать
Элементы.Продукция.ТекущаяСтрока = Продукция.НайтиПоИдентификатору(ТекСтрока); =)) |
|||
15
Олеся999
31.08.15
✎
11:46
|
(14) Так вот написала : )
ТекСтрока = Элементы.Продукция.ТекущиеДанные.ПолучитьИдентификатор(); ВвестиДиапазонНаСервере(); Элементы.Продукция.ТекущаяСтрока = Элементы.Продукция.НайтиПоИдентификатору(ТекСтрока); и {Документ.ЗаявкаНаПоставку.Форма.ФормаДокумента.Форма(145)}: Метод объекта не обнаружен (НайтиПоИдентификатору) Элементы.Продукция.ТекущаяСтрока = Элементы.Продукция.НайтиПоИдентификатору(ТекСтрока); |
|||
16
Cube
31.08.15
✎
12:07
|
(15) Перечитывай (14), пока не найдешь одно отличие от (12) =))
|
|||
17
Олеся999
31.08.15
✎
12:10
|
(16) екСтрока = Элементы.Продукция.ТекущиеДанные.ПолучитьИдентификатор();
ВвестиДиапазонНаСервере(); Элементы.Продукция.ТекущаяСтрока = Продукция.НайтиПоИдентификатору(ТекСтрока); Такие дела :) {Документ.ЗаявкаНаПоставку.Форма.ФормаДокумента.Форма(144,35)}: Переменная не определена (Продукция) Элементы.Продукция.ТекущаяСтрока =<<?>>Продукция.НайтиПоИдентификатору(ТекСтрока); (Проверка: Тонкий клиент) |
|||
18
Cube
31.08.15
✎
12:13
|
(17) Ну я не знаю, как называется реквизит формы, привязанный к таблице формы "Продукция"... Я предположил, что называется так же, но не угадал.
Давай, прояви энтузиазм, подставь нужное имя сама :) |
|||
19
Олеся999
31.08.15
✎
12:18
|
(18) Ну как бы по идее реквизит тоже называется "Продукция".
http://lvkr.ru/f/EkKsY1/1280.jpg |
|||
20
Cube
31.08.15
✎
12:21
|
(19) Да какой там... У тебя нет реквизита формы, у тебя таблица связана с ТЧ объекта, поэтому надо писать как-то так:
Элементы.Продукция.ТекущаяСтрока = Объект.Продукция.НайтиПоИдентификатору(ТекСтрока); |
|||
21
Олеся999
31.08.15
✎
12:25
|
(20)О класс щас работает , но строку все равно перекидывает на первую ((
|
|||
22
Cube
31.08.15
✎
12:40
|
(21) Отладчиком проверь, что там у тебя запоминается в ТекСтрока...
|
|||
23
Олеся999
31.08.15
✎
12:43
|
||||
24
Cube
31.08.15
✎
12:44
|
(23) А редактируешь какую строку по счету на форме в этот момент?
|
|||
25
Олеся999
31.08.15
✎
12:46
|
(24) ну редактировал 1 строку, четвертый номерной диапазон задавал.
|
|||
26
Cube
31.08.15
✎
12:48
|
(25) Кхм... Олеся и "редактировал" "задавал" как-то не коррелируется... :)
|
|||
27
Олеся999
31.08.15
✎
12:50
|
(25) ну 1 первую строку редактировала а он 4-ый диапозон задавал
|
|||
28
Cube
31.08.15
✎
12:51
|
Пробуй так:
ТекСтрока = Объект.Продукция.НайтиПоИдентификатору(Элементы.Продукция.ТекущиеДанные.ПолучитьИдентификатор()); ВвестиДиапазонНаСервере(); Элементы.Продукция.ТекущаяСтрока = Объект.Продукция.НайтиПоИдентификатору(ТекСтрока); |
|||
29
Олеся999
31.08.15
✎
12:53
|
(27) http://lvkr.ru/f/UgrF82/1280.jpg
Вот я про что ...справа номерной диапазон |
|||
30
Олеся999
31.08.15
✎
12:57
|
Написала .
{Документ.ЗаявкаНаПоставку.Форма.ФормаДокумента.Форма(152)}: Ошибка при вызове метода контекста (НайтиПоИдентификатору) Элементы.Продукция.ТекущаяСтрока = Объект.Продукция.НайтиПоИдентификатору(ТекСтрока); по причине: Несоответствие типов (параметр номер '1') Несоответствие типов (параметр номер '1') |
|||
31
Cube
31.08.15
✎
13:04
|
(30) А, ну конечно))) Это мой косяк...
ТекСтрока = Объект.Продукция.Индекс(Объект.Продукция.НайтиПоИдентификатору(Элементы.Продукция.ТекущиеДанные.ПолучитьИдентификатор())); ВвестиДиапазонНаСервере(); Элементы.Продукция.ТекущаяСтрока = Объект.Продукция.НайтиПоИдентификатору(ТекСтрока); |
|||
32
Олеся999
31.08.15
✎
13:08
|
(31) :)))
Написала но.... Он перекидывает на первую строку все равно. |
|||
33
Cube
31.08.15
✎
13:18
|
(32) Эх... Заставила меня всё-таки открыть конфигуратор =)))
Правильный код: ТекСтрока = Объект.Продукция.Индекс(Объект.Продукция.НайтиПоИдентификатору(Элементы.Продукция.ТекущаяСтрока)); ВвестиДиапазонНаСервере(); Элементы.Продукция.ТекущаяСтрока = Объект.Продукция.Получить(ТекСтрока).ПолучитьИдентификатор(); |
|||
34
Олеся999
31.08.15
✎
13:23
|
(33) Круто спасибо )) работает ура)
Ни че се )) я бы даже элементарные вещи без открытого конфигуратора не смогла бы написать ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |