Имя: Пароль:
1C
1С v8
Помогите с запросом
0 Tumakota
 
17.02.13
20:21
"ВЫБРАТЬ
                   |    уатПервоначальныеСведенияТС.ОсновноеСредство,
                   |    уатПервоначальныеСведенияТС.ГосударственныйНомер,
                   |    уатПервоначальныеСведенияТС.Модель,
                   |    уатПутевойЛист.Ссылка,
                   |    уатПутевойЛист.Номер,
                   |    уатПутевойЛист.Дата,
                   |    уатПутевойЛист.Проведен,
                   |    уатПутевойЛист.Рассчитан,
                   |    уатПутевойЛист.ТранспортноеСредство,
                   |    уатПутевойЛист.Водитель1,
                   |    уатПутевойЛист.ДатаВыезда,
                   |    уатПутевойЛист.ДатаВозвращения,
                   |    уатПутевойЛист.СпидометрВыезда,
                   |    уатПутевойЛист.СпидометрВозвращения,
                   |    уатПутевойЛист.ПринялДиспетчер,
                   |    уатПутевойЛист.Смена,
                   |    уатПутевойЛист.ОстатокТопливаВыезд,
                   |    уатПутевойЛист.ОстатокТопливаВозврат,
                   |    уатПутевойЛист.Задание.(
                   |        Контрагент,
                   |        ОбъектСтроительства,
                   |        Маршрут,
                   |        АдресПрибытия,
                   |        АдресУбытия,
                   |        ВремяПрибытия,
                   |        ВремяУбытия,
                   |        КоличествоЕздок,
                   |        КоличествоЧасов,
                   |        КоличествоТонн,
                   |        а_количествоТоннФакт
                   |    ),
                   |    уатПутевойЛист.Простои.(
                   |        ВидПростоя,
                   |        НачалоПростоя,
                   |        ВремяПростоя,
                   |        НачалаПростоя,
                   |        ВремяОкончания
                   |    ),
                   |    уатПутевойЛист.РасходГСМ.(
                   |        ТС,
                   |        ГСМ,
                   |        ОстатокПриВыезде,
                   |        ОстатокПриВозвращении,
                   |        Выдано,
                   |        Сдано,
                   |        РасходПоНорме,
                   |        РасходПоФакту
                   |    )
                   |ИЗ
                   |    Документ.уатПутевойЛист КАК уатПутевойЛист
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
                   |        ПО уатПутевойЛист.ТранспортноеСредство = уатПервоначальныеСведенияТС.ОсновноеСредство

Вот сам запрос, как мне вытащить данные с табличных частей, потому что в результате он вытаскивает, Таблицу значений(Индекс и колонки) а как данные вытащить с этих табличных частей, буду очень благодарен за помощь
1 GANR
 
17.02.13
20:24
Результат = Запрос.Выполнить(); // (gr_HJfd)
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
  ТвояТЧ = Выборка.ТвояТЧ; // ТвояТЧ - такой же резльтат запроса, как (gr_HJfd), далее - синтаксис-помощник
КонецЦикла;
2 GANR
 
17.02.13
20:35
А ещё можно сделать запросы
ВЫБРАТЬ * ИЗ Документ.уатПутевойЛист.РасходГСМ
ВЫБРАТЬ * ИЗ Документ.уатПутевойЛист.Задание
ВЫБРАТЬ * ИЗ Документ.уатПутевойЛист.Простои
3 Tumakota
 
17.02.13
21:47
(1) Ну и он мне серовно вытаскивает таблицу как таблицазначений(Индекс, колоннки)
4 Tumakota
 
17.02.13
22:08
Че не кто не может подсказать как вытащить данные из ТЗ?
5 Нуф-Нуф
 
17.02.13
22:11
(3) ну так и обрабатывай через перебор этой тз
6 Tumakota
 
17.02.13
22:13
(5) Ну он мне вытаскивает только наименование колонок, а не значения в этих колонках
7 Нуф-Нуф
 
17.02.13
22:14
(6) как ты это увидел?
8 Tumakota
 
17.02.13
22:14
ну я в отладчике смотрю
9 Нуф-Нуф
 
17.02.13
22:16
а F2 пробовал нажимать?
10 Tumakota
 
17.02.13
22:19
ну вот если как написали в (1) то там Ф2 не нажимается, пробовал
11 GANR
 
17.02.13
22:26
(10) а так?
Результат = Запрос.Выполнить(); // (gr_HJfd)
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
  ТвояТЧ = Выборка.ТвояТЧ; // ТвояТЧ - такой же резльтат запроса, как (gr_HJfd), далее - синтаксис-помощник
  ВыборкаТвояТЧ = ТвояТЧ.Выбрать();
  Пока ВыборкаТвояТЧ.Следующий() Цикл
      ...
  КонецЦикла;
КонецЦикла;
12 Tumakota
 
18.02.13
01:05
(11) Спасибо заработало, но вот тут один нюанс получился, когда он находит нужное мне задание он его все правильно подставляет, но потом в последующей строке он ставит опять это же задание с этим же количество часов хотя его уже нету
вот код

       Пока ВыборкаЗадание.Следующий() Цикл
       Если ВыборкаЗадание.ОбъектСтроительства.Наименование = "Планирование углевозной дороги ПУС" или ВыборкаЗадание.ОбъектСтроительства.Наименование = "Поливание углевозной дороги ПУС" или ВыборкаЗадание.ОбъектСтроительства.Наименование = "Посыпка углевозной дороги ПУС" или ВыборкаЗадание.ОбъектСтроительства.Наименование = "Ремонт дороги" или ВыборкаЗадание.ОбъектСтроительства.Наименование = "Снегозадержание на угл. дороге ПУС"  тогда
           ОбластьСтрока.Параметры.Дорога = ВыборкаЗадание.КоличествоЧасов;
           Дорога = Число(ВыборкаЗадание.КоличествоЧасов);
       иначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Работа Южный 1" тогда
           ОбластьСтрока.Параметры.Южный1 = ВыборкаЗадание.КоличествоЧасов;
           Южный1 = Число(ВыборкаЗадание.КоличествоЧасов);
       ИначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Работа Южный 2" тогда
           ОбластьСтрока.Параметры.Южный2 = Выборказадание.КоличествоЧасов;
           Южный2 = Число(ВыборкаЗадание.КоличествоЧасов);
       ИначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Работа в ТД Сибирь" тогда
           ОбластьСтрока.Параметры.ТДСибирь = ВыборкаЗадание.КоличествоЧасов;
           ТДСибирь = Число(ВыборкаЗадание.КоличествоЧасов);
       ИначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Хоз.работы Сиб-Транзит" тогда
           ОбластьСтрока.Параметры.СибТранзит = ВыборкаЗадание.КоличествоЧасов;
           СибТранзит = Число(ВыборкаЗадание.КоличествоЧасов);
       ИначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Погрузка угля" тогда
           ОбластьСтрока.Параметры.ПУС = ВыборкаЗадание.КоличествоЧасов;
           ПУС = Число(ВыборкаЗадание.КоличествоЧасов);
       КонецЕсли;
       Если ВыборкаЗадание.Маршрут.Наименование = "ГСМ" тогда
           ОбластьСтрока.Параметры.ПеревезеноГСМкгПУС = ВыборкаЗадание.КоличествоТонн;
       КонецЕсли;
       КонецЦикла;
13 Dethmont
 
18.02.13
03:00
А все так хорошо начиналось =(
14 Alex375
 
18.02.13
03:52
Мда... Привязываться к наименованию грубейшая ошибка построения системы. Что касается твоего вопроса: тебе гораздо лучше помогут, если указать контекст задачи.
15 Tumakota
 
18.02.13
05:15
(14) Контекст задачи делаю отчет по УАТу
Есть там колонки ПУС, ЮЖНЫЙ1 и т.к и в них надо по машинам вывести часы, вот нашел он машину на объекте вывел часа и потом у всех последующих, тоже выводятся даже если они там не были
16 Tumakota
 
18.02.13
06:56
Процедура КнопкаСформироватьНажатие(Кнопка)
   ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1;
   ТабДок.Очистить();
   Макет = ПолучитьМакет("макет");
   
   Запрос = Новый Запрос;
   Запрос.Текст =  "ВЫБРАТЬ
                   |    уатПервоначальныеСведенияТС.ОсновноеСредство,
                   |    уатПервоначальныеСведенияТС.ГосударственныйНомер,
                   |    уатПервоначальныеСведенияТС.Модель,
                   |    уатПутевойЛист.Ссылка,
                   |    уатПутевойЛист.Номер,
                   |    уатПутевойЛист.Дата,
                   |    уатПутевойЛист.Проведен,
                   |    уатПутевойЛист.Рассчитан,
                   |    уатПутевойЛист.ТранспортноеСредство,
                   |    уатПутевойЛист.Водитель1,
                   |    уатПутевойЛист.ДатаВыезда,
                   |    уатПутевойЛист.ДатаВозвращения,
                   |    уатПутевойЛист.СпидометрВыезда,
                   |    уатПутевойЛист.СпидометрВозвращения,
                   |    уатПутевойЛист.ПринялДиспетчер,
                   |    уатПутевойЛист.Смена,
                   |    уатПутевойЛист.ОстатокТопливаВыезд,
                   |    уатПутевойЛист.ОстатокТопливаВозврат,
                   |    уатПутевойЛист.Задание.(
                   |        Контрагент,
                   |        ОбъектСтроительства,
                   |        Маршрут,
                   |        АдресПрибытия,
                   |        АдресУбытия,
                   |        ВремяПрибытия,
                   |        ВремяУбытия,
                   |        КоличествоЕздок,
                   |        КоличествоЧасов,
                   |        КоличествоТонн,
                   |        а_количествоТоннФакт
                   |    ),
                   |    уатПутевойЛист.Простои.(
                   |        ВидПростоя,
                   |        НачалоПростоя,
                   |        ВремяПростоя,
                   |        НачалаПростоя,
                   |        ВремяОкончания
                   |    ),
                   |    уатПутевойЛист.РасходГСМ.(
                   |        ТС,
                   |        ГСМ,
                   |        ОстатокПриВыезде,
                   |        ОстатокПриВозвращении,
                   |        Выдано,
                   |        Сдано,
                   |        РасходПоНорме,
                   |        РасходПоФакту
                   |    )
                   |ИЗ
                   |    Документ.уатПутевойЛист КАК уатПутевойЛист
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
                   |        ПО уатПутевойЛист.ТранспортноеСредство = уатПервоначальныеСведенияТС.ОсновноеСредство
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.уатМестонахождениеТС КАК уатМестонахождениеТС
                   |        ПО уатПутевойЛист.ТранспортноеСредство = уатМестонахождениеТС.ТС
                   |ГДЕ
                   |    уатПутевойЛист.Дата МЕЖДУ &ПериодНачала И &ПериодКонец
                   |    И уатПутевойЛист.Смена = &Смена
                   |    И уатМестонахождениеТС.Колонна = &Колонна";
                  Запрос.УстановитьПараметр("организация", Организация);
                  Запрос.УстановитьПараметр("ПериодНачала", НачалоДня(ПериодНачала));
                  Запрос.УстановитьПараметр("периодконец", КонецДня(ПериодКонец));
                  Запрос.УстановитьПараметр("Смена", Смена);
                  Запрос.УстановитьПараметр("Колонна", Колонна);

   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   
   ОбластьШапкаОсновная = Макет.ПолучитьОбласть("Шапка");
   ОбластьШапкаОсновная.Параметры.Организация = Организация;
   ОбластьШапкаОсновная.Параметры.Дата = Формат(ПериодНачала, "ДЛФ=Д");
   ОбластьШапкаОсновная.Параметры.Смена = Смена;
   ТабДок.Вывести(ОбластьШапкаОсновная);
   
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ТабДок.Вывести(ОбластьЗаголовок);
   

   ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
   Дорога = 0;
   Южный1 = 0;
   Южный2 = 0;
   ТДСибирь = 0;
   СибТранзит = 0;
   ПУС = 0;
   Пока Выборка.Следующий() цикл
       ОбластьСтрока.Параметры.НаименованиеТехники = Выборка.Модель.ТипТС.Наименование;
       ОбластьСтрока.Параметры.Марка = Выборка.Модель.Родитель;
       ОбластьСтрока.Параметры.РегистрНомер = Выборка.ГосударственныйНомер;
       ОбластьСтрока.Параметры.НомерПутЛиста = Выборка.Номер;
       ОбластьСтрока.Параметры.ФИОДиспетчер = Выборка.ПринялДиспетчер;
       ОбластьСтрока.Параметры.ФИОВодителя =  Выборка.Водитель1;    
       Задание = Выборка.задание;
       ВыборкаЗадание = задание.Выбрать();
       Пока ВыборкаЗадание.Следующий() Цикл
       Если ВыборкаЗадание.ОбъектСтроительства.Наименование = "Планирование углевозной дороги ПУС" или ВыборкаЗадание.ОбъектСтроительства.Наименование = "Поливание углевозной дороги ПУС" или ВыборкаЗадание.ОбъектСтроительства.Наименование = "Посыпка углевозной дороги ПУС" или ВыборкаЗадание.ОбъектСтроительства.Наименование = "Ремонт дороги" или ВыборкаЗадание.ОбъектСтроительства.Наименование = "Снегозадержание на угл. дороге ПУС"  тогда
           ОбластьСтрока.Параметры.Дорога = ВыборкаЗадание.КоличествоЧасов;
           Дорога = Число(ВыборкаЗадание.КоличествоЧасов);
       иначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Работа Южный 1" и ВыборкаЗадание.Контрагент.Наименование = "Южный разрез" тогда
           ОбластьСтрока.Параметры.Южный1 = ВыборкаЗадание.КоличествоЧасов;
           Южный1 = Число(ВыборкаЗадание.КоличествоЧасов);
       //иначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "резерв" и ВыборкаЗадание.Контрагент.Наименование = "Южный разрез" тогда
       //    ОбластьСтрока.Параметры.Южный1Рез = ВыборкаЗадание.КоличествоЧасов;
       //    Южный1Рез = Число(ВыборкаЗадание.КоличествоЧасов);
       ИначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Работа Южный 2" и ВыборкаЗадание.Контрагент.Наименование = "Южный разрез" тогда
           ОбластьСтрока.Параметры.Южный2 = Выборказадание.КоличествоЧасов;
           Южный2 = Число(ВыборкаЗадание.КоличествоЧасов);
       ИначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Работа в ТД Сибирь" тогда
           ОбластьСтрока.Параметры.ТДСибирь = ВыборкаЗадание.КоличествоЧасов;
           ТДСибирь = Число(ВыборкаЗадание.КоличествоЧасов);
       ИначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Хоз.работы Сиб-Транзит" тогда
           ОбластьСтрока.Параметры.СибТранзит = ВыборкаЗадание.КоличествоЧасов;
           СибТранзит = Число(ВыборкаЗадание.КоличествоЧасов);
       ИначеЕсли ВыборкаЗадание.ОбъектСтроительства.Наименование = "Погрузка угля" тогда
           ОбластьСтрока.Параметры.ПУС = ВыборкаЗадание.КоличествоЧасов;
           ПУС = Число(ВыборкаЗадание.КоличествоЧасов);
       КонецЕсли;
       Если ВыборкаЗадание.Маршрут.Наименование = "ГСМ" тогда
           ОбластьСтрока.Параметры.ПеревезеноГСМкгПУС = ВыборкаЗадание.КоличествоТонн;
       КонецЕсли;
       КонецЦикла;
       Итог = Дорога+Южный1+Южный2+ТДСибирь+СибТранзит+ПУС;
       ОбластьСтрока.Параметры.ИтогоОтработаноМото = Итог;
       ОбластьСтрока.Параметры.КоличествоТопливаНаНачало = Выборка.ОстатокТопливаВыезд;
       ГСМ =  Выборка.РасходГСМ;
       ВыборкаГСМ = ГСМ.Выбрать();
       Пока ВыборкаГСМ.Следующий() цикл    
       ОбластьСтрока.Параметры.КоличествоЗаправленногоТоплива = ВыборкаГСМ.Выдано;
       ОбластьСтрока.Параметры.РасходТопливаЗаСмену = ВыборкаГСМ.РасходГСМ.РасходПоФакту;
       Норма = ВыборкаГСМ.РасходПоНорме;
       КонецЦикла;
       //ОбластьСтрока.Параметры.КоличествоСлитогоТоплива
       ОбластьСтрока.Параметры.ОбъемТопливногоБака =  Выборка.Модель.ОбъемБака ;
       ОбластьСтрока.Параметры.КоличествоТопливаНаКонец = Выборка.ОстатокТопливаВозврат;
       
       ОбластьСтрока.Параметры.ПоказанияСпидометраНаНачало = Выборка.СпидометрВыезда;
       ОбластьСтрока.Параметры.ПоказанияСпидометраНаКонец  = Выборка.СпидометрВозвращения;
       ОбластьСтрока.Параметры.ПробегЗаСмену  = Выборка.СпидометрВозвращения - Выборка.СпидометрВыезда;
       Расход = Окр(100*Норма/(Выборка.СпидометрВозвращения - Выборка.СпидометрВыезда),0);
       Если Расход < 100 тогда
       ОбластьСтрока.Параметры.РасходТоплива  = Расход;
       Иначе
       ОбластьСтрока.Параметры.РасходТоплива  = Окр(Расход/100,1);
       КонецЕсли;
       Простои =  Выборка.Простои;
       ВыборкаПростои = Простои.Выбрать();
       Пока ВыборкаПростои.Следующий() цикл    
       ОбластьСтрока.Параметры.ВремяНачала = ВыборкаПростои.НачалаПростоя;
       ОбластьСтрока.Параметры.ВремяОкончания =  ВыборкаПростои.ВремяОкончания;
       ОбластьСтрока.Параметры.Примечания  =   ВыборкаПростои.ВидПростоя;
       КонецЦикла;
       ТабДок.Вывести(ОбластьСтрока);
   КонецЦикла;
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   // Вставить содержимое обработчика.
КонецПроцедуры

Вот Сам вывод отчета, подскажите почему он выводит в последующей машине данные по предудущей?
17 Tumakota
 
18.02.13
08:26
Народ помогите очень нужно, щас смотрю в отладчике, там где идет проверка на маршрут, он на условие не попадает проходит мимо условия, но количество часов серовно ставит, почему так может быть подскажите
18 Wobland
 
18.02.13
08:37
за ТЗ в секции выбрать - расстрел, за сравнение с наименованием - ссылка. работать отладчиком на таком коде очень лениво
19 SeraFim
 
18.02.13
08:39
Быть может, параметры не перезаполняются? Первая машина - заполнились, Вторая - ничего нету, осталось от прошлой.
Перенес бы получение ОбластиСтроки внутрь цикла:
   Пока Выборка.Следующий() цикл
       ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
       ОбластьСтрока.Параметры.НаименованиеТехники = Выборка.Модель.ТипТС.Наименование;
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.