Доброго времени суток! Нужно отловить интерактивное копирование записи регистра сведений в управляемых формах. Т.е. пользователь открывает фому списка регистра сведений, выделяет нужную запись регистра и наживает F9. Так вот мне нужно, как то перехватить это событие, что бы переопределить значения некоторых реквизитов и что бы в открытой форме были уже новые значения, к примеру в период подставить текущую дату, в измерение "Организация", подставить текущую организацию пользователя и т.д. На форумах ничего толкового не нашел, один бред какой-то. Прошу обратить внимание, что речь идет именно о копировании ЗАПИСИ РЕГИСТРА СВЕДЕНИЙ, а не элемента справочника или документа. Конфигурация не типовая, пишется с нуля (если это имеет значение). Заранее спасибо!
---
Если не было копирования то ЗначениеЗаполнено(Параметры.ЗначениеКопирования) = Ложь
---
главное зафиксировать факт того события которые вы должны перехватить, а остальное уже не сложно

Обычно я фиксирую такие "факты" во встроенной структуре "ДополнительныеСвойства" и у набора записей регистра сведений она тоже есть. Т.е., в тех формах или обработчиках событий при копировании, добавлении вы должны вставить в ДополнительныеСвойства новый ключ, например "НеобходимаКорректировкаЗаписи". Можно добавить по этому ключу значение структуру с данными заполнения. Далее все элементарно...

```1c
    // Стандартный обработчик в модуле набора записей
    // можно(даже нужно) вставить в расширение с директивой &После
    Процедура ПередЗаписью(Отказ, Замещение)

    // ....
    ЗначенияКорректировки = Неопределено;
    ЭтотОбъект.ДополнительныеСвойства.Свойство("НеобходимаКорректировкаЗаписи", ЗначенияКорректировки);
    Если НЕ ЗначенияКорректировки = Неопределено Тогда
    Для каждого Запись Из ЭтотОбъект Цикл
    //Запись. = ЗначенияКорректировки.Организация;
    //Запись. = ЗначенияКорректировки.;
    //...
    КонецЦикла
    КонецЕсли;

    КонецПроцедуры
```
---
а там все на клиенте еще до записи, что ж первое сообщение можно не читать и посмотреть обработчики формы
---
Да, там все до записи. У табличного поля (списка) есть событие

```1c
    СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
```

Соответственно по параметру "Копирование" я погу понять что запись создается копирование, но что делать дальше, не пойму, как добраться до значений новой записи, как их изменить, или как передать этот признак в форму, что бы обратиться к нему допустим при открытии формы?
---
Не пробовал, но вдруг это поможет.
Попробуй создать свою форму списка - регистра сведений.
Помести на эту форму кнопку и задай сочетание клавиш для этой кнопки.
Под кнопкой напиши свой код, что нужно делать.
Не уверен, что F9 подойдет, но Ctrl + W будет работать.
---
Да не, мне кажется должен быть какой-то "правильный", "типовой" алгоритм действий в моем случае. Разработчик платформы должны были предусмотреть такой сценарий, должно быть как-то все слишком просто и правильно...
---
Модуль менеджера РС имеет предопределенную процедуру ОбработкаПолученияФормы
В СП посмотрите, полагаю самое то для ваших целей.
---
Да, там есть параметр через который можно добраться до значения копирования, но как изменить значения новой записи? Проще тогда получить объект копирования из обработчика ПриСозданииНаСервере (только что нарыл):

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Копирование = Ложь;
    Если Не ЗначениеЗаполнено(Параметры.ЗначениеКопирования.Период) Тогда
    Копирование = Истина; //Но это кустарный метод
    КонецЕсли;
    КонецПроцедуры
```

Проблема в том, что не возможно точно определить, произошло копирование или нет, т.к. ЗначениеКопирования есть всегда, даже если я просто создаю запись.
---
Если не было копирования то ЗначениеЗаполнено(Параметры.ЗначениеКопирования) = Ложь
---
аааа, это уже интересно, что то тупанул, спасибо! Ща проверю...
---
Тогда уж просто Параметры.ЗначениеКопирования = Ложь... ;)
---
Да, все верно, все работает, кроме того, как я понял, проверить новая это запись или нет можно конструкцией
```1c
    ЗначениеЗаполнено(Запись.ИсходныйКлючЗаписи)
```

Итого:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭтоНовый = Не ЗначениеЗаполнено(Запись.ИсходныйКлючЗаписи) ;
    Копирование = ЗначениеЗаполнено(Параметры.ЗначениеКопирования);
    КонецПроцедуры
```
---
Как же хорошо что есть этот форум! Спасибо!!!