Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 09:54

Не отображается значение в документе

Автор Белкет, 25 сен 2017, 21:48

0 Пользователей и 1 гость просматривают эту тему.

Белкет

Здравствуйте.
Есть запрос:ВЫБРАТЬ ПЕРВЫЕ 1
| ВыбраннаяДата.Дата_события КАК ОднаДата
|ПОМЕСТИТЬ ВыбранныеДаты
|ИЗ
| (ВЫБРАТЬ ПЕРВЫЕ 2
| ЖУА.Дата_события КАК Дата_события
| ИЗ
| Документ.Журнал_учета_автомобилей КАК ЖУА
| ГДЕ
| ЖУА.ГосНомер = &ГосНомер
|
| УПОРЯДОЧИТЬ ПО
| ЖУА.Дата_события УБЫВ) КАК ВыбраннаяДата
|
|УПОРЯДОЧИТЬ ПО
| ВыбраннаяДата.Дата_события
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| ТарифыРегистрСведений.Цена КАК ЦенаТарифа
|ИЗ
| РегистрСведений.ТарифыРегистрСведений КАК ТарифыРегистрСведений,
| ВыбранныеДаты КАК ВыбранныеДаты
|ГДЕ
| ТарифыРегистрСведений.НазваниеТарифа = &Тариф
| И ТарифыРегистрСведений.Период <= ВыбранныеДаты.ОднаДата
|
|УПОРЯДОЧИТЬ ПО
| ТарифыРегистрСведений.Период УБЫВ

Результат его работы таков:

Мне нужно занести ЦенаТарифа в текстовый документ. Я использую такой код:
ПолучениеСтоимости = ВыборСтоимости.Выполнить().Выбрать();
Пока ПолучениеСтоимости.Следующий() Цикл
    Шапка.Параметры.Стоимость = ПолучениеСтоимости.ЦенаТарифа;
КонецЦикла;

Однако, значение не заносится в параметр шапки.

Подскажите пожалуйста, где здесь ошибка?

vitasw

Цитата: Белкет от 25 сен 2017, 21:48

Мне нужно занести ЦенаТарифа в текстовый документ. Я использую такой код:
ПолучениеСтоимости = ВыборСтоимости.Выполнить().Выбрать();
Пока ПолучениеСтоимости.Следующий() Цикл
    Шапка.Параметры.Стоимость = ПолучениеСтоимости.ЦенаТарифа;
КонецЦикла;

Однако, значение не заносится в параметр шапки.

Подскажите пожалуйста, где здесь ошибка?

В текстовый документ? и параметр? вы точно понимаете о чем говорите?

Белкет

Цитата: vitasw от 26 сен 2017, 14:20
В текстовый документ? и параметр? вы точно понимаете о чем говорите?
Извините, ошибся. Я имел ввиду печатную форму.

vitasw

Та покажите весь код как вы оперируете с "шапка"

Белкет

Цитата: vitasw от 26 сен 2017, 14:32
Та покажите весь код как вы оперируете с "шапка"
Процедура Печать(ТабДок, ГосНомер, Тариф) Экспорт
Макет = Документы.Журнал_учета_автомобилей.ПолучитьМакет("Печать");
ВыборСтоимости = Новый Запрос;
ВыборСтоимости.УстановитьПараметр("ГосНомер", ГосНомер);
ВыборСтоимости.УстановитьПараметр("Тариф", Тариф);
ВыборСтоимости.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВыбраннаяДата.Дата_события КАК ОднаДата
|ПОМЕСТИТЬ ВыбранныеДаты
|ИЗ
| (ВЫБРАТЬ ПЕРВЫЕ 2
| ЖУА.Дата_события КАК Дата_события
| ИЗ
| Документ.Журнал_учета_автомобилей КАК ЖУА
| ГДЕ
| ЖУА.ГосНомер = &ГосНомер
|
| УПОРЯДОЧИТЬ ПО
| ЖУА.Дата_события УБЫВ) КАК ВыбраннаяДата
|
|УПОРЯДОЧИТЬ ПО
| ВыбраннаяДата.Дата_события
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| ТарифыРегистрСведений.Цена КАК ЦенаТарифа
|ИЗ
| РегистрСведений.ТарифыРегистрСведений КАК ТарифыРегистрСведений,
| ВыбранныеДаты КАК ВыбранныеДаты
|ГДЕ
| ТарифыРегистрСведений.НазваниеТарифа = &Тариф
| И ТарифыРегистрСведений.Период <= ВыбранныеДаты.ОднаДата
|
|УПОРЯДОЧИТЬ ПО
| ТарифыРегистрСведений.Период УБЫВ";
ПолучениеСтоимости = ВыборСтоимости.Выполнить().Выбрать();
ВыводОсновнойИнформации = Новый Запрос;
ВыводОсновнойИнформации.УстановитьПараметр("ГосНомер", ГосНомер);
ВыводОсновнойИнформации.Текст=
    "ВЫБРАТЬ ПЕРВЫЕ 2
| Журнал_учета_автомобилей.ГосНомер,
| Журнал_учета_автомобилей.Вид_события КАК ВидСобытия,
| Журнал_учета_автомобилей.Дата_события КАК ДатаСобытий,
| Журнал_учета_автомобилей.Охранник,
| Журнал_учета_автомобилей.Тариф,
| Клиенты.Наименование КАК ФИОКлиента
|ИЗ
| Документ.Журнал_учета_автомобилей КАК Журнал_учета_автомобилей
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Тарифы КАК Тарифы
| ПО Журнал_учета_автомобилей.Тариф = Тарифы.Ссылка,
| Справочник.Автомобили КАК Автомобили
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Клиенты КАК Клиенты
| ПО Автомобили.ФИО_клиента = Клиенты.Ссылка
|ГДЕ
| Журнал_учета_автомобилей.ГосНомер = &ГосНомер
| И Автомобили.Наименование = &ГосНомер
|
|УПОРЯДОЧИТЬ ПО
| ДатаСобытий УБЫВ";
ПолучениеОсновнойИнформации = ВыводОсновнойИнформации.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
Данные = Макет.ПолучитьОбласть("Данные");
Выписка = Макет.ПолучитьОбласть("Выписка");
СоставШапки = Макет.ПолучитьОбласть("СоставШапки");
ТабДок.Очистить();
Шапка.Параметры.Дата = ТекущаяДата();
Пока ПолучениеСтоимости.Следующий() Цикл
Шапка.Параметры.Стоимость = ПолучениеСтоимости.ЦенаТарифа;
КонецЦикла;

ВставлятьРазделительСтраниц = Ложь;
НаборДат = Новый Массив;

ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(Выписка);
ТабДок.Вывести(СоставШапки);

Пока ПолучениеОсновнойИнформации.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Шапка.Параметры, ПолучениеОсновнойИнформации);
ЗаполнитьЗначенияСвойств(Данные.Параметры, ПолучениеОсновнойИнформации);
ТабДок.Вывести(Данные, ПолучениеОсновнойИнформации.Уровень());
НаборДат.Добавить(ПолучениеОсновнойИнформации.ДатаСобытий);
КонецЦикла;
Шапка.Параметры.ВремяНаСтоянке = (НаборДат[0]-НаборДат[1])/60;
//Шапка.Параметры.Итого = ОКР((Шапка.Параметры.Стоимость/60)*Шапка.Параметры.ВремяНаСтоянке);
ТабДок.Вывести(Шапка, ПолучениеОсновнойИнформации.Уровень());
КонецПроцедуры

Все, кроме "стоимости", работает корректно.

vitasw

Я б конечно в первую очередь подумал, про непонятный запрос. Боюсь без отладчика не обойтись ставте точку останова тут
Шапка.Параметры.Стоимость = ПолучениеСтоимости.ЦенаТарифа;
и проверяйте что оно возвращает

Oldman06

Запрос, действительно странный... Так, ради эксперимента поменяйте
Пока ПолучениеСтоимости.Следующий() Цикл
    Шапка.Параметры.Стоимость = ПолучениеСтоимости.ЦенаТарифа;
КонецЦикла;

на
Если ПолучениеСтоимости.Следующий() Тогда
    Шапка.Параметры.Стоимость = ПолучениеСтоимости.ЦенаТарифа;
КонецЕсли;

Запрос, вроде как, должен возвращать одну запись, нет смысла использовать цикл.

Белкет

Всем спасибо за советы. Проблема решилась)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск