Имя: Пароль:
1C
1С v8
Поиск ТЧ по имени
,
0 zippygrill
 
16.11.13
18:24
Поместил поиск ТЧ в попытке чтобы ошибке не было. Но всеравно ругается на НовыйОбъект[ИмяТабличнойЧастьИсточника]. Как красивее написать поиск ТЧ по имени?

    Для каждого ТабличнаяЧасть Из ДокументОснование.Метаданные().ТабличныеЧасти Цикл
        ИмяТабличнойЧастьИсточника = ТабличнаяЧасть.Имя;
        Попытка
            ИмяТабличнойЧастьПриемника = НовыйОбъект[ИмяТабличнойЧастьИсточника]; //проверим есть у документа приемника такая ТЧ как у источника
            //ИмяТабличнойЧастьПриемника = НовыйОбъект.Метаданные().ТабличныеЧасти.Найти(ИмяТабличнойЧастьИсточника); //проверим есть у документа приемника такая ТЧ как у источника
        Исключение
            ИмяТабличнойЧастьПриемника = Неопределено;
        КонецПопытки;
        
        //Сообщить(ИмяТабличнойЧастьИсточника + "-" + ИмяТабличнойЧастьПриемника);
        Если ИмяТабличнойЧастьПриемника = Неопределено Тогда
            Продолжить;
        КонецЕсли;
        
        НовыйОбъект[ИмяТабличнойЧастьПриемника].Очистить();
1 Error pro
 
16.11.13
18:26
(0) Найти(ИмяТабличнойЧасти)?
2 Поросенок Петр
 
16.11.13
18:27
Попытка создана не для того, чтобы гово*деры пихали её вместо своего унылого кода. Не умеешь пользвовать попытку - не используй.

А про метаданные здорово. Накуренный чоли?
3 zippygrill
 
16.11.13
18:29
(2)не хочешь не используй попытки. Твое дело.
Не понял, что тебе не нравиться в использование свойтсво метаданные()?
4 Поросенок Петр
 
16.11.13
18:29
Если у приемника нет нужной табличной части, чистое, кошерное исключение будет лучше всякой шняги, которую вы можете придумать.
5 Поросенок Петр
 
16.11.13
18:31
Другой момент, когда ловить это исключение. Процедура поиска чего-то там это хреновое место для этого.
6 zippygrill
 
16.11.13
18:33
(5) наверное можно обойтись и без попытки, но смысл моей попытки в том чтобы при возникнование какой либо ошибки обработка не остановилась.
7 NcSteel
 
16.11.13
18:36
НовыйОбъект <> ДокументОснование


Поэтому и Табчасти ДокументОснование нет в списке табчастей "НовыйОбъект".
8 zippygrill
 
16.11.13
18:37
(7) Естественно. Разные типы.
9 NcSteel
 
16.11.13
18:38
(8) Тогда не понятно почему ты удивляешся.
10 zippygrill
 
16.11.13
18:40
(9) Да я не удивляюсь вообще :)
Всего лишь хочу обработать момент когда у приемника нет такой ТЧ как в источнике.
11 NcSteel
 
16.11.13
18:41
(10) А почему не искать его среди метаданных? В данном случае скорее всего у приемника есть такой реквизит (или другое свойство), но ни как не ТЧ.
12 zippygrill
 
16.11.13
18:44
(11) а вот мне нужны только ТЧ и ни какое другое свойство или реквизит объекта.
13 NcSteel
 
16.11.13
18:45
(12) ТОгда почему ты не ищешь среди ТЧ?
14 zippygrill
 
16.11.13
18:46
(13)а это что НовыйОбъект.Метаданные().ТабличныеЧасти.Найти(ИмяТабличнойЧастьИсточника)
15 zippygrill
 
16.11.13
18:56
КоллекцияОбъектовМетаданных (MetadataObjectCollection)
Найти (Find)
Синтаксис:

Найти(<Наименование>)
Параметры:

<Наименование> (обязательный)

Тип: Строка.
Наименование объекта описания метаданного.

Что метод не возвращает Неопределено если не найдено ничего.
16 zippygrill
 
16.11.13
18:59
ИмяТабличнойЧастьПриемника = НовыйОбъект.Метаданные().ТабличныеЧасти.Найти(ИмяТабличнойЧастьИсточника); //проверим есть у документа приемника такая ТЧ как у источника

ругается что метод объекта(Метаданные) не обнаружен.
17 Oleg_ka
 
16.11.13
19:06
Хорошо.
Поставь точку останова ДО этой строчки и посмотри чему равен НовыйОбъект?
18 zippygrill
 
16.11.13
19:11
не могу. это внешняя обработка по заполнению тч
19 mehfk
 
16.11.13
19:18
(18) Создай форму для обработки, в ней реквизит ссылка на документ, в обработке нажатия кнопки вызови процедуру инициализировать с нужными параметрами и отлаживай хоть до бесконечности.
20 NcSteel
 
16.11.13
19:49
(14) В предоставленном листинге в посте (0) нет этого кода.

Если ты подобное используешь, тогда зачем тут (0)?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.