Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 17:14

Обход предопределенных элементов справочника, и вывод их в табличную часть - 1С 8.3

Автор GanG031, 28 окт 2015, 14:18

0 Пользователей и 1 гость просматривают эту тему.

GanG031

Доброго времени суток! Суть проблемы в следующем: Имеется документ с табличной частью. При создании этого документа заполняются предопределенные строки в поле наименование, которые берутся из перечисления.Номенклатура. Процедура заполнения предопределенных строк(Весь код находится в модуле формы)

Процедура ДобавитьПредопределенныеСтроки
Для каждого Значение Из Перечисления.Номенклатура Цикл
        НовСтр = Объект.ТабличнаяЧастьСведенияОТоварах.Добавить();
        НовСтр.Наименование = Значение;
    КонецЦикла;
КонецПроцедуры


Тут все работает, все нормально. Проблема возникла здесь: Теперь потребовалось выводить предопределенные элементы не из перечисления, а из предопределенных элементов справочника. Так как недавно начал изучать 1с, то у меня с этим возникли проблемы. Вот моя процедура, которая неправильная:

Процедура ДобавитьПредопределенныеСтроки
Выборка = Справочники.СписокНоменклатуры.Выбрать();
    Пока Выборка.Следующий() Цикл
    НовСтр = Объект.СведенияОПокупках.Добавить();
НовСтр.СведенияОПокупкахНаименованиеНоменклатуры = Выборка;
КонецЦикла;
КонецПроцедуры


При создании документа, ругается на то, что поле объекта не обнаружено (СведенияОПокупкахНаименованиеНоменклатуры ), хотя наименование правильное. Подскажите, как мне это реализовать. Понимаю, что делаю что то не правильно. Заранее спасибо!

Kironten

ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.СписокНоменклатуры КАК Номенклатура
ГДЕ
НЕ Номенклатура.ЭтоГруппа
И НЕ Номенклатура.Предопределенный
И НЕ Номенклатура.ПометкаУдаления

GanG031


Kironten

Что такое у вас "СведенияОПокупках"?
Если это название ТЧ, то проверяйте в ней наличие реквизита - СведенияОПокупкахНаименованиеНоменклатуры.
Если реквизит есть, проверьте его тип. Должен быть либо справочникссылка.спискономенклатуры, либо составной.

Пока Выборка.Следующий() Цикл
    НовСтр = Объект.СведенияОПокупках.Добавить();
    НовСтр.СведенияОПокупкахНаименованиеНоменклатуры = Выборка.Ссылка;
КонецЦикла;

vitasw

Скорее так
НовСтр.СведенияОПокупкахНаименованиеНоменклатуры = Выборка.Ссылка.Наименование;

Kironten

Цитата: vitasw от 28 окт 2015, 15:03
Скорее так
НовСтр.СведенияОПокупкахНаименованиеНоменклатуры = Выборка.Ссылка.Наименование;

Все зависит от типа реквизита СведенияОПокупкахНаименованиеНоменклатуры.

GanG031

Запрос получился правильный. Спасибо. Теперь помогите по условию. У меня в справочнике Номенклатура есть группа Продукты, в ней есть вложенная группа Овощи, и из этой группы нужно вывести данные. Подскажите, как это организовать?

Kironten

Цитата: GanG031 от 28 окт 2015, 15:51
У меня в справочнике Номенклатура есть группа Продукты, в ней есть вложенная группа Овощи, и из этой группы нужно вывести данные. Подскажите, как это организовать?
Та блин.
Задания на ходу меняются. Теперь подайте не всю предопределенную номенклатуру, а номенклатуру ВИЕРАРХИИ, и не факт, что предопределенную.
Определяйтесь уважаемый. Определяйтесь с точным ТЗ.

GanG031

Извиняюсь, сразу не все сказал. Нужна предопределенная, из определенной группы. Допустим есть Группа Продукты, в ней есть группа Овощи

Kironten

Цитата: GanG031 от 28 окт 2015, 15:57
Извиняюсь, сразу не все сказал. Нужна предопределенная, из определенной группы. Допустим есть Группа Продукты, в ней есть группа Овощи
1. Получаете каким-либо образом нужную вам группу. Например через свойство Родитель.
Только имейте ввиду, что возможно отсутствие родителей для элементов первого уровня.
2. Делаете запрос с текстом:
ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.СписокНоменклатуры КАК Номенклатура
ГДЕ
НЕ Номенклатура.ЭтоГруппа
И НЕ Номенклатура.Предопределенный
И НЕ Номенклатура.ПометкаУдаления
И Номенклатура.Ссылка В ИЕРАРХИИ(&НужнаяГруппа)

В параметр запроса передаете полученную группу.
Все. На выходе из запроса у вас выборка содержащая Предопределенные элементы номенклатуры определенной группы.
Только опять же имейте ввиду, что в ней вы получите все элементы вложенных групп. Если же нужны только элементы одной группы, без вложенных в неё же. То замените условие на равенство родителю:
И Номенклатура.Родитель = &НужнаяГруппа

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск