Связанные документы в УТ 11.3

1. Степной 27 26.11.18 13:36 Сейчас в теме
Добрый день!

УТ 11.3. В заказе поставщику (ЗП) при просмотре связанных документов с определенного времени не отображается ссылка на родительский заказ клиента (ЗК).
При просмотре связанных документов через ЗК связь с ЗП отображается.

Проверено:

1. Реквизит ДокументОснование в ЗП заполнен ссылкой на ЗК.
2. Изменений конфигурации между событиями Работало и Перестало работать не было.
3. В копии базы с абсолютно идентичной конфигурацией проблема не воспроизводится.
4. Отладка показывает следующее: в общей форме СтруктураПодчиненности в процедуре ВывестиРодительскиеОбъекты условие

Если Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда


при проверке реквизита ДокументОснование в копии возвращает
Истина
в рабочей -
Ложь


При этом в составе критерия отбора СвязанныеДокументы реквизит ДокументОснование имеется.

Что еще можно проверить?
По теме из базы знаний
Найденные решения
22. noprogrammer 237 26.11.18 15:29 Сейчас в теме
(20) Скажи почту- скину расширение (маленькое) - на нем проверишь, если оно покажет связанные документы значит проблема в критериях отбора.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 26.11.18 13:40 Сейчас в теме
(1)Ищите почему в рабочей ложь.
ЗЫ А обновление версий были?
4. Степной 27 26.11.18 13:45 Сейчас в теме
(2)Согласен)

Как искал:
1. проверка состава критерия отбора
2. проверка реквизитного состава ЗП в части присутствия/изменения реквизита ДокументОснование

Отличий от копии не нашел. Какие еще действия можно выполнить?
6. Степной 27 26.11.18 13:49 Сейчас в теме
16. lefthander 26.11.18 14:35 Сейчас в теме
(1)Что в параметре "Реквизит"?
20. Степной 27 26.11.18 15:15 Сейчас в теме
(16) Значение - Основание, тип - Объект метаданных.
21. noprogrammer 237 26.11.18 15:24 Сейчас в теме
(20) Чудес не бывает... базу протестируйте.
22. noprogrammer 237 26.11.18 15:29 Сейчас в теме
(20) Скажи почту- скину расширение (маленькое) - на нем проверишь, если оно покажет связанные документы значит проблема в критериях отбора.
23. Степной 27 08.01.19 21:17 Сейчас в теме
(22) Ваше расширение помогло, благодарю.
24. Coole 26.07.19 00:55 Сейчас в теме
(22)
а можно ли сюда просто? (добавить вашу обработку)
26. Coole 26.07.19 14:26 Сейчас в теме
3. zuxelzz 26.11.18 13:42 Сейчас в теме
тут только отладка и консоль запросов помогут. Что-то явно поменялось, только не в конфигурации, а в данных базы.
5. Степной 27 26.11.18 13:46 Сейчас в теме
Напишите ваше сообщение
(3)Да, есть подозрения, что изменились какие-то настройки. Все, что знал проверил.... Пока без результата.
7. zuxelzz 26.11.18 13:53 Сейчас в теме
(5) дак а документы в этих базах полностью идентичны? реквизиты заполнены одинаково? консоль запросов по критерию отбора дает одинаковые результаты в обоих базах?
8. Степной 27 26.11.18 13:56 Сейчас в теме
(7)Да, запрос к критерию отбора в обеих базах на примере одних и тех же документов идентичен. Не совсем понятна история, когда при выполнении указанной строки кода реквизит не находится в составе критерия.
9. lefthander 26.11.18 13:57 Сейчас в теме
(5)Критерий отбора проверьте, тип документов
10. Степной 27 26.11.18 14:01 Сейчас в теме
(9)В состав критерия входит реквизит ДокументОснование документа Заказ поставщику.
Критерий отбора СвязанныеДокументы, документы ЗаказКлиента, ЗаказПоставщику не изменены, находятся на поддержке.
11. noprogrammer 237 26.11.18 14:09 Сейчас в теме
(0) А просто остановиться в отладчике и посмотреть почему не находиться родитель ?!
12. Степной 27 26.11.18 14:15 Сейчас в теме
(11) Так отрабатывает метод Содержит в указанной строке кода. Состав критерия и реквизитный состав документа в обеих базах идентичны.
13. noprogrammer 237 26.11.18 14:20 Сейчас в теме
(12) это я понял - а дальше то? на чем система "спотыкается" ? конкретный кусок кода где в рабочей возвращается ЛОЖЬ в копии ИСТИНА?
14. Степной 27 26.11.18 14:23 Сейчас в теме
(13) Фрагмент кода приведен в 1-м сообщении, собственно на нем и спотыкается.
15. noprogrammer 237 26.11.18 14:28 Сейчас в теме
(14) в (0) приведен не фрагмент кода а кусок кода вырванный из контекста. Можно конкретный код на котором идет "ошибка" определения родителя?
17. Степной 27 26.11.18 14:53 Сейчас в теме
(15) Конечно.

&НаСервере
Процедура ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель)

	СтрокиДерева = ДеревоРодитель.ПолучитьЭлементы();
	МетаданныеОбъекта = ТекущийОбъект.Метаданные();
	СписокРеквизитов    = Новый СписокЗначений;
	
	Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
		
		Если Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
			
			Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл
				
				МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип);
				
				Если МетаданныеРеквизита <> Неопределено
					И (Метаданные.Документы.Содержит(МетаданныеРеквизита)
					   Или Метаданные.Справочники.Содержит(МетаданныеРеквизита)
					   Или Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита))
					И ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда
					
					ЗначениеРеквизита = ТекущийОбъект[Реквизит.Имя];
					
					Если ЗначениеЗаполнено(ЗначениеРеквизита)
						И ТипЗнч(ЗначениеРеквизита) = ТекущийТип
						И ЗначениеРеквизита <> ТекущийОбъект
						И СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) = Неопределено Тогда
						
						ЯвляетсяДокументом  = ОбщегоНазначения.ЭтоДокумент(МетаданныеРеквизита);
						
						Если ЯвляетсяДокументом Тогда
							СписокРеквизитов.Добавить(ЗначениеРеквизита,Формат(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата"),"ДЛФ=DT"));
						Иначе
							СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1,1,1));
						КонецЕсли;
						
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
			
		КонецЕсли;
		
	КонецЦикла;

	Для Каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл
		СтрРеквизитов = "";

		СодержимоеТЧ = ТекущийОбъект[ТЧ.Имя].Выгрузить();

		Для Каждого Реквизит Из ТЧ.Реквизиты Цикл

			Если Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
				
				Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл
					
					МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип);
					
					Если МетаданныеРеквизита<>Неопределено
						И (Метаданные.Документы.Содержит(МетаданныеРеквизита)
						   Или Метаданные.Справочники.Содержит(МетаданныеРеквизита)
						   Или Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита))
						И ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда
						
						СтрРеквизитов = СтрРеквизитов + ?(СтрРеквизитов = "", "", ", ") + Реквизит.Имя;
						Прервать;
						
					КонецЕсли;
				КонецЦикла;
				
			КонецЕсли;
			
		КонецЦикла;

		СодержимоеТЧ.Свернуть(СтрРеквизитов);
		Для Каждого КолонкаТЧ Из СодержимоеТЧ.Колонки Цикл

			Для Каждого СтрокаТЧ Из СодержимоеТЧ Цикл

				ЗначениеРеквизита = СтрокаТЧ[КолонкаТЧ.Имя];

				МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипЗнч(ЗначениеРеквизита));
				
				Если МетаданныеЗначения <> Неопределено Тогда

					Если ЗначениеЗаполнено(ЗначениеРеквизита)
						И (Метаданные.Документы.Содержит(МетаданныеЗначения)
						   Или Метаданные.Справочники.Содержит(МетаданныеЗначения)
						   Или Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеЗначения))
						И ЗначениеРеквизита <> ТекущийОбъект
						И СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) = Неопределено
						И ПравоДоступа("Чтение", МетаданныеЗначения) Тогда
						
						ЯвляетсяДокументом  = ОбщегоНазначения.ЭтоДокумент(МетаданныеЗначения);
						
						Если ЯвляетсяДокументом Тогда
							СписокРеквизитов.Добавить(ЗначениеРеквизита,Формат(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата"),"ДЛФ=DT"));
						Иначе
							СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1,1,1));
						КонецЕсли;
					КонецЕсли;
				КонецЕсли;
				
			КонецЦикла;
		КонецЦикла;
	КонецЦикла;

	СписокРеквизитов.СортироватьПоПредставлению();
	
	Для каждого ЭлементСписка Из СписокРеквизитов Цикл
		
		Выборка = ПолучитьВыборкуПоРеквизитамОбъекта(ЭлементСписка.Значение);
		
		Если Выборка.Следующий() Тогда
			СтрокаДерева = ДобавитьСтрокуВДерево(СтрокиДерева, Выборка);
			Если НЕ ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель,ЭлементСписка.Значение) Тогда
				ВывестиРодительскиеОбъекты(ЭлементСписка.Значение,СтрокаДерева);
			КонецЕсли;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры
Показать
18. noprogrammer 237 26.11.18 15:02 Сейчас в теме
(17) На какой строчке кода возвращается "Ложь" ?
тут
Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) 
? Если так то, что явно не то либо с критериями отбора либо с реквизитом.
19. Степной 27 26.11.18 15:11 Сейчас в теме
(18) Да, именно на этой строке.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот