Имя: Пароль:
1C
1С v8
ЗУП3 при записи документа "Табель" сбивается текущая строка сотрудника. Как спозициониро..
0 Велимудр
 
20.11.20
16:42
Приветы!
ЗУП 3.1 В документе табель или индивидуальный график при нажатии на кнопку записать происходит сдвиг текущей строки.
Т.е. выбрали Пупкина, нажали Записать, курсор таблицы сместился с Пупкина на Залупкина. Не смещается только первая строка, т.к. индекс 0.
Вроде бы хрен с ним, но по ТЗ нам надо отображать дополнительные дынные по сотруднику. Данные отображаются при выборе строки сотрудника.
Табельщик жалуется, что при записи активная строка меняется и:
1. Курсор сбивается на другую строку и где искать предыдущую непонятно
2. Дополнительные данные показывают неверные данные, что снова вводит в заблуждение.

Смещение происходит из-за того, что в табеле присутствуют пустые строки т.к. у сотрудника заполнена только одна строка, а отображаются две или больше.
При нажатии на кнопку "записать" пустые строки удаляются, документ записывается, и потом обратно добавляются пустые строки, но их идентификаторы в объекте уже не соответствуют идентификаторам на форме.
Сделал так: перед записью запоминаю сотрудника. а после записи пытаюсь найти этого сотрудника снова, но т.к. поиск идет не по элементам формы, а по строкам объекта, то идентификаторы строк не соответствуют идентификаторам на форме.

Как найти нужного сотрудника в элементе ТаблицаФормы? Перебора по строкам у нее нет
1 vicof
 
20.11.20
18:33
А зачем пустые строки в табеле?
2 Велимудр
 
20.11.20
20:06
Вдруг кто будет искать, вот так работает:

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
.............
    ПодключитьОбработчикОжидания("УстановитьТекущуюСтрокуДанныеВремени", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура УстановитьТекущуюСтрокуДанныеВремени() Экспорт
    СтруктураОтбора = Новый Структура("Сотрудник, ПустаяСтрока", ТекСотрудник, Ложь);
    
    Элементы.ДанныеОВремени.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураОтбора);
    ТекИдентификатор = Элементы.ДанныеОВремени.ТекущиеДанные.ПолучитьИдентификатор();
    Элементы.ДанныеОВремени.ОтборСтрок = Неопределено;
    
    Элементы.ДанныеОВремени.ТекущаяСтрока = ТекИдентификатор;
    ОтключитьОбработчикОжидания("УстановитьТекущуюСтрокуДанныеВремени");
КонецПроцедуры
3 Велимудр
 
20.11.20
20:06
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
....................    
    ПодключитьОбработчикОжидания("УстановитьТекущуюСтрокуДанныеВремени", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура УстановитьТекущуюСтрокуДанныеВремени() Экспорт
    СтруктураОтбора = Новый Структура("Сотрудник, ПустаяСтрока", ТекСотрудник, Ложь);
    
    Элементы.ДанныеОВремени.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураОтбора);
    ТекИдентификатор = Элементы.ДанныеОВремени.ТекущиеДанные.ПолучитьИдентификатор();
    Элементы.ДанныеОВремени.ОтборСтрок = Неопределено;
    
    Элементы.ДанныеОВремени.ТекущаяСтрока = ТекИдентификатор;
    ОтключитьОбработчикОжидания("УстановитьТекущуюСтрокуДанныеВремени");
КонецПроцедуры
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс