Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ЗУП3 при записи документа "Табель" сбивается текущая строка сотрудника. Как спозициониро..

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.