В событии ПослеЗаписи поместил этот код:

```1c
    ТекущиеДанные =ТекущиеДанные;
    Удалить = Новый Структура;
    Удалить.Вставить("ТекущиеДанные",ТекущиеДанные);

    Отказ = Истина;
    ТекущаяСтрока = ЭлементыФормы.Товары.ТекущаяСтрока;
    ФормаОбработкиУдаления = ОткрытьФорму("РегистрСведений.ЛогРедактированияДокументов.Форма.КорректировкаРеализации",,ЭтаФорма,);
```

Почему при нажатии на кнопку "Ок" не вызывается форма?
Кнопка "Ок" ведь записывает, проводит и закрывает документ
---
Если я правильно понял описание проблемы, то дело в следующем. При открытии формы регистра третьим параметром вы указываете владельца открываемой формы. И этим владельце оказывается текущая форма (ЭтаФорма), которая вот вот закроется. А когда она закрывается, закрываются и все ее подчиненные. В результате Вам кажется, что форма регистра не открылась вовсе, хотя на самом деле она на мгновение открывается и сразу же закрывается вслед за текущей формой.

Чтобы этого избежать, во-первых, не передавайте третьим параметром владельца новой формы. Она должна открываться независимо. Во-вторых, на всякий случай проверьте у формы регистра свойство "РежимОткрытияОкна". Если он не "Независимый", то при открытии формы нужно явно указать, что открывать следует независимо:

```1c
    ОткрытьФорму("ИмяФормы", , , , , , , РежимОткрытияОкнаФормы.Независимый);
```

Альтернативное решение - в качестве владельца можно передать не саму текущую форму, а владельца текущей формы:

```1c
    ОткрытьФорму("ИмяФормы", , ЭтаФорма.ВладелецФормы);
```
---
Если я правильно понял описание проблемы, то дело в следующем. При открытии формы регистра третьим параметром вы указываете владельца открываемой формы. И этим владельце оказывается текущая форма (ЭтаФорма), которая вот вот закроется. А когда она закрывается, закрываются и все ее подчиненные. В результате Вам кажется, что форма регистра не открылась вовсе, хотя на самом деле она на мгновение открывается и сразу же закрывается вслед за текущей формой.

Чтобы этого избежать, во-первых, не передавайте третьим параметром владельца новой формы. Она должна открываться независимо. Во-вторых, на всякий случай проверьте у формы регистра свойство "РежимОткрытияОкна". Если он не "Независимый", то при открытии формы нужно явно указать, что открывать следует независимо:

```1c
    ОткрытьФорму("ИмяФормы", , , , , , , РежимОткрытияОкнаФормы.Независимый);
```

Альтернативное решение - в качестве владельца можно передать не саму текущую форму, а владельца текущей формы:

```1c
    ОткрытьФорму("ИмяФормы", , ЭтаФорма.ВладелецФормы);
```
---
Да, правильно поняли
 Альтернативное решение - в качестве владельца можно передать не саму текущую форму, а владельца текущей формы:
ОткрытьФорму("ИмяФормы", , ЭтаФорма.ВладелецФормы);
сделал так, но теперь и как в событии ПриЗаписи ссылка документа пустая
---
первым способом тоже ссылка пустая
вот здесь ссылку нового документа находит, в ЭтаФорма.ВладелецФормы.Ссылка:

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

    ТабТовары.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    ТабТовары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10)));
    ТабТовары.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
    ТабТовары.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
    ТабТовары.Колонки.Добавить("Остаток", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
    ТабТовары.Колонки.Добавить("Резерв", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
    ТабТовары.Колонки.Добавить("ПричинаИзменения", Новый ОписаниеТипов("СправочникСсылка.AV_ПричиныУрезанияНоменклатуры"));
    ЭлементыФормы.ТабТовары.СоздатьКолонки();
    Для Каждого Строка Из ЭтаФорма.ВладелецФормы.Товары Цикл
    Если Строка.КоличествоДоИзменения<>Строка.Количество Тогда
    ЗаполнитьЗначенияСвойств(ТабТовары.Добавить(), Строка);
    КонецЕсли;
    КонецЦикла;

    Для Каждого Запись Из ТабТовары Цикл
    НайденноеЗначение = Выборка.Найти(Запись.Номенклатура,"Номенклатура");
    Если НайденноеЗначение <> Неопределено Тогда
    Запись.Остаток=НайденноеЗначение.Остаток;
    Запись.Резерв=НайденноеЗначение.Резерв;
    Иначе
    Запись.Остаток=0;
    Запись.Резерв=0;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```

а вот здесь уже ссылка пустая, в ЭтаФорма.ВладелецФормы.Ссылка:

```1c
    Процедура ОКНажатие(Элемент)
    Если ТабТовары.Количество()<>0 Тогда
    Если ЗначениеЗаполнено(ТабТовары[0].ПричинаИзменения) Тогда
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    | ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК Резерв,
    | ЕСТЬNULL(ВложенныйЗапрос.КоличествоОстаток, 0) КАК Остаток,
    | КорректировкаРеализацииТовары.Номенклатура,
    | КорректировкаРеализацииТовары.НомерСтроки
    |ИЗ
    | Документ.КорректировкаРеализации.Товары КАК КорректировкаРеализацииТовары
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(, ) КАК ТоварыВРезервеНаСкладахОстатки
    | ПО КорректировкаРеализацииТовары.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура
    | ИЗ
    | РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
    |
    | СГРУППИРОВАТЬ ПО
    | ТоварыНаСкладахОстатки.Номенклатура,
    | ТоварыНаСкладахОстатки.КоличествоОстаток) КАК ВложенныйЗапрос
    | ПО КорректировкаРеализацииТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
    |ГДЕ
    | КорректировкаРеализацииТовары.Ссылка.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    | КорректировкаРеализацииТовары.Номенклатура,
    | ЕСТЬNULL(ВложенныйЗапрос.КоличествоОстаток, 0),
    | ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0),
    | КорректировкаРеализацииТовары.НомерСтроки";
    Запрос.УстановитьПараметр("Ссылка",ЭтаФорма.ВладелецФормы.Ссылка);
    Выборка=Запрос.Выполнить().Выгрузить();
    Топ=ТабТовары;
    Для Каждого Строка Из Топ Цикл
    НаборЗаписей = РегистрыСведений.ЛогРедактированияДокументов.СоздатьНаборЗаписей();
    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Документ =ЭтаФорма.ВладелецФормы.Ссылка;
    НоваяЗапись.Было =Строка.Количество;
    НоваяЗапись.Стало =Строка.Количество;
    НоваяЗапись.Остаток =Строка.Остаток;
    НоваяЗапись.Резерв =Строка.Резерв;
    НоваяЗапись.ПричинаИзменения =Строка.ПричинаИзменения;
    НоваяЗапись.Товар =Строка.Номенклатура;
    НоваяЗапись.Пользователь =ПараметрыСеанса.ТекущийПользователь;
    НоваяЗапись.Период =ТекущаяДата();
    НоваяЗапись.Комментарий =Комментарий;
    НаборЗаписей.Записать(Ложь);

    КонецЦикла;

    Закрыть();

    ДокументЗакрыть=ЭтаФорма.ВладелецФормы;
    ДокументЗакрыть.Закрыть();

    Иначе
    Предупреждение("Укажите причину изменения",2);
    Отказ=Истина;
    КонецЕсли;
    Иначе
    ЭтаФорма.Закрыть();
    КонецЕсли;
    КонецПроцедуры
```
---
в свойствах формы у меня нету "Режим открытия окна", наверное из-за того,что у меня обычная форма
---
.
---
спасибо, сделал
---
что делает "ТекущиеДанные = ТекущиеДанные" ???
Где используется структура "Удалить"?
"Отказ = Истина" для чего может быть использован в "ПослеЗаписи"? В передаваемых в "ПослеЗаписи" параметрах нет такого параметра.
Если форма после записи продолжает оставаться открытой, то сомневаюсь, что сработает "ОткрытьЗначение(Ссылка)". Тем более, правильнее не "ОткрытьЗначение", а "ПоказатьЗначение(,Ссылка)".

Пока код похож на какой-то бред человека, который второй день видит 1С в частности и программирование вообще.

Если после записи формы документа нужно открыть какую-то новую форму (при этом форма документа остаётся открытой), то лучше в "ПослеЗаписи" поместить "ПодключитьОбработчикОжидания(...)" с однократным вызовом и срабатыванием через 0.2 секунды, например, а в процедуре, вызываемой обработчиком, уже открыть форму.

Если нужно открывать какую-то форму после закрытия формы документа, то в форме документа это прописать нельзя, так как она уже будет закрыта. Вместо этого, можно использовать "Оповестить(....)", и в форме списка документа (например) прописать обработчик оповещения, который и будет открывать новую форму.

Но вообще, если стоит задача открывать какую-то форму после закрытия какой-то другой формы, скорее всего, стоит пересмотреть постановку задачи, чтобы обойтись без таких сомнительных реализаций.
---
```1c
    ТекущиеДанные =ТекущиеДанные;
    Удалить = Новый Структура;
    Удалить.Вставить("ТекущиеДанные",ТекущиеДанные);

    Отказ = Истина;
    ТекущаяСтрока = ЭлементыФормы.Товары.ТекущаяСтрока;
    ФормаОбработкиУдаления = ОткрытьФорму("РегистрСведений.ЛогРедактированияДокументов.Форма.КорректировкаРеализации",,ЭтаФорма,);
```

при записи или после записи должно открываться форма "Корректировка реализации".в событии ПриЗаписи, корректно не передается ссылка нового создаваемого документа.Если просто перезаписать уже существующих документ,то ссылка передается, а если документ новый,то ссылка передается в собитию ПриОткрытии вызываемой формы, но не передается в событии при нажатии на кнопку "Ок" в вызываемой форме.
А когда помещаю этот код в событие ПослеЗаписи, то при нажатии на кнопку "Ок" в документе,форма не вызывается