8.х соединение отчетов

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем serega25, 22 апр 2011.

  1. TopicStarter Overlay
    serega25
    Offline

    serega25

    Регистрация:
    28 дек 2010
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Добрый вечер уважаемые специалисты !

    Помогите найти ошибку. Хочу соединить данные из справочника "Контрагенты" и "ДоговорыКонтрагентов". Написал следующий код:

    Код:
    Процедура СформироватьНажатие(Элемент)
    // Вставить содержимое обработчика.
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Спр1.Владелец КАК Владелец,
    | Спр1.Наименование КАК Наименование,
    | Спр1.ТипЦен КАК ТипЦен,
    | Спр1.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности,
    | Спр1.СрокДействия КАК СрокДействия,
    | Спр1.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
    | Спр2.Наименование КАК НаименованиеПолное,
    | Спр2.Лицензия КАК Лицензия,
    | Спр2.ОсновнойМенеджерПокупателя КАК ОсновнойМенеджерПокупателя
    | ИЗ
    | Справочник.ДоговорыКонтрагентов КАК СПР1
    | СОЕДИНЕНИЕ
    | Справочник.Контрагенты КАК СПР2
    | ПО Спр1.Владелец = Спр2.Наименование";
    Выборка = Запрос.Выполнить().Выбрать();
    ТабДок = Новый ТабличныйДокумент;
    Макет = Отчеты.ОтчетСФормой.ПолучитьМакет("Макет");
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    Область = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(Область);
    Пока Выборка.Следующий() = Истина Цикл
    Область = Макет.ПолучитьОбласть("Строка");
    Область.Параметры.Наименование = Выборка.Наименование;
    Область.Параметры.ТипЦен = Выборка.ТипЦен;
    Область.Параметры.ДопустимоеЧислоДнейЗадолженности =  Выборка.ДопустимоеЧислоДнейЗадолженности;
    Область.Параметры.СрокДействия = Выборка.СрокДействия;
    Область.Параметры.ОсновнойМенеджерПокупателя = Выборка.ОсновнойМенеджерПокупателя;
    Область.Параметры.Лицензия = Выборка.Лицензия;
    Область.Параметры.ДопустимаяСуммаЗадолженности = Выборка.ДопустимаяСуммаЗадолженности;
    ТабДок.Вывести(Область);
    КонецЦикла;
    ТабДок.ОтображатьСетку = Истина;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    
    КонецПроцедуры
    
    А макет выдает пустые значения....

    Поля, выбранные для соединения справочников приведены в виде картинок
    Посмотреть вложение 7088
    Посмотреть вложение 7089
    Может нужны другие поля для связи ???
    Буду очень признателен за помощь!

    Вложения:

    • v1.jpg
      v1.jpg
      Размер файла:
      318,6 КБ
      Просмотров:
      38
    • v2.jpg
      v2.jpg
      Размер файла:
      403,2 КБ
      Просмотров:
      37
  2. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    "ВЫБРАТЬ
    | ДоговорыКонтрагентов.Владелец КАК Владелец,
    | ДоговорыКонтрагентов.Наименование КАК Наименование,
    | ДоговорыКонтрагентов.ТипЦен КАК ТипЦен,
    | ДоговорыКонтрагентов.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности,
    | ДоговорыКонтрагентов.СрокДействия КАК СрокДействия,
    | ДоговорыКонтрагентов.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
    | ДоговорыКонтрагентов.Владелец.Наименование КАК НаименованиеПолное,
    | ДоговорыКонтрагентов.Владелец.Лицензия КАК Лицензия,
    | ДоговорыКонтрагентов.Владелец.ОсновнойМенеджерПокупателя КАК ОсновнойМенеджерПокупателя
    | ИЗ
    | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов"
    
  3. TopicStarter Overlay
    serega25
    Offline

    serega25

    Регистрация:
    28 дек 2010
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Спасибо ! Все получилось !
  4. TopicStarter Overlay
    serega25
    Offline

    serega25

    Регистрация:
    28 дек 2010
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Уважаемые специалисты !

    Можно мне снова поднять вопрос про соединение отчетов.
    В предыдущем примере удалось обойтись без объединения, но в описываемом ниже примере без него не обойтись:
    Запрос.Текст = "ВЫБРАТЬ
    | ДоговорыКонтрагентов.Владелец КАК Владелец,
    | ДоговорыКонтрагентов.Наименование КАК Наименование,
    | ДоговорыКонтрагентов.ТипЦен КАК ТипЦен,
    | ДоговорыКонтрагентов.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности,
    | ДоговорыКонтрагентов.СрокДействия КАК СрокДействия,
    | ДоговорыКонтрагентов.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
    | ДоговорыКонтрагентов.Владелец.Наименование КАК НаименованиеПолное,
    | ДоговорыКонтрагентов.Владелец.Лицензия КАК Лицензия,
    | ДоговорыКонтрагентов.Владелец.ОсновнойМенеджерПокупателя КАК ОсновнойМенеджерПокупателя,
    | Скид.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки
    | ИЗ
    | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    | ПРАВОЕ СОЕДИНЕНИЕ
    | РегистрСведений.СкидкиНаценкиНоменклатуры КАК Скид
    | ПО ДоговорыКонтрагентов.Наименование=Скид.ПолучательСкидки";


    Подскажите, почему макет не заполняется данными ?
  5. Hr0n
    Offline

    Hr0n Опытный в 1С

    Регистрация:
    17 авг 2009
    Сообщения:
    353
    Симпатии:
    0
    Баллы:
    26
    Зачем Правое соединение? Вы получается выводите в обязательном порядке только скидки, а не договоры. И чтобы ПроцентСкидкиНаценки был равен нулю, если такого не найдено в результате соединения (NULL), используйте метод ЕСТЬNULL()
    Код:
    "ВЫБРАТЬ
    | ДоговорыКонтрагентов.Владелец КАК Владелец,
    | ДоговорыКонтрагентов.Наименование КАК Наименование,    
    | ДоговорыКонтрагентов.ТипЦен КАК ТипЦен,    
    | ДоговорыКонтрагентов.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности,
    | ДоговорыКонтрагентов.СрокДействия КАК СрокДействия,    
    | ДоговорыКонтрагентов.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
    | ДоговорыКонтрагентов.Владелец.Наименование КАК НаименованиеПолное,    
    | ДоговорыКонтрагентов.Владелец.Лицензия КАК Лицензия,    
    | ДоговорыКонтрагентов.Владелец.ОсновнойМенеджерПокупателя КАК ОсновнойМенеджерПокупателя,
    [b] | ЕСТЬNULL[/b](Скид.ПроцентСкидкиНаценки, 0) КАК ПроцентСкидкиНаценки
    | ИЗ    
    | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    [b]| ЛЕВОЕ СОЕДИНЕНИЕ[/b]
    | РегистрСведений.СкидкиНаценкиНоменклатуры КАК Скид
    | ПО ДоговорыКонтрагентов.Наименование=Скид.ПолучательСкидки";
    
  6. TopicStarter Overlay
    serega25
    Offline

    serega25

    Регистрация:
    28 дек 2010
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Все исправил. Отчет появился, но без данных о скидках. При изменении соединения на ПРАВОЕ выводятся только одни скидки и все (другой инфо в отчете нет). Может это связано с тем, в регистре сведений приведены только договора с скидкой больше 0.
  7. Hr0n
    Offline

    Hr0n Опытный в 1С

    Регистрация:
    17 авг 2009
    Сообщения:
    353
    Симпатии:
    0
    Баллы:
    26
    [font="#092"]
    Код:
    | ПО ДоговорыКонтрагентов.Наименование=Скид.ПолучательСкидки
    
    Не нравится мне это соединение, проверьте внимательней, попробуйте
    Код:
    |ПО ДоговорыКонтрагентов.Ссылка = Скид.ПолучательСкидки
    
    [/font]
  8. TopicStarter Overlay
    serega25
    Offline

    serega25

    Регистрация:
    28 дек 2010
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Работает ! Спасибо большое
Похожие темы
  1. Александр-Н
    Ответов:
    9
    Просмотров:
    1.066
Загрузка...

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