|
Интерактивное редактирование записи регистра сведений | ☑ | ||
---|---|---|---|---|
0
saksaul
30.04.20
✎
08:14
|
Платформа: 8.3.15.1778
Регистр такой: Измерения - ВидПрививки и Сотрудник УФ Задача: при изменении сотрудника надо перезаполнить его должность и другие значения зависящие от значения сотрудинка. Проблема: При редактировании значения одного из измерений записи регистра сведений (в форме записи) возникает новая запись, а старая остается без изменений. На форме Запись имеет тип МенеджерЗаписи Как-то я не правильно работаю именно с записью передаваемой на сервер и обратно на форму. Пытаюсь при записи удалять старые данные, в регистре всеравно они остаются, хотя код по удалению отрабатывает без ошибок. В модуле формы записи у меня такие процедуры: &НаКлиенте Процедура ПриОткрытии(Отказ) //СтарыеЗначенияЗаписи ПериодЗаписи = Запись.Период; Сотрудник = Запись.Сотрудник; ВидПрививки = Запись.ВидПрививки; КонецПроцедуры &НаКлиенте Процедура СотрудникПриИзменении(Элемент) СотрудникПриИзмененииНаСервере(); КонецПроцедуры &НаСервере Процедура СотрудникПриИзмененииНаСервере() ЗаписьРегистраСервер = РеквизитФормыВЗначение("Запись"); //менеджер записи Если НЕ ЗаписьРегистраСервер.Сотрудник = Неопределено Тогда ЗаписьРегистраСервер.ФизическоеЛицо = ЗаписьРегистраСервер.Сотрудник.ФизическоеЛицо; ЗаписьРегистраСервер.ДатаРождения = ЗаписьРегистраСервер.Сотрудник.ФизическоеЛицо.ДатаРождения; ДанныеСотрудника = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ЗаписьРегистраСервер.Сотрудник), "Должность", ТекущаяДата()); Если ДанныеСотрудника.Количество() > 0 Тогда ЗаписьРегистраСервер.Должность = ДанныеСотрудника[0].Должность; КонецЕсли; Иначе ЗаписьРегистраСервер.ДатаРождения = '00010101'; ЗаписьРегистраСервер.ФизическоеЛицо = Справочники.ФизическиеЛица.ПустаяСсылка(); ЗаписьРегистраСервер.Должность = Справочники.ДолжностиОрганизаций.ПустаяСсылка(); КонецЕсли; ЗначениеВРеквизитФормы(ЗаписьРегистраСервер,"Запись"); КонецПроцедуры &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если НЕ ТекущийОбъект.Сотрудник = Сотрудник Тогда НаборПрививки = РегистрыСведений.ХВ_Прививки.СоздатьНаборЗаписей(); НаборПрививки.Отбор.Период.Установить(ПериодЗаписи); НаборПрививки.Отбор.Сотрудник.Установить(Сотрудник); НаборПрививки.Отбор.ВидПрививки.Установить(ВидПрививки); НаборПрививки.Прочитать(); Если НаборПрививки.Количество()=1 Тогда НаборПрививки.Удалить(0); Иначе Сообщить("Дублирование записей регистра"); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
1
hhhh
30.04.20
✎
08:40
|
(0) старую запись ты должен удалить
|
|||
2
saksaul
30.04.20
✎
10:13
|
(1) при записи на сервере она и удаляется типа...
Но после закрытия формы появляется обратно. И в процедуру СотрудникПриИзмененииНаСервере я тоже удаление ставил - набор записей отбирается, удаляется и появляется после закрытия формы снова + новая запись. Т.е. где-то в памяти она болтается еще и после закрытия формы записывает обе записи |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |