Имя: Пароль:
1C
1C 7.7
v7: Реквизит регистра в запросе
0 Масянька
 
17.03.15
14:41
День добрый.
Есть запрос:

    ТекстЗапроса = "//{{ЗАПРОС
    |Период с ДатаНачалаОст по ДатаОкончанияОст;
    |Номенклатура     = Регистр.ПартииНаличие.Номенклатура;
    |МОЛ             = Регистр.ПартииНаличие.МОЛ;
    |Партия         = Регистр.ПартииНаличие.Партия;
    |Цена             = Регистр.ПартииНаличие.Цена;
    |Количество        = Регистр.ПартииНаличие.Количество;
    |Сумма            = Регистр.ПартииНаличие.СуммаУпр;
    |Группировка Номенклатура Без Групп;
    |Условие (Партия = мПартия);
    |Функция КоличествоЗаписей = Счётчик(Номенклатура);
    |Функция Расход = Расход(Количество);
    |Функция СуммаПоДокументу = Сумма(Сумма);
    |";

Есть Партия (мПартия). Как получить реквизит (реквизит!!!) Цена данной партии?
Регистр - практически стандартный: добавлено несколько реквизитов.
1 Масянька
 
17.03.15
15:00
Что - никто и никогда не вытаскивал реквизит из регистра?
2 PuhUfa
 
17.03.15
15:02
ТекстЗапроса = "//{{ЗАПРОС

    |Период с ДатаНачалаОст по ДатаОкончанияОст;
    |Номенклатура     = Регистр.ПартииНаличие.Номенклатура;
    |МОЛ             = Регистр.ПартииНаличие.МОЛ;
    |Партия         = Регистр.ПартииНаличие.Партия;
    |Цена             = Регистр.ПартииНаличие.Цена;
    |Количество        = Регистр.ПартииНаличие.Количество;
    |Сумма            = Регистр.ПартииНаличие.СуммаУпр;
    |Цена = Регистр.ПартииТоваров.Цена;
    |Группировка Номенклатура Без Групп;
    |Группировка Цена;
    |Условие (Партия = мПартия);
    |Функция КоличествоЗаписей = Счётчик(Номенклатура);
    |Функция Расход = Расход(Количество);
    |Функция СуммаПоДокументу = Сумма(Сумма);
    |";
3 Ёпрст
 
17.03.15
15:02
функции воткнуть в запрос вестимо
4 Jaap Vduul
 
17.03.15
15:03
Реквизит = Регистр.ПартииНаличие.Реквизит;
5 Ёпрст
 
17.03.15
15:05
Так что ле тебе надо, или че ?

ЦенаПартии = Регистр.ПартииНаличие.Партия.Цена;
6 PuhUfa
 
17.03.15
15:05
в (2)
Цена = Регистр.ПартииНаличие.Цена
7 Масянька
 
17.03.15
15:08
(2) |Группировка Цена; - ну, что я могу сказать :((((((((((((((((

Спасибо.
(5) Мне надо получить реквизит.
8 PuhUfa
 
17.03.15
15:09
(7) и что тебя смущает в Группировке? -)
9 Ёпрст
 
17.03.15
15:11
Наркоманы, шо ле ?

Кто чего понял, шо ей надобно ?
Нипанятна..
10 Масянька
 
17.03.15
15:11
(8) Я :(
11 Масянька
 
17.03.15
15:55
Я опять буду спрашивать...

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "//{{ЗАПРОС
    //|Период с ДатаОкончанияОст по ДатаОкончанияОст;
    |Период с ДатаНачалаОст по ДатаОкончанияОст;
    |Номенклатура     = Регистр.ПартииНаличие.Номенклатура;
    |Партия         = Регистр.ПартииНаличие.Партия;
    |Количество        = Регистр.ПартииНаличие.Количество;
    |Цена             = Регистр.ПартииНаличие.Цена;
    |Функция КонечныйОстаток = КонОст(Количество);
    |Функция Приход = Приход(Количество);
    |Группировка Номенклатура Без Групп;
    |Группировка Цена;
    |Условие (Партия = мПартия);
    |Функция КоличествоЗаписей = Счётчик(Номенклатура);
    |";

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат 0;
    КонецЕсли;
    
    Если (Запрос.КоличествоЗаписей = 0) Тогда
        Предупреждение("Нет данных.");
        Возврат 0;
    КонецЕсли;

    ТабОстатков = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТабОстатков, 0, 0);
    ТабОстатков.ВыбратьСтроки();
    Пока ТабОстатков.ПолучитьСтроку() = 1 Цикл
Сообщить("цена - " + ТабОстатков.Цена);
    КонецЦикла;

Почему если запрос за одну дату (закоментарино) - нету цены? А если с ... по ... - есть цена. Ведь есть в запросе и КонОст и Приход...
12 Jaap Vduul
 
17.03.15
16:05
(11)
Потому что за выбранную дату не было прихода.
13 Ёпрст
 
17.03.15
16:06
(11) в регистре нет записей за эту дату, которые бы сделали приращение "+" (т.е толкнули регистр в приход)
14 Масянька
 
17.03.15
16:07
(12) (13) А почему вот это работает?

    // для остатков - на конец заданного периода
    ДатаНачалаОст      = ДатаОкончания;
    ДатаОкончанияОст = ДатаОкончания;
    
    Запрос = СоздатьОбъект("Запрос");
    
    ТекстЗапроса = "//{{ЗАПРОС
    |Период с ДатаНачалаОст по ДатаОкончанияОст;
    |Номенклатура     = Регистр.ОстаткиТМЦ.Номенклатура;
    |Склад             = Регистр.ОстаткиТМЦ.Склад;
    |Количество     = Регистр.ОстаткиТМЦ.Количество;
    |Функция КонечныйОстаток = КонОст(Количество);
    |Группировка Номенклатура без групп;
    |Условие(Склад = мСклад);
    |Функция КоличествоЗаписей = Счётчик(Номенклатура);
    |";
15 Jaap Vduul
 
17.03.15
16:10
(14)
Потому что тут нет реквизитов (по ним остатки не рассчитываются).
16 Ёпрст
 
17.03.15
16:12
Ты только того, не топись в черном море с горя..
:)
регистры, это очень просто, на самом деле, как грабли
17 Масянька
 
17.03.15
16:19
(15) Так я и не рассчитываю остатки по реквизитам.
(16) В снеговике - да. В клюшках - дурдом... Какой-то...

Как обойти?
18 Ёпрст
 
17.03.15
16:26
(17) непонятна цель конечная.
ЗЫ: если че, в снеговике всё тоже самое, только урезанное - нельзя задать периодичность хранения останков, к примеру.
19 Масянька
 
17.03.15
16:32
(18) Ну чего не понятно-то?
Есть партия (ссылка-справочник). Если по этой партии есть остаток (на дату) нужно получить кучку + реквизит. Кучка - получается, реквизит ...
20 Ёпрст
 
17.03.15
16:36
(19) ну как тебе сказать то попроще.
Реквизит регистра есть только в его движениях (это Приход или Расход)
и его нет в останках (это НачОст и КонОст)

Нет движений -нет реквизита.
21 Масянька
 
17.03.15
16:39
(20) Очень просто :)
То есть - остаток есть (по регистру) (номенклатура, кол-во и т. п.), а реквизита - нет?!
22 Ёпрст
 
17.03.15
16:40
(21) какая догадливая...!
23 Ёпрст
 
17.03.15
16:41
Реквизит регистра - это дополнительная аналитика, описывающая движения регистра. Её нет в останках. Останки есть только в разрезе Измерений регистра
24 Масянька
 
17.03.15
16:44
(23) Идиотизм, однако...

А если добавить новый ресурс в типовой регистр - какие потом могут быть камни/грабли (фильтры, отборы и т. п.) по конфе?
25 Ёпрст
 
17.03.15
16:45
(24) в чем идиотизм то ?
Если че, в снеговике, всё тоже самое.
26 Ёпрст
 
17.03.15
16:46
На счет граблей - никаких.
27 Масянька
 
17.03.15
16:46
(26) То есть везде, где уже прописан этот регистр - будет работать без ошибок?
28 Ёпрст
 
17.03.15
16:47
только вот "остаток по цене" или приход по "цене" будет забавно смотреться
29 Ёпрст
 
17.03.15
16:48
(27) ну как тебе сказать - идея пихать цену в ресурс , изначально порочна.
30 Ёпрст
 
17.03.15
16:53
Как нибудь подумай над этим
            
            Движение   Количество    Товар     "Цена"    
01.01.2015   Приход         10      Валенки      1
02.01.2015   Приход         30      Валенки      5
10.01.2015   Расход         30      Валенки      1 ?

остаток на 03.01.2015
Валенки  количество=40 цена=6
  
остаток на 11.01.2015
Валенки  количество=10 цена=5

Еще раз посмотри, еще раз подумай..
31 Масянька
 
17.03.15
17:00
(30) Не фига.
В моей задаче есть еще партия (!!!) и  цена фиксируется для конкретного количества конкретной партии. То есть
   товар    партия    количество    цена
+ Валенки     12         10            1
+ Валенки     12         30            5
- Валенки     12         30            5 (именно 5!)
И остатки должны быть:
03.01.2015
Валенки 10 по 1
Валенки 30 по 5
11.01.2015
Валенки 10 по 1
32 Ёпрст
 
17.03.15
17:03
(31) пихай цену в измерение- будет как у тебя на картинке
33 Ёпрст
 
17.03.15
17:03
или делай цену - реквизитом справочника партии
34 Ёпрст
 
17.03.15
17:04
и не ип...и мозг :)
35 Масянька
 
17.03.15
17:05
(32) Страшновато...
(33) Вот думаю...
(34) Та ладно.  А для чего нужна 1с? :))))))
36 Масянька
 
17.03.15
17:12
(33) По-моему - не прокатит...
В справочнике количества (по партии) нету.
37 Масянька
 
17.03.15
17:15
(32) Точно граблей не будет? Регистр - типовой, используется до фига где...
38 Ёпрст
 
17.03.15
18:13
если цена партии не меняется на протяжении всей жизни, сделай реквизит в спраочнике и пихай туда.
Всё собственно
39 Масянька
 
17.03.15
18:23
(38) Говорю же - для конкретного количества конкретной партии.
То есть: пришло 30 шт -> для 5 шт - 3 руб, для 10 шт - 4 руб, а для оставшихся 15 шт - пока не известно.
Я все-таки склоняюсь к новому измерению. Граблей потом не будет?
40 Ёпрст
 
17.03.15
18:29
(39) будет, конечно.
Начиная от всех механизмов проведения - перелопатить весь код получения останов везде, и в финале.. незакрытый пухлый регистр :)
41 Ёпрст
 
17.03.15
18:30
чем (38) тебя не устраивает ?
У тебя цена партии как-то меняется ?
42 Масянька
 
17.03.15
18:35
(40) А нужно лопатить всё проведение? Если пару док-ов будут двигать именно это измерение (+/-).
Про закрытие регистра - блондинка в курсе.
43 Масянька
 
17.03.15
18:37
(41) Это своеобразное перемещение на определенный склад. С фиксацией партии (количества) и цены. Про изменение цены - в (39)
44 Ёпрст
 
17.03.15
18:42
(43) в какой момент партия у тебя цену меняет в твоём алгоритме ?
45 Масянька
 
17.03.15
18:43
(44) В момент перемещения (проведение).
46 Ёпрст
 
17.03.15
18:45
(45) а зачем ?
пришли валенки партия №1 цена 10... и в какой момент цена по пратии№1 за валенки должна поменяться ?
47 Масянька
 
17.03.15
18:50
(46) говорю же, специфичная фигня.
Пришли валенки (100 шт) на склад, потом 10 шт по 5 руб переместили на другой склад, потом еще 15 шт, но по 7 руб переместили на тот же другой склад, ...
А списаться должно (потом, когда нуно): с другого склада 10 по 5 руб, а 15 шт по 7 руб.
48 Ёпрст
 
17.03.15
19:04
(47) и ?
Приход, изначально, по какой цене ?
0 что ле ?
Ты цену присваиваешь при перемещении ?
49 Ёпрст
 
17.03.15
19:04
нихрена не понял, что ты вообще хочешь этим учитывать :)
И зачем там останки.. :)
50 Cap_1977
 
17.03.15
19:19
(47) Шедеврально, чо.
Приход 100 шт на цене 5 рублей.
Перемещение 10 шт по цене 5 рублей.
Перемещение 15 шт по цене 7 рублей (sic!!!) - так от балды себестоимость увеличили, да ?
51 Злопчинский
 
17.03.15
19:36
Дикари-с
52 Масянька
 
17.03.15
19:56
(50) При чем тут себестоимость?
(48) Именно. Цена.
53 Злопчинский
 
17.03.15
20:07
А не покатит цена партии = суммапартии/количество партии
????
54 Масянька
 
17.03.15
20:32
(53) В сумме партии - себестоимость (стандарт).
55 Злопчинский
 
17.03.15
20:37
(54)  я в курсе
Себестоимость от цены прихода сильно отличается?
56 Масянька
 
17.03.15
20:38
(55) Не, я столько не выпью и не выкурю...
При чем тут себестоимость и цена прихода?
57 Злопчинский
 
17.03.15
20:44
(56)  ну если нет допзатрат
То в (53) будет цена партии
Без всяких дополнительных финтифлишек