Подписки на события

1. Марина Ч. (MarinaChist) 21.12.16 10:51 Сейчас в теме
Уважаемые форумчате, подскажите, пожалуйста, начинающему программисту 1С. Ситуация такова:
Есть справочник. При изменении или добавлении в него записей необходимо создавать записи в определенном регистре с полями: 1) действие (Создан, Изменен), 2) датой создания (изменения) и 3) ссылкой на объект. Чтоб не изменять и не снимать справочник с поддержки, я создала две подписки на события ПередЗаписью и ПриЗаписи.
В первой подписки (ПередЗаписью) я анализирую запись на Новая или не новая (переменной1 присваиваю ЛОЖЬ или ИСТИНА) и если запись не новая, то анализирую изменение всех реквизитов. Если не менялись, то переменной2 присваиваю Ложь, если менялись Истина.
А во второй подписке (При записи) мне надо в зависимости от этих переменных создать записи в регистре.
Вопрос состоит в том КАК ПЕРЕДАТЬ ЗНАЧЕНИЯ ЭТИХ ПЕРЕМЕННЫХ ВО ВТОРУЮ ПОДПИСКУ. Буду очень признательна за советы.
Найденные решения
6. Oleg Space (spacecraft) 21.12.16 11:08 Сейчас в теме
(1) в первой подписке:
Источник.ДополнительныеСвойства.Вставить("п1", Истина);

во второй подписке анализировать наличие:
п1 = Неопределено;
Если Источник.ДополнительныеСвойства.Свойство("п1", п1) Тогда
    // работаем с п1.
КонецЕсли;
Ганс; le0nid; ipoloskov; +3 Ответить 1
Остальные ответы
2. Ирина Д (nedopro) 21.12.16 10:54 Сейчас в теме
(1)делать проверку и запись в одной подписке.
В чем заключается конечный результат задачи? Похоже на версионирование объектов.
3. Марина Ч. (MarinaChist) 21.12.16 11:01 Сейчас в теме
(2) В одной подписке не получается.
В подписке ПередЗаписью еще нет ссылки на новый объект, т.к. объект еще не записан,
а во второй подписке ПриЗаписи, невозможно проанализировать новый или не новый, т.к. объект уже записан и нельзя проанализировать новые и старые значения, т.к. уже записаны новые значения, а старые затерты
4. Алекс Кон (alex-l19041) 9 21.12.16 11:07 Сейчас в теме
(1)
ЕРЕДАТЬ ЗНАЧЕНИЯ ЭТИХ ПЕРЕМЕННЫХ
- как вариант, можно передать через параметры сеанса, или можно через константы...
5. Владимир Полевик (pvvpvv) 10 21.12.16 11:07 Сейчас в теме
(3)
В подписке ПередЗаписью еще нет ссылки на новый объект


Но сам объект у вас есть.
6. Oleg Space (spacecraft) 21.12.16 11:08 Сейчас в теме
(1) в первой подписке:
Источник.ДополнительныеСвойства.Вставить("п1", Истина);

во второй подписке анализировать наличие:
п1 = Неопределено;
Если Источник.ДополнительныеСвойства.Свойство("п1", п1) Тогда
    // работаем с п1.
КонецЕсли;
Ганс; le0nid; ipoloskov; +3 Ответить 1
7. Xer shi (Xershi) 274 21.12.16 11:09 Сейчас в теме
(3) не совсем верно!

Для не записанного объекта можно получить ссылку, думаю гугл вам быстро поможет с кодом.
Ну а имея ссылку, думаю проблем у вас дальше не будет, чем ерунду кодить))
8. Oleg Space (spacecraft) 21.12.16 11:15 Сейчас в теме
(7) а потом кто-то добавит еще одну подписку ПередЗаписью, где будет проверяться нужность вообще записи элемента справочника. И реализуют Отказ.
Подписка проверки может запуститься позже. И в итоге имеем движение по регистру с убитой ссылкой.
Главное же потом долго будут искать, почему там ссылки битые.

Хотя нет. Этот случай не отработает. транзакция откатит.
Но делать движения в ПередЗаписью считаю не верным.
9. Игорь Полосков (ipoloskov) 50 21.12.16 11:22 Сейчас в теме
(8)
И реализуют Отказ

по Отказу откатится вся транзакция, в том числе и создание записей регистра.
или ПередЗаписью это еще не транзакция...
10. Oleg Space (spacecraft) 21.12.16 11:27 Сейчас в теме
(9) все верно. Откатится.
Вне транзакции это ПередЗаписью в модуле формы.
В модуле Объекта уже в транзакции, но до записи объекта.
11. Artem Shamsutdinov (smartem) 21.12.16 11:49 Сейчас в теме
(3)
а во второй подписке ПриЗаписи, невозможно проанализировать новый или не новый, т.к. объект уже записан и нельзя


В модуле:

Источник.ЭтоНовый() - В зависимости от результата можно проанализировать Новый или не новый и решить вопрос в одном событии (ПриЗаписи)
12. Марина Ч. (MarinaChist) 21.12.16 12:07 Сейчас в теме
(11) В подписки на событии ПриЗаписи Источник.ЭтоНовый() даже для нового элемента уже Ложь
13. Artem Shamsutdinov (smartem) 21.12.16 12:11 Сейчас в теме
(12)Пардон.... сам ошибся... не туда посмотрел :(
14. Марина Ч. (MarinaChist) 21.12.16 13:10 Сейчас в теме
(6) Огромное спасибо!!! Ваше предложение - это решение моей проблемы! Единственное во второй подписке я явно сравниваю
Если Источник.ДополнительныеСвойства.НовыйДок = Истина тогда
      // 
КонецЕсли;

Если Источник.ДополнительныеСвойства.ПризнакИзмененияДанных = Истина тогда
      // 
КонецЕсли;
...Показать Скрыть
15. Andrey Erastov (tailer2) 21.12.16 13:23 Сейчас в теме
надо же
иногда достаточно просто прочитать справку
но миссия невыполнима, пока есть и-старт
Оставьте свое сообщение