Имя: Пароль:
1C
1С v8
Как перебрать записи регистра?
0 PDV64
 
21.09.12
11:28
Всем доброе утро!
Хочу обойти и вывести  все записи регистра в обработке. Написал код, а внутрений цикл не работает - пишет об ошибке итерации при испонении.
Может кто-л. навести на правильную мысль - как из это решить?

Спасибо.


       ВыводитьСпециальныеСообщения=Истина;//Временное
       Для Каждого Регистр Из Документ.Движения Цикл
                   Если ВыводитьСпециальныеСообщения Тогда Сообщить("Регистр - "+Регистр.Имя)
                   КонецЕсли; //Статистика
                                   
           Для Каждого Док Из РегистрыНакопления[Регистр.Имя] Цикл
                   Если ВыводитьСпециальныеСообщения Тогда Сообщить(Регистр.Регистратор)
                   КонецЕсли; //Статистика
               
           КонецЦикла;
                       
       КонецЦикла;
1 Skylark
 
21.09.12
11:30
Даже не знаю, что и сказать...
2 yanejsh
 
21.09.12
11:31
запрос?
3 Skylark
 
21.09.12
11:31
Если тебе нужен отчет о движениях документа, посмотри любую типовую что ли
4 Strogg
 
21.09.12
11:33
Пятничная ветка!
5 unregistered
 
21.09.12
11:33
(3) У автора тут же сломается мозг.
Кто отвечать будет?
6 unregistered
 
21.09.12
11:34
(0) Как ты думаешь что у тебя в переменной "Регистр" внутри цикла (в итераторе).
7 PDV64
 
21.09.12
11:34
Мне нужно посчитать, сколько доков определенного вида было проведено в определенном регистре.
8 nrol
 
21.09.12
11:34
Посмотри процедуру в любой типовой конфигурации "Движения по документу". Там именно перебор по всем регистрам и осуществляется.
9 PDV64
 
21.09.12
11:35
В нем имя регистра я отладчик запускал и смотрел
10 PDV64
 
21.09.12
11:36
в типовых все работает, только там регистр явно задан, а здесь Регистр - переменный
11 PDV64
 
21.09.12
11:36
вернее имя регистра  переменное
12 unregistered
 
21.09.12
11:39
(9) Вот так прямо в отладчике и написано "Регистр - имя регистра."
Видимо у меня какой-то другой отладчик...
13 nrol
 
21.09.12
11:40
ВЫБРАТЬ КОЛИЧЕСТВО(Регистратор) ИЗ Регистр
ГДЕ Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
14 unregistered
 
21.09.12
11:40
(7) >> нужно посчитать, сколько доков определенного вида было проведено в определенном регистре.

Код из (0) какое имеет отношение к поставленной задаче?
В нём ты пляшешь от документа, а не от регистра...
15 vmv
 
21.09.12
11:41
(13) ПРЕДАТЕЛЬ!

тс шел по пути истеного г-кодера, зачем сбил с пути!?
16 Живой Ископаемый
 
21.09.12
11:41
ВЫБРАТЬ
   ТИПЗНАЧЕНИЯ(ВзаиморасчетыСКонтрагентами.Регистратор) КАК Поле1,
   СУММА(1) КАК Поле2
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами

СГРУППИРОВАТЬ ПО
   ТИПЗНАЧЕНИЯ(ВзаиморасчетыСКонтрагентами.Регистратор)
17 Живой Ископаемый
 
21.09.12
11:42
2(13) Ему не количество различных документов,а количество различных ВИДОВ документов
18 IronDemon
 
21.09.12
11:43
(16) А вдруг у автора 8.0?
19 Живой Ископаемый
 
21.09.12
11:43
20 Живой Ископаемый
 
21.09.12
11:44
2(18) То тогда что? Мне его усыновить? Пусть обновится.
21 PDV64
 
21.09.12
11:46
у автора 8.2 приложение версия 14.537
22 vmv
 
21.09.12
11:47
(21) крутыш
23 PDV64
 
21.09.12
11:47
мне нужно количество записей в регистре, проведенных одним типом документа
24 vmv
 
21.09.12
11:50
ГДЕ

ТИПЗНАЧЕНИЯ(ТаблБдРег.Регистратор) = ТИП(Документ.Нокладньая)
25 vmv
 
21.09.12
11:52
+(24) собрать все возможные варинаты типов документов в регистре можно (через метаданные, пакетный запрос, вложенный запрос), но вот чтобы проверять типы в запросе в множетсве различных типов - это стоит дорого
26 PDV64
 
21.09.12
11:53
В переменной Регистр - коллекция имен регистров из свойства Документ.Движения, не заморачивайтесь - это проверено, не включается цикл из-за ошибки итератора. не пнимаю, что неправильно в записи, если имя регистра задавать явно, то вложенный цикл тоже не работает.
Запрос мне будет более трудоемко, потому что нужно делать еще некоторые действия с самими записями.
27 PDV64
 
21.09.12
11:54
vmv! - Вот - я это и пытаюсь сделать, что мне поправить?
28 SanGvin
 
21.09.12
11:56
(26) хех... НЕТУ итератора, автор! НЕТУ!!! тебе уже почти правильно написали в (13) как сделать запросам - так и делай ничего там сложного нет
29 vmv
 
21.09.12
11:56
(27) я не использую менеджеры регистров при чтении данных, ибо это абсурдно, а учить этому абсурдно вдвойне
30 Живой Ископаемый
 
21.09.12
11:58
http://screencast.com/t/vwM8uAnu

ВЫБРАТЬ
   ТИПЗНАЧЕНИЯ(ВзаиморасчетыСКонтрагентами.Регистратор) КАК ТипРегистратора,
   ВзаиморасчетыСКонтрагентами.Регистратор КАК Регистратор,
   1 КАК Счетчик
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
ИТОГИ
   СУММА(Счетчик)
ПО
   ТипРегистратора,
   Регистратор
31 vmv
 
21.09.12
11:59
вопрос знатокам

что быстрее

ГДЕ Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг

/или/

ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)

на первый взгляд 1-е, так не юзаються функции запроса, но все же?
32 SanGvin
 
21.09.12
12:03
(31) первое быстрее раза в 2
33 Живой Ископаемый
 
21.09.12
12:04
2(32) На любой СУБД при любых объемах и настройках?
34 PDV64
 
21.09.12
12:06
Уважаемые коллеги,
запросом я уже все сделал, немного не так, но сойдет. Но это не единственная задача цикла.

Мне нужно запустить обозначеный цикл. Может кто-то посоветовать как или указать в чем моя ошибка?
35 vmv
 
21.09.12
12:07
ССЫЛКА Документ.ПоступлениеТоваровУслуг

для выполнения этого - запрос должен ведь все равно создать некий образ пустого типа и сравнить его в условии, т.е. фактически выйти на 2-й вариант.

потому я и вопрошаю к знатокам)
36 vmv
 
21.09.12
12:07
(34) прелюдия бесплатно, остальное за бабло чувак
37 SanGvin
 
21.09.12
12:09
(33) насчет раза в 2 - загнул, но и на файловом и на MS SQL щас проверил результат один примерно и тот же
http://www.tinyuploads.com/gallery/view/FddI94
2 + 2 = 3.9999999999999999999999999999999...