Имя: Пароль:
1C
 
Как получить реквизит у регистра сведений?
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) нигде... на основе УТ выгрузка/загрузка контактной инфо
2 + 2 = 3.9999999999999999999999999999999...