Проект

Общее

Профиль

Структура подчиненности (связанные объекты) » История » Версия 6

Всеволод Дорофеев, 29.05.2026 13:59

1 6 Всеволод Дорофеев
h1. Структура подчиненности (связанные объекты) и ввод на основании
2 6 Всеволод Дорофеев
3 6 Всеволод Дорофеев
4 6 Всеволод Дорофеев
h3. Ввод на основании
5 6 Всеволод Дорофеев
6 6 Всеволод Дорофеев
1. В расширение переносим ДокументОснование, реквизит подчиненного объекта "ДокументОснование", "расширяем" тип реквизита "ДокументОснование"
7 6 Всеволод Дорофеев
2. Для возможности ввода на основании в головной объект в модуль менеджера в "ДобавитьКомандыСозданияНаОсновании" добавляем:
8 6 Всеволод Дорофеев
9 6 Всеволод Дорофеев
<pre>
10 6 Всеволод Дорофеев
	Документы.ТранспортнаяНакладная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
11 6 Всеволод Дорофеев
</pre>
12 6 Всеволод Дорофеев
13 6 Всеволод Дорофеев
или в модуль локализации
14 6 Всеволод Дорофеев
15 6 Всеволод Дорофеев
<pre>
16 6 Всеволод Дорофеев
&После("ДобавитьКомандыСозданияНаОсновании")
17 6 Всеволод Дорофеев
Процедура пл_ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)
18 6 Всеволод Дорофеев
	
19 6 Всеволод Дорофеев
	Документы.ТранспортнаяНакладная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
20 6 Всеволод Дорофеев
	
21 6 Всеволод Дорофеев
КонецПроцедуры
22 6 Всеволод Дорофеев
</pre>
23 6 Всеволод Дорофеев
24 1 Всеволод Дорофеев
25 4 Всеволод Дорофеев
h3. Добавление Структуры подчиненности (связанные документы) в расширение
26 1 Всеволод Дорофеев
27 1 Всеволод Дорофеев
При добавлении нового реквизита в объект (документ, справочник) может возникнуть задача вывода связанных документов.
28 1 Всеволод Дорофеев
Если добавлять в расширение КритерииОтбора.СвязанныеДокументы, тогда в расширение будут добавлены все участвующие объекты.
29 1 Всеволод Дорофеев
Можно решить иначе - добавлением кода:
30 1 Всеволод Дорофеев
31 1 Всеволод Дорофеев
1. Добавляем в расширение процедуру ОбщийМодуль.ВариантыОтчетовПереопределяемый.ОпределитьОбъектыСКомандамиОтчетов
32 1 Всеволод Дорофеев
33 1 Всеволод Дорофеев
<pre>
34 1 Всеволод Дорофеев
&После("ОпределитьОбъектыСКомандамиОтчетов")
35 1 Всеволод Дорофеев
Процедура мн_ОпределитьОбъектыСКомандамиОтчетов(Объекты)
36 1 Всеволод Дорофеев
	
37 1 Всеволод Дорофеев
	Объекты.Добавить(Метаданные.Документы.ОрдерНаОтражениеИзлишковТоваров);
38 1 Всеволод Дорофеев
	Объекты.Добавить(Метаданные.Документы.ОрдерНаОтражениеНедостачТоваров);
39 1 Всеволод Дорофеев
	
40 1 Всеволод Дорофеев
КонецПроцедуры
41 1 Всеволод Дорофеев
</pre>
42 1 Всеволод Дорофеев
43 1 Всеволод Дорофеев
2. Добавляем в расширение ОбщийМодуль.СтруктураПодчиненностиСлужебный.ИндексТиповСвязанныхОбъектов
44 1 Всеволод Дорофеев
45 1 Всеволод Дорофеев
<pre>
46 1 Всеволод Дорофеев
&ИзменениеИКонтроль("ИндексТиповСвязанныхОбъектов")
47 1 Всеволод Дорофеев
Функция мн_ИндексТиповСвязанныхОбъектов()
48 1 Всеволод Дорофеев
49 1 Всеволод Дорофеев
	Индекс = Новый Соответствие;
50 1 Всеволод Дорофеев
51 1 Всеволод Дорофеев
	МетаданныеСвязанныхОбъектов = Метаданные.КритерииОтбора.СвязанныеДокументы;
52 1 Всеволод Дорофеев
	ТипыСвязанныхОбъектов = МетаданныеСвязанныхОбъектов.Тип.Типы();
53 1 Всеволод Дорофеев
	ТипПараметраКоманды = Метаданные.ОбщиеКоманды.СвязанныеДокументы.ТипПараметраКоманды;
54 1 Всеволод Дорофеев
55 1 Всеволод Дорофеев
	Для Каждого ТипСвязанногоОбъекта Из ТипыСвязанныхОбъектов Цикл
56 1 Всеволод Дорофеев
57 1 Всеволод Дорофеев
		Если Не ТипПараметраКоманды.СодержитТип(ТипСвязанногоОбъекта) Тогда
58 1 Всеволод Дорофеев
			Индекс.Вставить(ТипСвязанногоОбъекта, Истина);
59 1 Всеволод Дорофеев
		КонецЕсли;
60 1 Всеволод Дорофеев
61 1 Всеволод Дорофеев
	КонецЦикла;
62 1 Всеволод Дорофеев
#Вставка 
63 1 Всеволод Дорофеев
	//{Проект
64 1 Всеволод Дорофеев
  	Индекс.Вставить(Тип("ДокументСсылка.ОрдерНаОтражениеНедостачТоваров"), Истина);   
65 1 Всеволод Дорофеев
  	Индекс.Вставить(Тип("ДокументСсылка.ОрдерНаОтражениеИзлишковТоваров"), Истина);   
66 1 Всеволод Дорофеев
67 1 Всеволод Дорофеев
    // } Проект .
68 1 Всеволод Дорофеев
#КонецВставки 
69 1 Всеволод Дорофеев
	Возврат Индекс;
70 1 Всеволод Дорофеев
71 1 Всеволод Дорофеев
КонецФункции
72 1 Всеволод Дорофеев
</pre>
73 2 Всеволод Дорофеев
74 2 Всеволод Дорофеев
3. Добавляем в расширение ОбщиеФормы.СвязанныеДокументы:
75 2 Всеволод Дорофеев
* ОбъектыПоКритериюОтбора
76 2 Всеволод Дорофеев
* ВывестиРодительскиеОбъекты
77 2 Всеволод Дорофеев
78 2 Всеволод Дорофеев
79 2 Всеволод Дорофеев
<pre>
80 2 Всеволод Дорофеев
81 2 Всеволод Дорофеев
&НаСервере
82 2 Всеволод Дорофеев
&ИзменениеИКонтроль("ОбъектыПоКритериюОтбора")
83 2 Всеволод Дорофеев
Функция пл_ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)
84 2 Всеволод Дорофеев
85 2 Всеволод Дорофеев
	ШаблонЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
86 2 Всеволод Дорофеев
	|	ПредставлениеТаблицы.Ссылка КАК Ссылка
87 2 Всеволод Дорофеев
	|ИЗ
88 2 Всеволод Дорофеев
	|	ИмяТаблицы КАК ПредставлениеТаблицы
89 2 Всеволод Дорофеев
	|ГДЕ
90 2 Всеволод Дорофеев
	|	ПредставлениеТаблицы.ИмяРеквизита = &ЗначениеКритерияОтбора";
91 2 Всеволод Дорофеев
92 2 Всеволод Дорофеев
	ШаблонЗапросаОбъединения = "ВЫБРАТЬ
93 2 Всеволод Дорофеев
	|	ПредставлениеТаблицы.Ссылка КАК Ссылка
94 2 Всеволод Дорофеев
	|ИЗ
95 2 Всеволод Дорофеев
	|	ИмяТаблицы КАК ПредставлениеТаблицы
96 2 Всеволод Дорофеев
	|ГДЕ
97 2 Всеволод Дорофеев
	|	ПредставлениеТаблицы.ИмяРеквизита = &ЗначениеКритерияОтбора";
98 2 Всеволод Дорофеев
99 2 Всеволод Дорофеев
	ЧастиЗапроса = Новый Массив;
100 2 Всеволод Дорофеев
	ТекстЧастиЗапроса = "";
101 2 Всеволод Дорофеев
102 2 Всеволод Дорофеев
	Для Каждого ЭлементСостава Из Метаданные.КритерииОтбора.СвязанныеДокументы.Состав Цикл
103 2 Всеволод Дорофеев
104 2 Всеволод Дорофеев
		Если НЕ ЭлементСостава.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда
105 2 Всеволод Дорофеев
			Продолжить;
106 2 Всеволод Дорофеев
		КонецЕсли;
107 2 Всеволод Дорофеев
108 2 Всеволод Дорофеев
		ПутьКДанным = ЭлементСостава.ПолноеИмя();
109 2 Всеволод Дорофеев
110 2 Всеволод Дорофеев
		Если СтрНайти(ПутьКДанным, "ТабличнаяЧасть") Тогда
111 2 Всеволод Дорофеев
			ОбъектМетаданных = ЭлементСостава.Родитель().Родитель();
112 2 Всеволод Дорофеев
		Иначе
113 2 Всеволод Дорофеев
			ОбъектМетаданных = ЭлементСостава.Родитель();
114 2 Всеволод Дорофеев
		КонецЕсли;
115 2 Всеволод Дорофеев
116 2 Всеволод Дорофеев
		Если НЕ ПравоДоступа("Чтение", ОбъектМетаданных) Тогда
117 2 Всеволод Дорофеев
			Продолжить;
118 2 Всеволод Дорофеев
		КонецЕсли;
119 2 Всеволод Дорофеев
120 2 Всеволод Дорофеев
		Точка = СтрНайти(ПутьКДанным, ".", НаправлениеПоиска.СКонца);
121 2 Всеволод Дорофеев
		ИмяРеквизита = Сред(ПутьКДанным, Точка + 1);
122 2 Всеволод Дорофеев
123 2 Всеволод Дорофеев
		ИмяТаблицы = ЭлементСостава.Родитель().ПолноеИмя();
124 2 Всеволод Дорофеев
		ИмяТаблицы = СтрЗаменить(ИмяТаблицы, "ТабличнаяЧасть.", "");
125 2 Всеволод Дорофеев
126 2 Всеволод Дорофеев
		Точка = СтрНайти(ИмяТаблицы, ".", НаправлениеПоиска.СКонца);
127 2 Всеволод Дорофеев
		ПредставлениеТаблицы = Сред(ИмяТаблицы, Точка + 1);
128 2 Всеволод Дорофеев
129 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = ?(ТекстЧастиЗапроса = "", ШаблонЗапроса, ШаблонЗапросаОбъединения);
130 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяТаблицы", ИмяТаблицы);
131 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ПредставлениеТаблицы", ПредставлениеТаблицы);
132 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяРеквизита", ИмяРеквизита);
133 2 Всеволод Дорофеев
134 2 Всеволод Дорофеев
		ЧастиЗапроса.Добавить(ТекстЧастиЗапроса);
135 2 Всеволод Дорофеев
136 2 Всеволод Дорофеев
	КонецЦикла;
137 2 Всеволод Дорофеев
#Вставка 
138 2 Всеволод Дорофеев
    	//Проект Всеволод
139 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = ?(ТекстЧастиЗапроса = "", ШаблонЗапроса, ШаблонЗапросаОбъединения);
140 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяТаблицы", "Документ.ОрдерНаОтражениеИзлишковТоваров");
141 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ПредставлениеТаблицы", "ОрдерНаОтражениеИзлишковТоваров");
142 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяРеквизита", "пл_ДокументОснование");
143 2 Всеволод Дорофеев
144 2 Всеволод Дорофеев
		ЧастиЗапроса.Добавить(ТекстЧастиЗапроса);
145 2 Всеволод Дорофеев
		
146 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = ?(ТекстЧастиЗапроса = "", ШаблонЗапроса, ШаблонЗапросаОбъединения);
147 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяТаблицы", "Документ.ОрдерНаОтражениеНедостачТоваров");
148 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ПредставлениеТаблицы", "ОрдерНаОтражениеНедостачТоваров");
149 2 Всеволод Дорофеев
		ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяРеквизита", "пл_ДокументОснование");
150 2 Всеволод Дорофеев
		
151 2 Всеволод Дорофеев
		ЧастиЗапроса.Добавить(ТекстЧастиЗапроса);
152 2 Всеволод Дорофеев
  
153 2 Всеволод Дорофеев
    // } Проект .
154 2 Всеволод Дорофеев
#КонецВставки 
155 2 Всеволод Дорофеев
	Если ЧастиЗапроса.Количество() > 0 Тогда
156 2 Всеволод Дорофеев
		Запрос = Новый Запрос;
157 2 Всеволод Дорофеев
		Разделитель = Символы.ПС + "ОБЪЕДИНИТЬ" + Символы.ПС;
158 2 Всеволод Дорофеев
		Запрос.Текст = СтрСоединить(ЧастиЗапроса, Разделитель);
159 2 Всеволод Дорофеев
		Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
160 2 Всеволод Дорофеев
		Возврат Запрос.Выполнить().Выгрузить();
161 2 Всеволод Дорофеев
	Иначе
162 2 Всеволод Дорофеев
		Возврат Новый ТаблицаЗначений;
163 2 Всеволод Дорофеев
	КонецЕсли;
164 2 Всеволод Дорофеев
165 2 Всеволод Дорофеев
КонецФункции
166 2 Всеволод Дорофеев
167 2 Всеволод Дорофеев
&НаСервере
168 2 Всеволод Дорофеев
&ИзменениеИКонтроль("ВывестиРодительскиеОбъекты")
169 2 Всеволод Дорофеев
Процедура пл_ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты, ИндексСвязейОбъектов)
170 2 Всеволод Дорофеев
171 2 Всеволод Дорофеев
	МетаданныеОбъекта = ТекущийОбъект.Метаданные();
172 2 Всеволод Дорофеев
	СписокРеквизитов  = Новый Массив;
173 2 Всеволод Дорофеев
174 2 Всеволод Дорофеев
	Если СлужебныеОбъекты = Неопределено Тогда 
175 2 Всеволод Дорофеев
		СлужебныеОбъекты = Новый Соответствие;
176 2 Всеволод Дорофеев
	КонецЕсли;
177 2 Всеволод Дорофеев
178 2 Всеволод Дорофеев
	Если ИндексСвязейОбъектов = Неопределено Тогда 
179 2 Всеволод Дорофеев
		ИндексСвязейОбъектов = Новый Соответствие;
180 2 Всеволод Дорофеев
	КонецЕсли;
181 2 Всеволод Дорофеев
182 2 Всеволод Дорофеев
	Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
183 2 Всеволод Дорофеев
184 2 Всеволод Дорофеев
		Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
185 2 Всеволод Дорофеев
			Продолжить;
186 2 Всеволод Дорофеев
		КонецЕсли;
187 2 Всеволод Дорофеев
188 2 Всеволод Дорофеев
		Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл
189 2 Всеволод Дорофеев
190 2 Всеволод Дорофеев
			МетаданныеРеквизита = МетаданныеТипаРеквизита(ТекущийТип);
191 2 Всеволод Дорофеев
			Если МетаданныеРеквизита.Метаданные = Неопределено Тогда
192 2 Всеволод Дорофеев
				Продолжить;
193 2 Всеволод Дорофеев
			КонецЕсли;
194 2 Всеволод Дорофеев
195 2 Всеволод Дорофеев
			ЗначениеРеквизита = ТекущийОбъект[Реквизит.Имя];
196 2 Всеволод Дорофеев
			Если ЗначениеЗаполнено(ЗначениеРеквизита)
197 2 Всеволод Дорофеев
				И ТипЗнч(ЗначениеРеквизита) = ТекущийТип
198 2 Всеволод Дорофеев
				И ЗначениеРеквизита <> ТекущийОбъект
199 2 Всеволод Дорофеев
				И СписокРеквизитов.Найти(ЗначениеРеквизита) = Неопределено Тогда
200 2 Всеволод Дорофеев
201 2 Всеволод Дорофеев
				СписокРеквизитов.Добавить(ЗначениеРеквизита);
202 2 Всеволод Дорофеев
			КонецЕсли;
203 2 Всеволод Дорофеев
		КонецЦикла;
204 2 Всеволод Дорофеев
205 2 Всеволод Дорофеев
	КонецЦикла;
206 2 Всеволод Дорофеев
#Вставка 
207 2 Всеволод Дорофеев
	//Проект Всеволод
208 2 Всеволод Дорофеев
	Попытка
209 2 Всеволод Дорофеев
		Если ТипЗнч(ТекущийОбъект) = Тип("ДокументСсылка.ОрдерНаОтражениеНедостачТоваров")
210 2 Всеволод Дорофеев
			или ТипЗнч(ТекущийОбъект) = Тип("ДокументСсылка.ОрдерНаОтражениеИзлишковТоваров")
211 2 Всеволод Дорофеев
			Тогда
212 2 Всеволод Дорофеев
			
213 2 Всеволод Дорофеев
			СписокРеквизитов.Добавить(ТекущийОбъект.пл_ДокументОснование);
214 2 Всеволод Дорофеев
			
215 2 Всеволод Дорофеев
		КонецЕсли;
216 2 Всеволод Дорофеев
	Исключение
217 2 Всеволод Дорофеев
	КонецПопытки;
218 2 Всеволод Дорофеев
	// } Проект .
219 2 Всеволод Дорофеев
#КонецВставки 
220 2 Всеволод Дорофеев
	Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.ТабличныеЧасти Цикл
221 2 Всеволод Дорофеев
222 2 Всеволод Дорофеев
		ИменаРеквизитов = "";
223 2 Всеволод Дорофеев
		СодержимоеТЧ = ТекущийОбъект[ТабличнаяЧасть.Имя].Выгрузить(); // ТаблицаЗначений
224 2 Всеволод Дорофеев
		Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
225 2 Всеволод Дорофеев
226 2 Всеволод Дорофеев
			Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
227 2 Всеволод Дорофеев
				Продолжить;
228 2 Всеволод Дорофеев
			КонецЕсли;
229 2 Всеволод Дорофеев
230 2 Всеволод Дорофеев
			Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл
231 2 Всеволод Дорофеев
				МетаданныеРеквизита = МетаданныеТипаРеквизита(ТекущийТип);
232 2 Всеволод Дорофеев
				Если МетаданныеРеквизита.Метаданные = Неопределено Тогда
233 2 Всеволод Дорофеев
					Продолжить;
234 2 Всеволод Дорофеев
				КонецЕсли;
235 2 Всеволод Дорофеев
236 2 Всеволод Дорофеев
				ИменаРеквизитов = ИменаРеквизитов + ?(ИменаРеквизитов = "", "", ", ") + Реквизит.Имя;
237 2 Всеволод Дорофеев
				Прервать;
238 2 Всеволод Дорофеев
			КонецЦикла;
239 2 Всеволод Дорофеев
240 2 Всеволод Дорофеев
		КонецЦикла;
241 2 Всеволод Дорофеев
242 2 Всеволод Дорофеев
		СодержимоеТЧ.Свернуть(ИменаРеквизитов);
243 2 Всеволод Дорофеев
		Для Каждого КолонкаТЧ Из СодержимоеТЧ.Колонки Цикл
244 2 Всеволод Дорофеев
245 2 Всеволод Дорофеев
			Для Каждого СтрокаТЧ Из СодержимоеТЧ Цикл
246 2 Всеволод Дорофеев
247 2 Всеволод Дорофеев
				ЗначениеРеквизита = СтрокаТЧ[КолонкаТЧ.Имя];
248 2 Всеволод Дорофеев
				МетаданныеЗначения = МетаданныеТипаРеквизита(ТипЗнч(ЗначениеРеквизита));
249 2 Всеволод Дорофеев
				Если МетаданныеЗначения.Метаданные = Неопределено Тогда
250 2 Всеволод Дорофеев
					Продолжить;
251 2 Всеволод Дорофеев
				КонецЕсли;
252 2 Всеволод Дорофеев
253 2 Всеволод Дорофеев
				Если ЗначениеРеквизита = ТекущийОбъект
254 2 Всеволод Дорофеев
					Или СписокРеквизитов.Найти(ЗначениеРеквизита) <> Неопределено Тогда
255 2 Всеволод Дорофеев
					Продолжить;
256 2 Всеволод Дорофеев
				КонецЕсли;
257 2 Всеволод Дорофеев
258 2 Всеволод Дорофеев
				СписокРеквизитов.Добавить(ЗначениеРеквизита);
259 2 Всеволод Дорофеев
			КонецЦикла;
260 2 Всеволод Дорофеев
		КонецЦикла;
261 2 Всеволод Дорофеев
	КонецЦикла;
262 2 Всеволод Дорофеев
263 2 Всеволод Дорофеев
	Если СписокРеквизитов.Количество() > 0 Тогда
264 2 Всеволод Дорофеев
		ВыводимыеОбъекты = ЗапросПоРеквизитамОбъектов(СписокРеквизитов).Выполнить().Выгрузить();
265 2 Всеволод Дорофеев
		ВыводимыеОбъекты.Сортировать("Дата");
266 2 Всеволод Дорофеев
		Для каждого ВыводимыйОбъект Из ВыводимыеОбъекты Цикл 
267 2 Всеволод Дорофеев
268 2 Всеволод Дорофеев
			Если ИндексСвязейОбъектов[ТекущийОбъект] = ВыводимыйОбъект.Ссылка Тогда 
269 2 Всеволод Дорофеев
				Продолжить;
270 2 Всеволод Дорофеев
			КонецЕсли;
271 2 Всеволод Дорофеев
272 2 Всеволод Дорофеев
			ИндексСвязейОбъектов[ТекущийОбъект] = ВыводимыйОбъект.Ссылка;
273 2 Всеволод Дорофеев
274 2 Всеволод Дорофеев
			НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, ВыводимыйОбъект, ВыведенныеОбъекты);			
275 2 Всеволод Дорофеев
			Если НоваяСтрока <> Неопределено
276 2 Всеволод Дорофеев
				И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ВыводимыйОбъект.Ссылка) Тогда
277 2 Всеволод Дорофеев
                      a
278 2 Всеволод Дорофеев
				// @skip-check query-in-loop - Рекурсивный алгоритм обработки дерева.
279 2 Всеволод Дорофеев
				ВывестиРодительскиеОбъекты(ВыводимыйОбъект.Ссылка, НоваяСтрока, ВыведенныеОбъекты,
280 2 Всеволод Дорофеев
				СлужебныеОбъекты, ИндексСвязейОбъектов);
281 2 Всеволод Дорофеев
282 2 Всеволод Дорофеев
			ИначеЕсли СлужебныеОбъекты[ВыводимыйОбъект.Ссылка] = Неопределено Тогда 
283 2 Всеволод Дорофеев
284 2 Всеволод Дорофеев
				СлужебныеОбъекты[ВыводимыйОбъект.Ссылка] = Истина;
285 2 Всеволод Дорофеев
				// @skip-check query-in-loop - Рекурсивный алгоритм обработки дерева.
286 2 Всеволод Дорофеев
				ВывестиРодительскиеОбъекты(ВыводимыйОбъект.Ссылка, ДеревоРодитель, ВыведенныеОбъекты,
287 2 Всеволод Дорофеев
				СлужебныеОбъекты, ИндексСвязейОбъектов);
288 2 Всеволод Дорофеев
289 2 Всеволод Дорофеев
			КонецЕсли;
290 2 Всеволод Дорофеев
		КонецЦикла;
291 2 Всеволод Дорофеев
	КонецЕсли;
292 2 Всеволод Дорофеев
293 2 Всеволод Дорофеев
КонецПроцедуры
294 2 Всеволод Дорофеев
295 2 Всеволод Дорофеев
</pre>
296 2 Всеволод Дорофеев
297 2 Всеволод Дорофеев
4. Добавляем в расширение Документы.ОрдерНаОтражениеНедостачТоваров.МодульМенеджера.ДобавитьКомандыОтчетов
298 2 Всеволод Дорофеев
299 2 Всеволод Дорофеев
<pre>
300 2 Всеволод Дорофеев
301 2 Всеволод Дорофеев
&После("ДобавитьКомандыОтчетов")
302 2 Всеволод Дорофеев
Процедура пл_ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры)
303 2 Всеволод Дорофеев
	
304 2 Всеволод Дорофеев
	ИнтеграцияИСПереопределяемый.ДобавитьКомандуСтруктураПодчиненности(КомандыОтчетов);	//Всеволод
305 2 Всеволод Дорофеев
	
306 2 Всеволод Дорофеев
КонецПроцедуры
307 2 Всеволод Дорофеев
308 2 Всеволод Дорофеев
</pre>
309 5 Всеволод Дорофеев
310 5 Всеволод Дорофеев
Более универсальное решение с добавлением своего настраиваемого КритерияОтбора:
311 5 Всеволод Дорофеев
https://infostart.ru/1c/articles/1653703/