Имя: Пароль:
1C
1С v8
Почему то не работает запрос.. бух 2.0
0 kasazanov
 
10.06.13
10:39
Конфигурация бухгалтерия 2.0

Делаю обработку проведения по новому регистру в документе перемещение товаров и хочу вытащить суммы из хозрасчетного, но чето не выходит.

Когда делаю отладку в "Выборка" пишет ошибка чтения значения, создал новую печатку с пустым макетом, тот же самый запрос выбирает то что нужно, а тут не работает.. почему?

Движения.АстекоЗаказы.Очистить();
   
   Для каждого стрДвижениеПоЗаказам из ЭтотОбъект.Товары Цикл
       
       ДвижениеПоЗаказам = Движения.АстекоЗаказы.Добавить();
       ДвижениеПоЗаказам.Период = Дата;
       ДвижениеПоЗаказам.Организация = Организация;
       ДвижениеПоЗаказам.СкладОтправитель = СкладОтправитель;
       ДвижениеПоЗаказам.СкладПолучатель = СкладПолучатель;
       ДвижениеПоЗаказам.Заказ = Заказ;
   
   
       
       ДвижениеПоЗаказам.Количество = стрДвижениеПоЗаказам.Количество;
       
       Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |    ХозрасчетныйОбороты.СуммаОборотДт,
       |    ХозрасчетныйОбороты.Регистратор,
       |    ХозрасчетныйОбороты.Субконто1
       |ИЗ
       |    РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, , , , , ) КАК ХозрасчетныйОбороты
       |ГДЕ
       |    ХозрасчетныйОбороты.Регистратор = &Регистратор";
       Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Ссылка);
       Выборка = Запрос.Выполнить().Выбрать();
       
       Пока Выборка.Следующий() Цикл
       
           ДвижениеПоЗаказам.Сумма = стрДвижениеПоЗаказам.Выборка.Сумма;
       
       КонецЦикла;
       
   КонецЦикла;
1 Жирафка
 
10.06.13
10:40
Как же я обожаю запросы в цикле
2 Любопытная
 
10.06.13
10:41
В чем смысл
Пока Выборка.Следующий() Цикл
       
           ДвижениеПоЗаказам.Сумма = стрДвижениеПоЗаказам.Выборка.Сумма;
       
       КонецЦикла;
?
3 kasazanov
 
10.06.13
10:43
(2) а как мне лучше выбрать что то из запроса?
4 Любопытная
 
10.06.13
10:45
(3) а где там вообще обращение к результатам запроса?
стрДвижениеПоЗаказам.Выборка.Сумма обращается к значению реквизита Выборка строки стрДвижениеПоЗаказам, к запросу это не имеет никакого отношения
5 Ненавижу 1С
 
гуру
10.06.13
10:45
(3) а какое отношение
ДвижениеПоЗаказам.Сумма = стрДвижениеПоЗаказам.Выборка.Сумма;
имеет к данным запроса?
6 kasazanov
 
10.06.13
10:47
Я просто делал псевдоним у СуммаОборотДт = Сумма

Просто потом править начал и удалил этот псевдоним.
7 kasazanov
 
10.06.13
10:48
А ДвижениеПоЗаказам.Сумма это ресурс в регистре накопления
8 Любопытная
 
10.06.13
10:48
Ну и собственно - в чем смысл кода?
Зачем запрос в цикле?
И вообще, хрень какая-то получается
9 kasazanov
 
10.06.13
10:49
Вынул запрос из цикла, тоже самое, ошибка чтения значения.
10 Любопытная
 
10.06.13
10:51
(9)Что ты делаешь?
11 Любопытная
 
10.06.13
10:52
Запрос вернет суммы всех оборотов документа по субконто1 каждого движения. Это что вообще? Если рассматривать запрос на примере документа реализация, например, то мы получим суммы по номенклатуре, по контрагенту, и еще по НДС при большом желании. И все это в одной куче. Какой смысл?
12 lisrws
 
10.06.13
10:54
как-то так:
Движения.АстекоЗаказы.Очистить();
   
   Для каждого стрДвижениеПоЗаказам из ЭтотОбъект.Товары Цикл
       
       ДвижениеПоЗаказам = Движения.АстекоЗаказы.Добавить();
       ДвижениеПоЗаказам.Период = Дата;
       ДвижениеПоЗаказам.Организация = Организация;
       ДвижениеПоЗаказам.СкладОтправитель = СкладОтправитель;
       ДвижениеПоЗаказам.СкладПолучатель = СкладПолучатель;
       ДвижениеПоЗаказам.Заказ = Заказ;
   
   
       
       ДвижениеПоЗаказам.Количество = стрДвижениеПоЗаказам.Количество;
       
       Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |    ХозрасчетныйОбороты.СуммаОборотДт Как Сумма,
       |    ХозрасчетныйОбороты.Регистратор,
       |    ХозрасчетныйОбороты.Субконто1
       |ИЗ
       |    РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, , , , , ) КАК ХозрасчетныйОбороты
       |ГДЕ
       |    ХозрасчетныйОбороты.Регистратор = &Регистратор";
       Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Ссылка);
       Выборка = Запрос.Выполнить().Выбрать();
       
       Пока Выборка.Следующий() Цикл
       
           ДвижениеПоЗаказам.Сумма = Выборка.Сумма;
       
       КонецЦикла;
       
   КонецЦикла;
13 kasazanov
 
10.06.13
10:56
В документе перемещение нету в ТЧ реквизита "сумма" она появляется только после проведения документа, соответственно я хочу выбрать эти суммы чтобы они записались в новый регистр.

поэтому запрос выбирает суммы, а условие регисратор определяет что это конкретно для моего документа.
14 lisrws
 
10.06.13
10:56
"|    ХозрасчетныйОбороты.СуммаОборотДт Как Сумма,"
и
"Выборка.Сумма"
но код, конечно бредовый. ты делаешь запрос в цикле, при этом не передавая каждое новое значение в запрос. у тебя запрос при каждой итерации будет возвращать один и тот же результат. вынеси его перед циклом
15 fmrlex
 
10.06.13
10:58
(0) Запрос в цикле?
*расчехляю дробовик*
16 kasazanov
 
10.06.13
11:00
(12) это тоже самое, только псевдоним добавил, я про это писал в (6)

проблема в том что в "Выборка" не передаются значения.

(15) вынимал запрос из цикла - тоже самое.
17 Любопытная
 
10.06.13
11:04
Запрос = Новый Запрос;
       
Запрос.Текст =
       "ВЫБРАТЬ
     
|    ХозрасчетныйОбороты.СуммаОборотДт Как Сумма,

|    ХозрасчетныйОбороты.Регистратор,
   
|    ХозрасчетныйОбороты.Субконто1
   
|ИЗ
   
|    РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, , , , , ) КАК ХозрасчетныйОбороты
 
|ГДЕ
   
|    ХозрасчетныйОбороты.Регистратор = &Регистратор";
     

Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Ссылка);
   
Выборка = Запрос.Выполнить().Выбрать();
   
Пока Выборка.Следующий() Цикл
       

           
   
   Номенклатура = Выборка.субконто1;
   СтрокаТЧ = ЭтотОбъект.Товары.Найти(Номенклатура);
   Если не СтрокаТЧ = Неопределено ТОгда
        ДвижениеПоЗаказам = Движения.АстекоЗаказы.Добавить();
   
   ДвижениеПоЗаказам.Период = Дата;
   
  ДвижениеПоЗаказам.Организация = Организация;
   
   ДвижениеПоЗаказам.СкладОтправитель = СкладОтправитель;
     
 ДвижениеПоЗаказам.СкладПолучатель = СкладПолучатель;
     
 ДвижениеПоЗаказам.Заказ = Заказ;
   
   
     

       ДвижениеПоЗаказам.Количество = СтрокаТЧ.Количество;
 
   ДвижениеПоЗаказам.Сумма = Выборка.Сумма;

   КонецЕсли;
КонецЦикла;
КонецЦикла;

На, извращайся. Из твоего кода в блокноте нацарапала. Но так не делают тоже, вообще-то

Поймай момент, в котором формируется таблица для проводок и бери эту таблицу для твоего регистра
18 lisrws
 
10.06.13
11:08
и в запрос в качестве параметра еще не плохо бы передать список номенклатуры для субконто 1. иначе для документа в 2 строки будут все возможные субконто перебираться
19 lisrws
 
10.06.13
11:08
зы. но это если запрос перед циклом, как в (17)
20 kasazanov
 
10.06.13
11:09
(17) попробовал твой код, тоже самое, нету сумм - в отладке в "Выборка" пишет "Ошибка чтения значения"
21 Любопытная
 
10.06.13
11:11
(20) Сделай Запрос.Выполнить().Выгрузить() и посмотри, что в ТЗ.
Ошибку целиком сюда. Желательно вместе со строкой, на которой ошибка
22 kasazanov
 
10.06.13
11:29
Короче я все понял, спасибо ))