Результат запроса, положить в параметр Макета
Добрые люди, помогите дилетанту пожалуйста.
Хочу создать запрос на ДатуОкончания страховки контрагента. И хочу сравнить его с текущей датой. И если Страховка просрочена то написать - "Страховка просрочена", а иначе "Страховка действует"
Вот что я додумал и написал (Не судите строго тут все криво)
Ошибка в итоге такая
Скриншот макета и параметра на скрине2 (просто поместил пока что, макет не оформлял)
Хочу создать запрос на ДатуОкончания страховки контрагента. И хочу сравнить его с текущей датой. И если Страховка просрочена то написать - "Страховка просрочена", а иначе "Страховка действует"
Вот что я додумал и написал (Не судите строго тут все криво)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| МАКСИМУМ(ДоговорыКонтрагентовСтраховка.ДатаОкончания) КАК ДатаОкончания,
| ВЫБОР
| КОГДА ДоговорыКонтрагентовСтраховка.ДатаОкончания < &ТекущаяДата
| ТОГДА ""Страховка просрочена""
| ИНАЧЕ ""Страховка действует""
| КОНЕЦ КАК Поле1 Ы
|ИЗ
| Справочник.ДоговорыКонтрагентов.Страховка КАК ДоговорыКонтрагентовСтраховка
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ДоговорыКонтрагентовСтраховка.ДатаОкончания < &ТекущаяДата
| ТОГДА ""Страховка просрочена""
| ИНАЧЕ ""Страховка действует""
| КОНЕЦ"
;
Запрос.УстановитьПараметр("strah", Договор.Контрагент);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбластьШапка = Макет.ПолучитьОбласть("Заголовок");
УстановитьПараметр(ОбластьШапка, "strah", Выборка.ДоговорыКонтрагентовСтраховка);
ПоказатьОшибка в итоге такая
{ВнешнийОтчет.СправкаМониторинга_отладка.Форма.ФормаОтчета.Форма(940,24)}: Переменная не определена (Макет)
ОбластьШапка = <<?>>Макет.ПолучитьОбласть("Заголовок"); (Проверка: Сервер)
{ВнешнийОтчет.СправкаМониторинга_отладка.Форма.ФормаОтчета.Форма(941,9)}: Процедура или функция с указанным именем не определена (УстановитьПараметр)
<<?>>УстановитьПараметр(ОбластьШапка, "strah", Выборка.ДоговорыКонтрагентовСтраховка); (Проверка: Сервер)
Скриншот макета и параметра на скрине2 (просто поместил пока что, макет не оформлял)
По теме из базы знаний
- Консоль запросов 8.3 (обычное приложение) с возможностью переноса параметров запроса через строку (из отладки). А также с возможностью очень быстрой выгрузки больших объемов данных в Excel(CSV) исключительно мощностями сервера
- Консоль запросов со встроенным Конструктором запросов для 1с8.3 (8.2) своими руками
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
- Быстрый старт в тестировании на платформе 1С (Vanessa-ADD)
- Несколько альтернативных универсальных способов подбора ссылок при переносах данных
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
1. необходимо для начала получить сам макет, чтобы в нем получать области.
2.Это что за ответ ChatGPT:
?
Если это про заполнение параметров, то
, при этом поля в выборке должны по именам совпадать с именами параметров макета.
Если не совпадают, то
1. необходимо для начала получить сам макет, чтобы в нем получать области.
2.Это что за ответ ChatGPT:
УстановитьПараметр(ОбластьШапка, "strah", Выборка.ДоговорыКонтрагентовСтраховка);
?
Если это про заполнение параметров, то
ОбластьШапка.Параметры.Заполнить(Выборка)
, при этом поля в выборке должны по именам совпадать с именами параметров макета.
Если не совпадают, то
ОбластьШапка.Параметры.<ИмяПараметра> = <Значение>
(7)текст запроса - верный(он же конструктором составлен?).
Правильный ли результат запроса - не знаю, вам виднее, какие данные нужно получить.
Если начать разбираться, то запрос - чушь полнейшая, зачем в нем получается максимальная дата окончания по всем договорам - абсолютно не понятно.
Правильный ли результат запроса - не знаю, вам виднее, какие данные нужно получить.
Если начать разбираться, то запрос - чушь полнейшая, зачем в нем получается максимальная дата окончания по всем договорам - абсолютно не понятно.
(8)
Да я конструктором составлял.
В справочнике договор, есть табличная часть страховка и там записываются даты начала и окончания страховки. Максимумом я хотел получить именно последней даты страховку (то есть актуальную), и сравнить ее с текущей датой. И если она не просрочена, вывести в параметр макета "Страховка действует" в противном случае "Страховка просрочена"
Да я конструктором составлял.
В справочнике договор, есть табличная часть страховка и там записываются даты начала и окончания страховки. Максимумом я хотел получить именно последней даты страховку (то есть актуальную), и сравнить ее с текущей датой. И если она не просрочена, вывести в параметр макета "Страховка действует" в противном случае "Страховка просрочена"
Прикрепленные файлы:
(9)Хорошо, если так, то:
1. зачем получать максимальную дату вообще по всем страховкам всех договоров?
2. зачем сравнивать не максимальное значение даты страховки с текущей датой?
Запрос будет что-то вроде:
Нужно еще параметры запроса установить, про которые забыли почему-то
1. зачем получать максимальную дату вообще по всем страховкам всех договоров?
2. зачем сравнивать не максимальное значение даты страховки с текущей датой?
Запрос будет что-то вроде:
Выбрать
ВЫБОР
КОГДА МАКСИМУМ(ДатаОкончания) < &ТекущаяДата
ТОГДА "Страховка просрочена"
ИНАЧЕ "Страховка действует"
КОНЕЦ КАК СтатусСтраховки
ИЗ
Справочник.ДоговорыКонтрагентов.Страховка
ГДЕ
Ссылка = &Договор
ПоказатьНужно еще параметры запроса установить, про которые забыли почему-то
ТАБ = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ВашМакет");
Заголовок = Макет.ПолучитьОбласть("Заголовок");
СтрокаТаблицы = Макет.ПолучитьОбласть("Строка");
ТАБ.Вывести(Заголовок);
Для Каждого СТР ИЗ Выборка Цикл
СтрокаТаблицы.Параметры.num_B = СТР.num_B;
СтрокаТаблицы.Параметры.Date_B = СТР.Date_B;
И тд заполняете.....
ТАБ.Вывести(СтрокаТаблицы);
КонецЦикла;
ТАБ.Показать();
Показать
Вроде внес изменения получилось вот так
Не судите строго я явно что то не понимаю)))
Код ошибки следующий
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| МАКСИМУМ(ДоговорыКонтрагентовСтраховка.ДатаОкончания) КАК ДатаОкончания,
| ВЫБОР
| КОГДА ДоговорыКонтрагентовСтраховка.ДатаОкончания < &ТекущаяДата
| ТОГДА ""Страховка просрочена""
| ИНАЧЕ ""Страховка действует""
| КОНЕЦ КАК СтатусСтрахования
|ИЗ
| Справочник.ДоговорыКонтрагентов.Страховка КАК ДоговорыКонтрагентовСтраховка
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ДоговорыКонтрагентовСтраховка.ДатаОкончания < &ТекущаяДата
| ТОГДА ""Страховка просрочена""
| ИНАЧЕ ""Страховка действует""
| КОНЕЦ"
;
Макет = ПолучитьМакет("МакетОтчета");
Заголовок = Макет.ПолучитьОбласть("Заголовок");
СтрокаТаблицы = Макет.ПолучитьОбласть("Строка");
Заголовок.Параметры.Заполнить(strah);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбластьШапка.Параметры.strah = СтатусСтрахования;
ПоказатьНе судите строго я явно что то не понимаю)))
Код ошибки следующий
{ВнешнийОтчет.СправкаМониторинга_отладка.Форма.ФормаОтчета.Форма(939,33)}: Переменная не определена (strah)
Заголовок.Параметры.Заполнить(<<?>>strah); (Проверка: Сервер)
{ВнешнийОтчет.СправкаМониторинга_отладка.Форма.ФормаОтчета.Форма(944,3)}: Переменная не определена (ОбластьШапка)
<<?>>ОбластьШапка.Параметры.strah = СтатусСтрахования; (Проверка: Сервер)
{ВнешнийОтчет.СправкаМониторинга_отладка.Форма.ФормаОтчета.Форма(944,34)}: Переменная не определена (СтатусСтрахования)
ОбластьШапка.Параметры.strah = <<?>>СтатусСтрахования; (Проверка: Сервер)
{ВнешнийОтчет.СправкаМониторинга_отладка.Форма.ФормаОтчета.Форма(936,14)}: Процедура или функция с указанным именем не определена (ПолучитьМакет)
Макет = <<?>>ПолучитьМакет("МакетОтчета"); (Проверка: Сервер)
Показать
(6) В макете ты должен быть "Область Заголовок" - где ты выводишь "Даты", "Всякие названия" ид.
И шапку таблицы - Это наименование "Договор", "ДатаПодписания" и тд (Можешь отдельно сделать как "Область Шапка Таблицы")
Должена быть "Область Строки", где ты выводишь Значение "Договора", "ФИО" и тд
у тебя управляемые формы. Получить макет таким способом не получится.
Вот так пробуйте.
Ваш запрос не проверял.
И шапку таблицы - Это наименование "Договор", "ДатаПодписания" и тд (Можешь отдельно сделать как "Область Шапка Таблицы")
Должена быть "Область Строки", где ты выводишь Значение "Договора", "ФИО" и тд
у тебя управляемые формы. Получить макет таким способом не получится.
Вот так пробуйте.
&НаСервере
Функция ПолучитьМакет()
Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("МакетОтчета");
КонецФункции
ТАБ = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| МАКСИМУМ(ДоговорыКонтрагентовСтраховка.ДатаОкончания) КАК ДатаОкончания,
| ВЫБОР
| КОГДА ДоговорыКонтрагентовСтраховка.ДатаОкончания < &ТекущаяДата
| ТОГДА ""Страховка просрочена""
| ИНАЧЕ ""Страховка действует""
| КОНЕЦ КАК СтатусСтрахования
|ИЗ
| Справочник.ДоговорыКонтрагентов.Страховка КАК ДоговорыКонтрагентовСтраховка
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ДоговорыКонтрагентовСтраховка.ДатаОкончания < &ТекущаяДата
| ТОГДА ""Страховка просрочена""
| ИНАЧЕ ""Страховка действует""
| КОНЕЦ"
;
Макет = ПолучитьМакет();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ТАБ.Вывести(Заголовок);
ТЗ = Запрос.Выполнить().Выгрузить()
Если ТЗ.Количество() > 0 Тогда
Для каждого СТР Из ТЗ Цикл
ОбластьСтрока.Параметры.strah = СТР.СтатусСтрахования;
И ТД заполняешь
....................................
ТАБ.Вывести(ОбластьСтрока);
КонецЦикла;
КонецЕсли;
ТАБ.Показать();
ПоказатьВаш запрос не проверял.
(11)
Сделал как вы сказали, то ему параметров не хватало, то их теперь много)))
Вот что вышло
А вот сама ошибка
Сделал как вы сказали, то ему параметров не хватало, то их теперь много)))
Вот что вышло
ТАБ = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ВЫБОР
| КОГДА МАКСИМУМ(ДатаОкончания) < &ТекущаяДата
| ТОГДА ""Страховка просрочена""
| ИНАЧЕ ""Страховка действует""
| КОНЕЦ КАК СтатусСтрахования
|ИЗ
| Справочник.ДоговорыКонтрагентов.Страховка КАК ДоговорыКонтрагентовСтраховка
|ГДЕ
| Ссылка = &Договор"
;
Макет = ПолучитьМакет("МакетОтчета");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьСтрока = Макет.ПолучитьОбласть("strah");
ТАБ.Вывести(Заголовок);
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество() > 0 Тогда
Для каждого СТР Из ТЗ Цикл
ОбластьСтрока.Параметры.strah = СТР.СтатусСтрахования;
ТАБ.Вывести(ОбластьСтрока);
КонецЦикла;
КонецЕсли;
ТАБ.Показать();
Возврат РеквизитФормыВЗначение("strah").ПолучитьМакет("МакетОтчета");
ПоказатьА вот сама ошибка
{ВнешнийОтчет.СправкаМониторинга_отладка.Форма.ФормаОтчета.Форма(1026,23)}: Слишком много фактических параметров (ПолучитьМакет)
Макет = ПолучитьМакет(<<?>>"МакетОтчета"); (Проверка: Сервер)
(17)Заканчивайте программирование вслепую: вы не устанавливаете параметры запроса, выполнение запроса прерывается с ошибкой отсутствия требуемых параметров
не обижайтесь, но программировать - это не ваше. займитесь совершенствованием себя в том, что у вас получается хорошо.
не обижайтесь, но программировать - это не ваше. займитесь совершенствованием себя в том, что у вас получается хорошо.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот