Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.30 KB | None | 0 0
  1.  
  2. &НаКлиенте
  3. Процедура Команда1(Команда)
  4. Команда1НаСервере();
  5. КонецПроцедуры
  6.  
  7. &НаСервере
  8. Процедура Команда1НаСервере()
  9. // Вставить содержимое обработчика.
  10. //"DАЕWОО NЕХIА"
  11. //"DАЕWОО NЕХIА"
  12. //"DАЕWОО NЕХIА"
  13. //"DАЕWООNЕХIА"
  14. //СтрокаПоиска = Реквизит1;
  15.  
  16. Текст = Новый ЧтениеТекста("C:\Users\Repin\Desktop\Сохр.csv", КодировкаТекста.OEM);
  17. Стр = Текст.ПрочитатьСтроку();
  18. МассивСтрок = СтрРазделить(Стр,";");
  19.  
  20.  
  21. МассивНужныхСтрок = Новый Массив;
  22. индекс = 1;
  23. Пока Истина Цикл
  24. Если индекс >= МассивСтрок.Количество() Тогда
  25. Прервать;
  26. КонецЕсли;
  27. МассивНужныхСтрок.Добавить(МассивСтрок[индекс]);
  28. индекс = индекс + 2;
  29. КонецЦИкла;
  30. //Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
  31.  
  32.  
  33.  
  34. //Сообщить(МассивСтрок[1]);
  35. //Стр = Текст.ПрочитатьСтроку();
  36. //КонецЦикла;
  37.  
  38.  
  39.  
  40. //ИмяИсточникДанных = "Справочник.МаркиАвтомобилей";
  41. //ИмяРеквизит = "АвтомобилиРаспознанные";
  42.  
  43.  
  44. //ТекстДерево = Дерево("Строки.АвтомобилиРаспознанные", -1, 50);
  45. ////ТекстДерево = "5" ;
  46. //Запрос = Новый Запрос();
  47. //Запрос.Текст =
  48. //"ВЫБРАТЬ
  49. //| Строки.АвтомобилиРаспознанные,
  50. //| " + ТекстДерево + " КАК Длина
  51. //|ИЗ
  52. //| " + ИмяИсточникДанных + " КАК Строки
  53. //|
  54. //|УПОРЯДОЧИТЬ ПО
  55. //| Длина УБЫВ";
  56. //
  57. //ВЫгрузка = Запрос.Выполнить().Выгрузить();
  58. ТЗ = Новый ТаблицаЗначений;
  59. ТЗ.Колонки.Добавить("ИсходнаяСтрока",,"ИсходнаяСтрока");
  60. ТЗ.Колонки.Добавить("Элемент",,"Элемент");
  61. ТЗ.Колонки.Добавить("Оценка",,"Оценка");
  62.  
  63. Для Каждого Строка Из МассивНужныхСтрок ЦИкл
  64.  
  65.  
  66. СтрокаПоиска = ПолучитьСтрокуНаЛатинском(Строка);
  67. СтрокаПоиска1 = ПолучитьСтрокуЗаменойНаЛатиницу(Строка);
  68.  
  69. СтруктураОтвета = ПолучитьЭлементСправочника(СтрокаПоиска);
  70.  
  71. СтруктураОтвета1 = ПолучитьЭлементСправочника(СтрокаПоиска1);
  72.  
  73.  
  74.  
  75. Если СтруктураОтвета.Оценка > СтруктураОтвета1.Оценка тогда
  76. Стр = ТЗ.Добавить();
  77. Стр.ИсходнаяСтрока = Строка;
  78. Стр.Элемент = Строка(СтруктураОтвета.Элемент);
  79. Стр.Оценка = Строка(СтруктураОтвета.Оценка);
  80. Иначе
  81. Стр = ТЗ.Добавить();
  82. Стр.ИсходнаяСтрока = Строка;
  83. Стр.Элемент = Строка(СтруктураОтвета1.Элемент);
  84. Стр.Оценка = Строка(СтруктураОтвета1.Оценка);
  85. КонецЕсли;
  86.  
  87.  
  88. //Сообщить(СтруктураОтвета.Элемент + СтруктураОтвета.Оценка);
  89. //Сообщить(СтруктураОтвета1.Элемент + СтруктураОтвета1.Оценка);
  90.  
  91. КонецЦикла;
  92. тз1 = ТЗ;
  93.  
  94. КонецПроцедуры
  95.  
  96. Функция ПолучитьЭлементСправочника(СтрокаПоиска)
  97. //СтрокаПоиска = Реквизит1;
  98.  
  99. ИмяИсточникДанных = "Справочник.МаркиАвтомобилей";
  100. ИмяРеквизит = "АвтомобилиРаспознанные";
  101.  
  102.  
  103. СтрокаПоиска = Лев(СтрокаПоиска, 300);
  104. ДлинаСтроки = СтрДлина(СтрокаПоиска);
  105.  
  106.  
  107.  
  108. Если НЕ ДлинаСтроки > 2 Тогда
  109. Возврат Неопределено;
  110. КонецЕсли;
  111.  
  112. ТекстПоиск = "0";
  113. Для Индекс = 1 По ДлинаСтроки - 2 Цикл
  114. ТекстПоиск = ТекстПоиск + " + ВЫБОР КОГДА ИсточникДанных." + ИмяРеквизит + " ПОДОБНО ""%" + Сред(СтрокаПоиска, Индекс, 3) + "%"" ТОГДА 1 ИНАЧЕ 0 КОНЕЦ";
  115. КонецЦикла;
  116.  
  117. ТекстДерево = Дерево("ИсточникДанных.АвтомобилиРаспознанные", -1, 50);
  118. //ТекстРанг = "";
  119. ТекстРанг = "ВЫБОР КОГДА ПОДСТРОКА(ИсточникДанных." + ИмяРеквизит + ", " + (ДлинаСтроки + 1) + ", 3) = """" ТОГДА " + ДлинаСтроки + " ИНАЧЕ " + ТекстДерево + " КОНЕЦ";
  120. Запрос = Новый Запрос();
  121.  
  122.  
  123. Запрос.Текст = "
  124. |ВЫБРАТЬ ПЕРВЫЕ 10
  125. | ИсточникДанных.Ссылка КАК Ссылка,
  126. | ИсточникДанных." + ИмяРеквизит + " КАК Реквизит,
  127. | 100*(" + ТекстПоиск + ")/(" + ТекстРанг + " - 2) КАК Ранг
  128. |ИЗ " + ИмяИсточникДанных + " КАК ИсточникДанных
  129. |
  130. |УПОРЯДОЧИТЬ ПО
  131. | Ранг УБЫВ";
  132.  
  133. Выгрузка = Запрос.Выполнить().Выгрузить();
  134.  
  135. СтруктураОтвета = Новый Структура("Элемент, Оценка", Выгрузка[0].Реквизит, Выгрузка[0].Ранг);
  136. Возврат СтруктураОтвета;
  137. КонецФункции
  138.  
  139.  
  140. Функция Дерево(Реквизит, Начало, Конец) Экспорт
  141.  
  142. Если Начало + 1 = Конец Тогда
  143. Возврат Строка(Конец);
  144. КонецЕсли;
  145. Середина = Начало + Цел((Конец - Начало) / 2);
  146. СтрокаДерево = "ВЫБОР КОГДА ПОДСТРОКА(" + Реквизит + ", " + (Середина + 1) + ", 3) = """" ТОГДА "
  147. + Дерево(Реквизит, Начало, Середина) + " ИНАЧЕ " + Дерево(Реквизит, Середина, Конец) + " КОНЕЦ";
  148. Возврат СтрокаДерево;
  149.  
  150. КонецФункции // Дерево()
  151.  
  152.  
  153.  
  154. Функция ПолучитьСтрокуНаЛатинском(ИсходныйТекст)
  155.  
  156.  
  157. СоответствиеСимволов = Новый Соответствие;
  158.  
  159.  
  160. СоответствиеСимволов.Вставить("А", "A");
  161.  
  162.  
  163. СоответствиеСимволов.Вставить("Б", "B");
  164.  
  165.  
  166. СоответствиеСимволов.Вставить("В", "V");
  167.  
  168.  
  169. СоответствиеСимволов.Вставить("Г", "G");
  170.  
  171.  
  172. СоответствиеСимволов.Вставить("Д", "D");
  173.  
  174.  
  175. СоответствиеСимволов.Вставить("Е", "E");
  176.  
  177.  
  178. СоответствиеСимволов.Вставить("Ё", "E");
  179.  
  180.  
  181. СоответствиеСимволов.Вставить("Ж", "ZH");
  182.  
  183.  
  184. СоответствиеСимволов.Вставить("З", "Z");
  185.  
  186.  
  187. СоответствиеСимволов.Вставить("И", "I");
  188.  
  189.  
  190. СоответствиеСимволов.Вставить("Й", "Y");
  191.  
  192.  
  193. СоответствиеСимволов.Вставить("К", "K");
  194.  
  195.  
  196. СоответствиеСимволов.Вставить("Л", "L");
  197.  
  198.  
  199. СоответствиеСимволов.Вставить("М", "M");
  200.  
  201.  
  202. СоответствиеСимволов.Вставить("Н", "N");
  203.  
  204.  
  205. СоответствиеСимволов.Вставить("О", "O");
  206.  
  207.  
  208. СоответствиеСимволов.Вставить("П", "P");
  209.  
  210.  
  211. СоответствиеСимволов.Вставить("Р", "R");
  212.  
  213.  
  214. СоответствиеСимволов.Вставить("С", "S");
  215.  
  216.  
  217. СоответствиеСимволов.Вставить("Т", "T");
  218.  
  219.  
  220. СоответствиеСимволов.Вставить("У", "U");
  221.  
  222.  
  223. СоответствиеСимволов.Вставить("Ф", "F");
  224.  
  225.  
  226. СоответствиеСимволов.Вставить("Х", "KH");
  227.  
  228.  
  229. СоответствиеСимволов.Вставить("Ц", "TS");
  230.  
  231.  
  232. СоответствиеСимволов.Вставить("Ч", "CH");
  233.  
  234.  
  235. СоответствиеСимволов.Вставить("Ш", "SH");
  236.  
  237.  
  238. СоответствиеСимволов.Вставить("Щ", "SHCH");
  239.  
  240.  
  241. СоответствиеСимволов.Вставить("Ъ", "");
  242.  
  243.  
  244. СоответствиеСимволов.Вставить("Ы", "Y");
  245.  
  246.  
  247. СоответствиеСимволов.Вставить("Ь", "");
  248.  
  249.  
  250. СоответствиеСимволов.Вставить("Э", "E");
  251.  
  252.  
  253. СоответствиеСимволов.Вставить("Ю", "YU");
  254.  
  255.  
  256. СоответствиеСимволов.Вставить("Я", "YA");
  257.  
  258.  
  259.  
  260.  
  261.  
  262. ИсходныйТекст = СокрЛП(ВРег(ИсходныйТекст));
  263.  
  264.  
  265. ГотовоеЗначение = "";
  266.  
  267.  
  268. ТекущийСимвол = "";
  269.  
  270.  
  271. ТекущийГотовыйСимвол = "";
  272.  
  273.  
  274. Для к = 1 по СтрДлина(ИсходныйТекст) Цикл
  275.  
  276.  
  277. ТекущийСимвол = Сред(ИсходныйТекст, к, 1);
  278.  
  279.  
  280. ТекущийГотовыйСимвол = СоответствиеСимволов.Получить(ТекущийСимвол);
  281.  
  282.  
  283. Если ТекущийГотовыйСимвол = Неопределено Тогда
  284.  
  285.  
  286. ГотовоеЗначение = ГотовоеЗначение + ТекущийСимвол;
  287.  
  288.  
  289. Иначе
  290.  
  291.  
  292. ГотовоеЗначение = ГотовоеЗначение + ТекущийГотовыйСимвол;
  293.  
  294.  
  295. КонецЕсли;
  296.  
  297.  
  298.  
  299.  
  300.  
  301. КонецЦикла;
  302.  
  303.  
  304. Возврат ГотовоеЗначение;
  305.  
  306.  
  307. КонецФункции
  308.  
  309. Функция ПолучитьСтрокуЗаменойНаЛатиницу(ИсходныйТекст)
  310.  
  311.  
  312. СоответствиеСимволов = Новый Соответствие;
  313.  
  314.  
  315. СоответствиеСимволов.Вставить("А", "A");
  316.  
  317.  
  318. СоответствиеСимволов.Вставить("В", "B");
  319.  
  320.  
  321. СоответствиеСимволов.Вставить("Е", "E");
  322.  
  323.  
  324.  
  325. СоответствиеСимволов.Вставить("К", "K");
  326.  
  327.  
  328. СоответствиеСимволов.Вставить("М", "M");
  329.  
  330.  
  331. СоответствиеСимволов.Вставить("Н", "H");
  332.  
  333.  
  334. СоответствиеСимволов.Вставить("О", "O");
  335.  
  336. СоответствиеСимволов.Вставить("Р", "P");
  337.  
  338.  
  339. СоответствиеСимволов.Вставить("С", "C");
  340.  
  341.  
  342. СоответствиеСимволов.Вставить("Т", "T");
  343.  
  344.  
  345. СоответствиеСимволов.Вставить("У", "Y");
  346.  
  347. СоответствиеСимволов.Вставить("Х", "X");
  348.  
  349.  
  350. ИсходныйТекст = СокрЛП(ВРег(ИсходныйТекст));
  351.  
  352.  
  353. ГотовоеЗначение = "";
  354.  
  355.  
  356. ТекущийСимвол = "";
  357.  
  358.  
  359. ТекущийГотовыйСимвол = "";
  360.  
  361.  
  362. Для к = 1 по СтрДлина(ИсходныйТекст) Цикл
  363.  
  364.  
  365. ТекущийСимвол = Сред(ИсходныйТекст, к, 1);
  366.  
  367.  
  368. ТекущийГотовыйСимвол = СоответствиеСимволов.Получить(ТекущийСимвол);
  369.  
  370.  
  371. Если ТекущийГотовыйСимвол = Неопределено Тогда
  372.  
  373.  
  374. ГотовоеЗначение = ГотовоеЗначение + ТекущийСимвол;
  375.  
  376.  
  377. Иначе
  378.  
  379.  
  380. ГотовоеЗначение = ГотовоеЗначение + ТекущийГотовыйСимвол;
  381.  
  382.  
  383. КонецЕсли;
  384.  
  385.  
  386.  
  387.  
  388.  
  389. КонецЦикла;
  390.  
  391.  
  392. Возврат ГотовоеЗначение;
  393.  
  394.  
  395. КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement