&НаКлиентеНаСервереБезКонтекста
Функция ПривестиКДлине(Строка, Длина)
Перем Ш1, Ш2, Ш3, Ш4, Ш5, Ш6, Ш7;
#Область __ЗаполнениеШиринСимволов
мКодыСимволов = "1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;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;102;103;104;105;106;107;108;109;110;111;112;113;114;115;116;117;118;119;120;121;122;123;124;125;126;127;1026;1027;8218;1107;8222;8230;8224;8225;8364;8240;1033;8249;1034;1036;1035;1039;1106;8216;8217;8220;8221;8226;8211;8212;152;8482;1113;8250;1114;1116;1115;1119;160;1038;1118;1035;164;1168;166;167;1025;169;1028;171;172;173;174;1031;176;177;1030;1110;1169;181;182;183;1105;8470;1108;187;1112;1029;1109;1111;1040;1041;1042;1043;1044;1045;1046;1047;1048;1049;1050;1051;1052;1053;1054;1055;1056;1057;1058;1059;1060;1061;1062;1063;1064;1065;1066;1067;1068;1069;1070;1071;1072;1073;1074;1075;1076;1077;1078;1079;1080;1081;1082;1083;1084;1085;1086;1087;1088;1089;1090;1091;1092;1093;1094;1095;1096;1097;1098;1099;1100;1101;1102;1103;8201;8202";
мШириныСимволовArial10_Масштаб100 = "69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;69;174;233;139;100;100;57;77;346;175;175;139;87;175;175;175;175;100;116;100;100;100;100;100;100;100;100;175;175;87;87;87;100;54;77;77;77;77;77;87;69;77;234;117;77;100;63;77;69;77;69;77;77;100;77;77;54;100;77;100;174;174;174;139;100;174;100;100;100;100;100;232;100;100;232;232;100;232;63;100;100;100;100;175;100;175;100;139;77;100;100;100;175;233;175;87;-1;63;100;232;139;175;54;100;100;100;50;50;175;54;87;63;77;100;232;232;175;175;139;100;54;-1;54;58;175;63;115;100;100;175;87;100;63;100;115;231;100;77;69;77;100;87;175;69;231;139;100;231;231;139;100;100;175;100;50;100;100;231;77;100;231;77;77;77;100;77;77;63;87;77;77;87;77;63;77;69;77;77;77;100;87;63;100;69;77;63;63;69;63;87;77;54;77;100;100;100;139;87;100;78;115;100;100;116;100;77;100;100;100;100;100;139;100;78;100;100;100;63;58;87;77;100;100;69;100;200;602";
мШириныСимволовArial10_Масштаб125 = "104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;104;311;249;208;138;138;89;113;415;249;249;208;138;311;249;311;312;138;156;138;138;138;138;138;138;138;138;312;312;138;138;138;138;78;113;113;104;104;113;124;104;113;416;156;113;138;96;113;104;113;104;113;113;138;113;113;83;113;138;138;311;311;311;178;138;249;138;138;156;138;138;311;138;155;312;416;156;416;96;156;138;138;138;249;156;312;156;178;113;178;178;178;249;416;249;138;-1;89;138;312;207;249;78;138;138;138;73;73;249;78;138;96;104;156;312;311;249;249;208;138;78;-1;78;83;249;96;178;156;156;310;124;178;96;138;155;415;138;113;103;104;138;138;249;103;415;208;138;415;311;178;138;138;249;138;73;155;138;415;113;156;415;113;113;113;138;113;113;89;124;104;104;138;113;96;113;104;113;113;104;138;124;113;113;104;124;96;89;96;89;113;104;78;104;138;138;138;207;138;138;124;178;156;156;178;156;113;156;138;156;138;156;178;178;96;178;138;156;113;113;124;104;138;156;104;138;415;1217";
#КонецОбласти
МассивКодов = СтрРазделить(мКодыСимволов, ";", Ложь);
Инфо = ПолучитьИнформациюЭкрановКлиента();
Если Инфо[0].DPI = 96 Тогда //Масштаб экрана 100%
МассивШирин = СтрРазделить(мШириныСимволовArial10_Масштаб100, ";", Ложь);
ИначеЕсли Инфо[0].DPI = 120 Тогда //Масштаб экрана 125%
МассивШирин = СтрРазделить(мШириныСимволовArial10_Масштаб125, ";", Ложь);
Иначе
ВызватьИсключение("Для других масштабов коэффициентов еще нет");
КонецЕсли;
Соотв = Новый Соответствие;
Для Сч = 0 По МассивКодов.ВГраница() Цикл
Соотв.Вставить(Число(МассивКодов[Сч]), Окр(100 / Число(МассивШирин[Сч]), 3));
КонецЦикла;
МногоТочие = "";
ШиринаСтроки = 0;
Ш1 = 0; Ш2 = 0; Ш3 = 0; Ш4 = 0; Ш5 = 0; Ш6 = 0;
Для Сч = 1 По СтрДлина(Строка) Цикл
Смв = Сред(Строка, Сч, 1);
ШиринаСтроки = ШиринаСтроки + Соотв[КодСимвола(Смв)];
Ш1 = Ш2; Ш2 = Ш3; Ш3 = Ш4; Ш4 = Ш5; Ш5 = Ш6;
Ш6 = Соотв[КодСимвола(Смв)];
Если ШиринаСтроки > Длина Тогда
Сч = Сч - 6;
Многоточие = "...";
ШиринаСтроки = ШиринаСтроки - Ш1 - Ш2 - Ш3 - Ш4 - Ш5 - Ш6 + 3* Соотв[КодСимвола(".")];
Прервать;
КонецЕсли;
КонецЦикла;
//Если ширина строки превышает заданную длину, обрезаем ее и добавляем ...
Результат = Лев(Строка, Сч) + Многоточие;
СимволПробела = " ";
ШиринаПробела = Соотв[32];
ПробеловДобавить = Окр((Длина - ШиринаСтроки) / ШиринаПробела) - 3;
Пробелы = "";
Для Счетчик = 1 По ПробеловДобавить Цикл
Пробелы = Пробелы + СимволПробела;
КонецЦикла;
ШиринаСтроки = ШиринаСтроки + ПробеловДобавить * ШиринаПробела;
// Уточняем результат сверхузкими пробелами
СимволПробела = Символ(8202);
ШиринаПробела = Соотв[8202];
ПробеловДобавить = Окр((Длина - ШиринаСтроки) / ШиринаПробела);
Для Счетчик = 1 По ПробеловДобавить Цикл
Пробелы = Пробелы + СимволПробела;
КонецЦикла;
Результат = Результат + Пробелы;
Возврат Результат;
КонецФункции