Имя: Пароль:
1C
1С v8
Как программно проверить есть ли у регистратора "Подразделение"?
0 Miss1C
 
18.10.12
18:32
При записи в регистр накопления нужно проверить, есть ли у регистратора "Подразделение", какие будут идеи?
1 Wobland
 
18.10.12
18:33
сказать "Уважаемые Метаданные!"
2 Miss1C
 
18.10.12
18:33
(1)А конкретно?)
3 Wobland
 
18.10.12
18:35
(2) реквизиты, найти... не буду сейчас синтаксически верно сочинять
4 zak555
 
18.10.12
18:36
если неопределено -- нет
5 Miss1C
 
18.10.12
18:36
Для каждого Реквизит Из ДокументСсылка.Метаданные().Реквизиты Цикл
   Сообщить(Реквизит.Представление());
КонецЦикла;

Так что ли?
6 Господин ПЖ
 
18.10.12
18:36
фото с каждым разом все интереснее
7 Miss1C
 
18.10.12
18:37
Этот способ и я знаю, быстрее есть что то?
8 H A D G E H O G s
 
18.10.12
18:37
(7) Нет
9 H A D G E H O G s
 
18.10.12
18:37
ДокументСсылка.Метаданные().Реквизиты.Найти("Подразделение")<>неопределено
10 Wobland
 
18.10.12
18:37
(3) вот врун...

   док=Документы.ВходящийЗвонок.НайтиПоНомеру();
   док.Метаданные().Реквизиты.Найти("Опля") сравнить с Неопределеной
11 H A D G E H O G s
 
18.10.12
18:38
Идите в фотомодели, девушка.
12 zak555
 
18.10.12
18:38
запрос ?
13 Miss1C
 
18.10.12
18:38
Так у меня много реквизитов в документе
14 ЧашкаЧая
 
18.10.12
18:38
ТипыРегистраторов = ТипыДокументов = НаборЗаписейРегистра.Метаданные().СтандартныеРеквизиты.Регистратор.Тип.Типы();
ЕстьПодразделение = Истина;
Для каждого ТипРегистратора из ТипыДокументов Цикл
 МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипРегистратора);
 ЕстьПодразделение = МетаданныеДокумента.Реквизиты.Найти("Подразделение") <> Неопределено;
 Если НЕ ЕстьПодразделение Тогда
    Прервать;
 КонецЕсли;
КонецЦикла;
15 Wobland
 
18.10.12
18:38
(12) ну-ка, ну-ка
16 H A D G E H O G s
 
18.10.12
18:39
(13) И что?
17 Miss1C
 
18.10.12
18:39
(16)Скорость упадет
18 Wobland
 
18.10.12
18:39
(16) сейчас она перечитает (9) и (10)
19 H A D G E H O G s
 
18.10.12
18:40
(17) Задачу всю озвучьте.
20 Miss1C
 
18.10.12
18:41
На 9 останавливаюсь, спасибо за помощь
21 Wobland
 
18.10.12
18:42
(20) а как же (10)?
22 Miss1C
 
18.10.12
19:16
Для Каждого Стр Из Источник Цикл    
           НаборЗаписей = РегистрыНакопления.ПлатежныйБалансПодразделений.СоздатьНаборЗаписей();
           НаборЗаписей.Отбор.Регистратор.Установить(Стр.Регистратор);
           Если Стр.ВидДвижения = ВидДвиженияНакопления.Приход Тогда
               Запись = НаборЗаписей.ДобавитьПриход();
           ИначеЕсли Стр.ВидДвижения = ВидДвиженияНакопления.Расход Тогда
               Запись = НаборЗаписей.ДобавитьРасход();
           КонецЕсли;
           Запись.Период = Стр.Регистратор.Дата;
           Запись.Регистратор = Стр.Регистратор;
           Запись.Сумма = Стр.Сумма;
           Если Стр.Регистратор.Метаданные().Реквизиты.Найти("Подразделение") <> Неопределено Тогда
               Запись.Подразделение = Стр.Регистратор.Подразделение;
           КонецЕсли;
           НаборЗаписей.Записать();
       КонецЦикла;

Расход не записывается, думаю дело в отборе по регистратору
23 Miss1C
 
18.10.12
19:17
Можно добавить запись в регистр не делая отбора?
24 Miss1C
 
18.10.12
19:20
Рома помогай)
25 Amra
 
18.10.12
19:22
(24) Роме и зарплату за тебя получать?)))
26 PR
 
18.10.12
19:22
(23) Без отбора по регистратору нельзя :))
27 Miss1C
 
18.10.12
19:22
(25)Нет)
28 ЧашкаЧая
 
18.10.12
19:55
Подписка при записи набора записей регистра?

КоличествоДвижений = Источник.Количество();
Для Индекс = 0 по КоличествоДвижений - 1 Цикл    
   ЗаписьРегистра = Источник[Индекс];
   НоваяЗапись = НаборЗаписей.Добавить();
   НоваяЗапись.ВидДвижения = ЗаписьРегистра.ВидДвижения;
   НоваяЗапись.Период = ЗаписьРегистра.Период;
   //Запись.Регистратор = Стр.Регистратор;
   // регистратор не нужно т. к. он уже есть в отборе        
   НоваяЗапись.Сумма = ЗаписьРегистра.Сумма;
   Если ЗаписьРегистра.Регистратор.Метаданные().Реквизиты.Найти("Подразделение") <> Неопределено Тогда
               НоваяЗапись.Подразделение = ЗаписьРегистра.Регистратор.Подразделение;
           КонецЕсли;

КонецЦикла;
29 ThreeTONE
 
18.10.12
19:55
попытка подразделение = регистратор.подразделение исключение конецпопытки
30 ЧашкаЧая
 
18.10.12
19:57
(29) Каждый раз когда при отладке включаю флажек "Останавливаться при ошибке" и вываливается ошибка в этой конструкции - вспоминаю писателей такого кода, потом вспоминаю что временами сам так пишу и успокаиваюсь.
31 ThreeTONE
 
18.10.12
20:05
(30) такое много где используется. каждый раз при такой отладке можно указывать строку в настройках ;)
32 hhhh
 
18.10.12
22:32
(31) а так не судьба сделать?

Структ = Новый Структура("Подразделение");
ЗаполнитьЗначенияСвойств(Структ, ЗаписьРегистра.Регистратор);
НоваяЗапись.Подразделение = Структ.Подразделение;
33 PR
 
19.10.12
09:55
Какие ударные темпы по заведению веток на МиСте :))
34 Фрэнки
 
19.10.12
10:08
(29) в этом случае я обычно пишу так:
попытка подразделение = регистратор.подразделение исключение
подразделение = справочники.подразделение.пустаяссылка() конецпопытки
и сверяюсь с настройками в регистре есть ли там запрет на незаполненные значения по этому измерению или нет. Если еще и запрет повешен, то какое-то непустое значение надо бы подставлять