Регистр такой:
Измерения - ВидПрививки и Сотрудник
УФ
Задача: при изменении сотрудника надо перезаполнить его должность и другие значения зависящие от значения сотрудинка.
Проблема:
При редактировании значения одного из измерений записи регистра сведений (в форме записи) возникает новая запись, а старая остается без изменений.
На форме Запись имеет тип МенеджерЗаписи
Как-то я не правильно работаю именно с записью передаваемой на сервер и обратно на форму.
Пытаюсь при записи удалять старые данные, в регистре всеравно они остаются, хотя код по удалению отрабатывает без ошибок. Удаление вставлял и после записи и во время записи на сервере и при замене значения, но запись всеравно остается и старая и новая.

В модуле формы записи у меня такие процедуры:

```1c
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    //СтарыеЗначенияЗаписи
    ПериодЗаписи = Запись.Период;
    Сотрудник = Запись.Сотрудник;
    ВидПрививки = Запись.ВидПрививки;
    КонецПроцедуры

    &НаКлиенте
    Процедура СотрудникПриИзменении(Элемент)

    СотрудникПриИзмененииНаСервере();

    КонецПроцедуры

    &НаСервере
    Процедура СотрудникПриИзмененииНаСервере()

    ЗаписьРегистраСервер = РеквизитФормыВЗначение("Запись"); //менеджер записи
    Если НЕ ЗаписьРегистраСервер.Сотрудник = Неопределено Тогда
    ЗаписьРегистраСервер.ФизическоеЛицо = ЗаписьРегистраСервер.Сотрудник.ФизическоеЛицо;
    ЗаписьРегистраСервер.ДатаРождения = ЗаписьРегистраСервер.Сотрудник.ФизическоеЛицо.ДатаРождения;

    ДанныеСотрудника = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ЗаписьРегистраСервер.Сотрудник),
    "Должность", ТекущаяДата());
    Если ДанныеСотрудника.Количество() > 0 Тогда
    ЗаписьРегистраСервер.Должность = ДанныеСотрудника[0].Должность;
    КонецЕсли;
    Иначе
    ЗаписьРегистраСервер.ДатаРождения = '00010101';
    ЗаписьРегистраСервер.ФизическоеЛицо = Справочники.ФизическиеЛица.ПустаяСсылка();
    ЗаписьРегистраСервер.Должность = Справочники.ДолжностиОрганизаций.ПустаяСсылка();
    КонецЕсли;

    ЗначениеВРеквизитФормы(ЗаписьРегистраСервер,"Запись");

    КонецПроцедуры
```
---
Я имел ввиду вообще ничего не надо было предпринимать для работы с записью. Только заполнять поля:

```1c
    &НаСервере
    Процедура СотрудникПриИзмененииНаСервере()

    Если ЗначениеЗаполнено(Запись.Сотрудник) Тогда
    Запись.ФизическоеЛицо = Запись.Сотрудник.ФизическоеЛицо;
    Запись.ДатаРождения = Запись.Сотрудник.ФизическоеЛицо.ДатаРождения;

    ДанныеСотрудника = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Запись.Сотрудник),
    "Должность", ТекущаяДата());
    Если ДанныеСотрудника.Количество() > 0 Тогда
    Запись.Должность = ДанныеСотрудника[0].Должность;
    КонецЕсли;
    Иначе
    Запись.ДатаРождения = '00010101';
    Запись.ФизическоеЛицо = Справочники.ФизическиеЛица.ПустаяСсылка();
    Запись.Должность = Справочники.ДолжностиОрганизаций.ПустаяСсылка();
    КонецЕсли;

    КонецПроцедуры
```
---
Уточните, пожалуйста, зачем Вы для редактирования используете вместо реквизитов Записи добавленные одноименные реквизиты формы?
---
Для редактирования я использую как раз реквизиты записи, а в реквизитах формы я просто сохраняю старые значения записи, чтобы по ним потом сделать отбор и удалить "старую" запись.
---
Зачем? :) Если бы не эта инициатива, все бы прекрасно работало. При изменении сотрудника перезаполняйте поля Записи нужными значениями. И все будет работать ожидаемо.
---
Не улавливаю волшебной связи между Записью и реквизитами формы и их значениями, учитывая, что они вроде нигде никак не должны влиять друг на друга... Но я попробую сейчас грохнуть все реквизиты формы и посмотреть, что из этого выйдет
---
Удалил все реквизиты формы кроме Записи. Как появлялось две записи так и появляется.
Так что реквизиты формы тут непричём. Надо как-то удалить первоначальную запись, но вот как ее грохнуть не понимаю((
---
Я имел ввиду вообще ничего не надо было предпринимать для работы с записью. Только заполнять поля:

```1c
    &НаСервере
    Процедура СотрудникПриИзмененииНаСервере()

    Если ЗначениеЗаполнено(Запись.Сотрудник) Тогда
    Запись.ФизическоеЛицо = Запись.Сотрудник.ФизическоеЛицо;
    Запись.ДатаРождения = Запись.Сотрудник.ФизическоеЛицо.ДатаРождения;

    ДанныеСотрудника = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Запись.Сотрудник),
    "Должность", ТекущаяДата());
    Если ДанныеСотрудника.Количество() > 0 Тогда
    Запись.Должность = ДанныеСотрудника[0].Должность;
    КонецЕсли;
    Иначе
    Запись.ДатаРождения = '00010101';
    Запись.ФизическоеЛицо = Справочники.ФизическиеЛица.ПустаяСсылка();
    Запись.Должность = Справочники.ДолжностиОрганизаций.ПустаяСсылка();
    КонецЕсли;

    КонецПроцедуры
```
---
В смысле получить все нужные значения на сервере, вернуть их на клиент и прямо на клиенте изменить значение реквизитов записи?
---
Я же код целиком привел. То, что нужно поправить. Попробуйте воспользоваться им.
---
Ок, спасибо. Попробую чуть позже.
---
Немного перемудрил. Надо быть внимательнее( Спасибо за подсказку.
---
После записи объекта пытался вставить удаление, но записи остается две

```1c
    &НаСервере
    Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

    Если НЕ ТекущийОбъект.Сотрудник = Сотрудник Тогда

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Период",ПериодЗаписи);
    Запрос.УстановитьПараметр("ВидПрививки",ВидПрививки);
    Запрос.УстановитьПараметр("Сотрудник",Сотрудник);
    Запрос.Текст=
    "ВЫБРАТЬ
    | ХВ_Прививки.Период КАК Период,
    | ХВ_Прививки.ВидПрививки КАК ВидПрививки,
    | ХВ_Прививки.Сотрудник КАК Сотрудник,
    | ХВ_Прививки.СерияПрививки КАК СерияПрививки,
    | ХВ_Прививки.Доза КАК Доза,
    | ХВ_Прививки.ДатаРождения КАК ДатаРождения,
    | ХВ_Прививки.ФизическоеЛицо КАК ФизическоеЛицо,
    | ХВ_Прививки.Должность КАК Должность
    |ИЗ
    | РегистрСведений.ХВ_Прививки КАК ХВ_Прививки
    |ГДЕ
    | НЕ ХВ_Прививки.Период = &Период
    | И НЕ ХВ_Прививки.Сотрудник = &Сотрудник
    | И НЕ ХВ_Прививки.ВидПрививки = &ВидПрививки";
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда
    НаборПрививки = РегистрыСведений.ХВ_Прививки.СоздатьНаборЗаписей();
    НаборПрививки.Загрузить(Результат.Выгрузить());
    НаборПрививки.Записать(Истина);
    КонецЕсли;

    КонецЕсли;

    КонецПроцедуры
```
---
Или я каких-то нюансов не понял, или тут что-то перемудрили. У вас есть запись независимого РС? Вы открываете формуЗаписи нужной записи этого РС и при изменении определенного измерения этой записи, нужно менять (в этой записи) другие измерения и сохранять. Так?

```1c
    &НаКлиенте
    Процедура СотрудникПриИзменении(Элемент)

    Если НЕ Запись.Сотрудник = СсылкаДляПроверки тогда
    Запись.КакойТоРеквизит = КакаетоЗначение;
    КонецЕсли;

    КонецПроцедуры
```