"Номер отправленного" перед обменом
Доброго времени суток!
Во вкладке "регистрация изменений для объекта" у объекта есть колонка "номер отправленного" (см. фото), так вот вопрос можно ли в ПРО в обработчиках событий "перед обработкой" (см. фото) отловить наличие или отсутствие номера и соответственно разрешить или запретить обмен этого объекта? (Возможно это делается по другому)
Для чего это делается: Если номер отправленного есть, значит объект ранее выгружался, значит его заново выгружать не нужно, если номера нет, значит объект подлежит выгрузке.
На последнем скриншоте я написал небольшой код, как суть написанного.
Всем заранее благодарен за советы!
P.S. Только знакомлюсь с обменами и всем прочим.
Во вкладке "регистрация изменений для объекта" у объекта есть колонка "номер отправленного" (см. фото), так вот вопрос можно ли в ПРО в обработчиках событий "перед обработкой" (см. фото) отловить наличие или отсутствие номера и соответственно разрешить или запретить обмен этого объекта? (Возможно это делается по другому)
Для чего это делается: Если номер отправленного есть, значит объект ранее выгружался, значит его заново выгружать не нужно, если номера нет, значит объект подлежит выгрузке.
На последнем скриншоте я написал небольшой код, как суть написанного.
Всем заранее благодарен за советы!
P.S. Только знакомлюсь с обменами и всем прочим.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
А почему никто не предлагает посмотреть в регистры сведений:
"Соответствие объектов для обмена"
"Соответствия объектов информационных баз"
"Публичные идентификаторы как то там"
В зависимости от версии БСП, там используется какой то один из этих регистров, но в общем смысл в том, что если объект хоть раз был выгружен в другую базу, то в регистре создается запись соответствия Объекта в текущей базе и идентификатора в другой базе.
Значит смотрим версию БСП, смотрим какой регистр используется и в запросе ищем запись в нужном регистре, если запрос пустой - регистрируем к обмену объект.
В первом приближении к задаче как-то так.
"Соответствие объектов для обмена"
"Соответствия объектов информационных баз"
"Публичные идентификаторы как то там"
В зависимости от версии БСП, там используется какой то один из этих регистров, но в общем смысл в том, что если объект хоть раз был выгружен в другую базу, то в регистре создается запись соответствия Объекта в текущей базе и идентификатора в другой базе.
Значит смотрим версию БСП, смотрим какой регистр используется и в запросе ищем запись в нужном регистре, если запрос пустой - регистрируем к обмену объект.
В первом приближении к задаче как-то так.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
в перед обработкой в правилах регистрации пишешь:
Узел обмена пихаешь в параметры. Если план обмена один, например, узел обмена можешь выкинуть из текста запроса.
в перед обработкой в правилах регистрации пишешь:
Запрос = новый Запрос("ВЫБРАТЬ
ТвойДокументИзменения.НомерСообщения КАК НомерСообщения
ИЗ
Документы.ТвойДокумент.Изменения КАК ТвойДокументИзменения
ГДЕ
ТвойДокументИзменения.Узел = &Узел
И ТвойДокументИзменения.НомерСообщения >0
И ТвойДокументИзменения.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Узел",Параметры.Узел);
Запрос.УстановитьПараметр("ССылка",Объект.ССылка);
Отказ = НЕ Запрос.Выполнить().Пустой();
ПоказатьУзел обмена пихаешь в параметры. Если план обмена один, например, узел обмена можешь выкинуть из текста запроса.
(13) Не работает, при перепроведении пишет "невозможно провести документ"
Запрос = новый Запрос("ВЫБРАТЬ
Договор.НомерСообщения КАК НомерСообщения
ИЗ
Документы.Договор.Изменения КАК Договор
ГДЕ
Договор.Узел = &Узел
И Договор.НомерСообщения >0
И Договор.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Узел",Параметры.Узел);
Запрос.УстановитьПараметр("ССылка",Объект.ССылка);
Отказ = НЕ Запрос.Выполнить().Пустой();
Показать
(16) с какой ошибкой то ?
И этот запрос, надеюсь, в правилах регистрации прописал ?
И параметры задал для узла ?
И для начала, на так переделать, хотя бы (без учета узла):
ЗЫ: ну и нельзя же копипастить код бездумно.
И этот запрос, надеюсь, в правилах регистрации прописал ?
И параметры задал для узла ?
И для начала, на так переделать, хотя бы (без учета узла):
Если Не Выгрузка Тогда //только при новой регистрации делаем отмену
Запрос = новый Запрос("ВЫБРАТЬ
| Договор.НомерСообщения КАК НомерСообщения
|ИЗ
| Документы.Договор.Изменения КАК Договор
| ГДЕ
| // Договор.Узел = &Узел
| Договор.НомерСообщения >0
| И Договор.Ссылка = &Ссылка");
//Запрос.УстановитьПараметр("Узел",Параметры.Узел);
Запрос.УстановитьПараметр("ССылка",Объект.ССылка);
Отказ = НЕ Запрос.Выполнить().Пустой();
КонецЕсли;
ПоказатьЗЫ: ну и нельзя же копипастить код бездумно.
(20)
Если Не Выгрузка Тогда //только при новой регистрации делаем отмену
Запрос = новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Договор.НомерСообщения КАК НомерСообщения
|ИЗ
| Документы.Договор.Изменения КАК Договор
| ГДЕ
| // Договор.Узел = &Узел
| Договор.НомерСообщения >0
| И Договор.Ссылка = &Ссылка";
//Запрос.УстановитьПараметр("Узел",Параметры.Узел);
Запрос.УстановитьПараметр("Ссылка",Объект.Ссылка);
Отказ = НЕ Запрос.Выполнить().Пустой();
КонецЕсли;
Показать
(22) так, хотя бы
Если Не Выгрузка Тогда //только при новой регистрации делаем отмену
Запрос = новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорИзменения.НомерСообщения КАК НомерСообщения
|ИЗ
| Документы.Договор.Изменения КАК ДоговорИзменения
| ГДЕ
| // Договор.Узел = &Узел
| ДоговорИзменения.НомерСообщения >0
| И ДоговорИзменения.Ссылка = &Ссылка";
//Запрос.УстановитьПараметр("Узел",Параметры.Узел);
Запрос.УстановитьПараметр("Ссылка",Объект.Ссылка);
Отказ = НЕ Запрос.Выполнить().Пустой();
КонецЕсли;
Показать
(26) он не будет регистрировать новые изменения. если был хоть один отправленный пакет.
В самом плане обмена установи номер отправленного сообщения отличный. от 1 ..и проверяй.
ЗЫ: можешь еще убрать условие на Выгрузка в коде, тогда вообще не будет регить, ни при выгрузке, ни при сохранении
В самом плане обмена установи номер отправленного сообщения отличный. от 1 ..и проверяй.
ЗЫ: можешь еще убрать условие на Выгрузка в коде, тогда вообще не будет регить, ни при выгрузке, ни при сохранении
(27)
Это что за прикол такой? ну установлю 2, потом верну в 0 и чего? Какой смысл завязываться на номер отправленного сообщения для определения факта отправки какого-то одного документа?
В самом плане обмена установи номер отправленного сообщения отличный. от 1 ..и проверяй.
Это что за прикол такой? ну установлю 2, потом верну в 0 и чего? Какой смысл завязываться на номер отправленного сообщения для определения факта отправки какого-то одного документа?
(28) факт отправки чего-либо можно проверив только наличием номера сообщения, иначе никак.
Поменяв номер сообщения в плане обмена, нужно только для проверки, что данный объект никогда больше регится не будет и соответственно в изменениях никогда не будет объекта с новым номером сообщения при выгрузке.
Только и всего лишь
Поменяв номер сообщения в плане обмена, нужно только для проверки, что данный объект никогда больше регится не будет и соответственно в изменениях никогда не будет объекта с новым номером сообщения при выгрузке.
Только и всего лишь
(29)я надеюсь, вы понимаете, что нужный объект(передачу и регистрацию к передачи которого мы "мониторим") может быть отправлен с любым номером сообщения?
какой смысл проверки номера отправленного сообщения вообще для определения факта отправки какого-либо объекта?
какой смысл проверки номера отправленного сообщения вообще для определения факта отправки какого-либо объекта?
(33)вы вот сейчас серьезно? если механизм обмена не подразумевает использование номеров сообщений, то это не значит, то этот номер нельзя указать вручную, например.
Если номера сообщений не используются, то там будет 0 всегда. Предлагаете однажды установить значение 1 вручную и забыть?
Если номера сообщений не используются, то там будет 0 всегда. Предлагаете однажды установить значение 1 вручную и забыть?
(35)В данный момент вы решаете задачу так, как ее решение видит автор, а не как она решается.
Из его сообщения вообще не понятно, используются номера сообщений или нет.
Если номера таки используются, как понять, для какого номера сообщения нужно выполнить таки регистрацию, а для какого выполнять не нужно?
Простой пример:
Когда объект появился, был номер сообщения скажем 100, нужно выполнять регистрацию объекта?
Допустим, объект передали в сообщении 140, объект опять поменяли при номере сообщения 200, нужно выполнять регистрацию объекта?
Из его сообщения вообще не понятно, используются номера сообщений или нет.
Если номера таки используются, как понять, для какого номера сообщения нужно выполнить таки регистрацию, а для какого выполнять не нужно?
Простой пример:
Когда объект появился, был номер сообщения скажем 100, нужно выполнять регистрацию объекта?
Допустим, объект передали в сообщении 140, объект опять поменяли при номере сообщения 200, нужно выполнять регистрацию объекта?
(36)это не решает задачи НЕ ПЕРЕДАВАТЬ, это решает задачу - НЕ ЗАГРУЖАТЬ.
Скажем так: изменили 1М номенклатуры, все это дело содержит 1 новый элемент, согласно вашей логике, мы весь 1М передадим, а принимающая сторона сама разберется, какой 1 элемент записать.
Скажем так: изменили 1М номенклатуры, все это дело содержит 1 новый элемент, согласно вашей логике, мы весь 1М передадим, а принимающая сторона сама разберется, какой 1 элемент записать.
(37)
В момент регистрации номер сообщения 0. Номер сообщения ставится в момент отправки сообщения. При первой отправки запрос будет пустой, будет не нулевой номер сообщения в регистрации изменений.
Дальнейшей регистрации объекта не будет, ибо присвоен номер пакета отправки и результат запроса будет не пустой. Соответственно, в новых пакетах никогда не будет этого объекта. Так понятнее ?
В момент регистрации номер сообщения 0. Номер сообщения ставится в момент отправки сообщения. При первой отправки запрос будет пустой, будет не нулевой номер сообщения в регистрации изменений.
Дальнейшей регистрации объекта не будет, ибо присвоен номер пакета отправки и результат запроса будет не пустой. Соответственно, в новых пакетах никогда не будет этого объекта. Так понятнее ?
(42) в коде из (13) зарегить этот же объект по другому узлу, который ни с кем не обменивается в момент выгрузки. Усё.
Если прилетит ответ с узла, затрётся только его регистрация, код из (13) будет проверять регистрацию по всем узлам, которая останется.
если нужно будет ручками отправить объект, то снимаем регистрацию с "фиктовного" узла
Если прилетит ответ с узла, затрётся только его регистрация, код из (13) будет проверять регистрацию по всем узлам, которая останется.
если нужно будет ручками отправить объект, то снимаем регистрацию с "фиктовного" узла
А почему никто не предлагает посмотреть в регистры сведений:
"Соответствие объектов для обмена"
"Соответствия объектов информационных баз"
"Публичные идентификаторы как то там"
В зависимости от версии БСП, там используется какой то один из этих регистров, но в общем смысл в том, что если объект хоть раз был выгружен в другую базу, то в регистре создается запись соответствия Объекта в текущей базе и идентификатора в другой базе.
Значит смотрим версию БСП, смотрим какой регистр используется и в запросе ищем запись в нужном регистре, если запрос пустой - регистрируем к обмену объект.
В первом приближении к задаче как-то так.
"Соответствие объектов для обмена"
"Соответствия объектов информационных баз"
"Публичные идентификаторы как то там"
В зависимости от версии БСП, там используется какой то один из этих регистров, но в общем смысл в том, что если объект хоть раз был выгружен в другую базу, то в регистре создается запись соответствия Объекта в текущей базе и идентификатора в другой базе.
Значит смотрим версию БСП, смотрим какой регистр используется и в запросе ищем запись в нужном регистре, если запрос пустой - регистрируем к обмену объект.
В первом приближении к задаче как-то так.
Ну как же бесполезны, по факту наличия записи в этих регистрах можно судить, выгружался данный объект до текущего момента, или это первая выгрузка в жизни.
А вопрос, насколько я понял, как раз и заключался, в том, что
"Для чего это делается: Если номер отправленного есть, значит объект ранее выгружался, значит его заново выгружать не нужно, если номера нет, значит объект подлежит выгрузке."
т.е. выгружать надо только раз в жизни.
А вопрос, насколько я понял, как раз и заключался, в том, что
"Для чего это делается: Если номер отправленного есть, значит объект ранее выгружался, значит его заново выгружать не нужно, если номера нет, значит объект подлежит выгрузке."
т.е. выгружать надо только раз в жизни.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот