8.х Вывод информации из справочника в Макет

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

  1. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    Есть печатная форма документа (Макет) в ней выводится реквизит "Организация".
    Есть справочник "Организации", в котором два реквизита: "Наименование" и "ФИОДиректора".
    Как обратится к справочнику и выбрать то ФИОДиректора, вывести его на печать, которое принадлежит Организации выбранной в документе?
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    у документа скорее всего есть реквизит Организация - соответственно Док.Организация.ФИОДиректора
  3. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    Не совсем понял, делаю так:
    Код:
    Область = Макет.ПолучитьОбласть("Директор");
    
    Область.Параметры.ФИОДиректора=Документы.РеализацияТоваровУслуг.Организация.ФИОДиректора;
    
    
    ТабДок.Вывести(Область);
    
    такая конструкция не работает
  4. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    у вас отчет выводиться по конкретному документу или как?

    такая конструкия и не отработает никогда. Реквизиты у конкретного документа можно получить
    Код:
    Область = Макет.ПолучитьОбласть("Директор");
    Область.Параметры.ФИОДиректора=СсылкаНаВашДокумент.Организация.ФИОДиректора;   //свою ссылку на документ поставьте
    
    ТабДок.Вывести(Область);
  5. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    Разобрался. Спасибо всем большое!
    Код:
    Область = Макет.ПолучитьОбласть("Директор");
    Область.Параметры.ФИОДиректора=Организация.ФИОДиректора;
    ТабДок.Вывести(Область);
    
  6. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    если внутри дока макет, то да можно и напрямую к реквизиту, а так по ссылке на документ можно значение реквизита получить
  7. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    Я могу в этой теме задавать свои вопросы? Просто я новичек, потихоньку разбираюсь...

    Еще проблемка у меня возникла.

    Делаю печатную форму для справочника "Контрагенты". Если еще справочник "Договора контрагентов", у которого свойство Владелец установлено: Справочник.Контрагенты.

    В печатной форме, помимо всех реквизитов справочника мне нужно вывести список всех договоров того или иного контрагента.

    Код:
    ОбластьДоговора = Макет.ПолучитьОбласть("Договора");
    ОбластьДоговора.Параметры.Договор=ДоговорыКонтрагентов.Владелец;
    ТабДок.Вывести(ОбластьДоговора);
    
    Вот такие неверные потуги... подскажите как правильно сделать?
  8. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Код:
    ОбластьДоговора = Макет.ПолучитьОбласть("Договора");
    ВыборкаДоговоров = Справочники.ДоговорыКонтрагентов.Выбрать(,Контрагент);
    Пока ВыборкаДоговоров.Следующий() Цикл
    ОбластьДоговора.Параметры.Договор=ВыборкаДоговоров.Ссылка;
    ТабДок.Вывести(ОбластьДоговора);
    КонецЦикла;
  9. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    В параметр выборки передаю Наименование контрагента, текущего элемента справочника:

    Код:
    ОбластьДоговора = Макет.ПолучитьОбласть("Договора");
    ВыборкаДоговоров = Справочники.ДоговорыКонтрагентов.Выбрать(,Наименование); 
    Пока ВыборкаДоговоров.Следующий() Цикл
    ОбластьДоговора.Параметры.Договор=ВыборкаДоговоров.Ссылка;
    ТабДок.Вывести(ОбластьДоговора);
    КонецЦикла;
    Получаю ошибку:
    Код:
    {Справочник.Контрагенты(26)}: Ошибка при вызове метода контекста (Выбрать): Несоответствие типов (параметр номер '2')
    ВыборкаДоговоров = Справочники.ДоговорыКонтрагентов.Выбрать(,Наименование);
    по причине:
    Несоответствие типов (параметр номер '2')
    
    Если в параметр передаю владелец:
    Код:
     ОбластьДоговора = Макет.ПолучитьОбласть("Договора");
    ВыборкаДоговоров = Справочники.ДоговорыКонтрагентов.Выбрать(,Владалец);
    Пока ВыборкаДоговоров.Следующий() Цикл
    ОбластьДоговора.Параметры.Договор=ВыборкаДоговоров.Ссылка;
    ТабДок.Вывести(ОбластьДоговора);
    КонецЦикла;
    
    то в отчете получаю список всех договоров, а не по конкретному(
  10. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    потому что, в первом случае вы передаете параметр с типом Строка, что недопустимо, а во втором случае - ссылку на элемент справочника, что и нужно

    в программе есть Синтаксис-помошник и отладчик. В первом - найдете описание методов и передаваемых в них параметров, а отладчиком можно посмотреть какая переменная какого типа и какое значение на конкретном этапе выполнения программы принимает
  11. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    хоть убейте не могу понять как передать параметр "Владелец" функции Выбрать()
    тип передаваемого параметра должен быт справочник ссылка
    делаю так:
    Код:
    ВыборкаДоговоров = Справочники.ДоговорыКонтрагентов.Выбрать(,Объект.Ссылка);
    ошибка что переменная не определена

    если так:
    Код:
     ВыборкаДоговоров = Справочники.ДоговорыКонтрагентов.Выбрать(,Справочники.Контрагенты);
    
    ошибка несоответствие типов данных

    ну подскажите, как правильно передать параметр?
  12. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а чес вас Владелец не устраивает? У вас справочник Договоры контрагентов подчинен справочнику контрагенты, т.е. у каждого элементы справочника договорыконтрагентов есть Владелец - элемент справочника Контрагенты

    если у вас обычные неуправляемые формы (так как ветка все таки 8.0. и 8.1.), то можно ЭтотОбЪект.Ссылка использовать. ОбЪект - это в управляемых формах вроде как
  13. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    меня все устраивает, главное что бы работало:)

    вот же! не Объект.Ссылка, а ЭтотОбъектСсылка и все заработало как и надо! Спасибо!
  14. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    в данном случае, Владелец и ЭтотОбЪект.Ссылка - одно и тоже
  15. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    странно, но...
    когда я пишу просто Владелец, он мне выбирает все договора что есть в справочнике, а не по конкретному Контрагенту, а когда ЭтотОбъектСсылка, работает как надо!
  16. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    да странно, посмотрю у себя - попробую
  17. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    Подскажите пожалуйста с запросом. Есть документ. Поступление товаров. В документе Реквизит - "Контрагент" и табличная часть "Товары" с реквизитами: Наименование, Количество, Цена.
    Нужно сформировать таблицу следующего вида:

    [​IMG][/URL][/img]

    То есть надо сгруппировать по поставщикам. Как это сделать?
  18. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    выложите таблицу сюда
  19. TopicStarter Overlay
    deman_ru
    Offline

    deman_ru Опытный в 1С

    Регистрация:
    27 дек 2011
    Сообщения:
    165
    Симпатии:
    1
    Баллы:
    29
    Я прошу прощения за предыдущее сообщение! Хотел удалить, но ничего не получилось, то задание решил самостоятельно.

    Разбираясь с запросами столкнулся с проблемой группировок.

    Есть справочник Контрагенты.
    Реквизиты: Наименование, Адрес, ИНН.
    Табличная часть: "Контактные лица", реквизиты: ФИО, Телефон.

    Мне нужно распечатать справочник контрагентов с группировкой по контрагентам, пишу следующий запрос:

    Код:
    ВЫБРАТЬ
    СпрКонтрагенты.Ссылка.Наименование КАК Наименование,
    СпрКонтрагенты.Ссылка.Адрес КАК Адрес,
    СпрКонтрагенты.Ссылка.ИНН КАК ИНН,
    СпрКонтрагенты.ФИО КАК ФИО,
    СпрКонтрагенты.Телефон КАК Телефон
    ИЗ
    Справочник.Контрагенты.КонтактныеЛица КАК СпрКонтрагенты
    СГРУППИРОВАТЬ ПО
    СпрКонтрагенты.Ссылка.Наименование,
    СпрКонтрагенты.Ссылка.Адрес,
    СпрКонтрагенты.Ссылка.ИНН
    Запрос делаю через консоль, получаю следующую ошибку:

    Код:
    {Форма.Форма(321)}: Ошибка при вызове метода контекста (Выполнить): {(12, 5)}: Недопустимое поле для группировки "Адрес"
    <<?>>СпрКонтрагенты.Ссылка.Адрес,
    РезЗапроса = ОбъектЗапрос.Выполнить();
    по причине:
    {(12, 5)}: Недопустимое поле для группировки "Адрес"
    <<?>>СпрКонтрагенты.Ссылка.Адрес,
    
    Что я не так делаю?
  20. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а не проще просто в цикле без запроса вывести на печать справочник контрагентов?

    пишите запрос сразу в конструкторе - уйдут ошибки

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