Имя: Пароль:
1C
1С v8
Запрос к оборотному регистру
0 Asadoff
 
09.06.12
23:09
//
Функция ПолучитьНндОснНач(Начало,Конец,Код) Экспорт
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    СУММА(РегистрПланСчетовОсновнойОбороты.СуммаОборотКт) КАК СуммаОборотКт
       |ИЗ
       |    РегистрБухгалтерии.РегистрПланСчетовОсновной.Обороты
       | (&НачДата, &КонДата, , Счет.Код = &СчетКт, , )
       | КАК РегистрПланСчетовОсновнойОбороты";

   Запрос.УстановитьПараметр("СчетКт", Код);
   Запрос.УстановитьПараметр("НачДата", Начало);
   Запрос.УстановитьПараметр("КонДата", Конец);
   
   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
           Возврат ВыборкаДетальныеЗаписи.СуммаОборотКт;
   КонецЦикла;
КонецФункции
//

Что не так?
Параметры запросу передаются а при этом функция возвращает 0.
(в регистре точно есть данные = проверял)

Помогите плиз ногами больно не бить (первые попытки написать запрос)
1 Пеппи
 
09.06.12
23:13
типичная ошибка- перепутал даты у параметров. :)
2 Лефмихалыч
 
09.06.12
23:20
передавай не код счета, а ссылку и в запросе сравнива "СчетКт = &СчетКт" безо всяких кодов
3 Asadoff
 
09.06.12
23:21
http://images.vfl.ru/ii/1339269462/0cee64ea/614912.png

не знаю правильно я вставил картинку?
4 Пеппи
 
09.06.12
23:23
Движения были только первого числа? Обрати внимание на секунды у даты.
5 Лефмихалыч
 
09.06.12
23:23
а какого хрена счет делает в оборотном регистре?
6 Пеппи
 
09.06.12
23:24
а нет, у тебя месяцы разные же.
7 Пеппи
 
09.06.12
23:25
Проверяй свой запрос сначала в консоли отчетов, так лучше будет для тебя.
8 Asadoff
 
09.06.12
23:25
(4) Движения были посередине периода
(5) Это Оборотный регистр Бухгалтерии, там кореспонденции должны быть
9 Лефмихалыч
 
09.06.12
23:28
(8) для корреспонденций придуманы регистр бухгалтерии. Сдается мне, экзамент ты завалишь
10 Пеппи
 
09.06.12
23:28
Скорее всего что у тебя ошибка со счетом.
Обычно пишут так Счет=&Счет
Запрос.УстановитьПараметр("СчетКт", ПланыСчетов.Хозрасчетный.Материалы);
11 Лефмихалыч
 
09.06.12
23:30
(10) играй гармонь (2)
12 Пеппи
 
09.06.12
23:30
У тебя типовая конфигурация? Я подумала уже что самодельная.
13 Пеппи
 
09.06.12
23:31
(11) я подробнее ))
14 Asadoff
 
09.06.12
23:33
http://images.vfl.ru/ii/1339269462/997513de/614913.png

(12) это с нуля = учусь на реальном примере
15 Asadoff
 
09.06.12
23:34
(10) передача счета происходит из формы документа

//
Стр.НндОснНач = ОбщиеБух.ПолучитьНндОснНач(НачалоГода(Объект.Дата),НачалоМесяца(Объект.Дата),Стр.НндОснКт);
//
16 Живой Ископаемый
 
09.06.12
23:36
погодите... а как РБ может быть "оборотным"?
17 Живой Ископаемый
 
09.06.12
23:36
2(9)у него так и написано:
РегистрБухгалтерии.РегистрПланСчетовОсновной
18 Asadoff
 
09.06.12
23:42
(10) Может это и есть ссылка?

http://images.vfl.ru/ii/1339270880/abefc7be/614979.png
19 Asadoff
 
09.06.12
23:44
(16) Не знаю, может я попутал что?

http://images.vfl.ru/ii/1339270879/84360126/614978.png
20 Asadoff
 
09.06.12
23:47
(9) на тему экзамена = ЭтоДляМеняКомплимент;
(я только учусь, опыт 0, обучение около месяца...)
21 Живой Ископаемый
 
09.06.12
23:47
2(19) да, напутал. РБ не бывает оборотным или необоротным. Он в общем-то всегда остаточный, по крайней мере по счетам (по каждой отдельной аналитике, если для нее указано что она оборотная -  оборотный), а то что ты показал - это виртуальная таблица "Обороты" твоего РБ.
И она например может быть пустой.. Например потому что итоги не рассчитаны.
Физические записи в регистре есть, а оборотов - нет
22 Лефмихалыч
 
09.06.12
23:47
(19) ты всех запутал. Это не оборотный регистр, а регистр бухгалтерии и иего виртуальная таблица Обороты. Матчасть у тебя не курена
23 Asadoff
 
09.06.12
23:49
я предупреждал))) я реально первые запросы пишу!
24 Живой Ископаемый
 
09.06.12
23:51
запросы тут к счастью не при чем.
25 Asadoff
 
09.06.12
23:53
(21) (22) тогда с регистра (а не с ВТ) должно всё получиться!
пошел делать.

Спасибо всем, вы оперативно вмешались в мои мучения!
26 Живой Ископаемый
 
09.06.12
23:54
2(25) ну то есть рассчитать итоги по регистру и сделать как надо - это выше твоих сил?
27 Asadoff
 
09.06.12
23:59
(26) В данной конфе могут не быть расчитаны итоги, так как возмажны ситуации когда всё будет вводиться один раз в квартал (или полугодие)
28 Asadoff
 
10.06.12
00:12
Всё как Вы и говорили

//
Функция ПолучитьНндОснНач(Начало,Конец,Код) Экспорт
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    СУММА(РегистрПланСчетовОсновной.Сумма) КАК Сумма
       |ИЗ
       |    РегистрБухгалтерии.РегистрПланСчетовОсновной КАК РегистрПланСчетовОсновной
       |ГДЕ
       |    РегистрПланСчетовОсновной.Период > &НачДата
       |    И РегистрПланСчетовОсновной.Период < &КонДата
       |    И РегистрПланСчетовОсновной.Счет.Ссылка = &СчетКт";

   Запрос.УстановитьПараметр("СчетКт", Код);
   Запрос.УстановитьПараметр("НачДата", Начало);
   Запрос.УстановитьПараметр("КонДата", Конец);
   
   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
           Возврат ВыборкаДетальныеЗаписи.Сумма;
   КонецЦикла;
КонецФункции
//

Работает на ура!!!!
Из регистра а не из ВТ
29 Asadoff
 
10.06.12
00:14
Долго я бы без вас мучался!
Искренне благодарен, большое человеческое
Спасибо!
30 hhhh
 
10.06.12
01:16
(29) а за что спасибо. в реальной жизни всё получают из ВТ. Получается, ты ничему не научился.
31 Asadoff
 
10.06.12
01:32
(30) Почему же? Принципы одни и те же, или ещё что-то я не учёл?
32 Asadoff
 
10.06.12
01:50
(30) А разве ВТ не создают дополнительные запросы, которые по сравнению с обращением к регистру являются более ресурсоёмкие?
Или я снова что-то напутал?

(в примере что выше, нет принципиальной разнице по производительности, а при этом из ВТ если не подсчитаны все ИТОГИ данные получаем неадекватные, а из регистра всегда пож-та!)

Разве в конкретном случае что-то теряется?
33 hhhh
 
10.06.12
02:08
(32) как раз наоборот. ВТ - это промежуточные сгуппированные данные. Допустим в регистре за месяц у тебя лежат 100000 записей, а в вт обороты по месяцам 1000 записей. Ну и прикинь, где более ресурсоемкое.
34 Asadoff
 
10.06.12
02:27
(33) Это весомый довод, я обязательно учту эту особенность ВТ.
(просто на сегодняшний день поставлена задача написать первую (примитивную, конечно) конфигурацию, она пишется больше в целях обучения... простейший учёт услуг на микропредприятии с одним видом деятельности и одним приходящим бухгалтером...

песочница для начинающего)))

трудности ещё впереди, и придёт и их черёд а сегодня я радуюсь как ребёнок (или как сборная России, 4/1 после матча с Чехом), от того, что заработал первый запрос!
35 Худой
 
10.06.12
15:21
(33)Можно сказать, что ВТ это аналог вьюшки в оракле или прочей СУБД?
36 sapphire
 
10.06.12
15:45
(35) чердак совсем поехал?
37 Пеппи
 
10.06.12
15:56
(36) Почему? Недавно только обсуждали эту тему и вынесли такой же вердикт. :)
38 Худой
 
10.06.12
17:30
(36)Ты себе диагноз ставишь?
Ты, хоть раз, с нормальными СУБД работал?
39 Живой Ископаемый
 
10.06.12
18:14
2(35) более или менее.
40 sapphire
 
10.06.12
19:03
(37)(38) ВТ к вьюшкам не относится никак.
41 Живой Ископаемый
 
10.06.12
19:04
2(40)ктож тебе поверит...
42 sapphire
 
10.06.12
19:05
(41) пофиг, но истина дороже (с)
43 Живой Ископаемый
 
10.06.12
19:07
да, мы знаем.. слава богу (40) к истине не относится никак...
44 sapphire
 
10.06.12
19:09
(43) в (37)(38) я тебя не заметил
45 Худой
 
11.06.12
02:43
Хорошо. Если, уж, "истина дороже". Тогда что такое виртуальные таблицы?