Имя: Пароль:
1C
1С v8
8.2 РИБ обмен по организациям
0 Темный
 
27.03.13
14:04
Добрый день, коллеги. Есть УТ 10.3, конвертированная в 8.2. В базе ведется несколько организаций. Поставили задачу - сделать отдельную базу, в которой будут данные только по одной организации. К данным относятся документы, справочники. Решил делать через распределенную базу. Раньше не занимался этим, один раз делал полный обмен, но там просто. Подскажите, с чего начать :-)
1 zzerro
 
27.03.13
14:06
Начинать с плана обмена
2 hhhh
 
27.03.13
14:07
(0) там есть обмен с УПП, он по организациям. Взять его, скопировать и творчески переработать, скрестить с обменом по организациям из БП 2.0.
3 AlexTim03
 
27.03.13
14:08
Делай свой план обменов. Узел плана обмена явно связа с организацией.
В ЦИБе будут все документы по всем организациям.
В каждом ПИБе - свои документы по своей организации. Собственно организация будет тебе говорить, куда мигрировать.
Определяйся, что делать с документами, у которых нет организации.
Определяйся с миграцией справочников.
4 Темный
 
27.03.13
14:10
(3) Понятно. Сразу вопрос -  у меня приходные документы по одной организации, а расход по другой. То есть, прихода в ПИБ не будет, но остатки нужны. Как сделать? Миграцией регистра?
5 Темный
 
27.03.13
14:11
(4) То же и к резервам относится. Резервы выписывают разные организации, но заказы будуь мигрировать только от одной.
6 hhhh
 
27.03.13
14:19
(4) тут или-или. Если организация ведется у вас отдельно, то варианты (4) и (5) надо исключить. Запретить организационно.
7 AlexTim03
 
27.03.13
14:25
(6)+1
Никак. Ты же в (0) пишешь - документы только своей организации. Либо делать перемещения между организациями.
8 Темный
 
28.03.13
15:50
Коллеги, был занят другими задачами. Никак??? Но надо. Тогда что делать?
9 Темный
 
28.03.13
16:14
Блин, где почитать про этот обмен...
10 Maxus43
 
28.03.13
16:17
(9) в простых примерах разработки например, или проф разработка в 1с
11 Serg_1960
 
28.03.13
16:25
(4) Если у тебя "приходные документы по одной организации, а расход по другой", то о каких ты остатках говоришь? Остатки "по организациям" у тебя в общей базе уже плывут.
12 Serg_1960
 
28.03.13
16:30
По поводу миграции регистра без регистраторов: такие чудеса, когда в регистре регистратор типа <Объект не найден> и в обычной базе встречается. И ничего, в принципе, работает. ТИИ делать не нужно - битые ссылки - штатная ситуация :))
13 Maxus43
 
28.03.13
16:31
в РИБе битые ссылки по большому счету не есть ошибка 100%, понять и простить
14 Темный
 
28.03.13
16:36
(11) Кстати... Вы натолкнули меня на мысль, почему так распухает база... Приход строго от одной организации, расход по нескольким.
15 Темный
 
28.03.13
16:37
(12) База и не должна быть особо рабочей. От нее требуется, что бы люди могли заказ выписать, да реализацию оформить
16 Maxus43
 
28.03.13
16:39
(15) тогда свой регистр надо сотатков, без организации. РН должен закрываться, иначе ошибка проектирования грубая
17 Темный
 
03.04.13
10:47
Почитал Радченко, что-то не очень вник. Давайте, я буду писать, а вы меня поправите.
18 Темный
 
03.04.13
10:48
1. Создаем новую базу. Так как мне не нужна там вся информация, то создаем пустую и загружаем конфигурацию основной базы.
19 Темный
 
03.04.13
10:49
2. Создаем в основной базе план обмена, включаем в него все объекты.
20 Темный
 
03.04.13
10:56
3. Нужна константа, которая указывает, что одна из баз главная.Где-то потом будем анализировать ее значение. Ее не надо включать в план обмена, верно?
21 Темный
 
03.04.13
11:02
4. Дальше думаю сделать так: В каком-то обработчике плана обмена (например, ПередЗаписью()) анализировать в цикле реквизиты объекта, если тип реквизита СправочникСсылка.Организации, то проверять, какая организация в реквизите, и если неправильная, то объект не записывать.

Заработает так?
22 Темный
 
03.04.13
11:02
5. Что будет с другими объектами, в которых будут ссылки на незаписаный объект? Будут текстовые ссылки?
23 Темный
 
03.04.13
11:05
6. Тестировать, как работает. Если будут косяки, делать в обработке исключения.
24 Темный
 
03.04.13
12:49
Помогите, плз.
25 Maxus43
 
03.04.13
12:54
(20) нет
(21) нет, подписка на элемент справочника-документа, автозаполнение = Ложь, Получатели = Список узлов-получателей.

Возьми типовую УТ например, там обмен по организациям сделан
26 Maxus43
 
03.04.13
12:57
главный узел определяется так:
ПланыОбменаМенеджер (ExchangePlansManager)
ГлавныйУзел (MasterNode)
Синтаксис:

ГлавныйУзел()
27 Темный
 
04.04.13
16:19
(25) Не могу разобраться. Подскажите самый элементарный код, пожалуйста. Никогда подписки не делал.
28 Темный
 
04.04.13
16:46
Нашел вот:
Книга знаний: v8: Выборочная миграция данных в УРБД

Хочу сделать вторым способом.
29 Темный
 
04.04.13
17:09
Как в процедуре ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента) сделать цикл по реквизитам? С целью найти реквизит типа "Справочник.Организации"?
30 Темный
 
04.04.13
17:09
Для "ЭлементаДанных"
31 Темный
 
05.04.13
18:08
Сделал вот что: В обработчике "ПриОтправкеДанныхПодчиненому"

МетаданныеОбъекта  = ЭлементДанных.Метаданные();
   Реквизиты = МетаданныеОбъекта.Реквизиты;
   
   Для Каждого Реквизит Из Реквизиты
   Цикл
       Если Реквизит.Тип = Тип("СправочникСсылка.Организации")
       Тогда
           Сообщить("  ");
       Иначе
       КонецЕсли;
   КонецЦикла
32 Темный
 
05.04.13
18:09
Почему-то никаких сообщений не выдается, а сама выгрузка пролетает за минуту. Где я неправ?
33 Темный
 
18.04.13
17:06
Такое ощущение, что выгружаются только те объекты, которые были изменены. Как отметить все данные конфигурации к выгрузке?
34 Темный
 
19.04.13
09:35
UP!
35 Serg_1960
 
19.04.13
10:05
(31) Методически :) правильнее будет так:

ТипОрганизации = Тип("СправочникСсылка.Организации");
...
Если Реквизит.Тип.СодержитТип(ТипОрганизации) Тогда
...
36 Serg_1960
 
19.04.13
10:14
(33) Конфигуратор - Общие - Общие формы - "МониторНастроекОбменаДанными"; Предприятие - Сервис - РИБ - Монитор обмена данными. Есть такое? В нём можно не только смотреть, но и изменять зарегистрированные изменения.
37 Темный
 
19.04.13
11:03
Спасибо!
38 Темный
 
19.04.13
15:24
Новая проблемка. Не у всех объектов метаданных есть реквизиты. Как узнать тип объекта метаданных?
Поясню. Я могу узнать тип "Константа.НачалоРабочегоДня". Но как определить, что объект метаданных относится к константам в целом?
39 Темный
 
23.04.13
10:41
UP!
40 Maxus43
 
23.04.13
10:43
(38) Если Метаданные.Константы.Содержит(твояконстантаметаданные) Тогда
///Это константа

(31) не по феншую это, надо убирать авторегистрацию и в подписках указывать получателей
41 Maxus43
 
23.04.13
10:44
тьфу, Если Константы.ТипВсеСсылки().Содержит(ТИпЗнч(Элемент)) ТОгда
42 Рэйв
 
23.04.13
10:44
В типовых уже помоему реализован план обмена "по организациям"
43 Рэйв
 
23.04.13
10:45
зачем изобретать велосипед?
44 Темный
 
23.04.13
10:48
(43) Ну я вроде и учусь заодно. Плюс в моей типовой этого нет. Я заглянул в другую конфу, сложно очень разобраться, если самых простых вещей не понимаешь. Сделаю сам хоть как-нибудь, там видно будет.
45 Темный
 
23.04.13
10:49
(41) СПАСИБО!
46 Maxus43
 
23.04.13
10:50
(44) дак делать лучше сразу правильно, а не юзать ПриОтправкеДанныхПодчиненому. Больше понимания будет жеж
47 Темный
 
23.04.13
10:54
(46) А почему это неправильно? В чем минус такого подхода?
48 hhhh
 
23.04.13
10:54
(44) ну (2) читал? берешь обмен по организациям из БП, а подписки на события из обмена УТ-УПП, там практически один в один можно взять. Во все регистры добавляешь реквизит Организация, если его там нет. Профит. Я за 3 часа такой обмен сварганил.
49 Темный
 
23.04.13
10:56
(48) Я даже не знаю, что такое подписки на события.
50 Темный
 
23.04.13
11:05
(41) "Метод объекта не обнаружен (ТипВсеСсылки)"

Пробовал и Метаданные.Константы.ТипВсеСсылки() и Константы.ТипВсеСсылки()
51 Maxus43
 
23.04.13
11:18
(50) согласен, этот вариант для Ссылочных типов только. Для констант надо по метаданным. Типа
Метаданные.Коснтанты.Найти(МетаданнеТвоейКонстанты)
52 Maxus43
 
23.04.13
11:21
(47) есть у тебя 20 узлоа. Ты записал элемент, он Зарегистрировался во всех 20-ти узлах. И только при выгрузке он отсеется для одного. А если подумать, то надо же сделать так, чтобы он изначально был зарегистрирован для одного. Логично? Да.
Вот перезаписал ты милион элементов - итого записей в таблицах регистрации у тебя на милион, а 20 милионов. Оно надО?
53 Maxus43
 
23.04.13
11:22
в (10) я писал где посмотреть, там Одна глава про обмены - причем сразу приходит понимание как это работает, как рулить списками узлов-получателей и т.д.
54 Темный
 
23.04.13
11:53
(51) Правильно так:
Метаданные.Константы.Найти(МетаданныеТвоейКонстанты.Имя)
55 Maxus43
 
23.04.13
11:54
(54) ок, буду знать :))
56 Темный
 
25.04.13
10:17
Сделал выгрузку. При попытке загрузки в пустую базу пишет "неизвестный получатель".Что я делаю не так?
57 Serg_1960
 
25.04.13
10:33
В "пустой базе", в плане обмена должны быть (как минимум) две записи об двух узлах. Но, вообще-то, перед началом обменов делается "создать начальный образ... ну или альтернатива - Книга знаний: Альтернативное создание начального образа в УРБД
58 Maxus43
 
25.04.13
10:34
а эта "пустая" база вобще в рибе? главный узел установлен? и получателем прописана именно она?
59 Темный
 
25.04.13
10:39
(57) Наверно в этом дело...
Пустая база была сделана так: Создана пустая база и туда была загружена конфигурация основной. Данных там никаких нет.
60 Темный
 
25.04.13
10:49
Итак, по шагам: В основной базе создал план обмена. Первая строчка там сразу есть. Назвал ее, задал код 099. Добавил вторую строчку, назвал ее, задал код 100. Для первой строчки кнопки выгрузить, загрузить, создать образ недоступны. Доступны для второй;
Создал новую базу, загрузил туда конфигурацию. В плане обмен опять две строчки. Сделал все так же, как в основной базе, за одним исключением - названия разные. Опять-таки, для второй строчки доступны кнопки.
61 Темный
 
25.04.13
10:53
Теперь мне вроде как надо:
1. Удалять регистрацию изменений во второй базе не нужно, там нет данных;
2. Номеров сообщений там тоже нет;
3. Назвать второй узел во второй базе так же, как первый узел в первой и присвоить ему тот же код;
4. Назвать первый узел во второй базе так же, как второй узел в первой и присвоить ему тот же код;
5. Сделать во второй базе второй узел главным;
6. Что дальше?
62 Темный
 
25.04.13
12:10
Та же фигня. Неизвестный получатель.
63 Темный
 
25.04.13
13:12
Теперь новая хрень: Конфигурация узла не соответсвует ожидаемой..
64 Темный
 
25.04.13
13:37
Что за хрень. Сделал загрузку конфигурации, не объединение. Все равно не соотвествует...
65 Темный
 
15.05.13
12:14
Вроде часть багов поборол. Обмен идет, но в процессе загрузки начальных данных в подчиненный узел 1с вылетает (файл большой, 27 гигабайт несжатый). Посмотрел - часть данных загружена. Теперь хотел сделать так: как-нибудь "догрузить" те данные, которые не загрузились. Сделал выгрузку из подчиненного в главный узел, однако в главном узле количество объектов для выгрузки вроде не изменилось.
Я что-то недопонимаю?
66 Темный
 
15.05.13
14:15
up!
67 Темный
 
05.06.13
17:10
Все в порядке, обмен сделал. Осталась одна задачка - нужно в процессе выгрузки менять данные. Ну, например, вместо одного контрагента подставить в документ другого. То есть, как-то модифицировать выгружаемый объект.
Где, в какой процедуре это можно сделать?
68 Темный
 
05.06.13
17:50
В обработчике "ПриПолученииДанныхОтГлавного" можно менять ЭлементДанных?
69 Темный
 
06.06.13
09:57
Up!
70 Темный
 
06.06.13
12:05
up!
71 Темный
 
06.06.13
13:39
up!