Имя: Пароль:
1C
1С v8
Помогите с запросом
0 Milli
 
21.03.13
09:59
Подскажите, как получить строки из табличной части документа?
В 7-ке это делается через ВыбратьСтроки(). А как это делается в 8-ке?

Запрос = Новый Запрос;
Запрос.Текст =

"ВЫБРАТЬ
|    НачислениеПоБольничномуЛисту.Ссылка
|ИЗ
|    Документ.НачислениеПоБольничномуЛисту КАК НачислениеПоБольничномуЛисту
|ГДЕ
|    НачислениеПоБольничномуЛисту.Проведен = Истина
|    И НачислениеПоБольничномуЛисту.Дата МЕЖДУ &ДатаН И &ДатаК";    

Запрос.УстановитьПараметр("ДатаН", ЭлементыФормы.НачПериода.Значение);
Запрос.УстановитьПараметр("ДатаК", ЭлементыФормы.КонПериода.Значение);
Результат = Запрос.Выполнить();
   
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
    Док = Выборка.Ссылка.ПолучитьОбъект();    
       
КонецЦикла;
1 zak555
 
21.03.13
10:01
делай запрос к ТЧ сразу
2 nddru
 
21.03.13
10:01
Не совсем понятен вопрос, в запросе получить или как их перебрать в найденном документе
3 salvator
 
21.03.13
10:01
(0) Запрос к ТЧ документа делай.
4 zak555
 
21.03.13
10:01
но зачем ты читаешь док с галкой проведён ?
ты лучше регистры читай
5 Milli
 
21.03.13
10:03
(1) Как правильно сделать запрос к ТЧ?
Извиняюсь может за глупый вопрос. Я еще только начинаю изучать 8-ку.
6 perec1982
 
21.03.13
10:06
"ВЫБРАТЬ
|    НачислениеПоБольничномуЛистуСотрудники.Сотрудник
|ИЗ
|    Документ.НачислениеПоБольничномуЛисту.Сотрудники КАК НачислениеПоБольничномуЛистуСотрудники
|ГДЕ
|    НачислениеПоБольничномуЛистуСотрудники.Ссылка.Проведен = Истина
|    И НачислениеПоБольничномуЛисту.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК";
7 perec1982
 
21.03.13
10:07
Вроде так. Может с ошибками т.к. на коленке правил.
8 zak555
 
21.03.13
10:09
(5) в конструкторе ты же выбирала таблицу документа из БД  НачислениеПоБольничномуЛисту ?

перенесла её в Таблицу

а уж из неё выбирай свою ТЧ
9 zak555
 
21.03.13
10:12
ВЫБРАТЬ
   
       НачислениеПоБольничномуЛисту.Начисления.Ссылка,
       НачислениеПоБольничномуЛисту.Начисления.НомерСтроки,
       НачислениеПоБольничномуЛисту.Начисления.ВидРасчета,
       НачислениеПоБольничномуЛисту.Начисления.ДатаНачала,
       НачислениеПоБольничномуЛисту.Начисления.ДатаОкончания,
       НачислениеПоБольничномуЛисту.Начисления.Показатель1,
       НачислениеПоБольничномуЛисту.Начисления.Показатель2,
       НачислениеПоБольничномуЛисту.Начисления.Показатель3,
       НачислениеПоБольничномуЛисту.Начисления.Показатель4,
       НачислениеПоБольничномуЛисту.Начисления.Показатель5,
       НачислениеПоБольничномуЛисту.Начисления.Показатель6,
       НачислениеПоБольничномуЛисту.Начисления.Результат,
       НачислениеПоБольничномуЛисту.Начисления.ДополнительныйРезультат,
       НачислениеПоБольничномуЛисту.Начисления.ПодразделениеОрганизации,
       НачислениеПоБольничномуЛисту.Начисления.НормаДней,
       НачислениеПоБольничномуЛисту.Начисления.НормаЧасов,
       НачислениеПоБольничномуЛисту.Начисления.НормаДнейПоПятидневке,
       НачислениеПоБольничномуЛисту.Начисления.ОтработаноДней,
       НачислениеПоБольничномуЛисту.Начисления.ОтработаноЧасов,
       НачислениеПоБольничномуЛисту.Начисления.ОтработаноДнейПоПятидневке,
       НачислениеПоБольничномуЛисту.Начисления.ПериодРасчетаСреднегоЗаработкаНачало,
       НачислениеПоБольничномуЛисту.Начисления.ПериодРасчетаСреднегоЗаработкаОкончание,
       НачислениеПоБольничномуЛисту.Начисления.ДополнительныеДанные,
       НачислениеПоБольничномуЛисту.Начисления.ДатаНачалаСобытия,
       НачислениеПоБольничномуЛисту.Начисления.Сторно,
       НачислениеПоБольничномуЛисту.Начисления.Авторасчет,
       НачислениеПоБольничномуЛисту.Начисления.Сотрудник,
       НачислениеПоБольничномуЛисту.Начисления.ОплаченоДнейЧасов,
       НачислениеПоБольничномуЛисту.Начисления.ОтработаноЧасовПоПятидневке,
       НачислениеПоБольничномуЛисту.Начисления.УдалитьПриказ,
       НачислениеПоБольничномуЛисту.Начисления.НормаЧасовПоПятидневке,
       НачислениеПоБольничномуЛисту.Начисления.СторнируемыйДокумент,
       НачислениеПоБольничномуЛисту.Начисления.ЧислоМесяцев,
       НачислениеПоБольничномуЛисту.Начисления.РасчетнаяБазаЗаЕдиницуНормыВремени
   
ИЗ
   Документ.НачислениеПоБольничномуЛисту КАК НачислениеПоБольничномуЛисту
10 zak555
 
21.03.13
10:15
ВЫБРАТЬ
   НачислениеПоБольничномуЛистуНачисления.Ссылка,
   НачислениеПоБольничномуЛистуНачисления.НомерСтроки,
   НачислениеПоБольничномуЛистуНачисления.ВидРасчета,
   НачислениеПоБольничномуЛистуНачисления.ДатаНачала,
   НачислениеПоБольничномуЛистуНачисления.ДатаОкончания,
   НачислениеПоБольничномуЛистуНачисления.Показатель1,
   НачислениеПоБольничномуЛистуНачисления.Показатель2,
   НачислениеПоБольничномуЛистуНачисления.Показатель3,
   НачислениеПоБольничномуЛистуНачисления.Показатель4,
   НачислениеПоБольничномуЛистуНачисления.Показатель5,
   НачислениеПоБольничномуЛистуНачисления.Показатель6,
   НачислениеПоБольничномуЛистуНачисления.Результат,
   НачислениеПоБольничномуЛистуНачисления.ДополнительныйРезультат,
   НачислениеПоБольничномуЛистуНачисления.ПодразделениеОрганизации,
   НачислениеПоБольничномуЛистуНачисления.НормаДней,
   НачислениеПоБольничномуЛистуНачисления.НормаЧасов,
   НачислениеПоБольничномуЛистуНачисления.НормаДнейПоПятидневке,
   НачислениеПоБольничномуЛистуНачисления.ОтработаноДней,
   НачислениеПоБольничномуЛистуНачисления.ОтработаноЧасов,
   НачислениеПоБольничномуЛистуНачисления.ОтработаноДнейПоПятидневке,
   НачислениеПоБольничномуЛистуНачисления.ПериодРасчетаСреднегоЗаработкаНачало,
   НачислениеПоБольничномуЛистуНачисления.ПериодРасчетаСреднегоЗаработкаОкончание,
   НачислениеПоБольничномуЛистуНачисления.ДополнительныеДанные,
   НачислениеПоБольничномуЛистуНачисления.ДатаНачалаСобытия,
   НачислениеПоБольничномуЛистуНачисления.Сторно,
   НачислениеПоБольничномуЛистуНачисления.Авторасчет,
   НачислениеПоБольничномуЛистуНачисления.Сотрудник,
   НачислениеПоБольничномуЛистуНачисления.ОплаченоДнейЧасов,
   НачислениеПоБольничномуЛистуНачисления.ОтработаноЧасовПоПятидневке,
   НачислениеПоБольничномуЛистуНачисления.УдалитьПриказ,
   НачислениеПоБольничномуЛистуНачисления.НормаЧасовПоПятидневке,
   НачислениеПоБольничномуЛистуНачисления.СторнируемыйДокумент,
   НачислениеПоБольничномуЛистуНачисления.ЧислоМесяцев,
   НачислениеПоБольничномуЛистуНачисления.РасчетнаяБазаЗаЕдиницуНормыВремени
ИЗ
   Документ.НачислениеПоБольничномуЛисту.Начисления КАК НачислениеПоБольничномуЛистуНачисления
11 rphosts
 
21.03.13
10:17
+(10)

ГДЕ
   НачислениеПоБольничномуЛисту.Проведен
   И НачислениеПоБольничномуЛисту.Дата МЕЖДУ &ДатаН И &ДатаК";
12 Milli
 
21.03.13
10:51
(10) А при выборке результатов запроса как теперь получить данные из таблицы?
Просто, к примеру, Док.Сотрудник не пропишешь же.
13 zak555
 
21.03.13
10:59
(12)

НачислениеПоБольничномуЛистуНачисления.Ссылка = &Ссылка
14 Milli
 
21.03.13
11:02
(13)
Выдается ошибка:
{Форма.Форма.Форма(191)}: Ошибка при вызове метода контекста (Выполнить)
   Результат = Запрос.Выполнить();
по причине:
{(2, 49)}: Не задано значение параметра "Ссылка"
НачислениеПоБольничномуЛистуНачисления.Ссылка = <<?>>&Ссылка,
15 salvator
 
21.03.13
11:06
(14) Укажи условия из начального своего запроса

|ГДЕ
|    НачислениеПоБольничномуЛистуНачисления.Ссылка.Проведен
|    И НачислениеПоБольничномуЛистуНачисления.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК";
16 Milli
 
21.03.13
11:32
(15) Не помогает. Я уже и с первоначальными условиями и без них пробовала делать, с " = &Ссылка" и без нее, все бесполезно. Либо выдается ошибка как в (14), либо не показывает данные из таблицы при получении результатов.
17 salvator
 
21.03.13
11:34
(16) Скинь сюда код полностью
18 Конфигуратор1с
 
21.03.13
11:39
(0) Типичная ошибка 7шника:
Запрос.УстановитьПараметр("ДатаН", ЭлементыФормы.НачПериода.Значение);
Запрос.УстановитьПараметр("ДатаК", ЭлементыФормы.КонПериода.Значение);
Вместо этого можно написать

В 8ке, в отличии от 7ки, дата содержит и время. То есть указываете дату 01.03.2012, это означает что он возьмет Вам
с 01.03.2012 00 00 00 по  01.03.2012 00 00 00, таким образом если документ проведен в  01.03.2012 00 00 01, то он в выборку не попадет. Поэтому лучше написать:
Запрос.УстановитьПараметр("ДатаН", Началодня(ЭлементыФормы.НачПериода.Значение));
Запрос.УстановитьПараметр("ДатаК", КонецДня(ЭлементыФормы.КонПериода.Значение));

тогда он выберет Вам с 01.03.2012 00 00 00 по  01.03.2012 23 59 59 то  есть все документы за день
19 Milli
 
21.03.13
11:44
(17)
Запрос = Новый Запрос;
Запрос.Текст =

"ВЫБРАТЬ
   |НачислениеПоБольничномуЛистуНачисления.Ссылка,
   |НачислениеПоБольничномуЛистуНачисления.НомерСтроки,
   |НачислениеПоБольничномуЛистуНачисления.ВидРасчета,
   |НачислениеПоБольничномуЛистуНачисления.ДатаНачала,
   |НачислениеПоБольничномуЛистуНачисления.ДатаОкончания,
   |НачислениеПоБольничномуЛистуНачисления.Показатель1,
   |НачислениеПоБольничномуЛистуНачисления.Показатель2,
   |НачислениеПоБольничномуЛистуНачисления.Показатель3,
   |НачислениеПоБольничномуЛистуНачисления.Показатель4,
   |НачислениеПоБольничномуЛистуНачисления.Показатель5,
   |НачислениеПоБольничномуЛистуНачисления.Показатель6,
   |НачислениеПоБольничномуЛистуНачисления.Результат,
   |НачислениеПоБольничномуЛистуНачисления.ДополнительныйРезультат,
   |НачислениеПоБольничномуЛистуНачисления.ПодразделениеОрганизации,
   |НачислениеПоБольничномуЛистуНачисления.НормаДней,
   |НачислениеПоБольничномуЛистуНачисления.НормаЧасов,
   |НачислениеПоБольничномуЛистуНачисления.НормаДнейПоПятидневке,
   |НачислениеПоБольничномуЛистуНачисления.ОтработаноДней,
   |НачислениеПоБольничномуЛистуНачисления.ОтработаноЧасов,
   |НачислениеПоБольничномуЛистуНачисления.ОтработаноДнейПоПятидневке,
   |НачислениеПоБольничномуЛистуНачисления.ПериодРасчетаСреднегоЗаработкаНачало,
   |НачислениеПоБольничномуЛистуНачисления.ПериодРасчетаСреднегоЗаработкаОкончание,
   |НачислениеПоБольничномуЛистуНачисления.ДополнительныеДанные,
   |НачислениеПоБольничномуЛистуНачисления.ДатаНачалаСобытия,
   |НачислениеПоБольничномуЛистуНачисления.Сторно,
   |НачислениеПоБольничномуЛистуНачисления.Авторасчет,
   |НачислениеПоБольничномуЛистуНачисления.Сотрудник,
   |НачислениеПоБольничномуЛистуНачисления.ОплаченоДнейЧасов,
   |НачислениеПоБольничномуЛистуНачисления.ОтработаноЧасовПоПятидневке,
   //|НачислениеПоБольничномуЛистуНачисления.УдалитьПриказ,
   |НачислениеПоБольничномуЛистуНачисления.НормаЧасовПоПятидневке,
   |НачислениеПоБольничномуЛистуНачисления.СторнируемыйДокумент,
   |НачислениеПоБольничномуЛистуНачисления.ЧислоМесяцев,
   |НачислениеПоБольничномуЛистуНачисления.РасчетнаяБазаЗаЕдиницуНормыВремени
   |ИЗ
   |Документ.НачислениеПоБольничномуЛисту.Начисления КАК НачислениеПоБольничномуЛистуНачисления
   |ГДЕ
   |НачислениеПоБольничномуЛистуНачисления.Ссылка.Проведен
   |И НачислениеПоБольничномуЛистуНачисления.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК";
   
   Запрос.УстановитьПараметр("ДатаН", Началодня(ЭлементыФормы.НачПериода.Значение));
   Запрос.УстановитьПараметр("ДатаК", КонецДня(ЭлементыФормы.КонПериода.Значение));    
   
   Результат = Запрос.Выполнить();
   
   Выборка = Результат.Выбрать();
   Пока Выборка.Следующий() Цикл
       Док = Выборка.Ссылка.ПолучитьОбъект();    
       
   КонецЦикла;        

(18) Документы в выборку попадают. Не могу получить данные из таблицы.
20 salvator
 
21.03.13
11:48
Пока Выборка.Следующий() Цикл
  Сообщить(Выборка.Сотрудник);
  // и т.д.        
КонецЦикла;

Что выводит?

В выборке уже есть и ссылка и строки ТЧ. Зачем объект получать?
21 Конфигуратор1с
 
21.03.13
11:48
(19) Если Вам для чтения, то так и пишете
Выборка.Сотрудник
22 Конфигуратор1с
 
21.03.13
11:49
(19) В 8ке делится понятие ссылка и объект. Если Вам необходимы данные для чтения или заполнения чего нибудь, то берете ссылку. Если Вам необходимо изменить сам документ, то тогда получаете объект.
23 Milli
 
21.03.13
11:53
Все работает. Это я немного тупанула.
Вместо Выборка.Сотрудник писала Док.Сотрудник.
Спасибки за подсказку! :)