|
Конвертация данных: из двух баз в одну | ☑ | ||
---|---|---|---|---|
0
DenYuliya
16.01.19
✎
16:28
|
Идея такова: у одной конторы есть 2 идентичные по метаданным базы ЗУП (допустим, ЗУП1 и ЗУП2). Префиксов в базах нет, потому что сначала не подумали, а теперь там вовсю идет учет и менять поздно.
Решено было делать выгрузку из ЗУП1 и ЗУП2 в Бухгалтерию, типовыми (почти, за исключением вопроса ниже). Вопрос: как сделать так, чтобы перенесенные элементы справочников и документы, при совпадение кода/наименования, не затерли друг друга и при этом все были перенесены? Грубо говоря, Док1 из базы ЗУП1 и Док1 из базы ЗУП2 - это 2 разных документа, они должны быть перенесены оба. Вариант добавления префикса (в зависимости от базы) в процессе переноса - годный? Что-то вроде "Номер = Зуп1 + Номер". Или я изобретаю велосипед, и есть какое-то более изящное решение? Погушлила |
|||
1
DenYuliya
16.01.19
✎
16:31
|
блин. Естественно, перед созданием темы погуглила.
Ничего толком не нашла. Буду очень благодарна, если тема не будет засоряться неконструктивными советами типа "погугли, почитай СП". А вот если посоветуете "кодовое слово для поиска" - буду премного благодарна, т.к., возможно, я не правильно задаю вопрос Гуглу)). |
|||
2
ДенисЧ
16.01.19
✎
16:32
|
Да, префиксация документов сойдёт.
Но учти, у тебя ещё и справочники поедут, их тоже префиксовать надо... А это не во всех возможно... |
|||
3
OldCondom
16.01.19
✎
16:34
|
поддержу (2), рабочая схема, делал так с 5-6 зупами в одну бухию. И да, постоянная проблема со справочниками физ. лиц были. Но у нас еще и одно физ. лицо могло в двух и более базах быть=)
|
|||
4
OldCondom
16.01.19
✎
16:34
|
в смысле на 0.2 ставки быть и там и там и там
|
|||
5
OldCondom
16.01.19
✎
16:35
|
Справочникам в итоге менял поля поиска, в большинстве случаев спасало. А потом добился от бухов перейти на "сводно по всем сотрудникам".
|
|||
6
DenYuliya
16.01.19
✎
16:37
|
Спасибо!
Да, про справочники я понимаю, что там тоже надо префиксы задавать. А что за известная проблема со справочниками? |
|||
7
DenYuliya
16.01.19
✎
16:38
|
Ну то есть из-за чего она возникает, эта проблема? Какие-то ограничения со стороны платформы?
|
|||
8
DenYuliya
16.01.19
✎
16:39
|
И еще, (3), глупый вопрос: а вы для каждого из 5-6 баз делали свои правила с разными префиксами, или делали одно правило с условием по организации и префиксом в зависимости от?
|
|||
9
ДенисЧ
16.01.19
✎
16:40
|
(7) Ну если у тебя у какого-о справочника код числовой, а не текстовый, как ты ему префикс прикрутишь?
Или вести в бухе какой-то регистр соответствия, но заполнять руками и сопоставлять по нему... |
|||
10
GANR
16.01.19
✎
16:40
|
(6) Со справочниками сложнее всего. Пробуй после каждого этапа загрузки проверять базу на дубли (типовая обработка) и по ходу решай как менять правила конвертации.
|
|||
11
DenYuliya
16.01.19
✎
16:41
|
спасибо, приму к сведению!
|
|||
12
OldCondom
16.01.19
✎
16:42
|
(8) Лишь для 1-2 что-то свое добавлял, исключительно из-за своей специфики, а так одно переписанное работало для всех.
|
|||
13
Ботаник Гарден Меран
16.01.19
✎
16:48
|
Все объекты синхронизировать только по GUID. Всё.
|
|||
14
DenYuliya
16.01.19
✎
16:50
|
(13) была у меня такая мысль, мол "что -то ведь там еще есть. кроме кода и наименования, типа УИН".
Не может быть все так просто))) Наверняка найдутся подводные камни - а то все бы так и делали. |
|||
15
DenYuliya
16.01.19
✎
16:52
|
(13) могут ведь и guid совпасть...
|
|||
16
GANR
16.01.19
✎
16:55
|
(13) Я всеми руками за. Но как сопоставить несихронизированные заранее объекты из разных баз!?
(15) Беда в том, что вся НСИ будет дублирована если просто втупую выключить в КД синхронизацию по свойствам (ИНН, КПП, наименование и т.д.) |
|||
17
DenYuliya
16.01.19
✎
17:02
|
(16) А для документов - если тупо включить синхронизацию по guid + генерировать новый номер? guid в разных базах же может совпасть
(9) числовой префикс? Некая комбинация цифр, не встречающаяся в нумерации. |
|||
18
Йохохо
16.01.19
✎
17:05
|
(17) а как завалы разгребать? по гуид не выйдет
|
|||
19
DenYuliya
16.01.19
✎
17:18
|
(18) это все к поиску по guid относится, или первая часть сообщения - к цифровому префиксу для справочников?
|
|||
20
Йохохо
16.01.19
✎
17:22
|
(19) не, глазами же будут сравнивать, искать расхождения, лучше дать что то понятное типа номера с префиксом
|
|||
21
DenYuliya
16.01.19
✎
17:38
|
(20) это да...
|
|||
22
DenYuliya
18.01.19
✎
16:17
|
возвращаясь к (12).
А как вы идентифицировали базу? Условия же разные для баз были? Условно: у меня должно быть так: "если это документ из базы А, то префикс = "А" Иначе Префикс = "Б". Я изначально думала опираться от "Источник.Организация", но идея с треском провалилась. Больше не придумала ничего лучше, чем опираться на Константу "_НомерБазы". Примерно так: в "ПКС - Номер - При Выгрузке" пишу: Если Константа.НомерБазы.Получить() = 1" Тогда Значение="А"+Прав(Значение,7) Иначе Значение="Б"+Прав(Значение,7) КонецЕсли А как до значения константы достучаться из ПКС? В Параметры ее засунуть? Или как-то попроще можно? В Источнике-то то его нет... В типовых правилах к значениям констант обращаются в обработчиках на вкладке "Основная" - "Конвертация_ПослеЗагрузкиПараметров". Но блин, как оттуда что-то передать в ПКС((((? |
|||
23
hhhh
18.01.19
✎
16:51
|
(22) ну сама же пишешь, в ПКС Константы.НомерБазы.Получить()
Так и пиши |
|||
24
DenYuliya
18.01.19
✎
16:53
|
(23) а так можно было))? *щас попробую*, я думала это неправильный синтаксис
|
|||
25
OldCondom
18.01.19
✎
17:00
|
Так при выгрузке из базы создавай параметр текстовый и туда префикс вставляй. В номерах так и пиши "Номер = Параметры.ПрефиксБазы + Номер";
|
|||
26
OldCondom
18.01.19
✎
17:00
|
В глобальном обработчике перед выгрузкой вроде. Давно не открывал.
|
|||
27
DenYuliya
18.01.19
✎
17:02
|
Пасибо, осмыслю и попробую так.
P.S. (25), ник у вас огонь, улыбнуло)))) |
|||
28
al_zzz
18.01.19
✎
17:26
|
Ко мне коллега сегодня подходила посоветоваться с похожей задачей. Только там учет велся в одной базе КА2 по двум организациям и теперь ей не сливать надо, а перекинуть все зарплатные документы на одну из организаций. Предложил ей сделать ВыгрузкуЗагрузку зарплатных доков которые не на той организации, потом в текстовом файле подменить гуид организации и загрузить назад. Как думаете - взлетит такое?
|
|||
29
DenYuliya
18.01.19
✎
17:33
|
(28) вопрос , я так понимаю, не ко мне, а к массам?
А как вы планируете перенести сотрудников и прочие ссылки, тоже "Выгрузкой-загрузкой"? |
|||
30
al_zzz
18.01.19
✎
17:33
|
(29) Ага
|
|||
31
jsmith82
18.01.19
✎
17:51
|
зачем справочники префиксовать?
|
|||
32
jsmith82
18.01.19
✎
17:52
|
в каждом зупе отпрефиксовать документы
перенос по уид справочники, пвх и проч. по полям поиска |
|||
33
DenYuliya
18.01.19
✎
18:05
|
(32) на тот случай, если в каждой из 2 баз окажутся одинаковые физлица, которые должны быть как бы разными физлицами, чтобы клиент понимал, что один Иванов Иван - "прилетел" из 1 базы, а второй точно такой же Иванов Иван прилетел из второй базы, понимая, к какой базе какой сотрудник относится.
|
|||
34
lodger
18.01.19
✎
18:12
|
(28) от чего бы и нет? только кроме Организаций, надо бы сличить\подмахнуть и ряд других НСИ, которые могут совпадать в той и этой базах. те же ФЛ, как уже поминали.
|
|||
35
jsmith82
18.01.19
✎
19:08
|
(33) какой в этом смысл? даже тёзки по инн не задублятся
|
|||
36
jsmith82
18.01.19
✎
19:08
|
лишняя информация, имхо
|
|||
37
DenYuliya
21.01.19
✎
09:35
|
(35) я пыталась выявить сию страшную тайну- "нафига?",но "заказчик всегда прав, любой каприз за их деньги" - начальство сказало "делай так, как сказали". Короче, они хотят, чтобы у них в Бухне были 2 одинаковых Марь Петровны, одна с признаком первой базы, другая - второй.Но да - полностью одинаковые сущности при этом. То есть смысл как раз в том, чтобы они задублировались. Для контроля чего-то там по субконто.
|
|||
38
breezee
21.01.19
✎
09:45
|
(37) Ну и делай стандартную конвертацию. Поиск оставляй по ссылкам. Ничего даже изменять не нужно будет.
|
|||
39
Serg_1960
21.01.19
✎
10:10
|
(37) "Беда, коль пироги начнет печи сапожник, а сапоги тачать пирожник".
|
|||
40
Serg_1960
21.01.19
✎
10:12
|
Эти, sorry за грубые слова, идиоты не понимают, что они сами себе создают проблемы по НДФЛ (как пример)?
|
|||
41
DenYuliya
21.01.19
✎
10:15
|
(40) они не собираются сдавать отчетность по этим выгрузкам, конечно.
(38) так я это и делаю,только префиксы прикорячить надо. |
|||
42
DenYuliya
22.01.19
✎
17:59
|
(23) не работает так.
Пишу в ПКС свойства "Код" справочника "Физлица": Если СокрЛП(Константы.Константы._ПрефиксБазы.Получить()) = "Ак1" Тогда Значение="АК"+Прав(Значение,7) КонецЕсли; При попытке выгрузить из ЗУП, что было ожидаемо, вываливается ошибка: Ошибка в обработчике события ПриВыгрузке (свойства) ПКО = ФизическиеЛица (СправочникСсылка.ФизическиеЛица --> СправочникСсылка.ФизическиеЛица) ПКС = 3 (Код --> Код) Объект = Сёмин Алексей Владимирович (Физические лица) СвойствоПриемника = Код (Строка) КонвертируемоеЗначение = 0000000003 (Строка) Обработчик = ПриВыгрузкеСвойства ОписаниеОшибки = Поле объекта не обнаружено (Константы) ПозицияМодуля = (2) КодСообщения = 56 Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1697)}: Ошибка в обработчике события ПриВыгрузке (свойства) ПКО = ФизическиеЛица (СправочникСсылка.ФизическиеЛица --> СправочникСсылка.ФизическиеЛица) ПКС = 3 (Код --> Код) Объект = Сёмин Алексей Владимирович (Физические лица) СвойствоПриемника = Код (Строка) КонвертируемоеЗначение = 0000000003 (Строка) Обработчик = ПриВыгрузкеСвойства ОписаниеОшибки = Поле объекта не обнаружено (Константы) ПозицияМодуля = (2) КодСообщения = 56 Ну логично, у спр. ФизЛица нет свойства "Константы". А во откуда и как обращаться к константам базы - не могу понять(((. Точнее нашла, что есть обращения к константам в основных обработчиках. Но если обращаться оттуда - как потом передать полученное значение в ПКС? |
|||
43
ДенисЧ
22.01.19
✎
18:04
|
"Константы.Константы._ПрефиксБазы.Получить()"
Прямо так дословно и пишешь? |
|||
44
yavasya
22.01.19
✎
18:27
|
(42) Перед выгрузкой такое работает
|
|||
45
OldCondom
22.01.19
✎
19:10
|
Освой уже параметры. В глобальных обработчиках КД прописывай. Справку там почитай, что ли. Не нужны эти константы.
|
|||
46
ДенисЧ
22.01.19
✎
19:17
|
(44) То, что я указал в (43) не будет работать даже в ПриНачалеСистемы().
|
|||
47
Конструктор1С
22.01.19
✎
19:40
|
(0) нужно переносить по-идентификаторам, а при загрузке прикручивать к кодам-номерам префиксы
|
|||
48
DenYuliya
23.01.19
✎
09:21
|
(47) да у меня проблема не с тем, как и когда прикручивать префиксы, а с тем, где и как поставить условие на значение константы текущей базы.
Префиксы-то нормально переносятся. |
|||
49
DenYuliya
23.01.19
✎
09:30
|
(45) это да, но то ли я справку читать не умею, то ли этого там нет - не поняла я, как тот или иной параметр из глобальных обработчиков в ПКС перенести?
То есть как это? Создаю я параметр ПрефиксБазы. Делаю проверку этой самой константы, передаю полученное значение в параметр. А как его дальше вызывать из ПКС, просто обращаться по имени? В типовых правилах не нашла, чтобы в ПКС с параметрами работали. Как в данном случае обойтись без констант - я не смогла придумать. Идентификаторы при выгрузке из нескольких баз могут совпадать. Изначально в базах не ведется префиксация ни в разрезе префикса базы, ни в разрезе префикса документов. Поэтому было решено создать константу "префиксБазы", позволяющую идентифицировать базу. От того, из базы "Х" делается выгрузка, или из базу "Y", зависит, какой будет присвоен префикс при выгрузке. |
|||
50
DenYuliya
23.01.19
✎
10:25
|
(46) прямо вот...Дай я пожму тебе лапу))))! Как это я не заметила такую кошмарную очипяточку... Большое спасибо!
Вот так все работает: Если Константы._ПрефиксБазы.Получить() = "АК1" Тогда Значение= "АК" + Прав(Значение,7) ИначеЕсли Константы._ПрефиксБазы.Получить() = "" Тогда Значение = "АМ" + Прав(Значение, 7) Иначе Значение = "АВ" + Прав(Значение, 7) КонецЕсли; В ПКС - Свойства - Код в справочниках, и в ПКС - Свойства - Номер, в документах. |
|||
51
DenYuliya
23.01.19
✎
15:21
|
Какая-то ерунда в итоге. Префикс добавляется, добавляется тот, какой надо, это все хорошо.
Но почему-то элементы затирают друг друга. пример: Беру базу Б1 с префиксом Б1. В базе есть физлица Иванов, код 123 Петров, код 456 Выгружаю из из базы Б1 dt. Из него делаю базу Б2 с префиксом Б2. В ней теперь тоже есть физлица Иванов, код 123 Петров, код 456 В идеале после выгрузки/загрузки сначала из Б1, потом из Б2 в базе-приемнике у меня должны появиться физлица: Иванов, код Б1_123 Петров, код Б1_456 Иванов, код Б2_123 Петров, код Б2_456 А вместо этого сначала из Б1 я загружаю физлица: Иванов, код Б1_123 Петров, код Б1_456 А потом делаю загрузку из Б2, и ранее выгруженное перезатирается на Иванов, код Б2_123 Петров, код Б2_456 Поиск в ПКС поставила "По коду", везде, где он не стоял. Что за нафиг, не знаете? Я что-то явно делаю не так. |
|||
52
user-ok
23.01.19
✎
16:00
|
>> Поиск в ПКС поставила "По коду"
а галку "искать по внутреннему идентификатору" сняла? |
|||
53
DenYuliya
23.01.19
✎
16:01
|
(52) В ПКО? Она и не стояла.
|
|||
54
Ботаник Гарден Меран
23.01.19
✎
16:12
|
При обмене типовые процедуры, выполняющие обмен, часто используют регистр сведений в качестве кэша.
Т.к. базы Б1 и Б2 идентичны (ГУИД элементов в них одинаковые) и различается только префикс, то второй обмен находит ГУИД в кэше, и обновляет уже существующий элемент. В БП это РС СоответствияОбъектовИнформационныхБаз |
|||
55
DenYuliya
23.01.19
✎
16:18
|
(54) Большое спасибо за инфу! Я этого не знала, хотя догадывалась, что дело в идентичности баз.
Сейчас посмотрю в этом направление. |
|||
56
DenYuliya
23.01.19
✎
16:57
|
(54) для этого регистра надо тоже правила настроить?
|
|||
57
DenYuliya
23.01.19
✎
17:13
|
(54) или с этим регистром надо танцы с бубном выполнить, например очистить его, а ПКО - не надо настраивать?
|
|||
58
DenYuliya
23.01.19
✎
17:14
|
(54)кстати, я посмотрела - в базе-приемнике этот регистр пустой...
|
|||
59
Ботаник Гарден Меран
23.01.19
✎
17:18
|
Если перезатирается с разными значениями синхронизации, то ГУИД где-то сохранен или поиск по нему настроен.
|
|||
60
DenYuliya
23.01.19
✎
17:22
|
(59) мне надо отключить поиск по GUID во всех правилах в рамках данной конвертации, верно?
Я имею в виду, включенный поиск по GUID в ПКО "Реализация товаров и услуг" может мешать выгрузке без затирания справочника "Физлица"? |
|||
61
DenYuliya
23.01.19
✎
17:23
|
И еще вопрос, этот регистр надо добавлять в ПКО и настраивать для него правила?
|
|||
62
OldCondom
23.01.19
✎
17:25
|
Покликай галки на второй вкладке ПКО физ. лиц. Там какая-то неоднозначная дичь была, если я не ошибаюсь. Про гуиды и коды.
|
|||
63
DenYuliya
23.01.19
✎
17:29
|
Есть там такое, я покликала еще днем - у меня там все снято сейчас, оке, потыкаю еще там
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |