Имя: Пароль:
1C
1С v8
v8: Запрос к табличной части документа. Помогите сделать оптимальней.
0 dva1c
 
02.12.11
08:17
В консоли проверил небольшой запрос.

ВЫБРАТЬ
   ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.Ссылка,
   ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.НомерСтроки,
   ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.Сотрудник,
   ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.ПервыйВидВремени1,
   ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.ПервыйВидВремени2
ИЗ
   Документ.ТабельУчетаРабочегоВремениОрганизации.ОтработанноеВремя КАК ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя
ГДЕ
   ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.Ссылка = &Документ

Это сделано для документа ТабельУчетаРабочегоВремениОрганизации и получения его таб. части.
В этом документе ячейки именуются ПервыйВидВремени1, ПервыйВидВремени2 и т.д.
В запросе для получения данных по ячейке "ПервыйВидВремени..." нужно перечислить явно: ПервыйВидВремени1, ПервыйВидВремени2 и т.д. или можно сделать как-то правильней?
1 dva1c
 
02.12.11
08:19
Всего ячеек и, соответственно, "ПервыйВидВремени" в количестве 31.
2 Rie
 
02.12.11
08:20
(0) Можешь написать ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.*
3 andrewks
 
02.12.11
08:26
а не проще ли тогда ДокументОбъект вытянуть?
4 dva1c
 
02.12.11
08:52
(3) спасибо! этим путем и иду.
5 dva1c
 
02.12.11
08:53
+(4) просто для того, чтобы получить значение каждой(!) ячейки нужно обратьтся к ней по идентификатору. Или я не прав?
6 Rie
 
02.12.11
08:57
(5) _Где_ получить? И как это значение будешь использовать?
7 dva1c
 
02.12.11
09:00
(6) Готовлю внешнюю печатную форму для документа. В виде Табель-Т12. Т.к. данные все содержаться в документе, то и данные надо получать из документа.
8 dva1c
 
02.12.11
09:02
+(7) Есть у меня внешняя печатная форма "Табель Т-12", но она состоит из 2-х файлов: отчета и печатной формы.
9 Aprobator
 
02.12.11
09:03
(8) 2 файла для одной формы - это еще зачем?
10 dva1c
 
02.12.11
09:04
Т.к. в случае (8) используется куча документов (плюс еще и документы расчета), то задача стоит использование только тех данных, которые содержатся в документе Табель.
11 dva1c
 
02.12.11
09:05
(9) Данные получаются из отчета, как это реализовала сама 1С (печатная форма Т-13 встроенная).
12 dva1c
 
02.12.11
09:06
+(11) насколько я понял, 1С реализовала универсально )
13 dva1c
 
02.12.11
09:07
Работа ведется в ЗУП
14 dva1c
 
02.12.11
09:09
или проще сделать обходом таб. части с отбором и т.п.?
15 Сильф
 
02.12.11
09:11
Делаешь как в (2), потом, например, выгружаешь в таблицу:

Таблица = Запрос.Выполнить().Выгрузить();

Для каждого СтрокаТЗ из Таблица Цикл

Для Номер = 1 По 31 Цикл

Значение = СтрокаТЗ["ПервыйВидВремени" + Строка(Номер)];

КонецЦикла;

КонецЦикла;
16 Сильф
 
02.12.11
09:13
Ну и перед внутренним циклом обработать те колонки, которые без номера.
17 dva1c
 
02.12.11
09:16
(16) Спасибо! Делаю )
18 dva1c
 
02.12.11
09:16
(2) спасибо!
19 Aprobator
 
02.12.11
09:18
(2) хм, про такое не знал. Надо будет попробовать при случае.
20 dva1c
 
02.12.11
09:19
(19) все верно. "*" означает "все". т.е. все поля по нужной таблице
21 dva1c
 
02.12.11
09:23
+(20) и запрос стал выглядеть:

ВЫБРАТЬ
   ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.*
ИЗ
   Документ.ТабельУчетаРабочегоВремениОрганизации.ОтработанноеВремя КАК ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя
ГДЕ
   ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.Ссылка = &Документ

Это здорово! Еще раз спасибо Rie
22 Aprobator
 
02.12.11
09:47
(21) а млин, про * через точку я знал, Мне показалось что там типа ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.ПервыйВидВремени* ))))
Хорошо выходные на носу. Отдохнуть явно пора )
23 dva1c
 
02.12.11
09:56
(22) шутишь наверное? )
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший