Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Конвертация данных: из двух баз в одну

Конвертация данных: из двух баз в одну
Я
   DenYuliya
 
16.01.19 - 16:28
Идея такова: у одной конторы есть 2 идентичные по метаданным базы ЗУП (допустим, ЗУП1 и ЗУП2). Префиксов в базах нет, потому что сначала не подумали, а теперь там вовсю идет учет и менять поздно.
Решено было делать выгрузку из ЗУП1 и ЗУП2 в Бухгалтерию, типовыми (почти, за исключением вопроса ниже).

Вопрос: как сделать так, чтобы перенесенные элементы справочников и документы, при совпадение кода/наименования, не затерли друг друга и при этом все были перенесены?

Грубо говоря, Док1 из базы ЗУП1 и Док1 из базы ЗУП2 - это 2 разных документа, они должны быть перенесены оба.

Вариант добавления префикса (в зависимости от базы) в процессе переноса - годный? Что-то вроде "Номер = Зуп1 + Номер".
Или я изобретаю велосипед, и есть какое-то более изящное решение?

Погушлила
 
 
   DenYuliya
 
1 - 16.01.19 - 16:31
блин. Естественно, перед созданием темы погуглила.
Ничего толком не нашла. Буду очень благодарна, если тема не будет засоряться неконструктивными советами типа "погугли, почитай СП".
А вот если посоветуете "кодовое слово для поиска" - буду премного благодарна, т.к., возможно, я не правильно задаю вопрос Гуглу)).
   ДенисЧ
 
2 - 16.01.19 - 16:32
Да, префиксация документов сойдёт.
Но учти, у тебя ещё и справочники поедут, их тоже префиксовать надо... А это не во всех возможно...
   OldCondom
 
3 - 16.01.19 - 16:34
поддержу (2), рабочая схема, делал так с 5-6 зупами в одну бухию. И да, постоянная проблема со справочниками физ. лиц были. Но у нас еще и одно физ. лицо могло в двух и более базах быть=)
   OldCondom
 
4 - 16.01.19 - 16:34
в смысле на 0.2 ставки быть и там и там и там
   OldCondom
 
5 - 16.01.19 - 16:35
Справочникам в итоге менял поля поиска, в большинстве случаев спасало. А потом добился от бухов перейти на "сводно по всем сотрудникам".
   DenYuliya
 
6 - 16.01.19 - 16:37
Спасибо!
Да, про справочники я понимаю, что там тоже надо префиксы задавать.
А что за известная проблема со справочниками?
   DenYuliya
 
7 - 16.01.19 - 16:38
Ну то есть из-за чего она возникает, эта проблема? Какие-то ограничения со стороны платформы?
   DenYuliya
 
8 - 16.01.19 - 16:39
И еще, (3), глупый вопрос: а вы для каждого из 5-6 баз делали свои правила с разными префиксами, или делали одно правило с условием по организации и префиксом в зависимости от?
   ДенисЧ
 
9 - 16.01.19 - 16:40
(7) Ну если у тебя у какого-о справочника код числовой, а не текстовый, как ты ему префикс прикрутишь?
Или вести в бухе какой-то регистр соответствия, но заполнять руками и сопоставлять по нему...
   GANR
 
10 - 16.01.19 - 16:40
(6) Со справочниками сложнее всего. Пробуй после каждого этапа загрузки проверять базу на дубли (типовая обработка) и по ходу решай как менять правила конвертации.
 
 Рекламное место пустует
   DenYuliya
 
11 - 16.01.19 - 16:41
спасибо, приму к сведению!
   OldCondom
 
12 - 16.01.19 - 16:42
(8) Лишь для 1-2 что-то свое добавлял, исключительно из-за своей специфики, а так одно переписанное работало для всех.
   Ботаник Гарден Меран
 
13 - 16.01.19 - 16:48
Все объекты синхронизировать только по GUID. Всё.
   DenYuliya
 
14 - 16.01.19 - 16:50
(13) была у меня такая мысль, мол "что -то ведь там еще есть. кроме кода и наименования, типа УИН".
Не может быть все так просто))) Наверняка найдутся подводные камни - а то все бы так и делали.
   DenYuliya
 
15 - 16.01.19 - 16:52
(13) могут ведь и guid совпасть...
   GANR
 
16 - 16.01.19 - 16:55
(13) Я всеми руками за. Но как сопоставить несихронизированные заранее объекты из разных баз!?
(15) Беда в том, что вся НСИ будет дублирована если просто втупую выключить в КД синхронизацию по свойствам (ИНН, КПП, наименование и т.д.)
   DenYuliya
 
17 - 16.01.19 - 17:02
(16) А для документов - если тупо включить синхронизацию по guid + генерировать новый номер? guid в разных базах же может совпасть

(9) числовой префикс? Некая комбинация цифр, не встречающаяся в нумерации.
   Йохохо
 
18 - 16.01.19 - 17:05
(17) а как завалы разгребать? по гуид не выйдет
   DenYuliya
 
19 - 16.01.19 - 17:18
(18) это все к поиску по guid относится, или первая часть сообщения - к цифровому префиксу для справочников?
   Йохохо
 
20 - 16.01.19 - 17:22
(19) не, глазами же будут сравнивать, искать расхождения, лучше дать что то понятное типа номера с префиксом
   DenYuliya
 
21 - 16.01.19 - 17:38
(20) это да...
   DenYuliya
 
22 - 18.01.19 - 16:17
возвращаясь к (12).
А как вы идентифицировали базу? Условия же разные для баз были?

Условно: у меня должно быть так: "если это документ из базы А, то префикс = "А" Иначе Префикс = "Б".

Я изначально думала опираться от "Источник.Организация", но идея с треском провалилась.

Больше не придумала ничего лучше, чем  опираться на Константу "_НомерБазы".

Примерно так: в "ПКС - Номер - При Выгрузке" пишу:
Если Константа.НомерБазы.Получить() = 1" Тогда    Значение="А"+Прав(Значение,7)
Иначе
Значение="Б"+Прав(Значение,7)
КонецЕсли

А как до значения константы достучаться из ПКС? В Параметры ее засунуть? Или как-то попроще можно? В Источнике-то то его нет...

В типовых правилах к значениям констант обращаются в обработчиках на вкладке "Основная" - "Конвертация_ПослеЗагрузкиПараметров".

Но блин, как оттуда что-то передать в ПКС((((?
   hhhh
 
23 - 18.01.19 - 16:51
(22) ну сама же пишешь, в ПКС Константы.НомерБазы.Получить()

Так и пиши
   DenYuliya
 
24 - 18.01.19 - 16:53
(23) а так можно было))? *щас попробую*, я думала это неправильный синтаксис
   OldCondom
 
25 - 18.01.19 - 17:00
Так при выгрузке из базы создавай параметр текстовый и туда префикс вставляй. В номерах так и пиши "Номер = Параметры.ПрефиксБазы + Номер";
   OldCondom
 
26 - 18.01.19 - 17:00
В глобальном обработчике перед выгрузкой вроде. Давно не открывал.
   DenYuliya
 
27 - 18.01.19 - 17:02
Пасибо, осмыслю и попробую так.
P.S. (25), ник у вас огонь, улыбнуло))))
   al_zzz
 
28 - 18.01.19 - 17:26
Ко мне коллега сегодня подходила посоветоваться с похожей задачей. Только там учет велся в одной базе КА2 по двум организациям и теперь ей не сливать надо, а перекинуть все зарплатные документы на одну из организаций. Предложил ей сделать ВыгрузкуЗагрузку зарплатных доков которые не на той организации, потом в текстовом файле подменить гуид организации и загрузить назад. Как думаете - взлетит такое?
   DenYuliya
 
29 - 18.01.19 - 17:33
(28) вопрос , я так понимаю, не ко мне, а к массам?
А как вы планируете перенести сотрудников и прочие ссылки, тоже "Выгрузкой-загрузкой"?
   al_zzz
 
30 - 18.01.19 - 17:33
(29) Ага
   jsmith82
 
31 - 18.01.19 - 17:51
зачем справочники префиксовать?
   jsmith82
 
32 - 18.01.19 - 17:52
в каждом зупе отпрефиксовать документы
перенос по уид
справочники, пвх и проч. по полям поиска
   DenYuliya
 
33 - 18.01.19 - 18:05
(32) на тот случай, если в каждой из 2 баз окажутся одинаковые физлица, которые должны быть как бы разными физлицами, чтобы клиент понимал, что один Иванов Иван - "прилетел" из 1 базы, а второй точно такой же Иванов Иван прилетел из второй базы, понимая, к какой базе какой сотрудник относится.
 
 
   lodger
 
34 - 18.01.19 - 18:12
(28) от чего бы и нет? только кроме Организаций, надо бы сличить\подмахнуть и ряд других НСИ, которые могут совпадать в той и этой базах. те же ФЛ, как уже поминали.
   jsmith82
 
35 - 18.01.19 - 19:08
(33) какой в этом смысл? даже тёзки по инн не задублятся
   jsmith82
 
36 - 18.01.19 - 19:08
лишняя информация, имхо
   DenYuliya
 
37 - 21.01.19 - 09:35
(35) я пыталась выявить сию страшную тайну- "нафига?",но "заказчик всегда прав, любой каприз за их деньги" - начальство сказало "делай так, как сказали". Короче, они хотят, чтобы у них в Бухне были 2 одинаковых Марь Петровны, одна с признаком первой базы, другая - второй.Но да - полностью одинаковые сущности при этом. То есть смысл как раз в том, чтобы они задублировались. Для контроля чего-то там по субконто.
   breezee
 
38 - 21.01.19 - 09:45
(37) Ну и делай стандартную конвертацию. Поиск оставляй по ссылкам. Ничего даже изменять не нужно будет.
   Serg_1960
 
39 - 21.01.19 - 10:10
(37) "Беда, коль пироги начнет печи сапожник, а сапоги тачать пирожник".
   Serg_1960
 
40 - 21.01.19 - 10:12
Эти, sorry за грубые слова, идиоты не понимают, что они сами себе создают проблемы по НДФЛ (как пример)?
   DenYuliya
 
41 - 21.01.19 - 10:15
(40) они не собираются сдавать отчетность по этим выгрузкам, конечно.

(38) так я это и делаю,только префиксы прикорячить надо.
   DenYuliya
 
42 - 22.01.19 - 17:59
(23) не работает так.
Пишу в ПКС свойства "Код" справочника "Физлица":


Если СокрЛП(Константы.Константы._ПрефиксБазы.Получить()) = "Ак1" Тогда    
    Значение="АК"+Прав(Значение,7)
КонецЕсли;


При попытке выгрузить из ЗУП, что было ожидаемо, вываливается ошибка:

Ошибка в обработчике события ПриВыгрузке (свойства)
    ПКО                    =  ФизическиеЛица  (СправочникСсылка.ФизическиеЛица --> СправочникСсылка.ФизическиеЛица)
    ПКС                    =  3  (Код --> Код)
    Объект                 =  Сёмин Алексей Владимирович  (Физические лица)
    СвойствоПриемника      =  Код  (Строка)
    КонвертируемоеЗначение =  0000000003  (Строка)
    Обработчик             =  ПриВыгрузкеСвойства
    ОписаниеОшибки         =  Поле объекта не обнаружено (Константы)
    ПозицияМодуля          =  (2)
    КодСообщения           =  56

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1697)}: Ошибка в обработчике события ПриВыгрузке (свойства)
    ПКО                    =  ФизическиеЛица  (СправочникСсылка.ФизическиеЛица --> СправочникСсылка.ФизическиеЛица)
    ПКС                    =  3  (Код --> Код)
    Объект                 =  Сёмин Алексей Владимирович  (Физические лица)
    СвойствоПриемника      =  Код  (Строка)
    КонвертируемоеЗначение =  0000000003  (Строка)
    Обработчик             =  ПриВыгрузкеСвойства
    ОписаниеОшибки         =  Поле объекта не обнаружено (Константы)
    ПозицияМодуля          =  (2)
    КодСообщения           =  56

Ну логично, у спр. ФизЛица нет свойства "Константы".

А во откуда и как обращаться к константам базы - не могу понять(((. Точнее нашла, что есть обращения к константам в основных обработчиках.
Но если обращаться оттуда - как потом передать полученное  значение в ПКС?
   ДенисЧ
 
43 - 22.01.19 - 18:04
"Константы.Константы._ПрефиксБазы.Получить()"

Прямо так дословно и пишешь?
   yavasya
 
44 - 22.01.19 - 18:27
(42) Перед выгрузкой такое работает
   OldCondom
 
45 - 22.01.19 - 19:10
Освой уже параметры. В глобальных обработчиках КД прописывай. Справку там почитай, что ли. Не нужны эти константы.
   ДенисЧ
 
46 - 22.01.19 - 19:17
(44) То, что я указал в (43) не будет работать даже в ПриНачалеСистемы().
   Конструктор1С
 
47 - 22.01.19 - 19:40
(0) нужно переносить по-идентификаторам, а при загрузке прикручивать к кодам-номерам префиксы
   DenYuliya
 
48 - 23.01.19 - 09:21
(47)  да у меня проблема не с тем, как и когда прикручивать префиксы, а с тем, где и как поставить условие на значение константы текущей базы.
Префиксы-то нормально переносятся.
   DenYuliya
 
49 - 23.01.19 - 09:30
(45) это да, но то ли я справку читать не умею, то ли этого там нет - не поняла я, как тот или иной параметр из глобальных обработчиков в ПКС перенести?

То есть как это? Создаю я параметр ПрефиксБазы.
Делаю проверку этой самой константы, передаю полученное значение в параметр.
А как его дальше вызывать из ПКС, просто обращаться по имени? В типовых правилах не нашла, чтобы в ПКС с параметрами работали.

Как в данном случае обойтись без констант - я не смогла придумать. Идентификаторы при выгрузке из нескольких баз могут совпадать. Изначально в базах не ведется префиксация ни в разрезе префикса базы, ни в разрезе префикса документов.
Поэтому было решено создать константу "префиксБазы", позволяющую идентифицировать базу.
От того, из базы "Х" делается выгрузка, или из базу "Y", зависит, какой будет присвоен префикс при выгрузке.
 
 Рекламное место пустует
   DenYuliya
 
50 - 23.01.19 - 10:25
(46) прямо вот...Дай я пожму тебе лапу))))! Как это я не заметила такую кошмарную очипяточку... Большое спасибо!

Вот так все работает:

Если Константы._ПрефиксБазы.Получить() = "АК1" Тогда    
    Значение= "АК" + Прав(Значение,7)
ИначеЕсли Константы._ПрефиксБазы.Получить() = ""   Тогда 
    Значение = "АМ" + Прав(Значение, 7)
Иначе
    Значение = "АВ" + Прав(Значение, 7)
КонецЕсли;

В ПКС - Свойства - Код в справочниках, и в ПКС - Свойства - Номер, в документах.
   DenYuliya
 
51 - 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

Поиск в ПКС поставила "По коду", везде, где он не стоял. Что за нафиг, не знаете? Я что-то явно делаю не так.
   user-ok
 
52 - 23.01.19 - 16:00
>> Поиск в ПКС поставила "По коду"
а галку "искать по внутреннему идентификатору" сняла?
   DenYuliya
 
53 - 23.01.19 - 16:01
(52) В ПКО? Она и не стояла.
   Ботаник Гарден Меран
 
54 - 23.01.19 - 16:12
При обмене типовые процедуры, выполняющие обмен, часто используют регистр сведений в качестве кэша.
Т.к. базы Б1 и Б2 идентичны (ГУИД элементов в них одинаковые) и различается только префикс, то второй обмен находит ГУИД в кэше, и обновляет уже существующий элемент.

В БП это РС СоответствияОбъектовИнформационныхБаз
   DenYuliya
 
55 - 23.01.19 - 16:18
(54) Большое спасибо за инфу! Я этого не знала, хотя догадывалась, что дело в идентичности баз.
Сейчас посмотрю в этом направление.
   DenYuliya
 
56 - 23.01.19 - 16:57
(54) для этого регистра надо тоже правила настроить?
   DenYuliya
 
57 - 23.01.19 - 17:13
(54) или с этим регистром надо танцы с бубном выполнить, например очистить его, а ПКО - не надо настраивать?
   DenYuliya
 
58 - 23.01.19 - 17:14
(54)кстати, я посмотрела - в базе-приемнике этот регистр пустой...
   Ботаник Гарден Меран
 
59 - 23.01.19 - 17:18
Если перезатирается с разными значениями синхронизации, то ГУИД где-то сохранен или поиск по нему настроен.
   DenYuliya
 
60 - 23.01.19 - 17:22
(59) мне надо отключить поиск по GUID во всех правилах в рамках данной конвертации, верно?
Я имею в виду, включенный поиск по GUID в ПКО "Реализация товаров и услуг" может мешать выгрузке без затирания справочника "Физлица"?
   DenYuliya
 
61 - 23.01.19 - 17:23
И еще вопрос, этот регистр надо добавлять в ПКО и настраивать для него правила?
   OldCondom
 
62 - 23.01.19 - 17:25
Покликай галки на второй вкладке ПКО физ. лиц. Там какая-то неоднозначная дичь была, если я не ошибаюсь. Про гуиды и коды.
   DenYuliya
 
63 - 23.01.19 - 17:29
Есть там такое, я покликала еще днем - у меня там все снято сейчас, оке, потыкаю еще там


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует