Имя: Пароль:
1C
1С v8
Не считывает первую строку ТЧ
,
0 Kamich
 
08.04.13
11:06
Добрый день.

В Справочнике Итог есть ТЧ Расчет(С типом Значений-СправочникСписок.Расчет).
P.S. Справочник.Итог является владельцем Справочника.Расчет.

в Форме справочника по мимо обычных реквизитов есть еще и три реквизита:
1)Всего
2)ВсегоЗаВзрослого
3)ВсегоПоДетям

Пишу следующий запрос:
Процедура Расчет(Элемент, ОформленияСтрок)

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

Подскажите пожалуйста,почему запрос не считывает первую строчку ТЧ Расчет?
1 НафНаф
 
08.04.13
11:08
что говорит отладчик?
и почему именно первую?
2 Kamich
 
08.04.13
11:15
(1)
(1) Отладчик не чего не говорит.
Вот сижу сам не пойму почему первую строку не считывает...

Да и кстати,если я удалю ПЕРВУЮ строку из ТЧ Расчет ,только тогда начинает работать как надо...
3 Kamich
 
08.04.13
11:16
(2) Но если я удаль вторкую ну или 10-ую разницы нет,главное не первую, и тогда же первая строка пропускается при подсчет...
Что это может быть?
4 Галахад
 
гуру
08.04.13
11:20
Покажи скрин этого запроса в консоли запросов.
5 Kamich
 
08.04.13
11:27
(4) Скрин именно в модуле Справочника или что?,Я не пойму?
6 Kamich
 
08.04.13
11:36
(4) ?
7 Галахад
 
гуру
08.04.13
11:37
Консоль запросов знаешь?
8 kosts
 
08.04.13
11:38
(0) значить ВладелецДляДанных где то не равно Владелец.
9 Kamich
 
08.04.13
11:51
(8) Так при добавлении новой строки в ТЧ Расчет в Справочнике Итог,при открытии формы конечно владелец автоматический проставляется в новой форме Справочника Расчет.
Я проверял владелец установлен.
10 Kamich
 
08.04.13
12:00
(7) Про консоль запросов,просмотрел в интернете.
но еще не пользовался.

(8) (4) (1)
Все проверил,у всех владельцы есть.

Что посоветуете?
11 kosts
 
08.04.13
12:11
Что за процедура Расчет(Элемент, ОформленияСтрок), почему там есть ОформленияСтрок? Откуда вызываешь?
12 Kamich
 
08.04.13
12:20
(11)
При Получении Данных
13 kosts
 
08.04.13
12:20
(0)
В запросе не нужно тянуть поля и строки, которые не будут использованы.
В данном случае итог нужно рассчитать сразу на сервере в запросе.


Процедура Расчет()

   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    Сумма(Всего.Стоимость) как Стоимость,
   |    Сумма(Всего.Взрослые) КАК Взрослые,
   |    Сумма(Всего.Дети) КАК Дети
   |ИЗ
   |    Справочник.Расчет КАК Всего
   |ГДЕ
   |    Всего.ВладелецДляДанных = &Владелец";
   
   Запрос.УстановитьПараметр("Владелец", Наименование);  // <- Спорное место, возможно нужно использовать ссылочный тип, может из-за этого возник топик (0)...
   Выборка = Запрос.Выполнить().Выбрать();
   Если Выборка.Следующий Тогда
       Всего = Выборка.Стоимость;
       ВсегоЗаВзрослого = Выборка.Взрослые;
       ВсегоПоДетям = Выборка.Дети;
   Иначе
       Всего = 0;
       ВсегоЗаВзрослого = 0;
       ВсегоПоДетям = 0;
   КонецЕсли;
   
КонецПроцедуры
14 kosts
 
08.04.13
12:22
(12) И для чего сей расчет в процедуре ПриПолученииДанных?
15 kosts
 
08.04.13
12:24
Все расчеты и суммы нужно делать в регистрах. В справочниках должна храниться условно постоянная информация. Типа ФИО, даты рождения. Но не суммы.
16 Kamich
 
08.04.13
12:24
(14)
При получении ТЧ Расчет в  Справочнике Итог.
17 Kamich
 
08.04.13
12:26
(14) Тут еще нужно помойму добавить СГРУППИРОВАТЬ ПО?
18 kosts
 
08.04.13
12:27
(16) |ИЗ
   |    Справочник.Расчет
У тебя одновременно есть и справочник Расчет и табличная часть Расчет?
19 Kamich
 
08.04.13
12:29
(13)
Вывел ошибку :
{Справочник.Расчет.Форма.ФормаДокумента(531)}: Поле объекта не обнаружено (Следующий)
   Если Выборка.Следующий Тогда
20 Kamich
 
08.04.13
12:30
(19) Черт)))
Должно быть  
   Если Выборка.Следующий() Тогда
21 kosts
 
08.04.13
12:30
(19) Доверяй, но проверяй, я для примера привел. Смотри в СП что такое "Следующий"...
22 Kamich
 
08.04.13
12:33
(21)
Считает теперь только первую))
В Общем я кажется что-то в запросе не понимаю,добавил в запрос СГРУППИРОВАТЬ ПО

Считает только первую строку,
Убираю СГРУППИРОВАТЬ ПО выводит ошибку
Поле не входит в группу Всего.Ссылка
23 kosts
 
08.04.13
12:36
(22) Зря я что-ли "забыл" ссылку...
24 Kamich
 
08.04.13
12:42
(23)
Все разобрался)))
Я раньше думал что перед ИЗ в запросе указываются все реквизиты,измерения,которые потом можно будет использовать в запросе к примеру СГРУППИРОВАТЬ ПО.

Все я разобрался)
Всем Спасибо)))) (23) -Особенно!)))
25 kosts
 
08.04.13
12:44
(24) На (14) не ответил...
26 Kamich
 
08.04.13
13:14
(25)
"И для чего сей расчет в процедуре ПриПолученииДанных"
При открытии Справочника вызывается процедура при получении данных.
27 Kamich
 
08.04.13
13:15
(26) И далее идет та самая процедура,которая сейчас рассматривать
28 kosts
 
08.04.13
13:27
(27) Почему в ПриПолученииДанных, то, а не в ПриОткрытии?
29 Kamich
 
08.04.13
13:39
(28) Просто если добавлять данные в ТЧ, то сумма реквизиты    Всего ,ВсегоЗаВзрослого,ВсегоПоДетям ,уже автоматически не будет,обновляться,а лишь только при открытии.Или я не правильно делаю?
30 Kamich
 
08.04.13
13:40
(29) *добавляю
)
31 kosts
 
08.04.13
13:47
(29) >Или я не правильно делаю?
Не нам судить. Ехать по бездорожью хорошо или плохо?
В основном плохо и неудобно, а другие специально машины для этого делают...

>обновляться
Есть процедура ОбновлениеОтображения. Можно также вызывать расчет при явном изменении данных на форме в соответствующей процедуре ПриИзменении. Отдельной кнопкой. Думаю еще найдется несколько способов. Смотря как и где меняются данные которые нужно отобразить.
32 palpetrovich
 
08.04.13
13:47
ветку не читал, код в (0) это из 1с-Помещик? :)
33 Kamich
 
08.04.13
13:50
(31) Понятно)
Всем спасибо)
Особенно (31)))