Имя: Пароль:
1C
 
Как получить значение метаданных
0 Garikus
 
16.02.16
12:54
Доброго времени суток есть такой код:

МетаданныеОбъектов = Метаданные["Документы"];

    Для каждого Метаданное Из МетаданныеОбъектов Цикл
        Поиск = Метаданное.Реквизиты.Найти("Ответственный");
        Если Поиск = Неопределено Тогда
            Иначе
        
        Сообщить(Поиск);
        КонецЕсли;    
        КонецЦикла;

Подскажите как получить значение реквизита "Ответственный"
1 PR третий
 
16.02.16
12:55
Опять обездоленный знаками вопроса безграмотный неуч
2 Amra
 
16.02.16
12:56
Какого из документов? Перебираешь виды документов, а одного вида может быть от 0 до стотыщмильенов документов
3 ObjectRelation Model
 
16.02.16
12:56
[как получить значение реквизита "Ответственный"]

у чего получить?
4 PR третий
 
16.02.16
12:57
Вообще по сабжу Док.Ответственный
5 Garikus
 
16.02.16
12:59
Необходимо по всем документам которые есть в базе получить ответственного, если такой реквизит имеется
6 ObjectRelation Model
 
16.02.16
13:00
тогда еще один вложенный цикл/запрос нужен
7 ObjectRelation Model
 
16.02.16
13:00
а вообще задача в целом то в чем?
8 Garikus
 
16.02.16
13:00
(6) а пример можно?
9 PR третий
 
16.02.16
13:00
(5) Тогда ВывестиОтветственногоДокументовЕслиОнЕстьКонечноЖе()
10 Garikus
 
16.02.16
13:01
(7) Задача состоит чтобы во всех документах обнулить ответственного
11 ObjectRelation Model
 
16.02.16
13:02
(10) зачем тогда их получать?
12 PR третий
 
16.02.16
13:02
(10) Слушай, ты каждые два поста меняешь показания.
13 Garikus
 
16.02.16
13:03
(11) Ну я так понимаю надо найти доки где есть ответственный, и записать пустое значение? не так?
14 PR третий
 
16.02.16
13:04
(13) Написание обработки на 15 минут.
Но есть готовая групповая обработка.
Может стоит вызвать программиста 1С?
15 Лефмихалыч
 
16.02.16
13:06
(0) у тебя в справочнике 300000 элементов, из которого конкретного ты хочешь значение реквизита получить?
16 Jonny_Khomich
 
16.02.16
13:10
Надо динамически составить текст запроса, добавить условие Не ответственный = Значение(Справочник.Пользователи.ПустаяСсылка)
Цикл обойти выборку, получая объект документа меняя значение реквизита и записываю документ.
17 Nuobu
 
16.02.16
13:14
(16) С пометкой Загрузка = Истина
18 Cyberhawk
 
16.02.16
13:14
ИР тебе в помощь, не нужно ничего придумывать
19 ДемонМаксвелла
 
16.02.16
13:15
(16) нет, там не будет пустой ссылки
20 Рэйв
 
16.02.16
13:35
Для Каждого Д Из Документы цикл
    Мета= Д.Пустаяссылка().Метаданные();
    Если Мета.Реквизиты.Найти("Ответственный")<>Неопределено Тогда  
        Сообщить("У "+Мета.Имя+" есть оно.");
        //тут пиши запрос
    КонецЕсли;
Конеццикла;
21 Garikus
 
16.02.16
14:12
Для каждого Док из Метаданные.Документы  Цикл
  Выборка = Документы[Док.Имя].Выбрать();
  
  Пока Выборка.Следующий() Цикл
      Если Выборка.Ссылка.Метаданные().Реквизиты.Найти("Ответственный")<> Неопределено Тогда
      Д = Выборка.Ссылка.ПолучитьОбъект();
      Д.Ответственный = "";
      д.Записать();
    Сообщить(Д);      
      КонецЕсли;
  КонецЦикла;
КонецЦикла;  

Получилось вот так
22 Garikus
 
16.02.16
14:13
Время работы 40 мин на базу на все документы
23 НЕА123
 
16.02.16
14:14
крутяк...
24 Garikus
 
16.02.16
14:17
Знаю что хрень полная, но работает
25 Nuobu
 
16.02.16
14:20
Выборка = Документы[Док.Имя].Выбрать();
  
  Пока Выборка.Следующий() Цикл
      Если Выборка.Ссылка.Метаданные().Реквизиты.Найти("Ответственный")<> Неопределено Тогда
      Д = Выборка.Ссылка.ПолучитьОбъект();
      Д.Ответственный = "";
Д.ОбменДанными.Загрузка = Истина;
      д.Записать();
    Сообщить(Д);      
      КонецЕсли;
  КонецЦикла;
КонецЦикла;
26 НЕА123
 
16.02.16
14:30
Для каждого Док из Метаданные.Документы  Цикл

Если Док.Реквизиты.Найти("Ответственный")<> Неопределено  Тогда

  Выборка = Документы[Док.Имя].Выбрать();
  Пока Выборка.Следующий() Цикл
      Д = Выборка.Ссылка.ПолучитьОбъект();
      Д.Ответственный = "";
      д.Записать();
    Сообщить(Д);      
  КонецЦикла;
КонецЕсли;

КонецЦикла;
27 НЕА123
 
16.02.16
14:37
(26)+
Д = Выборка.ПолучитьОбъект();