Имя: Пароль:
1C
1С v8
Как получить движения по типу табличной части документа Корректировка Записей Ре
,
0 web_profiler
 
02.12.14
11:51
Суть:
    Для каждого Табличка Из Док.метаданные().ТабличныеЧасти Цикл
        //отсортируем не заполненные регистры
        Если Док[Табличка.Имя].Количество() <> 0 Тогда
            Для Каждого Стр Из Док[Табличка.Имя] Цикл
                //тут мне необходимо чтоб иолучилось так: НаборЗаписей = РегистрНакопления.Продажи.СоздатьНаборЗаписей();
            КонецЦикла;
            
        КонецЕсли;
        
    КонецЦикла;

Есть документ Корректировки, перебираю заполненные табл.части и по имени таб части мне необходимо получить все записи

Хелп!
1 ДенисЧ
 
02.12.14
11:53
в КЗР нет табчастей, кроме имён регистра...
2 ДенисЧ
 
02.12.14
11:54
Из движений получай
3 web_profiler
 
02.12.14
11:55
(1) знаю, есть имя таб части регистра в Док[Табличка.Имя]
4 web_profiler
 
02.12.14
11:55
я ж и пишу, как по имени регистра обратиться к набору записей?
5 ДенисЧ
 
02.12.14
11:56
Движения[ИмяРегистра]
6 web_profiler
 
02.12.14
12:00
(5) По ссылке на документ не вижу Движений
7 web_profiler
 
02.12.14
12:01
Почему я движений не вижу? они же есть!!!
8 web_profiler
 
02.12.14
12:02
Ааааа, нашел... Док.Метаданные().Движения
9 Maxus43
 
02.12.14
12:02
ещё раз. Движения не хранятся в документе КЗР. Там только имена регистров
10 Maxus43
 
02.12.14
12:03
(8) не там ищешь
11 web_profiler
 
02.12.14
12:03
Док.Метаданные().Движения[Док[Табличка.Имя]] получение по индексу..... :(
12 web_profiler
 
02.12.14
12:04
(8) ребята, запутался совсем
13 pessok
 
02.12.14
12:05
(11) зачем тебе метаданные документа?
ДокументСсылка.Движения[ИмяРегистра].Прочитать();
14 Maxus43
 
02.12.14
12:06
Для каждого Стр Из ТаблицаРегистровНакопления Цикл
НаборЗаписейРН = РегистрыНакопления[Стр.Имя].СоздатьНаборЗаписей();
НаборЗаписейРН.Отбор.Регистратор.Установить(СсылкаНаКЗР);
наборЗаписейРН.Прочить(); //вот после этого
КонецЦикла;

Или через Движения. Смотря что надо сделать
15 pessok
 
02.12.14
12:07
(13) это я погорячился. ДокументОбъект, есессно
16 web_profiler
 
02.12.14
12:07
(14) а если не РегистрНакопления?
17 Maxus43
 
02.12.14
12:08
(16) там для каждого вида регистра своя ТЧ в документе, погляди хоть в конфигураторе на документ КЗР
18 pessok
 
02.12.14
12:09
(16)
Для Каждого Таблица Из Док.Метаданные().ТабличныеЧасти Цикл

Для каждого Стр Из Таблица Цикл
НаборЗаписейРН = РегистрыНакопления[Стр.Имя].СоздатьНаборЗаписей();
НаборЗаписейРН.Отбор.Регистратор.Установить(СсылкаНаКЗР);
наборЗаписейРН.Прочить(); //вот после этого

КонецЦикла;

КонецЦикла
19 Maxus43
 
02.12.14
12:10
(16) не, там ТЧ с разными регистрами, не тока накопления
20 pessok
 
02.12.14
12:10
(18) так не работает, но смысл ясен

Для Каждого Стр Из Док[таблица.имя]
21 Maxus43
 
02.12.14
12:10
(19)>(18)
22 web_profiler
 
02.12.14
12:11
(18) там не только РегистрНакопления - там  еще могут быть и регистрСведений и еще РегистрБухгалтерии
23 web_profiler
 
02.12.14
12:11
во черт задачка. вроде все элементарно, ан нет...
24 Maxus43
 
02.12.14
12:12
Ещё повторю - смотря что надо делать с движениями. Если менять конкретный набор - то через набор записей, если менять все наборы - то через движения, если просто смотреть - то запросом
25 web_profiler
 
02.12.14
12:12
Стр.Имя у меня название регистра с типом строка
26 web_profiler
 
02.12.14
12:13
Мож както так Метаданные.НайтиПоТипу(Тип)
27 web_profiler
 
02.12.14
12:14
как из строки названия регистра получить его тип тогда?
28 Maxus43
 
02.12.14
12:17
(27) Там ТЧ называются по разному, сколько раз можно посторять.
Для РН это ТЧ - ТаблицаРегистровНакопления
29 web_profiler
 
02.12.14
12:18
(28) да понял я
30 web_profiler
 
02.12.14
12:19
как мне из ТаблицаРегистровНакопления (ТаблицаРегистровСведений...)

получить

РегистрНакопления
РегистрСведений
...
соответственно
31 Жан Пердежон
 
02.12.14
12:19
(0) связи строк ТЧ с движениями в 1С нет
32 pessok
 
02.12.14
12:19
(28) ну я потому и написал ему, что сначала надо обходить по метаданным все тч, а потом уже внутри этих тч обходить названия регистров
33 web_profiler
 
02.12.14
12:19
(31) о боги...
34 web_profiler
 
02.12.14
12:20
(31) Ну и че делать?
35 pessok
 
02.12.14
12:23
(34) что не получается то?
36 web_profiler
 
02.12.14
12:24
Есть имя регистра, как получить его приналежность к конкретному регистру?
37 web_profiler
 
02.12.14
12:25
К примеру "Продажи"

Метаданные.НайтиПоПолномуНаименованию("Продажи") и получаю тип РегистрНакопления

Но это так не работает
38 web_profiler
 
02.12.14
12:25
:(
39 pessok
 
02.12.14
12:27
(37) РегистрыНакопления["Продажи"].СоздатьНаборЗаписей()
40 web_profiler
 
02.12.14
12:30
(39) необязательно "продажи" регистрнакопления!!!!
41 web_profiler
 
02.12.14
12:30
а если он регистрсведений?
42 web_profiler
 
02.12.14
12:30
мне как раз надо и узнать чей он
43 ssh2QQ6
 
02.12.14
12:32
(36) СП:

МетаданныеРегистра = Метаданные.РегистрыНакопления.Найти(ИмяРегистра);
44 web_profiler
 
02.12.14
12:35
че так чтоли? МетаданныеРегистра = Метаданные.РегистрыНакопления.Найти(ИмяРегистра);
Если МетаданныеРегистра = неопределено тогда
    МетаданныеРегистра = Метаданные.РегистрыСведений.Найти(ИмяРегистра);
конецесли;

Если МетаданныеРегистра = неопределено тогда
    МетаданныеРегистра = Метаданные.РегистрыБухгалтерии.Найти(ИмяРегистра);
конецесли;

Так чтоли?
45 web_profiler
 
02.12.14
12:35
(44) гов...код какойто получается :(
46 web_profiler
 
02.12.14
12:36
(44) так-то конечно я его найду
47 Maxus43
 
02.12.14
12:42
Имя регистра у РН и РС могут быть одинаковые, поиском - не надёжно.

Делай нормально...
Для каждой ТЧ отдельный цикл, там ты знаешь вид уже
48 web_profiler
 
02.12.14
12:47
получился вот такой гов...код   :( сам себе руки отбил бы

            Для Каждого Стр Из Док[Табличка.Имя] Цикл
                Имя = Неопределено;
                МетаданныеРегистра = Метаданные.РегистрыНакопления.Найти(Стр.Имя);
                    Если МетаданныеРегистра <> неопределено Тогда
                        Имя = РегистрыНакопления;
                    КонецЕсли;
                    
                Если МетаданныеРегистра = неопределено тогда
                    МетаданныеРегистра = Метаданные.РегистрыСведений.Найти(Стр.Имя);
                    Если МетаданныеРегистра <> неопределено Тогда
                        Имя = РегистрыСведений;
                    КонецЕсли;
                КонецЕсли;
                
                Если МетаданныеРегистра = неопределено тогда
                    МетаданныеРегистра = Метаданные.РегистрыБухгалтерии.Найти(Стр.Имя);
                    Если МетаданныеРегистра <> неопределено Тогда
                        Имя = РегистрыБухгалтерии;
                    КонецЕсли;
                КонецЕсли;
                
                Если МетаданныеРегистра = неопределено тогда
                    МетаданныеРегистра = Метаданные.РегистрыРасчета.Найти(Стр.Имя);
                    Если МетаданныеРегистра <> неопределено Тогда
                        Имя = РегистрыРасчета;
                    КонецЕсли;
                КонецЕсли;
49 Maxus43
 
02.12.14
12:48

(48) выкинь и напиши нормально

50 web_profiler
 
02.12.14
12:48
(47) как правильнее?
51 Maxus43
 
02.12.14
12:49

(50) Для каждой ТЧ отдельный цикл, там ты знаешь вид уже.
Какая буква непонятна?

52 web_profiler
 
02.12.14
12:50
обходить ТЧ и проверять
Если Табличка.Имя = "ТаблицаРегистровСведений" тогда
иначеесли Табличка.Имя = "ТаблицаРегистровНакопления" тогда
....
53 Maxus43
 
02.12.14
12:51

(52) можно и так

54 web_profiler
 
02.12.14
12:54
(53) согласен так правильнее, но все-равно как-то криворуко получается :)

Чувствую, что есть правильнее вариант. GROOVY бы мне руки отбил бы точно
Независимо от того, куда вы едете — это в гору и против ветра!