|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
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
|
Быть может, параметры не перезаполняются? Первая машина - заполнились, Вторая - ничего нету, осталось от прошлой.
Перенес бы получение ОбластиСтроки внутрь цикла: Пока Выборка.Следующий() цикл ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьСтрока.Параметры.НаименованиеТехники = Выборка.Модель.ТипТС.Наименование; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |