Имя: Пароль:
1C
1С v8
Подскажите про регистр сведений
0 Double_Medved
 
29.11.12
13:02
Подскажите пожалуйста, извините если вопрос легкий. Мне нужно выбрать всю номенклатуру и ее цены по определенному виду цен. Есть РегистрСведений ЦеныНоменклатуры, он переодический и подчинен регистратору, в регистраторах несколько документов - УчтановкаЦенНоменклатуры, КорректировкаРегистров. Вот я выбрал всю номенклатуру. Как мне выбрать все цены из этого регистра? Ведь вроде бы чтобы прочитать данные оттуда, нужно делать отбор по регистратору - а в одном документе назначение только нескольких цен. Получается мне нужно перебрать все регисраторы? Наверняка есть способ проще и удобней, подскажите пожалуйста если сталкивались с этим.
1 Wobland
 
29.11.12
13:03
срез последних возьми
2 Wobland
 
29.11.12
13:04
>регисратор
какая качественная очепятка
3 Double_Medved
 
29.11.12
13:04
О, спасибо Wobland!
4 Double_Medved
 
29.11.12
13:04
Ответ за одну минуту! Супер!
5 shuhard
 
29.11.12
13:05
(0) кури запросы
ибо срез последних кодом - УГ
6 Double_Medved
 
29.11.12
13:05
Запросом быстрей работать будет, да?
7 evorle145
 
29.11.12
13:06
В запросах разбираться надо, а так сделал быстро и ладно.
8 Wobland
 
29.11.12
13:06
(6) проверял, нет. но я за запрос
9 Wobland
 
29.11.12
13:07
(7) имею противную ситуацию ;)
10 Double_Medved
 
29.11.12
13:09
Ну там 20000 элементов номенклатуры, выгрузка идет пару минут.Не фатально. Просто интересно как лучше делать
11 Wobland
 
29.11.12
13:10
(10) пару минут? это перебор
12 Double_Medved
 
29.11.12
13:10
Это долго?
13 Double_Medved
 
29.11.12
13:11
Ну я понимаю что 2 секунды было бы лучше конечно, и мне интересно что работает быстрее.
14 shuhard
 
29.11.12
13:11
(12) это косяк
15 Wobland
 
29.11.12
13:11
(12) это примерно 120000 миллисекунд
16 Wobland
 
29.11.12
13:11
(13) а быстрее работает правильно написанный код
17 Double_Medved
 
29.11.12
13:13
Ну вот мне и интересно - вроде говорят что запросы всегда быстрее чем всякие встроенные методы и т.д.
18 sidalexsandr
 
29.11.12
13:14
Вот тебе запрос:
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|    ЦеныНоменклатуры.Период,
|    ЦеныНоменклатуры.Номенклатура,
|    ЦеныНоменклатуры.ТипЦен,
|    ЦеныНоменклатуры.Цена
|ИЗ
|    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
|    ЦеныНоменклатуры.ТипЦен = &НужныйТипЦен";
Запрос.УстановитьПараметр("НужныйТипЦен",    <НужныйТипЦен>);     //Тип цен номенклатуры
РезультатЗапроса = Запрос.Выполнить();
19 Miss1C
 
29.11.12
13:15
(6) Запросом проще, но отрабатывает быстрее отбором
20 Double_Medved
 
29.11.12
13:15
И не подскажете - вот если устанавливается Отбор() в РегистреСведений - а там например измерение Номенклатура и Цена. А в отборе я указываю только цену. То он поймет и выберет отбор только по цене? А нужно писать типа Отбор(Цена) или Отбор(,Цена)? То есть как правильно писать если там несколько измерений, а ты указываешь одно из них?
21 Miss1C
 
29.11.12
13:16
(18) Условие лучше использовать в параметре ВТ
22 sidalexsandr
 
29.11.12
13:16
Вот тот же что и в (18), но только СрезПоследних:
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|    ЦеныНоменклатурыСрезПоследних.Период,
|    ЦеныНоменклатурыСрезПоследних.Номенклатура,
|    ЦеныНоменклатурыСрезПоследних.ТипЦен,
|    ЦеныНоменклатурыСрезПоследних.Цена
|ИЗ
|    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
|    ЦеныНоменклатурыСрезПоследних.ТипЦен = &НужныйТипЦен";
Запрос.УстановитьПараметр("НужныйТипЦен",    <НужныйТипЦен>);     //Тип цен номенклатуры
РезультатЗапроса = Запрос.Выполнить();
23 Wobland
 
29.11.12
13:16
(19) точно?
24 Miss1C
 
29.11.12
13:16
(20) Поймет, только создавайте структуру
25 Miss1C
 
29.11.12
13:17
(23) Проверяла и не раз
26 Double_Medved
 
29.11.12
13:17
sidalexsandr, большое спасибо.
27 Wobland
 
29.11.12
13:17
(22) а период где?
28 Wobland
 
29.11.12
13:17
(25) подерёмся? я тоже проверял
29 Double_Medved
 
29.11.12
13:17
Miss1C, то есть мне создать структуру только из цены и сделать отбор по ней?
30 Miss1C
 
29.11.12
13:18
(20) Отбор(,Новый Структура("Цена", МояЦена));
31 Double_Medved
 
29.11.12
13:18
sidalexsandr, да, а как тут  с периодом? его же тоже надо задать? А если его не задать, то что он выберет?
32 Miss1C
 
29.11.12
13:18
(27) Срез последних
33 Double_Medved
 
29.11.12
13:18
Miss1C, Спасибо.
34 sidalexsandr
 
29.11.12
13:19
(27),(31) Вот: Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|    ЦеныНоменклатурыСрезПоследних.Период,
|    ЦеныНоменклатурыСрезПоследних.Номенклатура,
|    ЦеныНоменклатурыСрезПоследних.ТипЦен,
|    ЦеныНоменклатурыСрезПоследних.Цена
|ИЗ
|    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
|    ЦеныНоменклатурыСрезПоследних.ТипЦен = &НужныйТипЦен
|    И ЦеныНоменклатурыСрезПоследних.Период = &НужныйПериод";
Запрос.УстановитьПараметр("НужныйПериод",    <НужныйПериод>);     //Дата
Запрос.УстановитьПараметр("НужныйТипЦен",    <НужныйТипЦен>);     //Тип цен номенклатуры
РезультатЗапроса = Запрос.Выполнить();
35 Wobland
 
29.11.12
13:19
(31) на дату последней записи
36 Double_Medved
 
29.11.12
13:19
А, с периодом понятно. То есть там правильно написано и он возьмет то что мне нужно - срез последних, да?
37 Wobland
 
29.11.12
13:19
(34) двоечник. период в параметры сувать принято у белых люде
38 Starhan
 
29.11.12
13:20
(31) не поверишь. Срез последних на текущую дату
39 Double_Medved
 
29.11.12
13:20
sidalexsandr, Спасибо
40 Wobland
 
29.11.12
13:20
(36) прекращай гундеть, иди работать
41 Miss1C
 
29.11.12
13:20
(37) Я ему писала, условие и период в параметры засунуть)
42 Nenaviwu1c20
 
29.11.12
13:21
(22) единственное к запросу добавь срез на дату и все пучком будет и проще думаю
43 Wobland
 
29.11.12
13:22
(38) тоже двоечник
44 Miss1C
 
29.11.12
13:22
(28) И что вы проверяли?
45 Nenaviwu1c20
 
29.11.12
13:22
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
              |    ЦеныНоменклатурыСрезПоследних.Период,
              |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
              |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
              |    ЦеныНоменклатурыСрезПоследних.Цена
              |ИЗ
              |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ) КАК ЦеныНоменклатурыСрезПоследних
              |ГДЕ
              |    ЦеныНоменклатурыСрезПоследних.ТипЦен = &НужныйТипЦен";
Запрос.УстановитьПараметр("НужныйТипЦен",    <НужныйТипЦен>);     //Тип цен номенклатуры
запрос.УстановитьПараметр("ДатаКон", <НаКакуюДатуСнимаем>);

РезультатЗапроса = Запрос.Выполнить();
46 Wobland
 
29.11.12
13:23
(44) объектный и реляционный подход, абсолютное время работы
47 Starhan
 
29.11.12
13:23
(43) :( не критично
48 hhhh
 
29.11.12
13:24
(45) а тип цен?
49 Miss1C
 
29.11.12
13:24
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
              |    ЦеныНоменклатурыСрезПоследних.Период,
              |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
              |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
              |    ЦеныНоменклатурыСрезПоследних.Цена
              |ИЗ
              |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон,ТипЦен = &НужныйТипЦен ) КАК ЦеныНоменклатурыСрезПоследних";

Запрос.УстановитьПараметр("НужныйТипЦен",    <НужныйТипЦен>);     //Тип цен номенклатуры

запрос.УстановитьПараметр("ДатаКон", <НаКакуюДатуСнимаем>);

РезультатЗапроса = Запрос.Выполнить();
50 Double_Medved
 
29.11.12
13:24
Спасибо, пишу задачу, попробую использовать вопрос
51 korableg
 
29.11.12
13:26
(4)это волшебный форум сэр x) тут только культурные 1сники
52 korableg
 
29.11.12
13:26
(4) которые рады помочь))
53 Wobland
 
29.11.12
13:28
(52) и нафлудить с полсотни постов за полчаса
54 Double_Medved
 
29.11.12
15:12
Спасибо, сделал запросом. Выгружает пару секунд.