|
Как прочитать набор записей регистра сведений - все значения, т.е. всю таблицу регист | ☑ | ||
|---|---|---|---|---|
|
0
roman2
15.04.09
✎
16:39
|
Пишу код:
Для каждого ЭМ из МассивРегистров цикл ОбработкаПрерыванияПользователя(); НаборЗаписей = РегистрыСведений[ЭМ].СоздатьНаборЗаписей(); НаборЗаписей.Прочитать(); если НаборЗаписей.Количество()>0 тогда ЗаписатьXML(ЗаписьXML, НаборЗаписей); КонецЕсли; КонецЦикла; Набор всегда пустой. Что не так? |
|||
|
1
SMakcik
15.04.09
✎
16:41
|
а что такое МассивРегистров
|
|||
|
2
roman2
15.04.09
✎
16:42
|
МассивРегистров = Новый Массив;
МассивРегистров.Добавить("ПервоначальныеСведенияОСБухгалтерскийУчет"); МассивРегистров.Добавить("МестонахождениеОСБухгалтерскийУчет"); МассивРегистров.Добавить("ПараметрыАмортизацииОСБухгалтерскийУчет"); МассивРегистров.Добавить("ГрафикиАмортизацииОСБухгалтерскийУчет"); МассивРегистров.Добавить("СпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет"); |
|||
|
3
SMakcik
15.04.09
✎
16:45
|
ну и подумй тогда что ты пишешь?
Чтобы прочитать набор его надо найти, получить |
|||
|
4
roman2
15.04.09
✎
16:48
|
Нужно установить отбор и прочитать.
Что значит получить? |
|||
|
5
SMakcik
15.04.09
✎
16:51
|
если бы ты написал так, тогда другое дело
Для каждого ЭМ из МассивРегистров цикл ОбработкаПрерыванияПользователя(); Менеджер = РегистрыСведений[ЭМ]; Выборка = Менеджер.Выбрать(Отбор); Пока Выборка.Следующий() Цикл Менеджер1 = Выборка.ПолучитьМенеджерЗаписи(); Менеджер1.Прочитать(); ЗаписатьXML(ЗаписьXML, Менеджер1); КонецЦикла; КонецЦикла; |
|||
|
6
Defender aka LINN
15.04.09
✎
16:52
|
Выбрать * из РегистрСведений.ИмяРегистра
Хотя это один фиг не поможет - их же еще явно надо будет куда-то записывать потом :) |
|||
|
7
roman2
15.04.09
✎
16:53
|
(5)
А ОТБОР какой? |
|||
|
8
Kom-off
15.04.09
✎
16:54
|
В (2) все регистры подчинены регистратору, поэтому необходимо для получения наборов записей перед НаборЗаписей.Прочитать(); установить отбор по регистратору, ну а для этого сначала отобрать те регистраторы, наборы записей по которым надо выгружать.
|
|||
|
9
Kom-off
15.04.09
✎
16:55
|
...и по каждому получать свой набор записей отдельно...
|
|||
|
10
SMakcik
15.04.09
✎
16:55
|
инструкция тебе в помощь. Хоть немного подумай.
За тебя никто ничего писать не будет. Мысль я тебе дал. в (6) тоже изложена, только там потом надо будет немного дописать чтобы записать набор. |
|||
|
11
roman2
15.04.09
✎
17:00
|
(10) не думаю что ты мне новое сообщил. Про отбор я и так знаю. Я хотел без отбора прочесть все))
|
|||
|
12
SMakcik
15.04.09
✎
17:02
|
если никто тебе не сообщил новое, тогда вообще для чего ты здесь? задай себе вопрос.
Ты же все знаешь и умеешь. Тему можно закрывать |
|||
|
13
roman2
15.04.09
✎
17:12
|
(12) вот как получилось
МассивРегистров = Новый Массив; МассивРегистров.Добавить("ПервоначальныеСведенияОСБухгалтерскийУчет"); МассивРегистров.Добавить("МестонахождениеОСБухгалтерскийУчет"); МассивРегистров.Добавить("ПараметрыАмортизацииОСБухгалтерскийУчет"); МассивРегистров.Добавить("ГрафикиАмортизацииОСБухгалтерскийУчет"); МассивРегистров.Добавить("СпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет"); Для каждого ЭМ из МассивРегистров цикл ОбработкаПрерыванияПользователя(); МенеджерНабораЗаписей = РегистрыСведений[ЭМ]; Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ РегистрСведений." + ЭМ); РезультатЗапросаПоСоставу = Запрос.Выполнить(); Если РезультатЗапросаПоСоставу.Пустой() Тогда продолжить КонецЕсли; КолонкиРегистра = РезультатЗапросаПоСоставу.Колонки; // выгрузка регистров осуществляется через его набор записей НаборЗаписей = МенеджерНабораЗаписей.СоздатьНаборЗаписей(); Отбор = НаборЗаписей.Отбор; СтрокаПолейОтбора = ""; Для Каждого ЭлементОтбора Из Отбор Цикл Если Не ПустаяСтрока(СтрокаПолейОтбора) Тогда СтрокаПолейОтбора = СтрокаПолейОтбора + ","; КонецЕсли; СтрокаПолейОтбора = СтрокаПолейОтбора + ЭлементОтбора.Имя; КонецЦикла; // строим запрос для выбора из таблицы регистра РАЗЛИЧНЫХ полей отбора ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ " + СтрокаПолейОтбора + " ИЗ РегистрСведений." + ЭМ; Запрос.Текст = ТекстЗапроса; РезультатЗапросаПоЗначениямОтбора = Запрос.Выполнить(); ВыборкаИзРезультата = РезультатЗапросаПоЗначениямОтбора.Выбрать(); // читаем наборы записей с различным составом отбора и записываем их Пока ВыборкаИзРезультата.Следующий() Цикл Для Каждого Колонка Из РезультатЗапросаПоЗначениямОтбора.Колонки Цикл Отбор[Колонка.Имя].Значение = ВыборкаИзРезультата[Колонка.Имя]; Отбор[Колонка.Имя].ВидСравнения = ВидСравнения.Равно; Отбор[Колонка.Имя].Использование = Истина; КонецЦикла; НаборЗаписей.Прочитать(); если НаборЗаписей.Количество()>0 тогда ЗаписатьXML(ЗаписьXML, НаборЗаписей); КонецЕсли; КонецЦикла; КонецЦикла; |
|||
|
14
roman2
15.04.09
✎
17:13
|
Всем спасибо за участие.
|
|||
|
15
SMakcik
15.04.09
✎
17:19
|
легче нет ничего чем скопировать чужой код, да еще и не разобравшись в нем. Сразу этого сделать нельзя было. :))
ЛЕНЬ ЧЕЛОВЕЧЕСКАЯ ЭТО ппц. |
|||
|
16
roman2
15.04.09
✎
17:24
|
(15) там только фрагмент кода чужой.
А прикрутить нужно тоже уметь. |
|||
|
17
Kom-off
15.04.09
✎
17:27
|
(13) Сильно.
|
|||
|
18
SMakcik
15.04.09
✎
17:30
|
(16) ну конечно. Верхний цикл поставить ой как сложно ))).
Ты кому рассказываешь то. (17) просто когда не сильно понимается, что нужно вот и все подряд пишется. И пофиг как, что, зачем это будет. |
|||
|
19
roman2
15.04.09
✎
17:31
|
(18) Если есть время напиши свой вариант - проще. А критиковать много ума не надо.
|
|||
|
20
SMakcik
15.04.09
✎
17:33
|
я тебе написал. и ничем он не отличается.
подумать просто необходимо иногда |
|||
|
21
roman2
15.04.09
✎
17:39
|
(20) ты сколько уже программируешь в 1с?
|
|||
|
22
SMakcik
15.04.09
✎
17:41
|
месяц
|
|||
|
23
roman2
15.04.09
✎
17:42
|
а до этого?
|
|||
|
24
SMakcik
15.04.09
✎
17:42
|
что до этого?
|
|||
|
25
Kom-off
15.04.09
✎
17:43
|
(19)
МассивРегистров = Новый Массив; МассивРегистров.Добавить("ПервоначальныеСведенияОСБухгалтерскийУчет"); МассивРегистров.Добавить("МестонахождениеОСБухгалтерскийУчет"); МассивРегистров.Добавить("ПараметрыАмортизацииОСБухгалтерскийУчет"); МассивРегистров.Добавить("ГрафикиАмортизацииОСБухгалтерскийУчет"); МассивРегистров.Добавить("СпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РегистрСведенийПервоначальныеСведенияОСБухгалтерскийУчет.Регистратор КАК Ссылка |ИЗ | РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет КАК РегистрСведенийПервоначальныеСведенияОСБухгалтерскийУчет |СГРУППИРОВАТЬ ПО | РегистрСведенийПервоначальныеСведенияОСБухгалтерскийУчет.Регистратор | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | РегистрСведенийМестонахождениеОСБухгалтерскийУчет.Регистратор |ИЗ | РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК РегистрСведенийМестонахождениеОСБухгалтерскийУчет |СГРУППИРОВАТЬ ПО | РегистрСведенийМестонахождениеОСБухгалтерскийУчет.Регистратор | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | РегистрСведенийПараметрыАмортизацииОСБухгалтерскийУчет.Регистратор |ИЗ | РегистрСведений.ПараметрыАмортизацииОСБухгалтерскийУчет КАК РегистрСведенийПараметрыАмортизацииОСБухгалтерскийУчет |СГРУППИРОВАТЬ ПО | РегистрСведенийПараметрыАмортизацииОСБухгалтерскийУчет.Регистратор | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | РегистрСведенийГрафикиАмортизацииОСБухгалтерскийУчет.Регистратор |ИЗ | РегистрСведений.ГрафикиАмортизацииОСБухгалтерскийУчет КАК РегистрСведенийГрафикиАмортизацииОСБухгалтерскийУчет |СГРУППИРОВАТЬ ПО | РегистрСведенийГрафикиАмортизацииОСБухгалтерскийУчет.Регистратор | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | РегистрСведенийСпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет.Регистратор |ИЗ | РегистрСведений.СпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет КАК РегистрСведенийСпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет |СГРУППИРОВАТЬ ПО | РегистрСведенийСпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет.Регистратор |"; ТЗРегистраторы = Запрос.Выполнить().Выгрузить(); Для Каждого ЭМ Из МассивРегистров Цикл ОбработкаПрерыванияПользователя(); Для Каждого ТекСтрока Из ТЗРегистраторы Цикл НаборЗаписей = РегистрыСведений[ЭМ].СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ТекСтрока.Ссылка); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() > 0 Тогда ЗаписатьXML(ЗаписьXML, НаборЗаписей); КонецЕсли; КонецЦикла; КонецЦикла; |
|||
|
26
Kom-off
15.04.09
✎
17:44
|
(25) и, в общем случае, XML файл будет меньше.
|
|||
|
27
roman2
15.04.09
✎
17:55
|
(25) вот это дело!
|
|||
|
28
Kom-off
15.04.09
✎
17:57
|
Вообщем то, я согласен с SMakcik и писал код в его поддержку. И, думаю, что это надо было бы самому написать - лучше запомнится.
|
|||
|
29
SMakcik
15.04.09
✎
17:58
|
(28) + тебе. :)
|
|||
|
30
roman2
15.04.09
✎
18:04
|
(26) (29) спасибо за внимание к моему вопросу.
(26) запрос конечно можно было сгениерировать в несколько строк. Ну да ладно, мы же не на олимпиаде)) Закрываем ветку. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |