Имя: Пароль:
1C
 
Обмен данными. Служба регистрации изменений
0 IoannVic
 
02.03.16
16:50
Всем привет. Подскажите, пожалуйста, как мне поймать момент когда объект включенный в план обмена записывается в таблицу регистрации изменений. Пробовал в модуле объекта в процедуре ПриЗаписи(), но там документ еще отсутствует в таблице регистрации изменений. Гугл ничего подсказать не может
1 Fragster
 
гуру
02.03.16
16:52
тебе зачем?
2 IoannVic
 
02.03.16
16:53
(1) Мне нужно производить обмен через Web-сервис при изменение объекта. Фиксация изменений осуществляется через ПланОбмена
3 Fragster
 
гуру
02.03.16
16:57
прям онлайн-онлайн?
4 Fragster
 
гуру
02.03.16
16:59
можешь прямо при записи запускать фоновое задание обмена, все будет нормально.
5 Fragster
 
гуру
02.03.16
16:59
+ само по себе пусть работает раз в 10 минут
6 Fragster
 
гуру
02.03.16
17:00
с паузой в 10 минут
7 IoannVic
 
02.03.16
17:00
(3) Это к сути задачи не имеет никакого отношения. Если интересен этот вопрос, то к поставщику данной задачи этот вопрос. Мне такой расклад тоже не айс, но я не составляю ТЗ. Меня интересует момент фиксации измений в таблицу изменений. Ни на ИТС, ни в справочнике разработчика не нашел (может быть плохо искал). Интересует событие при авторегистрации
8 IoannVic
 
02.03.16
17:01
(6) Я то могу, но заказчика такой вариант не устроит. Поэтому спрашиваю, когда и где происходит регистрация
9 Fragster
 
гуру
02.03.16
17:01
(7) либо в транзакции записи, либо руками через метод встроенного языка. самого события - нет.
10 Fragster
 
гуру
02.03.16
17:03
(8) устроит. если запускать фоновое прям из призаписи - то будет почти онлайн. настолько почти, что даже незаметно.
Ну, конечно, если нужно организовать что-то типа распределенной транзакции - можешь прямо в событии ПриЗаписи отправлять данные и очищать получателей в ОбменДанными, но там возможны варианты с недоступносью ресурса, на который выгружаешь и т.п.
11 IoannVic
 
02.03.16
17:04
(9) Транзакция записи она длинная, поэтому уточняю момент, мне естественно необходимо это делать в модуле объекта (если речь о транзакции записи). Насколько помню там ПриЗаписи последнее событие. А не подскажете о каком методе речь?
12 Fragster
 
гуру
02.03.16
17:05
самое эпическое, что я делал - это при проведении документа с движением по складу - отправка документа в узел РИБ того склада через вебсервис, его проведение с контролем остатков именно в той базе и при успехе - передача его обратно уже с движениями.
13 Fragster
 
гуру
02.03.16
17:05
(11) ПланыОбменаМенеджер.ЗарегистрироватьИзменения (ExchangePlansManager.RecordChanges)
ПланыОбменаМенеджер (ExchangePlansManager)
ЗарегистрироватьИзменения (RecordChanges)
Синтаксис:

ЗарегистрироватьИзменения(<Узлы>, <Данные>)
Параметры:

<Узлы> (обязательный)

Тип: ПланОбменаСсылка.<Имя плана обмена>; Массив.
Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для пересылки в какие узлы регистрируются изменения.
<Данные> (необязательный)

Тип: Метаданные, Неопределено; УдалениеОбъекта; Число; <Данные>.
Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено.
Если указан объект метаданных, то регистрация изменений будет произведена для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре.
Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то регистрация изменений будет произведена только для указанных данных. Объект метаданных, соответствующий данным, должен входить в состав всех планов обмена всех узлов, указанных в первом параметре.
Если указан УдалениеОбъекта, то регистрация изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта.
Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае будет выполнена регистрация изменений для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра.
Для набора записей регистра сведений, в случае, если регистратор не определен, в качестве ключа используется совокупность измерений, входящих в основной отбор. А если регистр сведений является периодическим и включен основной отбор по периоду, то в ключ входит еще и период.
Значение по умолчанию: Неопределено.
Описание:

Регистрирует изменения одного или группы элементов данных для последующей выборки и передачи изменений в адрес одного или нескольких узлов планов обмена.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:

// Пример 1
Валюты = Метаданные.Справочники.Валюты;
Узел = ПланыОбмена.ПО1.НайтиПоКоду("Офис");
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Валюты);

// Пример 2
// Для документов РасходнаяНакладная регистрация изменений для узла
// производится только при совпадении складов узла и накладной

// Выбираем документы РасходнаяНакладная по складу узла
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ.РасходнаяНакладная
                       |ГДЕ Склад = &Склад");
Запрос.УстановитьПараметр("Склад", Узел.Склад);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    // регистрируем изменение документа для узла
    ПланыОбмена.ЗарегистрироватьИзменения(Узел, Выборка.Ссылка);  
КонецЦикла;


--------------------------------------------------------------------------------

     Методическая информация
14 Fragster
 
гуру
02.03.16
17:06
только как этопоможет?
15 Fragster
 
гуру
02.03.16
17:06
этого метода может и не быть, например если установлена авторегистрация, или получатели заполняются через .ОбменДанными.Получатели в транзакции записи
16 Fragster
 
гуру
02.03.16
17:07
СправочникОбъект.<Имя справочника>.ОбменДанными (CatalogObject.<Имя справочника>.DataExchange)
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
ОбменДанными (DataExchange)
Использование:

Только чтение.
Описание:

Тип: ПараметрыОбменаДанными.
Используется для управления обменом данных.
С помощью данного свойства настраивается состав узлов-получателей, для которых будут регистрироваться изменения данных, узел-отправитель, из которого получена записываемая информация, а также устанавливается режим Загрузка, указывающий, что выполняется перенос информации.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
--------------------------------------------------------------------------------

     Методическая информация
17 IoannVic
 
02.03.16
17:08
(12) Да в том, то и дело что такой вариант не прокатит. беда с этой авторегистрацией, наверное, буду вручную регистрировать и сразу после выгружать
18 IoannVic
 
02.03.16
17:09
(14) Ну собственно к тому же и пришел
19 Fragster
 
гуру
02.03.16
17:25
(17) не надо так
20 aleks_default
 
02.03.16
17:40
Зачем вообще регистрировать если выгружать будешь при записи? Регистрация как раз и нужна для того чтобы выгрузить пакет измененных объектов за период времени, а не один объект.
21 Fragster
 
гуру
02.03.16
17:59
(20) если не надо распределенной транзакции, то правильнее будет именно зарегистрировать (в т.ч. автоматом), запустить фоновое, которое дождется конца транзакции (например по ожиданию на блокировке) и выгрузит изменения. тогда время и результат транзакции не будут зависеть от времени выгрузки и доступности того места, куда это все выгружается.
22 IoannVic
 
02.03.16
18:26
(20) Требование описанное в ТЗ. Данный вариант представлен архитектором проекта. (21) Фоновое задание забраковали, еще вчера.
23 Ник080808
 
02.03.16
18:46
(22) архитектор проекта  1с хоть раз в жизни видел не на картинке?
24 IoannVic
 
02.03.16
18:50
(23) ??? Ну на последних двух проектах по ERP 2.0 видел двух. А еще штат консультантов, разработчиков, тестировщиков, ну и руководитель проекта и технический директор проекта. Это нормально для крупных проектов
25 Ник080808
 
02.03.16
19:03
(24) я о конкретно вашем, который "Фоновое задание забраковали, еще вчера."
26 Fragster
 
гуру
02.03.16
19:29
пойти, что ли, в архитекторы...
27 zak555
 
03.03.16
05:47
(24) сколько лоботрясов