helpf.pro
Регистрация
 +6 
Распечатать

1С 8.x : Перебрать, выбрать элементы подчиненного справочника

Перебор элементов справочника принадлежащих элементу другого справочника, т.е когда один справочник подчинен другому справочнику.

Код 1C v 8.х
 // Получить выборку по указанному контрагенту. 
Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент);
Пока Выборка.Следующий() Цикл
ОчереднойПодчиненый = Выборка.Ссылка;
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КонтактныеЛица.Ссылка
|ИЗ
| Справочник.КонтактныеЛица КАК КонтактныеЛица
|ГДЕ
| КонтактныеЛица.Владелец = &Владелец";

Запрос.УстановитьПараметр("Владелец", Контрагент);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
ОчереднойПодчиненый = Выборка.Ссылка;
КонецЦикла;


Код 1C v 7.x
  //При работе с подчиненным справочником (например, при переборе или поиске элементов) 
//требуется указать, для какого конкретно элемента-владельца получать подчиненные элементы.
//Для этого предназначена процедура ИспользоватьВладельца(ОбъектВладелец)
//агрегатного типа данных Справочник.

// Пример 1
спр=СоздатьОбъект("Справочник.Модели");
спрМарка=СоздатьОбъект("Справочник.Марки");
спрМарка.НайтиПоНаименованию("BMW");
спр.ИспользоватьВладельца(спрМарка.ТекущийЭлемент());
спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент()=1 Цикл
Сообщение(спр.ТекущийЭлемент().Наименование);
КонецЦикла;

// Пример 2
Спр=СоздатьОбъект("Справочник.Контрагенты");
Попытка
дог=СоздатьОбъект("Справочник.Договоры");
исключение
Предупреждение("В конфигурации нет справочника ДОГОВОРЫ");
возврат;
конецПопытки;
Спр.ВыбратьЭлементы();//перебираем справочник-владелец
Пока спр.ПолучитьЭлемент()=1 Цикл
Если спр.ЭтоГруппа()=1 Тогда
продолжить;//группы не имеют подчиненных элементов
КонецЕсли;
Сообщить("Контрагент "+спр.Наименование+ " его договоры:");
дог.ИспользоватьВладельца(Спр.ТекущийЭлемент());//будем перебирать только
//подчиненные владельцу
дог.ВыбратьЭлементы(); //перебираем только подчиненные конкретному владельцу
Пока дог.получитьЭлемент()=1 Цикл
сообщить("----------"+дог.наименование);
КонецЦикла;
КонецЦикла;
Разместил:   Версии: | 7.x | 8.x |  Дата:   Прочитано: 80703
 +6 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Авто добавление обработки в справочник Внешних обработок 0
Чтобы не изменять типовую конфигурацию приходится использовать типовой механизм внешних печатных форм и обработок. Данный код проверяет - добавлена ли открываемая обработка в конфигурацию, если нет - задает вопрос и при положительном ответе - автома
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме
Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 2
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.