Имя: Пароль:
1C
 
Как задать фиксированное положение строки в ТЧ ?
, ,
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) Круто спасибо )) работает ура)
Ни че се )) я бы даже элементарные вещи без открытого конфигуратора не смогла бы написать )