Как получить текущий документ?

1. squall84 03.11.14 10:44 Сейчас в теме
Мне нужно написать слежение за событием запись документа, чтобы затем его обрабатывать по моим условиям.
Как получить ссылку на этот (записываемый) документ?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1555 03.11.14 10:47 Сейчас в теме
(1) squall84, если док записан, то
ЭтотОбъект.Ссылка
Иначе
ЭтотОбъект.ПолучитьСсылкуНового();
fedor_p; tsiiinf; +2 Ответить
4. Agapov_Stas 1 03.11.14 10:48 Сейчас в теме
(1) squall84, через подписку на событие "ИСТОЧНИК" - это и есть объект, который записывается (Из него берете ссылку)
3. spezc 792 03.11.14 10:48 Сейчас в теме
подписка на событие ПриЗаписи. Параметр обработчика Источник - объект, Источник.Ссылка - ссылка на объект
5. squall84 05.11.14 10:57 Сейчас в теме
ЭтотОбъект не работает. Пишет неопознаный оператор.

Через подписку на событие - не совсем понятно, как вызвать источник из нужной мне подписки?
6. Xershi 1555 05.11.14 11:04 Сейчас в теме
(5) squall84, так, так код для модуля объекта. А вы где пишете?
8. squall84 06.11.14 09:59 Сейчас в теме
Суть в том, что мне нужно по условию отбирать создаваемые заказы. Если заказ попадает по выбранное условие, то мне нужно этот документ проверить, опять же, по нужным мне условиям и дальше либо провести и создать реализацию, либо оставить непроведенным.

(6) Xershi, В общем модуле пишу, в котором прописываю процедуру.

(7) Agapov_Stas, Это я видел. Я не могу понять как к нему обратиться. К примеру ПодпискаНаСобытия.Событие.Источник не опознается.
7. Agapov_Stas 1 05.11.14 12:57 Сейчас в теме
(5) squall84, в подписке на событие есть параметр "ИСТОЧНИК" к нему и обращайтесь
Kolesonik; +1 Ответить
9. AlekseySipaev 06.11.14 10:34 Сейчас в теме
Почитайте, для начала, что такое подписка на событие.

А вообще, создаем подписку с нужным источником (ДокументОбъект.<ВидДокумента>) и событием. Задаем для него обработчик (процедуру) и вперед анализировать входящий параметр процедуры "Источник". Если он соответствует нужным требованиям - выполнять свои какие-то процедуры, если нет - отказ, возврат и то, что душе угодно.
10. squall84 06.11.14 10:51 Сейчас в теме
(9) cassper, Да это я понимаю.
Я создал общий модуль с галками сервер и обычное приложение. Вписал в него процедуру. Создал подписку на событие. Выбрал наблюдать за событием при записи для документа Заказ покупателя.

Я не могу понять именно : "анализировать входящий параметр процедуры "Источник"".
Какой строчкой к нему достучаться? Дальше я смогу с ним работать, мне просто не понятно, как именно его вызвать.
11. AlekseySipaev 06.11.14 12:23 Сейчас в теме
(10) squall84, Давайте по порядку.
У нас есть обработчик события, например, это Процедура ЯОбработчикСобытияПриЗаписи(Источник, Отказ) Экспорт
Так вот "Источник" внутри этой самой процедуры-обработчика - это и есть Ваш ДокументОбъект.ЗаказПокупателя. В подписку мы попадаем в том случае, когда отрабатывает событие ПриЗаписи объекта документа.
squall84; +1 Ответить
12. squall84 06.11.14 13:30 Сейчас в теме
(11) cassper, Спасибо. Теперь стало понятно. Всё получилось.
А не подскажете последний вопрос?
Не могу придумать, как это написать.
Чтобы условие при записи срабатывало, если документ записывает первый раз. Т.е. мое условие срабатывает постоянно, не важно, создал и записал я документ, или просто перезаписал существующий.
А мне нужно чтобы оно сработало, только когда я записываю документ при создании.
13. Xershi 1555 06.11.14 13:43 Сейчас в теме
(12) squall84,
Источник.ЭтоНовый();
как-то так.
squall84; +1 Ответить
14. Sevens 6 06.11.14 13:44 Сейчас в теме
(12)
Если Источник.ЭтоНовый() Тогда
     КонецЕсли;
squall84; +1 Ответить
15. squall84 07.11.14 09:48 Сейчас в теме
16. squall84 07.11.14 10:11 Сейчас в теме
Опять "беда"
Попробовал Вписать в код Если Источник.ЭтоНовый() Тогда

Ничего не происходит.Смотрю по отладчику - он проскакивает это условие и при создании документа и просто при записи документа.
17. AlekseySipaev 07.11.14 10:24 Сейчас в теме
мне кажется при записи нового объекта уже не будет. Скорее всего нужно делать подписку Перед записью
18. squall84 07.11.14 11:01 Сейчас в теме
(17) cassper, Спасибо, сейчас попробую
19. squall84 07.11.14 11:47 Сейчас в теме
(17) cassper, Действительно. Работает. Но вот теперь интересная штука.
В событии перед записью я могу определить, что это новый документ, но ведь дальше я не могу с ним работать пока он не запишется.
Затем мне нужно обрабатывать событие при записи, чтобы получать значения из документа.
Я пробовал проверять условие, и если это новый документ, то Записывать источник. Но так 1Ске не нравится.
20. AlekseySipaev 07.11.14 12:23 Сейчас в теме
(19) squall84
Можно в подписке ПередЗаписью добавить для объекта ДополнительныеСвойства и проверять их начение в подписке ПриЗаписи.
Например:
Источник.ДополнительныеСвойства.Вставить("ЭтоНовый", Источник.ЭтоНовый);

Затем ПриЗаписи:
ЭтоНовый = Неопределено;
Источник.ДополнительныеСвойства.Свойство("ЭтоНовый", ЭтоНовый);
...
Если НЕ Источник = Неопределено Тогда
...
Если ЭтоНовый Тогда
...
Иначе
...
КонецЕсоли
КонецЕсли;
Показать
21. squall84 07.11.14 13:04 Сейчас в теме
(20) cassper, Спасибо. Была такая мысль, но не знал, как правильно реализовать.
22. squall84 07.11.14 13:32 Сейчас в теме
(20) cassper, опять ошибку выдает. Пишу код, который ниже на строчку "Источник.ДополнительныеСвойства.Вставить("ЭтоНовый", Источник.ЭтоНовый);" ругается. Ошибка тоже ниже.

Процедура ЗаказПередЗаписи(Источник, Отказ) Экспорт
		Если Источник.ЭтоНовый()
		    Тогда
			Сообщить ("Это Новый Документ" );
			Источник.ДополнительныеСвойства.Вставить("ЭтоНовый", Источник.ЭтоНовый);
		    Иначе Сообщить ("Документ не редактируется")
		КонецЕсли;
      КонецПроцедуры
Показать


Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.Заказ.Модуль(32)}: Поле объекта не обнаружено (ЭтоНовый)
23. AlekseySipaev 07.11.14 13:51 Сейчас в теме
(22) squall84,
Ищите разницу:
Если Источник.ЭтоНовый()

и
Источник.ЭтоНовый

А я бы сделал так:
Процедура ЗаказПередЗаписи(Источник, Отказ) Экспорт
	Если Источник.ЭтоНовый() Тогда
		Сообщить ("Это Новый Документ");
	Иначе
		Сообщить ("Документ не редактируется")
	КонецЕсли;
	Источник.ДополнительныеСвойства.Вставить("ЭтоНовый", Источник.ЭтоНовый());
КонецПроцедуры

Чтобы в обработчике события "ПриЗаписи" было удобно анализировать свойство "ЭтоНовый". В Вашем случае - если не новый документ, то и в доп. свойства ничего записано не будет. Так как у меня сделано - исключит ошибку, например, прямого обращения вида "Источник.ДополнительныеСвойства.ЭтоНовый"
24. kets-84@bk.ru 28.09.23 15:54 Сейчас в теме
&НаКлиенте

Док = Объект.Ссылка;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот