![]() |
![]() |
|
Как получить реквизит у регистра сведений? | ☑ | ||
---|---|---|---|---|
0
Vadim
15.06.05
✎
16:22
|
Как получить реквизит у регистра сведений?
|
|||
1
Факер_S
15.06.05
✎
16:26
|
запрос рулит
|
|||
2
Vadim
15.06.05
✎
17:01
|
(1) а пример?
|
|||
3
vvv29
15.06.05
✎
17:07
|
правая клавиша мыши - конструктор запроса
|
|||
4
Vadim
15.06.05
✎
17:29
|
вообще-то без запроса хотелось, может где в типовой есть использование справочника и регистра сведений, получается выборка элементов справочника при определенном наборе значений из регистра сведений
|
|||
5
Vadim
15.06.05
✎
17:33
|
нм = НачалоМесяца(дата);
км = КонецМесяца(дата); Запрос = Новый Запрос; Запрос.Текст = " |Выбрать * |ИЗ РегистрСведений.СостояниеИнтернетУслуг |Где ((Состояние = Перечисления.СостояниеИнтернетУслуги.Действует) и (ДатаСостояния >= &нм)) |и ((Состояние = Перечисления.СостояниеИнтернетУслуги.Расторгнута и (ДатаСостояния <= &км))"; Запрос.УстановитьПараметр("нм",нм); Запрос.УстановитьПараметр("км",км); ТЗ = Запрос.Выполнить().Выгрузить(); |
|||
6
Vadim
15.06.05
✎
17:54
|
Так всеже как без запроса получить реквизит???
|
|||
7
vvv29
15.06.05
✎
18:09
|
почему без запроса?, религия не позволяет?, в 8-ке ВСЕ надо делать запросами, это тебе не 7-ка.
|
|||
8
bdrag
15.06.05
✎
18:14
|
РегистрСведений переодический или нет?
Для периодического: Отбор = Новый Структура("ИмяИзмерения1, ИмяИзмерения2", ЗначениеИзмерения1, ЗначениеИзмерения2); тзСрез = РегистрыСведений.МойРегистр.СрезПоследних(Дата, Отбор); // тзСрез - таблица значений Для каждого СтрокаСрез из тзСрез Цикл Сообщить("Реквизит == " + Строка.ИмяРеквизит); КонецЦикла; Для непереодического есть аналогичный метод, название напамять не помню. А вообще, Синтакс-помощник рулит. |
|||
9
vvv29
15.06.05
✎
18:18
|
(8)Зачем, пусть бы запросами пользоваться учился
|
|||
10
Vadim
15.06.05
✎
19:28
|
Запрос это хорошо, но тут ... 3-х этажное если получаться будет.
Придется под запрос регистр сведений переписывать :( |
|||
11
Vadim
15.06.05
✎
19:38
|
Вот вы умные, подскажите как в запросе написать, чтобы если значение
|и ((Состояние = Перечисления.СостояниеИнтернетУслуги.Расторгнута и (ДатаСостояния <= &км))"; Отсутствует Перечисления.СостояниеИнтернетУслуги.Расторгнута и проверять его не счем и отбор будет пустой, а возможно и заполнен. Регистр сведений аналогичен СосстояниеОС. |
|||
12
vvv29
15.06.05
✎
19:53
|
ИМХО делай запросом
|
|||
13
PR
15.06.05
✎
19:55
|
Так вот это как раз и написано в ЖКК да и в типовых на каждом шагу, читай, ошибка у тебя в запросе
|
|||
14
Vadim
15.06.05
✎
19:57
|
(13) у меня там три ошибки
(12) ладно буду дальше думать |
|||
15
Vadim
15.06.05
✎
20:16
|
Вариант синтаксиса: Для непериодического регистра
Синтаксис: Выбрать(<Отбор>, <Порядок>) Параметры: <Отбор> (необязательный) Тип: Структура. Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры - значение отбора по этому полю. В качестве полей для отбора могут задаваться измерения или реквизиты, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или установлен признак "Ведущее". Важно! Структура может содержать только один элемент. Значение по умолчанию: Неопределено <Порядок> (необязательный) Тип: Строка. Может содержать слово "Возр" или "Убыв", тогда стандартный порядок будет использоваться с указанным направлением. Может содержать имя поля (реквизита или измерения для которых указано индексирование) и через пробел слово "Возр" или "Убыв", тогда упорядочивание будет производится по указанному полю в указанном порядке. Значение по умолчанию: "Возр" Возвращаемое значение: Тип: РегистрСведенийВыборка.<Имя регистра сведений>. Описание: Формирует выборку записей регистра сведений. Пример: Курсы = РегистрыСведений.КурсыВалют; ОтборВалют = Новый Структура("Валюта"); ОтборВалют.Валюта = ВыбВалюта; ВыборкаКурсовВалют = Курсы.Выбрать(,,ОтборВалют); Пока ВыборкаКурсовВалют.Следующий() Цикл Сообщить("Дата " + ВыборкаКурсовВалют.Период + " Валюта "+СокрЛП(ВыборкаКурсовВалют.Валюта) + ", Курс "+ ВыборкаКурсовВалют.Курс ); КонецЦикла; |
|||
16
Vadim
16.06.05
✎
18:05
|
пришлось пределать РС и алгоритм
ссс = СпрВыборка.Ссылка; ОтборРС = Новый Структура("ИД, Состояние",ссс,Перечисления.СостояниеИнтернетУслуги.Действует); СтруктураРесурсаД = РегСвед_СостояниеИнтернетУслуг.Получить(ОтборРС); Если СтруктураРесурсаД.ДатаОкончания >= нм и СтруктураРесурсаД.ДатаСостояния <= км Тогда ОтборРС = Новый Структура("ИД, Состояние",ссс,Перечисления.СостояниеИнтернетУслуги.Приостановлена); СтруктураРесурсаП = РегСвед_СостояниеИнтернетУслуг.Получить(ОтборРС); Если СтруктураРесурсаП.ДатаСостояния <= нм и СтруктураРесурсаП.ДатаОкончания >= км Тогда |
|||
17
Факер_S
16.06.05
✎
18:11
|
пиши запросом
|
|||
18
Vadim
17.06.05
✎
09:01
|
(17)запросом реквизит не получить, а только после запроса методом "Выбрать", а зачем мне запрос если данных много, а затем еще начинать делать цикл из "Выбрать"???
Я переделал РегСвед, избавился от реквизита и добавил ресерс и всё. |
|||
19
Vadim
17.06.05
✎
09:03
|
+ 1."данных немного"
2. покажи пример по поводу (16) Структура РС Измерение: Услуга (справочник), Состояние(перечисление), Ресурс: ДатаНачала, ДатаОкончания. |
|||
20
Vadim
17.06.05
✎
09:04
|
+ Непериодический, подчинен регистратору
|
|||
21
Факер_S
17.06.05
✎
09:16
|
(17) вся конфигурация УПП написана на запросах и везде все удается получить
если у тебя файловая версия, то использование запроса мало эффективно, ну а если серверная то имхо только запросом. Запрос быстрее выполняется, нагрузка на систему меньше. На форуме часто возникает вопрос: поставили v8 а она медленее работает чем v7, возникают конфликты блокировок и тд. Когда начинаешь уточнять оказывается конфу немного дописали, а допиcывали семерышными методами: выборкой перебором и тд. Вот и получается дай челку "микроскоп" а он им гвозди забивать начинает |
|||
22
Vadim
17.06.05
✎
16:36
|
(21) в моем случае (гляди 16) переборов нет. а про достоинства и недостатки "сами с усами"
|
|||
23
Vadim
17.06.05
✎
16:37
|
+ и еще как раз в УПП после запроса по регистру, начинается перебор результата запроса (подсистема по ОС, регистр сведений СостояниеОС)
|
|||
24
vvv29
17.06.05
✎
16:38
|
Вообще 8-ка в файловом варианте изврат, поэтому надо всюду использовать запросы
|
|||
25
vvv29
17.06.05
✎
16:40
|
если на первый взгляд запросы работают также или даже медленней, то если запустить 20 пользователей, то скорость измениться в разы
|
|||
26
Vadim
17.06.05
✎
16:43
|
на медленном диске на сервере фаил транзакций так вырастит, что все грохнется, в таких ситуация (временно) спасет только файловая версия
|
|||
27
Asmody
17.06.05
✎
16:47
|
(26) "медленном диске на сервере"... хм... а вот если еще 486й на сервер поставить и 16Мб памяти - то _так_ тормозить будет! О!!!
|
|||
28
vvv29
17.06.05
✎
16:47
|
(26)А нафиг 8-ку на медленный диск!?
|
|||
29
Asmody
17.06.05
✎
16:51
|
я чего-то не пойму, в чем проблема написания запроса?
если в (11), тогда пиши так: ... Состояние = &СостояниеИнтернетУслуги_Расторгнута ... Запрос.УстановитьПараметр("СостояниеИнтернетУслуги_Расторгнута", Перечисления.СостояниеИнтернетУслуги.Расторгнута ); |
|||
30
Vadim
17.06.05
✎
16:54
|
в запросе "И" в "ГДЕ" не будет работать, результат запроса будет пустой, так как одновременно измерение у регистра сведений не может быть и "Х" И "У"
|
|||
31
Asmody
17.06.05
✎
16:58
|
(30) в запросе еще случается "ИЛИ", либо "В" с передачей списка значений в параметре...
|
|||
32
vvv29
17.06.05
✎
17:00
|
(30)Это можно, иди читай Радченко и Митичкина, там все популярно изложено, только переиздание бы еще..
|
|||
33
Vadim
17.06.05
✎
17:17
|
(32) попробуй сам, у меня не получилось, а на ссчет "В " не пробовал ...
|
|||
34
Vadim
17.06.05
✎
17:22
|
но мой случай решается как я сделал
|
|||
35
gr13
17.06.05
✎
19:01
|
Регистр = РегистрыСведений.КонтактнаяИнформация.Выбрать();
//выгрузка Справочника КонтрАгенты Пока Регистр.Следующий() Цикл НоваяСтр = ТЗ.Добавить(); НоваяСтр.Объект = Регистр.Объект; НоваяСтр.Тип = Регистр.Тип; НоваяСтр.Вид = Регистр.Вид; //Ресурсы НоваяСтр.Представление = Регистр.Представление; НоваяСтр.Поле1 = Регистр.Поле1; НоваяСтр.Поле2 = Регистр.Поле2; НоваяСтр.Поле3 = Регистр.Поле3; НоваяСтр.Поле4 = Регистр.Поле4; НоваяСтр.Поле5 = Регистр.Поле5; НоваяСтр.Поле6 = Регистр.Поле6; НоваяСтр.Поле7 = Регистр.Поле7; НоваяСтр.Поле9 = Регистр.Поле9; НоваяСтр.Поле10 = Регистр.Поле10; НоваяСтр.Комментарий = Регистр.Комментарий; НоваяСтр.ЗначениеПоУмолчанию = Регистр.ЗначениеПоУмолчанию; //реквизиты НоваяСтр.КонтрагентДляОграниченияПравДоступа = Регистр.КонтрагентДляОграниченияПравДоступа; НоваяСтр.КонтактноеЛицоДляОграниченияПравДоступа = Регистр.КонтактноеЛицоДляОграниченияПравДоступа; КонецЦикла; |
|||
36
gr13
17.06.05
✎
19:02
|
(0) онятно?
|
|||
37
Asmody
17.06.05
✎
19:07
|
(35) это где такая трава?
|
|||
38
gr13
17.06.05
✎
19:09
|
(37) нигде... на основе УТ выгрузка/загрузка контактной инфо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |