Advertisement
Guest User

Untitled

a guest
Jul 15th, 2021
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.18 KB | None | 0 0
  1. #Область Прочее
  2.  
  3. Функция ОМ(Имя)
  4. Возврат БФ_КСПереопределяемый.ОбщийМодуль(Имя);
  5. КонецФункции
  6.  
  7. Функция Префикс()
  8. Возврат ОМ("БФ_КСПереопределяемый").Префикс();
  9. КонецФункции
  10.  
  11. Функция КопияОбъекта(Объект) Экспорт
  12. Результат = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Объект));
  13. Возврат Результат;
  14. КонецФункции
  15.  
  16. Функция РеквизитыОбъекта(Объект, СписокРеквизитов) Экспорт
  17. Результат = Новый Структура(СписокРеквизитов);
  18. ЗаполнитьЗначенияСвойств(Результат, Объект);
  19. Возврат Результат;
  20. КонецФункции
  21.  
  22. Функция РеквизитыОбъектов(
  23. Список1 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля1 = "*"
  24. , Список2 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля2 = "*"
  25. , Список3 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля3 = "*"
  26. , Список4 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля4 = "*"
  27. , Список5 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля5 = "*"
  28. , Список6 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля6 = "*"
  29. , Список7 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля7 = "*"
  30. , Список8 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля8 = "*"
  31. , Список9 = "83eb704a-01ed-497e-8406-86738bd13ba6", Поля9 = "*"
  32. ) Экспорт
  33.  
  34. Результат = Новый Соответствие;
  35.  
  36. ТЗ = ТЗ_НоваяТаблицаЗначений("Список, Поля");
  37.  
  38. #Область Тест
  39. Если Список1 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список1, Поля1) КонецЕсли;
  40. Если Список2 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список2, Поля2) КонецЕсли;
  41. Если Список3 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список3, Поля3) КонецЕсли;
  42. Если Список4 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список4, Поля4) КонецЕсли;
  43. Если Список5 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список5, Поля5) КонецЕсли;
  44. Если Список6 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список6, Поля6) КонецЕсли;
  45. Если Список7 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список7, Поля7) КонецЕсли;
  46. Если Список8 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список8, Поля8) КонецЕсли;
  47. Если Список9 <> "83eb704a-01ed-497e-8406-86738bd13ba6" Тогда ТЗ_ДобавитьСтроку(ТЗ, Список9, Поля9) КонецЕсли;
  48. #КонецОбласти
  49.  
  50. ДанныеТипов = Новый Соответствие;
  51.  
  52. Для каждого СтрТЗ Из ТЗ Цикл
  53. Если ТипЗнч(СтрТЗ.Список) <> Тип("Массив") Тогда
  54. СтрТЗ.Список = ОМ("БФ_КС").Массив_Новый(СтрТЗ.Список);
  55. КонецЕсли;
  56.  
  57. Для каждого Эл Из СтрТЗ.Список Цикл
  58. ТипЭл = ТипЗнч(Эл);
  59. Д = ДанныеТипов[ТипЭл];
  60. Если Д = Неопределено Тогда
  61. ТабОТ = Типы_ОписаниеТипов2ТаблицаСтроковыхТипов(Новый ОписаниеТипов(ОМ("БФ_КС").Массив_Новый(ТипЭл)));
  62. Если ТабОТ.Количество() = 0
  63. ИЛИ НЕ ТабОТ[0].Ссылочный
  64. Тогда
  65. Продолжить;
  66. КонецЕсли;
  67.  
  68. Д = Новый Структура("ИмяДляЗапроса, Поля, КолонкиПостОбработки, Список, СписокСоотв"
  69. , ТабОТ[0].ИмяДляЗапроса
  70. , "Ссылка КАК __Ссылка, " + ?(ЗначениеЗаполнено(СтрТЗ.Поля), СтрТЗ.Поля, "*")
  71. , Новый Структура
  72. , Новый Массив
  73. , Новый Соответствие
  74. );
  75. ДанныеТипов[ТипЭл] = Д;
  76. КонецЕсли;
  77.  
  78. Если Д.Список.Найти(Эл) = Неопределено Тогда
  79. Д.Список.Добавить(Эл);
  80. Д.СписокСоотв[Эл] = Истина;
  81. КонецЕсли;
  82. КонецЦикла;
  83. КонецЦикла;
  84.  
  85. Для каждого КиЗ Из ДанныеТипов Цикл
  86. Д = КиЗ.Значение;
  87.  
  88. Запрос = Новый Запрос("ВЫБРАТЬ " + Д.Поля + " ИЗ " + Д.ИмяДляЗапроса
  89. + " КАК Т ГДЕ Ссылка В (&Список)");
  90. Запрос.УстановитьПараметр("Список", Д.Список);
  91. РезультатЗапроса = Запрос.Выполнить();
  92.  
  93. мТипРезультатЗапроса = Тип("РезультатЗапроса");
  94. ВремТаб = Новый ТаблицаЗначений;
  95. ВремТаб.Добавить();
  96. Для каждого Колонка Из РезультатЗапроса.Колонки Цикл
  97. Если Колонка.Имя <> "__Ссылка" Тогда
  98. Если Колонка.ТипЗначения.СодержитТип(мТипРезультатЗапроса) Тогда
  99. Д.КолонкиПостОбработки.Вставить(Колонка.Имя);
  100. ВремТаб.Колонки.Добавить(Колонка.Имя);
  101. ВремТаб[0][Колонка.Имя] = Новый Массив;
  102. Иначе
  103. ВремТаб.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения);
  104. КонецЕсли;
  105. КонецЕсли;
  106. КонецЦикла;
  107. ВремТаб = ТЗ_УдалитьПустыеТипы(ВремТаб);
  108. ПустаяСтр = ТЗ_СтрокаТЗ2Структура(ВремТаб[0]);
  109.  
  110. ИменаКолонок = ОМ("БФ_КС").Струк_Ключи(ПустаяСтр);
  111. Д.Поля = ИменаКолонок;
  112.  
  113. Выборка = РезультатЗапроса.Выбрать();
  114. Пока Выборка.Следующий() Цикл
  115. ДанныеСсылки = Новый Структура(ИменаКолонок);
  116. ЗаполнитьЗначенияСвойств(ДанныеСсылки, Выборка);
  117.  
  118. Для каждого КиЗ Из Д.КолонкиПостОбработки Цикл
  119. ВремТЗ = ДанныеСсылки[КиЗ.Ключ].Выгрузить();
  120. ДанныеСсылки.Вставить(КиЗ.Ключ, ТЗ2ТЗФ(ВремТЗ));
  121. КонецЦикла;
  122.  
  123. Результат.Вставить(Выборка.__Ссылка, ДанныеСсылки);
  124.  
  125. // Удалим лишние, чтобы в Результат всегда были все исходные значения
  126. Д.СписокСоотв.Удалить(Выборка.__Ссылка);
  127. КонецЦикла;
  128.  
  129. Для каждого Эл Из Д.СписокСоотв Цикл
  130. ДанныеСсылки = Новый Структура(ИменаКолонок);
  131. ЗаполнитьЗначенияСвойств(ДанныеСсылки, ПустаяСтр);
  132. Результат.Вставить(Эл.Ключ, ДанныеСсылки);
  133. КонецЦикла;
  134. КонецЦикла;
  135.  
  136. Возврат Результат;
  137. КонецФункции
  138.  
  139. // Возвращает авторизованного в системе пользователя (СправочникСсылка.Пользователи)
  140. Функция ТекущийПользователь() Экспорт
  141. Возврат ОМ("БФ_СПИ").ТекущийПользователь();
  142. КонецФункции
  143.  
  144. #КонецОбласти
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement