8.х Проблема с запросом

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Asaena, 9 дек 2009.

  1. TopicStarter Overlay
    Asaena
    Offline

    Asaena

    Регистрация:
    30 ноя 2009
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте. Есть справочник Карточки_пациентов, в нём табличное поле Корь.
    Нужно заполнить печатную форму запросом из табличной части
    Вот что у меня получилось
    Код:
    Процедура Карта(Элемент)
    //{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Карта)
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Карточки_пациентов.Наименование КАК Наименование,
    |	Карточки_пациентовКорь.Дата_прививки КАК Дата_прививки,
    |	Карточки_пациентовКорь.Наименование_прививки КАК Наименование_прививки,
    |	Карточки_пациентовКорь.Серия КАК Серия,
    |	Карточки_пациентовКорь.Доза КАК Доза,
    |	Карточки_пациентовКорь.Реакция КАК Реакция,
    |	Карточки_пациентовКорь.Мед_отвод КАК Мед_отвод
    |ИЗ
    |	Справочник.Карточки_пациентов.Корь КАК Карточки_пациентовКорь
    |		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Карточки_пациентов КАК Карточки_пациентов
    |		ПО Карточки_пациентовКорь.Ссылка = Карточки_пациентов.Ссылка
    |УПОРЯДОЧИТЬ ПО
    |	Дата_прививки,
    |	Наименование_прививки,
    |	Серия,
    |	Доза,
    |	Реакция,
    |	Мед_отвод";
    Выборка = Запрос.Выполнить().Выбрать();
    
    ТабДок = Новый ТабличныйДокумент;
    Макет = Справочники.Карточки_пациентов.ПолучитьМакет("Карта");
    // Заголовок
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    // Шапка
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Шапка);
    
    Область = Макет.ПолучитьОбласть("ПрививкиШапка");
    ТабДок.Вывести(Область);
    
    Пока Выборка.Следующий() = Истина Цикл
    
    Область = Макет.ПолучитьОбласть("Строка");
    Область.Параметры.Дата = Выборка.Дата;
    Область.Параметры.Наименование_прививки = Выборка.Наименование;
    Область.Параметры.Серия = Выборка.Серия;
    Область.Параметры.Доза = Выборка.Доза;
    Область.Параметры.Реакция = Выборка.Реакция;
    Область.Параметры.Мед_отвод = Выборка.Отвод;
    
    //	Выборка.Выгрузить();
    ТабДок.Вывести(Область);
    КонецЦикла;
    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    //}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ 
    КонецПроцедуры
    
    
    Скрин печатной формы -
    [​IMG]

    Подскажите, пожалуйста, что тут не правильно ? (Запрос вообще ничего не выводит из табличной части). Можно ли использовать Область.Параметры.Дата = Выборка.Дата; Здесть параметры - это те же самые параметры, что и на макете или нет ?) Спасибо, заранее !
  2. Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    у вас запрос ничего не возвращает поэтому и не выводит.
    по-моему вот тут вся загвоздка:
    Код:
    ПО Карточки_пациентовКорь.Ссылка = Карточки_пациентов.Ссылка
    
    
    
    
  3. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Я не совсем понимаю зачем вам там соединение?Вы же говорите что берете всю информацию из ТЧ. Я смотрю по Зпапросу вы из Карточки пациентов берете только наименование Карточки_пациентов.Наименование . Что мешает так получить это из ТЧ Корь Карточки_пациентовКорь.Ссылка.Наименование.
    В соединении все дело
  4. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    согласен с Draco, можно и без соединения обойтись.
    можно сделать так:
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Карточки_пациентов.Наименование КАК Наименование,
    |	Карточки_пациентов.Корь.Дата_прививки КАК Дата_прививки,
    |	Карточки_пациентов.Корь.Наименование_прививки КАК Наименование_прививки,
    |	Карточки_пациентов.Корь.Серия КАК Серия,
    |	Карточки_пациентов.Корь.Доза КАК Доза,
    |	Карточки_пациентов.Корь.Реакция КАК Реакция,
    |	Карточки_пациентов.Корь.Мед_отвод КАК Мед_отвод
    |ИЗ
    |	Справочник.Карточки_пациентов КАК Карточки_пациентов
    |УПОРЯДОЧИТЬ ПО
    |	Дата_прививки,
    |	Наименование_прививки,
    |	Серия,
    |	Доза,
    |	Реакция,
    |	Мед_отвод";
    [CODE]
    и ещё....
    в цикле измените 
    Область.Параметры.Наименование_прививки = Выборка.Наименование;
    на
    Область.Параметры.Наименование_прививки = Выборка.Наименование_прививки;
  5. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Запрос, в принципе рабочий. Только он вернет информацию по всем элементам справочника Карточки_пациентов. Чтобы он отработал именно по той карточке, из которой вызывается печать, добавьте перед "Упорядочить"
    Код:
    |ГДЕ
    |    Карточки_пациентовКорь.Ссылка = &Элем
    
    
    
    и перед выполнением запроса заполните параметр
    Код:
    Запрос.УстановитьПараметр(\"Элем\",ЭтотОбъект.Ссылка);
    
    
    Соединение Вам, действительно ненужно, так как получить наименование элемента Вы можете непосредственно из элемента. А если уж так хочется иметь его в запросе, то получайте из ссылки:
    Код:
    |   Карточки_пациентовКорь.Ссылка.Наименование КАК Наименование,
    
    
    Ну, и параметры правильно заполняйте. У Вас в запросе "Дата_прививки", "Наименование_прививки" и "Мед_отвод". А из выборки тянете "Дата", "Наименование" и "Отвод".

    Просто интересно, Вы, wertklop, на ходу сочиняете, чего написать? Ваш запрос даже синтаксический контроль не пройдет, не говоря уж о результатах.
  6. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    а с чего вы решили, что он не пройдёт синтаксический контроль?вы пробовали?в чём же по вашему он не верен?
  7. TopicStarter Overlay
    Asaena
    Offline

    Asaena

    Регистрация:
    30 ноя 2009
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Всем спасибо за желание помочь. Особая благодарность ASh - всё заработало.
  8. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    По-моему, такие поля для упорядочивания не будут найдены, а если их даже удалить все, то Ваш запрос данные из табличной части тянуть не будет.

Поделиться этой страницей