Имя: Пароль:
1C
 
Активировать строку УФ
0 Альбатрос
 
31.07.17
09:54
ТаблицаДокументов это реквизит формы типа ТаблицаЗначений. Я по ШК определяю документ, мне нужно на форме спозиционироватьлся на строке с этим документом. Не ДС, заполняется результатом СКД.

&НаКлиенте
Процедура ОбработатьШтрихкоды(Данные)
    
    МассивСсылок = СсылкаНаЭлементСпискаПоШтрихкоду(Данные.Штрихкод);
    Если МассивСсылок.Количество() > 0 Тогда
        Элементы.ТаблицаДокументов.ТекущаяСтрока = //как сюда определить нужную мне строку?
        //ОткрытьЗначение(МассивСсылок[0]);
    Иначе
        ШтрихкодированиеПечатныхФормКлиент.ОбъектНеНайден(Данные.Штрихкод);
    КонецЕсли;
    
КонецПроцедуры
1 Альбатрос
 
31.07.17
09:55
То есть МассивСсылок[0] содержит ссылку на документ, в ТаблицеДокументов соответственно есть поле с этим документом
2 Fram
 
31.07.17
09:56
(0) Номер строки вроде нужен
3 Numerus Mikhail
 
31.07.17
10:01
(1)

как-то так


Строки = ТвояТаблицаНаФорме.НайтиСтроки(Новый Структура("ТвояКолонка", ТвояСсылка));
Если Строки.Количество() > 0 Тогда
     НужнаяСтрока = Строки[0];
     Индекс = ТвояТаблицаНаФорме.Индекс(НужнаяСтрока);
     Элементы.ТвояТаблицаНаФорме.ТекущаяСтрока = Индекс;
КонецЕсли;
4 Fram
 
31.07.17
10:02
(2)+ пардон. индекс, конечно
5 Альбатрос
 
31.07.17
10:06
(3) Спасибо, то, что надо.
6 Альбатрос
 
31.07.17
12:06
Чтоб темы не плодить.
Проблема следующая, у меня с индексами элемента формы хрень какая-то происходит. При первичном заполнении данных все ок, а вот если в открытой обработке еще раз заполнить мою ТЗ индекс элемента начинается не с 0, а с последней строки предыдущих данных.

Чтоб понятней:
Количество строк отбтраемых данных = 500.
При первом заполнении, если ткнуть на первую строку в форме, то:
Элементы.ТаблицаДокументов.ТекущаяСтрока = 0, что правильно.

при последующих заполнениях, если ткнуть на первую строку, то Элементы.ТаблицаДокументов.ТекущаяСтрока = 500. С чего вдруг?
7 DmitrO
 
31.07.17
12:13
(6)потому что не индекс, а идентификатор строки надо устанавливать в свойство ТекущаяСтрока.

Будь готов что на форуме могут запросто сказать не правду.
8 Basilio
 
31.07.17
12:14
Индекс с 0 начинаться не должен. Это просто идентификатор, по которому можно к конкретной строке обратиться.
9 dezss
 
31.07.17
12:17
(3) Элементы.ТвояТаблицаНаФорме.ТекущаяСтрока = Строки[0];
10 Basilio
 
31.07.17
12:19
Вот так попробуй:
Элементы.ТаблицаДокументов.ТекущаяСтрока =
ТаблицаДокументов.Найти(СслыкаНаДокумент, "Документ");
11 Альбатрос
 
31.07.17
12:21
(7) А как его получить, идентификатор этот?
12 Fedor-1971
 
31.07.17
12:22
(6) с того, что системе как-то нужно идентифицировать строки и номер строки как-бы самый простой вариант
(8) Вот это выдал стране угля. Индекс начинается с 0, а идентификатор строки нет.

Индекс = ТвояТаблицаНаФорме.Индекс(НужнаяСтрока);
измени строку на вот такую
Индекс = ТвояТаблицаНаФорме.ПолучитьИдентификатор(НужнаяСтрока);
13 Альбатрос
 
31.07.17
12:24
(12) {ВнешняяОбработка.ПроверкаПервички.Форма.Форма.Форма(192)}: Метод объекта не обнаружен (ПолучитьИдентификатор)
        Индекс = ТаблицаДокументов.ПолучитьИдентификатор(НужнаяСтрока[0]);
14 Альбатрос
 
31.07.17
12:24
в текущем варианте:


&НаКлиенте
Процедура ОбработатьШтрихкоды(Данные)
    
    МассивСсылок = СсылкаНаЭлементСпискаПоШтрихкоду(Данные.Штрихкод);
    Если МассивСсылок.Количество() > 0 Тогда
        НужнаяСтрока = ТаблицаДокументов.НайтиСтроки(Новый Структура("ДокументОтгрузки",МассивСсылок[0]));
        Если НужнаяСТрока.Количество() = 0 тогда
            Сообщить("В текущем списке не найден документ: "+МассивСсылок[0]+". Возможно он не проходит по отборам.");
            Возврат;
        КонецЕсли;
        Индекс = ТаблицаДокументов.ПолучитьИдентификатор(НужнаяСтрока[0]);
        Элементы.ТаблицаДокументов.ТекущаяСтрока = Индекс;

    Иначе
        ШтрихкодированиеПечатныхФормКлиент.ОбъектНеНайден(Данные.Штрихкод);
    КонецЕсли;
    
КонецПроцедуры
15 Numerus Mikhail
 
31.07.17
12:25
(9) Неверно. Нужно указывать числовой идентификатор
(10) тоже неверно. Вообще упадет с ошибкой по моим подсчетам.

я что-то тупанул с индексом, да
(12)  ПолучитьИдентификатор - это метод строки, а не таблицы
16 Numerus Mikhail
 
31.07.17
12:26
(14) Индекс = НужнаяСтрока[0].ПолучитьИдентификатор();

попробуй так
17 Fedor-1971
 
31.07.17
12:27
так пробуй:
Элементы.ТаблицаДокументов.ПолучитьИдентификатор(НужнаяСтрока[0])
18 Альбатрос
 
31.07.17
12:30
(16) Да, вот так работает. Спасибо.