Имя: Пароль:
1C
 
программный поиск объектов в БД
0 Stimcool
 
29.04.11
11:58
РИБ. Из главного узла приходит сообщение о том, что объект удален. Как можно программно проверить, не использован ли этот объект в других объектах и можно ли его удалить? Так, же как происходит штатный контроль при удалении помеченных объектов.
1 Cube
 
29.04.11
12:01
Синтаксис-помощник украли?

Глобальный контекст.НайтиПоСсылкам (Global context.FindByRef)
Глобальный контекст (Global context)
НайтиПоСсылкам (FindByRef)
Синтаксис:

НайтиПоСсылкам(<СписокСсылок>)
Параметры:

<СписокСсылок> (обязательный)

Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:

Тип: ТаблицаЗначений. Возвращает ссылки на найденные объекты в виде ТаблицаЗначений, состоящей из колонок с индексами: 0 - искомая ссылка; 1 - ссылка на объект, если найдена ссылка в объектной таблице; ключ записи, если ссылка найдена в независимом регистре сведений; ссылка на документ-регистратор для всех остальных необъектных таблиц; 2 - объект метаданных, которому соответствуют данные из колонки 1.
Описание:

Осуществляет поиск ссылок на объекты, переданные в параметре <СписокСсылок>.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

Ссылки = НайтиПомеченныеНаУдаление();
ТабСсылок = НайтиПоСсылкам(Ссылки);
Для Каждого Ссылка из ТабСсылок Цикл
   Сообщить ("" + СокрЛП(Ссылка[0]) + "  " + СокрЛП(Ссылка[1]));
КонецЦикла;
2 Stimcool
 
29.04.11
12:02
(1) ну чтобы знать, что искать, нужно хотя бы знать название. Спасибо :)
3 Ненавижу 1С
 
гуру
29.04.11
12:02
(2) вообще то там структурировано по папочкам
4 Cube
 
29.04.11
12:03
(2) Я тоже не знал, что искать, но пользоваться поиском умею. Пожалуйста :)
5 Stimcool
 
29.04.11
12:48
дабы не плодить новую ветку:

почему не регистриуются для глУзла объекты:

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


зы. отладчик доходит до ПЛаныОбмена.Зарегистрирова.. , но Источник не регистрируется почему-то
6 Stimcool
 
29.04.11
12:53
апю
7 Живой Ископаемый
 
29.04.11
12:56
если транзакция отменяется, то внутренние транзакции тоже отменятся
8 Stimcool
 
29.04.11
13:06
(7) закомментил Отказ, все равно не регистрируется, хотя отладчиком проходит
9 Живой Ископаемый
 
29.04.11
13:07
рассказывай, как удостоверился что не регистрируется
10 Stimcool
 
29.04.11
13:08
(9) типовая обработка Регистрация изменений для объекта. Да и не вижу в ЦБ этого объекта. Простой запрос к таблице изменений тоже не показывает регистрацию этого объекта
11 Stimcool
 
29.04.11
13:12
блин.. эта процедура же срабатывает в момент загрузки объектов. Можно ли при этом регистрировать изменения..
12 Живой Ископаемый
 
29.04.11
13:17
ну... если Источник.ССылка не равно ПустаяССылка() то наверное да
13 Stimcool
 
29.04.11
13:18
(12) не равно
14 Живой Ископаемый
 
29.04.11
13:18
попробуй  ПЛаныОбмена.ЗарегистрироватьИзменения(ПланыОбмена.ГлавныйУзел(),Источник.Ссылка);
15 Stimcool
 
29.04.11
13:23
неа, все равно не регистрируется
16 Stimcool
 
29.04.11
13:29
хм. после этой процедуры попадает в исключение процедуры ЗагрузитьCообщениеСИзменениямиОтРИБУзла