|
Помогите с обменом | ☑ | ||
---|---|---|---|---|
0
Alex174
10.01.23
✎
13:42
|
Всем привет! Подскажите, видимо я что-то не понимаю. У меня есть УПП, из нее нужно вытащить актуальный список сотрудников (ФИО, табельный номер и тд, чисто текстовые поля) и загрузить эту таблицу в конфигурацию УИТ в мною сделанный справочник. С течением времени людей в упп будут принимать, увольнять и т.д. Т.е. таблица с данными для переноса будет изменяться со временем. В конвертации данных я сделал правила обмена где запросом из регистра и справочника вытаскивается нужная мне информация. И далее с помощью обработок ручками переносится из УПП в УИТ.
Нужно автоматизировать этот процесс. Чтоб раз в сутки выгружалась актуальная информация. Нашел вариант вот такой https://v8book.ru/public/289193/, но для этого нужно создать план обмена. А в плане обмена нужно указать состав. Но состава нет. Обмен идет произвольными данными. Как тут быть? |
|||
1
mikecool
10.01.23
✎
13:45
|
регламентное задание, которое будет выполнять твой обмен
|
|||
2
Alex174
10.01.23
✎
13:54
|
(1) Да, тоже про это думал, но минус регламентного задания в том, что таскаться будут все строки разом. Сейчас там 5000 строк, записываются 2 минуты. Понятно что не много, но как то можно сделать так, что б таскались только изменения? В плане обмена есть авторегистрация, но она следит за каким-то одним объектом (регистр или справочник), и тогда тащит изменения, но если человека уволили, то его не будет в выборке моего запроса. И соответственно в базу УИТ его можно тащить только с пометкой удаления...
|
|||
3
mikecool
10.01.23
✎
14:12
|
(2) определи критерии и либо регистрируй сам в плане обмена, либо заведи свою регистрацию на регистре сведений
|
|||
4
Tarlich
10.01.23
✎
14:13
|
я бы не делал план обмена -)) обработка в которой в макете правила и передача параметра в обработку "Универсальный обмен данными"...
|
|||
5
lolek
10.01.23
✎
14:14
|
(0) сотрудник - состав плана обмена.
по вашим словам |
|||
6
Alex174
10.01.23
✎
14:24
|
(5) Из УПП данные запросом собираются из 2 источников. В УИТ справочник Пользователи... Обмен односторонний.
(3) Регистрировать что? Какой объект? Регистр? Но если в регистре уволили сотрудника, он не будет находится в выдаче запроса. (4) Ну пока только такой вариант и вижу.. Но минус - таскаться будут все 5000 записей.. А это только часть беды, потом такой же обмен надо сделать из еще двух баз. Т.е. в общем будет таскаться тысяч 10 записей... |
|||
7
Serg_1960
10.01.23
✎
14:30
|
(0) "А в плане обмена нужно указать состав. Но состава нет..." - ошибаетесь, он есть и указан в Вашей конвертации данных.
|
|||
8
Alex174
10.01.23
✎
14:37
|
(7) в конвертации данных в составе ПКО, поле источник - пустое. Есть только поле приемник. А я плане обмена я так понимаю нужно указывать состав в источнике свой (в упп это запрос(вот его как указать??)) и в приемнике свой (в УИТе справочник Пользователи).
|
|||
9
crasler
10.01.23
✎
14:41
|
(0) Добавь регистр с датой изменения объектов и записывай туда дату при записи объектов: прием, перемещение, увольнение
а в константе можно хранить дату последнего обмена данных |
|||
10
Serg_1960
10.01.23
✎
14:50
|
(8) "в упп это запрос" :( Имхо, можно чисто формально указать источником объект "Сотрудники". А запрос переписан на отбор списка сотрудников, у которых есть регистрация изменений.
|
|||
11
Alex174
10.01.23
✎
14:53
|
(9) это чет слишком замудренное..
(10) но тогда план обмена будет следить за справочником, а в справочнике при увольнении сотрудников ничего не изменяется... "А запрос переписан на отбор списка сотрудников, у которых есть регистрация изменений." - а вот это если честно совсем не понял... Как переписать запрос? Что такое регистрация изменений? :((( |
|||
12
Serg_1960
10.01.23
✎
15:05
|
(11) "а в справочнике при увольнении сотрудников ничего не изменяется" - это не играет никакой роли. Если в составе плана обмена указать справочник "Сотрудники", то подпиской можно будет регистрировать якобы изменения записей этого справочника по Вашим собственным правилам (например, по кадровым документам). Таким образом отпадает необходимость городить огород, ради того, чтобы где-то хранить нужные вам изменения.
"Что такое регистрация изменений" - это внутренняя таблица объектов, упомянутых в составах планов обмена. В запросе к ней можно обратиться, например: ВЫБРАТЬ Ссылка КАК Сотрудник ИЗ Справочник.Сотрудники.Изменения ГДЕ Узел = &УзелПланаОбмена |
|||
13
KJlag
10.01.23
✎
15:11
|
(0) можешь через обмен, а можешь просто автоматизировать свое текущее:
создаешь обработку в УПП, которая обрабатывает твой ранее сделанный запрос, запихивает его результаты в xml, или json в txt, табл док и в excel (как тебе удобнее) в папку, а дальше обработкой в УИТ считываешь файл в базе приемнике и данные уже обрабатываются кодом из твоих ранее сделанных обработок. и на регламентное это. |
|||
14
Остап Ибрагимович
10.01.23
✎
18:32
|
Если не хочешь планы обмена и не хочешь таскать все а только то что поменялось, то вот "в лоб":
1) Независимый непериодический РС ОбъектыДанныхДляОбмена, единственное измерение типа "Любая ссылка". 2) Подписка на событие записи того что надо менять - добавление записи в РС (см.п.1) со ссылкой на изм.объект в единственном измерении. 3) рег.задание, которое: собирает в толпу все считанное из измерений всех записей РС (см.п.1), скармливает универсальному обмену - и этот самый РС тупо чистит. и запускай это рег.задание как хош. не спасет отца русской демократии? |
|||
15
ejikbeznojek
10.01.23
✎
19:40
|
А почему обычный план обмена работать не будет, в котором регистрироваться будет оба объекта "Справочник.Сотрудники" и РС, где фиксируется увольнение?
А изменения получать как обычно - ПланыОбмена.ВыбратьИзменения(), насколько я помню даже удалённые записи РС сюда попадут как набор ключей. |
|||
16
Garykom
гуру
10.01.23
✎
19:50
|
(0) Опубликовать базу УПП на веб-сервере, включить ODATA или свой http сервис наваять и дергать его из УИТ
Никакие обмены нафик не нужны |
|||
17
ejikbeznojek
10.01.23
✎
19:53
|
(16) Ну это ты варианты транспорта же просто предлагаешь.
А он не может решить, как ему выбрать нужные записи, чтобы только изменения получить. |
|||
18
Garykom
гуру
10.01.23
✎
20:14
|
(17) Запросом же.
И нафик там изменения когда достаточно всех работающих получить |
|||
19
Garykom
гуру
10.01.23
✎
20:15
|
(18)+ Даже если у них там тысячи сотрудников не вижу проблемы
|
|||
20
Остап Ибрагимович
10.01.23
✎
22:17
|
(17): вообще-то он предлагает не варианты транспорта для обмена. а способы реализации обмена - это совсем другое.
(18): ну или так, да - вместо п.3 в (14) через одану получать список ид измененных объектов и по идам тут же вытаскивать их изменения |
|||
21
Alex174
11.01.23
✎
06:41
|
(18) Запросом у меня сделано через КД 2.1. И таскается 5000 каждый раз. Это не оптимально... А как сделать только измененных я не пойму никак((
|
|||
22
Alex174
11.01.23
✎
09:04
|
(14) А если сделать так:
1. РС в который будут писаться последнее состояние работника. 2. Подписки на документы которые будут находить в РС(1) строку с работником и вносить изменения по нему (прием, увольнение, изменение должности и т.д.) (1 и 2 это аналог среза последних в виртуальных таблицах, но только с даты внедрения) 3. Создаем план обмена, указываем РС(1) и включаем авторегистрацию. 4. Настраиваем автоматический обмен как написано здесь https://v8book.ru/public/289193/ Сработает? |
|||
23
Alex174
11.01.23
✎
09:07
|
А, ну и еще между 3 и 4 пунктом делаем в КД правила обмена, чтоб регистр сведений правильно конвертировался в справочник.
|
|||
24
Garykom
гуру
11.01.23
✎
09:27
|
(21) Когда через JSON и http нет никаких проблем с "таскается 5000 каждый раз"
Это не тормозной XML |
|||
25
Serg_1960
11.01.23
✎
09:28
|
Эээ... Ваш запрос, сделанный "через КД 2.1"... как бы это сказать... "Какая гадость эта ваша заливная рыба!".
Просто ради самоконтроля проверьте как Ваши алгоритмы обработают следующую ситуации: пользователь исправил ранее допущенную ошибку в написании фамилии физического лица. Вопрос закономерен так, как в (0) упоминается ФИО сотрудника. PS: Sorry, но у Вас мало базовых знаний :( Гуглите в УПП примеры как работать с планами обмена - их там много. Например, план обмена "ОбменУППУПП": в составе плана обмена есть справочник "СотрудникиОрганизаций". Обращаю внимание: авторегистрация изменений - запрещена! А это означает, что регистрация изменений выполняется алгоритмами конфигурации, - например, подписками на события ПередЗаписьюСправочникаДляОбменаУПП, ПередУдалениемСправочникаДляОбменаУПП и т.д... |
|||
26
Alex174
11.01.23
✎
10:06
|
(25) При изменении фио запись в рс тоже изменится. И при следующей выгрузке изменения уедут в другую базу. Проблема не в этом.. Проблема в том, что каждый раз будет таскаться 5000 записей. А хочется сделать по уму.
PS да, у меня мало базовых знаний про обмены и про планы обмена в частности. Если бы у меня были обширные знания, мы бы с Вами здесь не общались |
|||
27
OldCondom
11.01.23
✎
10:37
|
КД уже морально устарела для подавляющего большинства задач.
У меня был обмен ЗУП и УПП сотрудниками и начисленной зп. Там явно по более 5000 каждый раз. И этот "раз" стоял на регламенте каждые 10 минут. Более того, когда писал, не умел в json, так что даже как заметил в (24) тормозной XML нормально себя вел) |
|||
28
Alex174
11.01.23
✎
10:53
|
(27) т.е. каждый раз перезаписывать все 5000 записей это норм? (а в обработке Обмен XML есть галка "Обмен только измененными", может просто ее устанавливать и все?)
|
|||
29
OldCondom
11.01.23
✎
11:33
|
(28) из УПП тянуть все, в приемнике запросом посмотреть, что изменилось, что удалилось, что добавилось.
|
|||
30
Skylark
11.01.23
✎
11:36
|
Автору нужно понять, какие события в базе-источнике должны быть отражены в базе-приемнике. Затем на эти события поставить подписки и в подписках эти события регистрировать. Либо в плане обмена, либо в каком-нибудь собственном объекте (регистре сведений например). Для регистрации нужен ключ. Очевидно в данном случае это Сотрудник. Далее при выборке данных для выгрузки в базу-приемник добавить внутренне соединение с зарегистрированными изменениями. И тогда в выборку попадут только сотрудники и изменениями.
Ну и не забыть очистить регистрацию после успешного обмена, исключая объекты зарегистрированные за период между выборкой данных для обмена и завершением обмена. |
|||
31
Skylark
11.01.23
✎
11:40
|
Пример - изменилось ФИО. Набор записей регистра "ФИО физических лиц" при записи вызвал событие подписки, в котором по физлицу находим сотрудника и пишем его в план обмена.
|
|||
32
Skylark
11.01.23
✎
11:50
|
За время выгрузки большого количества сотрудников среди которых есть Петров, Петров может вполне успеть поменять фамилию, а по завершению обмена регистрация Петрова будет очищена. В результате смена фамилии Петровым в базу-приемник не приедет.
Поэтому удобнее использовать план обмена. Перед выборкой данных обязательно вызываем у плана обмена ВыбратьИзменения() чтобы получить номер сеанса. А перед удалением регистрации из плана обмена, проверяем, не сбросился ли номер сеанса у кого - именно это и будет означать, что за время обмена данные успели измениться и произошла новая регистрация в плане обмена. Регистрацию по таким данным очищать не надо. |
|||
33
OldCondom
11.01.23
✎
12:21
|
(30)(31)(32) а по факту Татьяна Петровна, зарплатник, просто жмякает кнопку, чтобы подгрузились актуальные данные, если глазами увидела, что какая-то дичь. Для простейшей задачи такие костыли городить. Осталось еще шину туда прикрутить.
|
|||
34
Skylark
11.01.23
✎
12:30
|
(33) Каждый додумывает на основании своего опыта. В (0) не сказано что как - есть ли там Татьяна Петровна и насколько она готова постоянно следить за всеми сотрудниками и жмякать кнопки.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |