Найти подчиненные документы в 1С 8.3

Вопрос ветка 2014 и ответов путных нет https://forum.mista.ru/topic.php?id=707350



ИТС: "Существует ли в 1С:Предприятии 8 понятие "Подчиненные документы?"

Существует ли в 1С:Предприятии 8 понятие "Подчиненные документы"?

Специального понятия "Подчиненные документы" в платформе 1С:Предприятия 8 не существует. 

При необходимости получения документов, имеющих ссылки на некоторый документ, может использоваться КритерийОтбора. Этот механизм обладает большей гибкостью, чем механизм подчиненных документов. Он позволяет отбирать не только документы, но и другие объекты базы данных. Кроме того, он позволяет непосредственно указать перечень реквизитов, по значению которых необходимо выполнять отбор. В форме КритерияОтбора можно использовать стандартный список для отображения найденных значений и также в форме вставить список документов с отбором по указанному критерию. Однако следует учитывать, что КритерийОтбора не позволяет выполнять динамический просмотр найденных данных. В список будут включаться все найденные объекты. Соответственно, нецелесообразно использовать этот механизм, если количество найденных объектов по значениям критерия отбора будет достаточно велико. 

Целесообразность реализации в конкретных прикладных решениях получения списка подчиненных документов определяется разработчиком конфигурации.

https://its.1c.ru/db/metod8dev/content/2488/hdoc





Получение доков, введенных на основании — книга Реализация прикладных задач в системе 1С — используется объект конфигурации "КритерийОтбора"

https://its.1c.ru/db/pubapplied#content:97:hdoc

Реализация прикладных задач в системе «1С:Предприятие 8.2» Глава 2. Документы и последовательности Документы Отдельные вопросы типового использования документов Ввод на основании Получение документов, введенных на основании



Вот еще инфа про критерии отбора

https://wiseadvice-it.ru/o-kompanii/blog/articles/kriterii-otbora-v-1s-8-3/



Объект КритерииОтбора в общих объектах

В общих объектах (модули, реквизиты) есть объект "КритерииОтбора"




Отчет "Дерево документов"

Упоминается регистр РегистрыСведений.СвязиПриходныхНакладныхПервичныхДокументов

Вот код:

Если НовКорень = Неопределено И ТипЗнч(Корень) = Тип("ДокументСсылка.ПриходнаяНакладная") Тогда

ПервичныйДокумент = РегистрыСведений.СвязиПриходныхНакладныхПервичныхДокументов.ПолучитьСвязанныйПервичныйДокумент(Корень);

Если ЗначениеЗаполнено(ПервичныйДокумент) И СписокДокументов.НайтиПоЗначению(ПервичныйДокумент) = Неопределено Тогда

НовКорень = ПервичныйДокумент;

КонецЕсли;

КонецЕсли;



Еще есть такой код

 

Процедура ЗаполнитьДеревоДокументов(ДокументРодитель, КореньДерева , Документ, КореньВерхнегоУровня)

Запрос = Новый Запрос;

 

Запрос.Текст =

"ВЫБРАТЬ

  | ДокументыПоОснованию.Ссылка КАК Ссылка
  |ИЗ
  | КритерийОтбора.ДокументыПоОснованию(&Родитель) КАК ДокументыПоОснованию
  |
//|УПОРЯДОЧИТЬ ПО
//| ДокументыПоОснованию.Ссылка.Дата
  |";

 

Запрос.УстановитьПараметр("Родитель", ДокументРодитель);

ТЗ = Запрос.Выполнить().Выгрузить();

Если ТипЗнч(ДокументРодитель) = Тип("ДокументСсылка.ПервичныйДокументВходящий") Тогда

ПриходнаяНакладная = РегистрыСведений.СвязиПриходныхНакладныхПервичныхДокументов.ПолучитьСвязаннуюПриходнуюНакладную(ДокументРодитель);

Если ЗначениеЗаполнено(ПриходнаяНакладная) Тогда

НовыйОбъект = ТЗ.Добавить();

НовыйОбъект.Ссылка = ПриходнаяНакладная;

КонецЕсли;

КонецЕсли;

ОтсортироватьПоДате(ТЗ);

МассивПодчиненныхДокументов = ТЗ.ВыгрузитьКолонку("Ссылка");

Для Индекс = 0 По МассивПодчиненныхДокументов.ВГраница() Цикл

ДокументУзла = МассивПодчиненныхДокументов[Индекс];

Если ДокументУзла = КореньВерхнегоУровня Тогда

Продолжить;
КонецЕсли;

Лист = КореньДерева.Строки.Добавить();
Лист.Документ = ДокументУзла;
Если Лист.Документ = Документ Тогда
Лист.флТекущийДокумент = Истина;
Иначе
Лист.флТекущийДокумент = Ложь;
КонецЕсли;

 

Выборка подчиненных переоценок в Далионе — без всяких "КритериевОтбора", запрос переоценок по условию "ДокОснование равен выбранному доку-родителю"

В функциях общего модуля есть пример выборки подчиненных переоценок к выбранному доку-родителю (приходная накладная или иной док)

Функция ПолучитьСписокКатегорийЦенДляПереоценки(ДокументОбъект, ФормаСписка = Ложь) Экспорт

 

// выборка подчиненных документов

Если ФормаСписка ИЛИ НЕ ДокументОбъект.ЭтоНовый() Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Док.Ссылка,
| Док.КатегорияЦен КАК КатегорияЦен
|ИЗ
| Документ.АктПереоценки КАК Док
|ГДЕ
| Док.ДокументОснование = &ТекСсылка
|
|УПОРЯДОЧИТЬ ПО
| КатегорияЦен";

Запрос.УстановитьПараметр("ТекСсылка", ?(ФормаСписка, ДокументОбъект, ДокументОбъект.Ссылка));

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

Пока Выборка.Следующий() Цикл

Индекс = Индекс + 1;

СтруктураКатегорий.Вставить("Кнопка" + Строка(Индекс), Выборка.Ссылка);

КонецЦикла;