Доброго времени суток, форумчане
Делаю работу на практику в техникуме и столкнулся с проблемой, решение которой никак не могу найти и понять
У меня существует перечень заявок с реквизитом "Этап", я сделал регистр сведений, который выводит в каком документе и когда был изменен этап, но, во-первых, я не могу в регистре отобразить старый этап, который сменился на новый(новый отображается)
Во-вторых, если я в документе меняю любой другой реквизит, то в регистр сведений всё равно записывается запись, соответственно в ней не меняется ничего, а хотелось бы сделать так: В зависимости от измененного реквизита в документе - менялся бы смысл регистра, например: если изменили этап, то в регистре писалось "Был изменён этап с такого-то на такой-то", если изменили сотрудника, то "Был изменён сотрудник с такого-то на такого-то"
Возможно ли это реализовать и насколько сложно?
Заранее спасибо)
---
Можно такое сделать!
Вот такой подход. Выбираете процедуру, например, перед записью в модуле объекта и пишите

```1c
    Процедура ПередЗаписью(Отказ, Режим)

    Если ЭтоНовый() Тогда
    // делаете записи и по этапу и сотруднику т.к. это новая запись, на ваше усмотрение можете и не писать
    Иначе

    // Проверяем отличия реквизита этап
    Если Этап <> Ссылка.Этап Тогда
    // делаем записи по этапу
    КонецЕсли

    // Проверяем отличия реквизита Сотрудник
    Если Сотрудник <> Ссылка.Сотрудник Тогда
    // делаем записи по сотруднику
    КонецЕсли

    Конецесли

    Конецпроцедуры
```
---
Можно такое сделать!
Вот такой подход. Выбираете процедуру, например, перед записью в модуле объекта и пишите

```1c
    Процедура ПередЗаписью(Отказ, Режим)

    Если ЭтоНовый() Тогда
    // делаете записи и по этапу и сотруднику т.к. это новая запись, на ваше усмотрение можете и не писать
    Иначе

    // Проверяем отличия реквизита этап
    Если Этап <> Ссылка.Этап Тогда
    // делаем записи по этапу
    КонецЕсли

    // Проверяем отличия реквизита Сотрудник
    Если Сотрудник <> Ссылка.Сотрудник Тогда
    // делаем записи по сотруднику
    КонецЕсли

    Конецесли

    Конецпроцедуры
```
---
Если Этап <> Ссылка.Этап Тогда
// делаем записи по этапу
КонецЕсли

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

```1c
    Элементы.РегистрСведенийИзмененияЗаявок.Обновить()
```
---
ну или можно по другому:
В процедуре при записи в модуле объекта делаете оповещение

Процедура ПриЗаписи(Отказ)
Оповестить("ЗаписанДокумент")
КонецПроцедура

На форме списка создаете процедуру формы ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗаписанДокумент" Тогда
    Элементы.РегистрСведенийИзмененияЗаявок.Обновить();
Конецесли
---
пробую по этому примеру - выводит ошибку "{Документ.Задание.МодульОбъекта(29,2)}: Процедура или функция с указанным именем не определена (Оповестить)" и уточнить хочу: в форму списка документа или Регистра писать Процедуру ОбработкаОповещения?
---
Всё, справился, спасибо ещё раз)
---
я дико извиняюсь, но у меня ещё вопрос: у меня в регистр выводятся названия документов(ЭтотОбъект.Ссылка), но при создании нового документа, у меня это поле остаётся пустым, логично, что это из-за того, что процедура происходит ПередЗаписью(все другие не подходят, ибо сбивается ссылка на реквизиты), можно ли как-то присвоить новому документу в регистре название этого документа?
Выглядит это следующим образом:
---
я так понимаю это поле Заявка! Но до тех пор пока вы документ не запишите у вас там не появится ни чего. Чтобы оно более опертивно появилось вам туда нужно поместить ссылку. Но в процедуре перед записью ссылка еще не известа. Тут выбрать другое событие когда записывать данные в регистр, например, после записи. А с другой стороны если Заявка - это документ - объект 1С Документ, то разместите в специализированной процедуре ОбработкаПроведения и в ней уже делайте записи (Поле заявка заполняйте ссылкой на документ)
---
А можно в условии как-то обратиться к процедуре другой?
Т.е. допустим так:

```1c
    Если ЭтоНовый() Тогда
    ОбработкаПроведения(Отказ, Режим);
    КонецЕсли;

    Процедура ОбработкаПроведения(Отказ, Режим)
    *Тут Записи*
    КонецПроцедуры
```

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

Если вам нужно какой то признак новый или не новый это объект в процедуре ОбработкаПроведения, то просто определите общую переменную в модуле объекта и обращайтесь к ней.

Вот модуль объекта

```1c
    Перем ЭтоНовыйОбъект;

    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если ЭтоНовый() Тогда
    ЭтоНовыйОбъект = Истина;
    Иначе
    ЭтоНовыйОбъект = Ложь
    Конецесли
    КонецПроцедуры

    Процедура ОбработкаПроведения(Отказ, Режим)
    Если ЭтоНовыйОбъект Тогда
    // тут уже делаете записи
    Конецесли
    КонецПроцедуры
```
---
Спасибо ещё раз огромное, всё работает вроде)
Если появятся вдруг вопросы, можно ещё к вам обращаться через комменты в этой теме?)
---
Да не зачто! да конечно обращайтесь!
---
Ещё раз здравствуйте)
Появился вопросик
Я сделал обработку, в которой заполняю ТЗ данными из Excel-файла
Не подскажите, как мне передать данные из заполненной ТЗ в модуле формы обработки в объекты модуля формы документа?
---
Ну вот смотрите, если вам нужно ТЗ передать в модуль объекта, при этом сама ТЗ не доступна там. То делаете вот так.

1. В модуле обработке делаете процедуру с префиксом Экспорт и параметров ТЗ, например, Процедура ОбработатьТЗВМодулеОбъекта(ТЗ)Экспорт
2. Далее на форме просто вызываете данную процедуру и передаете в нее вашу таблицу значений
---
а как мне в модуле объекта документа правильно эту процедуру прописать?
У меня ведь она в документе должна выполняться только если использовалась обработка, а если обработку не использовали, то и процедура не должна выполняться в самом документе