Имя: Пароль:
1C
 
БП 2.0: место создания объектов РИБ
0 Ksandr
 
16.02.11
11:34
Ув. программисты, в БП 2.0 есть константа - сохранять место создания объектов РИБ. Скажите, а где на это место посмотреть можно?
1 mosAdm
 
16.02.11
12:36
Место создания объекта записывается в регистре сведений "Объекты информационных баз"
2 Ksandr
 
16.02.11
13:23
а справочники, на сколько я понял там не хранятся
3 mosAdm
 
16.02.11
13:55
Тип значения реквизита "Объект" - "ЛюбаяСсылка", значит и справочники тоже могут храниться в регистре
4 Aleksey
 
16.02.11
14:22
Процедура ЗарегистрироватьМестоСозданияОбъектаИнформационнойБазы(СсылкаНаОбъект, УзелОбмена = Неопределено)
   
   НаборЗаписейРегистра = РегистрыСведений.ОбъектыИнформационныхБаз.СоздатьНаборЗаписей();
   НаборЗаписейРегистра.Отбор.Объект.Установить(СсылкаНаОбъект);
   
   СтрокаНабора = НаборЗаписейРегистра.Добавить();
   СтрокаНабора.Объект = СсылкаНаОбъект;
   СтрокаНабора.УзелОбмена = УзелОбмена;
   
   НаборЗаписейРегистра.Записать();
   
КонецПроцедуры
5 Aleksey
 
16.02.11
14:24
(2), (3) Не совсем

// обработчик события при записи документа для регистрации места создания
Процедура ПриЗаписиДокументаРегистрацияОбъектаИнформационнойБазыПриЗаписи(Источник, Отказ) Экспорт
   
   НужноРегистрироватьМестоСоздания = Ложь;
   Источник.ДополнительныеСвойства.Свойство("НужноРегистрироватьМестоСоздания", НужноРегистрироватьМестоСоздания);
   
   Если НужноРегистрироватьМестосоздания <> Истина Тогда
       Возврат;
   КонецЕсли;
   
   Если Источник.ОбменДанными.Загрузка = Истина
       И ЗначениеЗаполнено(Источник.ОбменДанными.Отправитель) Тогда
       
       // обмен с определенным узлом
       ЗарегистрироватьМестоСозданияОбъектаИнформационнойБазы(Источник.Ссылка, Источник.ОбменДанными.Отправитель);
       
   Иначе
       
       // объект создан в этой информационной базе
       ЗарегистрироватьМестоСозданияОбъектаИнформационнойБазы(Источник.Ссылка, Неопределено);
       
   КонецЕсли;
   
КонецПроцедуры


Т.е. обработчик событий для справочника нет, только для документов
6 zzerro
 
16.02.11
14:49
А вообще зачем это все, т.е. для каких таких целей?
7 Ksandr
 
16.02.11
14:51
(4)(5) Спасибо.
Вероятно, чтобы регистр не тормозил, как ЖР так и сделали
8 Ksandr
 
16.02.11
14:52
(6) А как можно определить, кто создал объект другим способом?
9 Aleksey
 
16.02.11
14:52
(6)
Обработка Обмен данными XML

Функция ВыполнитьВыгрузку(НужноУдалитьПодключениеКИБПриемникуПослеВыгрузкиДанных = Истина,
   СтрокаСообщенияОбОшибке = "",
   СтрокаСообщенияОбОшибкеОтложенныеДвиженияДокумента = "",
   ПослеОшибкиОтложенногоПроведенияПрекратитьОперации = Ложь,
   КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации = 0) Экспорт


....
НужноОграничиватьВыгрузкуПоПринадлежностиОбъектовКИнформационнымБазам = УзелДляОбмена.ИспользоватьИнформациюОМестеСозданияОбъектовПриВыгрузкеИЗагрузкеДанных;
   Если НужноОграничиватьВыгрузкуПоПринадлежностиОбъектовКИнформационнымБазам Тогда
               

               
               // определим есть ли хоть один объект который был создан в базе обмена и который выгружать не следует
               Запрос = Новый Запрос();
               Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 1
                              |    
                              |ИЗ
                              |    РегистрСведений.ОбъектыИнформационныхБаз КАК ОбъектыИнформационныхБаз
                              |ГДЕ
                              |    ОбъектыИнформационныхБаз.УзелОбмена = &Узел";
10 Aleksey
 
16.02.11
14:54
Вообщем из всей конфиги БП это регистр юзается только в этой обработки
11 Aleksey
 
16.02.11
14:55
В частности

Функция ОбъектСозданнВБазеПриемнике(Данные, ТекущаяСтрокаПравилаВыгрузки)
   
   Результат = Ложь;
   
   Если ТекущаяСтрокаПравилаВыгрузки.НеВыгружатьОбъектыСозданныеВБазеПриемнике = Истина Тогда
       
       // проверка наличия информации по объекту в регистре где хранится информация о местах создания объектов
       мЗапросИнформацииОМестеСозданияОбъекта.УстановитьПараметр("Объект", Данные.Ссылка);
(запрос к этому регистру)
2 + 2 = 3.9999999999999999999999999999999...