8.х Запрос дополнительных реквизитов справочника

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

  1. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Очень нужна помощь! 1С 8.3, УТ 11.1. Как запросом получить дополнительные реквизиты добавленные справочнику через режим предприятия?
  2. 1cUserAndrew
    Offline

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

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Дополнительные реквизиты хранятся в табличной части справочника. К ней и обращайтесь запросом.
  3. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Да, спасибо, я их уж получил, выгрузил в массив. Что теперь делать дальше? Как сделать выборку по массиву, чтоб получить нужные мне доп. реквизиты?
    Вот код запроса:
    Код:
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
        Запрос.Текст = "ВЫБРАТЬ
                       |    ЗаказКлиента.Номер,
                       |    ЗаказКлиента.Дата КАК ДатаДоговора,
                       |    ЗаказКлиента.Контрагент.Наименование КАК ПокупательКратко,
                       |    ЗаказКлиента.Контрагент.НаименованиеПолное КАК ОрганизацияПокупатель,
                       |    ЗаказКлиента.Контрагент.ИНН КАК ИННПокупателя,
                       |    ЗаказКлиента.Контрагент.КПП КАК КПППокупателя,
                       |    ЗаказКлиента.СуммаДокумента,
                       |    ЗаказКлиента.БанковскийСчетКонтрагента.НомерСчета,
                       |    ЗаказКлиента.БанковскийСчетКонтрагента.БанкДляРасчетов,
                       |    ЗаказКлиента.БанковскийСчетКонтрагента.БИКБанкаДляРасчетов,
                       |    ЗаказКлиента.Контрагент.ДополнительныеРеквизиты.(
                       |        Свойство.Ссылка КАК Название,
                       |        Значение КАК Значение
                       |    ),
                       |    ЗаказКлиента.Товары.(
                       |        НомерСтроки,
                       |        Номенклатура.Наименование,
                       |        Упаковка.ЕдиницаИзмерения,
                       |        КоличествоУпаковок,
                       |        Цена,
                       |        Сумма
                       |    )
                       |ИЗ
                       |    Документ.ЗаказКлиента КАК ЗаказКлиента
                       |ГДЕ
                       |    ЗаказКлиента.Ссылка В(&МассивОбъектов)";
                    
        Запрос.Выполнить().Выгрузить();
    
    Последнее редактирование: 24 дек 2015
  4. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(Экспедитор (Заказ клиента));
    ЗначениеНужногоМнеДопРеквизита = Заказ.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита).Значение;
  5. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    А что имеется ввиду под "тип"? Не очень понимаю, что должно быть написано здесь "ТипНужногоМнеДопРеквизита"
  6. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    В таблице доп. реквизитов у заказ может быть не один доп.реквизит =)
    http://joxi.ru/brR5PqwFQJw4DA?d=1
    Нужно задать свойство и по этому свойству найти строку в таблице.
    В строке будет колонка "Значение".
    Как называется ваш доп. реквизит?
    В моем примере - типовой реквизит "Экспедитор". Но наименование у него со скобками
    "Экспедитор (Заказ клиента)".
    Так и пишите:
    Код:
    ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Экспедитор (Заказ клиента)");
    ЗначениеНужногоМнеДопРеквизита = Заказ.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита).Значение;
  7. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    А под "Заказ" здесь что имеется ввиду? Название документа? Ругается на эту строчку ошибкой.
    --- Объединение сообщений, 24 дек 2015 ---
    Код:
    ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ОГРН (Заказ клиента)");
    ЗначениеНужногоМнеДопРеквизита = Заказ.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита).Значение;
    С нужным мне доп. реквизитом по идеи должно выглядеть так?
  8. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Вроде так. Заказ - это ссылка на заказ.
  9. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Все равно ошибку выдает.
    Сейчас вот такую: "Значение не является значением объектного типа (Значение)"
    --- Объединение сообщений, 24 дек 2015 ---
    Ну либо "Переменная не определена". В зависимости оттого куда помещаю сей код
  10. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Значит не нашел в таблице строки по этому свойству.
    Свойство вообще нашлось по наименованию?
    ТипНужногоМнеДопРеквизита чему равен?
  11. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ОГРН (Заказ клиента)")
    Я его так прописал. Или вы про значение доп.реквизиты/свойство?
  12. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Зайдите в отладчик и посмотрите чему равен у вас ТипНужногоМнеДопРеквизита, после выполнения этой строки:
    ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ОГРН (Заказ клиента)").
    Хочу понять, нашелся ли у вас тип по наименованию
  13. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Нет, не нашелся, вроде. Пишет, что неопределен
  14. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    http://joxi.ru/GrqXn8RIN4nZOA?d=1
    Заходите в план видов характеристик и смотрите, как там называется ваше свойство.
    Может у вас оно называется просто "ОГРН".
    Прямо в отладке попробуйте несколько вариантов поиска с различным написанием
    --- Объединение сообщений, 24 дек 2015 ---
    Вот смотрите, что получилось. У меня нашел в обоих случаях. Но иногда так не канает:
    http://joxi.ru/DmBLbK9uNJdGRA?d=1
  15. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    У меня он назывался ОГРН (Контрагент)
    Теперь находит)

    Но на вторую строчку все равно ругается. Как ее правильно прописать исходя из запроса?
  16. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Хорошо!
    А теперь: у какого заказа вы хотите получить доп.свойство?
    --- Объединение сообщений, 24 дек 2015 ---
    ТипНужногоМнеДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ОГРН (Контрагент)").
    Заказ = Документы.ЗаказКлиента.НайтиПоНомеру("000000123",ТекущаяДата());
    ЗначениеНужногоМнеДопРеквизита = Заказ.ДополнительныеРеквизиты.Найти(ТипНужногоМнеДопРеквизита).Значение;
    Ну или в цикле по заказам, смотря что вам требуется в итоге
  17. TopicStarter Overlay
    Khan7779
    Offline

    Khan7779

    Регистрация:
    23 дек 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    У любого. Это код для печатной формы, которая будет вызываться из документа заказ клиента, для распечатки

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