Имя: Пароль:
1C
1С v8
Распределенна ИБ 8.2
0 GhostTM
 
25.12.12
17:01
Есть самописная конфигурация на 8.2
Есть план обмена, установлен признак "Распределенная", в составе выбрали все элементы, для автоматизации обмена написаны две процедуры:
1 выгрузка данных
2 загрузка данных

Проблема в седующем:
 Если в центральной базе происходит изменение конфигурации, то это изменение передается в переферию, открываем конфигуратор - обновляем конфигурацию БД - запускаемся в режиме предприятия и вызываем функцию выгрузки данных из переферии и в пакет выгружаются изменения конфигурации, которые потом в центральной базе не принимаются. При обмене в ручном режиме все замечательно.

Как отсечь выгрузку изменений конфигурации из переферии?

Процедура ОтправитьДанные() Экспорт
   
 ГлУзел = ПланыОбмена.ГлавныйУзел();
 ТекУзел = ПланыОбмена.РаспределеннаяБД.ЭтотУзел();
   
 Каталог = КаталогВременныхФайлов();
   
 МассивФайлов = Новый Массив;
   
 Если ГлУзел = Неопределено Тогда
   Выборка = ПланыОбмена.РаспределеннаяБД.Выбрать();
   Пока Выборка.Следующий() Цикл
           
     Если Выборка.Ссылка = ТекУзел Тогда
       Продолжить;
     КонецЕсли;
           
     Файл = Новый ЗаписьXML;
     ИмяФайла = "" + ТекУзел.Код + "_" + Выборка.Ссылка.Код + "_" + СтрЗаменить(ТекущаяДата(), ":", ".") + ".xml";
     Файл.ОткрытьФайл(Каталог + ИмяФайла);
     Файл.ЗаписатьОбъявлениеXML();
           
     ЗаписьСообщенияОбмена = ПланыОбмена.СоздатьЗаписьСообщения();
     ЗаписьСообщенияОбмена.НачатьЗапись(Файл, Выборка.Ссылка);
     ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщенияОбмена);
     ЗаписьСообщенияОбмена.ЗакончитьЗапись();
     Файл.Закрыть();
           
     СообщОбмена = Новый Структура;
     СообщОбмена.Вставить("Файл", ИмяФайла);
     СообщОбмена.Вставить("Каталог", Каталог);
     СообщОбмена.Вставить("Почта", Выборка.Ссылка.ПочтовыйПрофиль);
           
     МассивФайлов.Добавить(СообщОбмена);
   КонецЦикла;          
 Иначе
   Файл = Новый ЗаписьXML;
   ИмяФайла = "" + ТекУзел.Код + "_" + ГлУзел.Код + "_" + СтрЗаменить(ТекущаяДата(), ":", ".") + ".xml";
   Файл.ОткрытьФайл(Каталог + ИмяФайла);
   Файл.ЗаписатьОбъявлениеXML();
                       
   ЗаписьСообщенияОбмена = ПланыОбмена.СоздатьЗаписьСообщения();
   ЗаписьСообщенияОбмена.НачатьЗапись(Файл, ГлУзел);
   ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщенияОбмена);
   ЗаписьСообщенияОбмена.ЗакончитьЗапись();
       
   Файл.Закрыть();
       
   СообщОбмена = Новый Структура;
   СообщОбмена.Вставить("Файл", ИмяФайла);
   СообщОбмена.Вставить("Каталог", Каталог);
   СообщОбмена.Вставить("Почта", ГлУзел.ПочтовыйПрофиль);

   МассивФайлов.Добавить(СообщОбмена);
 КонецЕсли;
   
 ЗаписьСообщенияОбмена = Неопределено;
 Файл = Неопределено;
   
 ОтправитьДанныеПоПочте(МассивФайлов);
КонецПроцедуры

Процедура ПолучитьДанные() Экспорт
 ТекУзел = ПланыОбмена.РаспределеннаяБД.ЭтотУзел();
 
 МассФайлов = ПолучитьФайлыОбмена(ТекУзел.ПочтовыйПрофиль);
   
 Для каждого ФДата Из МассФайлов Цикл
   ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
   ЧтениеXML = Новый ЧтениеXML;
   ЧтениеXML.ОткрытьФайл(ФДата);
   ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
   Если ЧтениеСообщения.НомерСообщения > ТекУзел.НомерПринятого Тогда
     ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения);
   КонецЕсли;

   ЧтениеСообщения.ЗакончитьЧтение();
   ЧтениеXML.Закрыть();
   УдалитьФайлы(ФДата);
 КонецЦикла;    
КонецПроцедуры
1 DrShad
 
25.12.12
17:05
если из перефирии выгружаются изменения конфигурации, то это ни фига не РИБ
2 samozvanec
 
25.12.12
17:06
в переферии ты, по идее, хрен что поменяешь
3 GenV
 
25.12.12
17:15
(0) В чем разниа между "запускаемся в режиме предприятия и вызываем функцию выгрузки данных из переферии" и "При обмене в ручном режиме"?
4 DrShad
 
25.12.12
17:22
по ходу ТС что-то недоговаривает и многое называет не теми словами
5 Kreont
 
25.12.12
17:27
(0) А так:
1.(Изменеия конфиг.)ЦБ -> РИБ (файлик что получится из РИБ для ЦБ в мусор)
2.Зайти в РИБ, принять изменения, и еще раз загрузку из п.1 загрузить в РИБ
2.Файлик РИБ -> ЦБ
6 GhostTM
 
25.12.12
17:28
(3)(4)
Ручной режим - это когда я захожу в форму списка планов обмена и нажимаю системные кнопки прочитать/записать изменения

"запускаемся в режиме предприятия и вызываем функцию выгрузки данных из переферии" - это внешняя обработка с кнопками, которая вызывает написанные функции загрузки/выгрузки изменений
7 GhostTM
 
25.12.12
17:31
(5) надо попробовать, но хотелось бы просто отсечь выгрузку конфы.
8 GhostTM
 
25.12.12
18:31
Никто не сталкивался с такой проблемой?
9 Kreont
 
25.12.12
18:42
(8) да какая ж тут проблема, механизм что в (5) я как раз описал как надо правильно делать :)
10 Kreont
 
25.12.12
18:42
(7) Кстати, а по чем судишь что обратно идет выгрузка конфы?
11 GhostTM
 
25.12.12
18:45
(10) По сообщению при приеме в центральной, что изменения конфигурации возможны только в центральной базе, а так же по содержимому файла xml
12 GhostTM
 
25.12.12
18:49
(9) Попробовать пока нет возможности, но просто как отследить что этот файл надо два раза грузить еще и передать это между сеансами запуска?

Просто на переферии "адекватных" юзвергов вероятнее всего не будет (это удаленный склад - грузчики + кассир)
13 Kreont
 
25.12.12
18:52
(12)
- не менять конфу :)
-- если менять то соединяться и самому обновлять (или грузчики имеют пароль админа?)
--- можно все впихнуть в скрипт, который будет при появлении изменений конф.от ЦБ, выгонять юзверей, обновлять конфиг., и еще раз запускать обмен, и уже конечный файл будет как раз нужным для загрузки в РИБ
14 GhostTM
 
25.12.12
18:55
(13) если не найду решения, то будет именно так: "если менять то соединяться и самому обновлять" :)

Грузчики пароль админа - боже упаси.
15 GhostTM
 
25.12.12
18:56
(13) При выгрузке в ручном режиме оно ж его как-то отсекает