Перем глРегулярноеВ; //****************************************************************************** // глДобавитьКСтроке(Куда, Предлог, ЧтоДобавляем) Функция глДобавитьКСтроке(Куда, ЧтоДобавляем, Предлог = "") Экспорт Если ПустоеЗначение(Куда) = 1 Тогда Куда = ЧтоДобавляем; Иначе Куда = Куда + Предлог + ЧтоДобавляем; КонецЕсли; Возврат Куда; КонецФункции // глДобавитьКСтроке() // глСправаОт( псСтрока, псФрагмент = "") // Сообщить(глСправаОт( "Справочник.СвоиЮрЛица", ".")) = "СвоиЮрЛица" Функция глСправаОт( псСтрока, псФрагмент = "") Экспорт ЗначВозврата = псСтрока; Если (стрдлина(псСтрока) = 0) ИЛИ (стрдлина(псФрагмент) = 0) ИЛИ (СтрДлина(псСтрока)<=СтрДлина(псФрагмент)) Тогда Возврат ЗначВозврата; КонецЕсли; поз = Найти(псСтрока,псФрагмент); ЗначВозврата = Сред(псСтрока, поз+СтрДлина(псФрагмент)); Возврат ЗначВозврата; КонецФункции // глСправаОт() //****************************************************************************** // глСлеваОт( псСтрока, псФрагмент = "") // Сообщить(глСлеваОт( "Справочник.СвоиЮрЛица", ".")) = "Справочник" Функция глСлеваОт( псСтрока, псФрагмент = "") Экспорт ЗначВозврата = псСтрока; Если (стрдлина(псСтрока) = 0) ИЛИ (стрдлина(псФрагмент) = 0) ИЛИ (СтрДлина(псСтрока)<=СтрДлина(псФрагмент)) Тогда Возврат ЗначВозврата; КонецЕсли; поз = Найти(псСтрока,псФрагмент); ЗначВозврата = Сред(псСтрока, 1, поз-1); Возврат ЗначВозврата; КонецФункции // глСправаОт() //============================================================================== // глИдентификаторВСтроку( псСтрИдентификатора ) © trdm 2008 // глИдентификаторВСтроку("КалькуляцияПроцентовПоКредиту") = "Калькуляция процентов по кредиту" Функция глИдентификаторВСтроку( псСтрИдентификатора ) Экспорт ЗначВозврата = псСтрИдентификатора; Если СтрДлина(ЗначВозврата)>1 Тогда вИмяПерем = Сред(ЗначВозврата,1,1); СЦ = 0; Для СЦ = 2 По СтрДлина(ЗначВозврата) Цикл вСимвол = Сред(ЗначВозврата,СЦ,1); Если Нрег(вСимвол) = вСимвол Тогда вИмяПерем = вИмяПерем + вСимвол; Иначе вИмяПерем = вИмяПерем + " " + Нрег(вСимвол); КонецЕсли; КонецЦикла; ЗначВозврата = вИмяПерем; КонецЕсли; Возврат ЗначВозврата; КонецФункции // глИдентификаторВСтроку() //****************************************************************************** // глПрогрессор(Всего, Пройдено) // <<© ТрДм 2003>> Функция глПрогрессор(Знач Всего, Знач Пройдено, Шаг = 5, Обратно = 0, ШрифтWebdings = 0, псВыводПроцента = 1) Экспорт ЗначВозврата = " "; Если ((Всего) = 0) ИЛИ (Всего<Пройдено) Тогда Возврат ""; КонецЕсли; вВсего_ = Всего; вПройдено_ = Пройдено; ДанныеПрогрессора = Цел(?(Пройдено<>0,Пройдено,1) / Всего *100); Если ДанныеПрогрессора<>0 Тогда Пройдено = "|"; НеПройдено = "."; Темп = ""; Пройдено100 = "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"; // 100 НеПройдено100 = "...................................................................................................."; // 100 // для шрифта "Webdings", красиво получается, только нужно растянуть статик на нужную длинну. Если ШрифтWebdings = 1 Тогда Пройдено = "g"; НеПройдено = "c"; //g - заполнено, c - пусто Пройдено100 = "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"; // 100 НеПройдено100 = "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"; // 100 КонецЕсли; Если Обратно = 1 Тогда Темп = Пройдено; Пройдено = НеПройдено; НеПройдено = Темп; КонецЕсли; вДанныеПрогрессора = Цел(ДанныеПрогрессора / Шаг); вВсего = Цел(100 / Шаг); ЗначВозврата = Сред(Пройдено100,1,вДанныеПрогрессора)+Сред(НеПройдено100,1,вВсего - вДанныеПрогрессора); КонецЕсли; Если псВыводПроцента = 1 Тогда ЗначВозврата = ЗначВозврата + " (" + Окр(вПройдено_ * 100 /вВсего_,2,1 ) + "%)"; КонецЕсли; Возврат ЗначВозврата; КонецФункции // глПрогрессор() //****************************************************************************** // Строка_В_Список(ПромСтрока, Разделитель = ";") // <<© ТрДм 2004>> // Описание: Дробит строку разделенную РАЗДЕЛИТЕЛЕМ на части и заполняет ими списокЗначений Функция глСтрокаВСписок(Знач ПСтрока, ПРазделитель = ",", псРаздЗначПредст = "", псСПустыми = 0) Экспорт ЗначВозврата = СоздатьОбъект("СписокЗначений"); вРазделительСТ = Нет; /// разделитель -> символ табуляции... Если (СтрДлина(ПРазделитель)<>СтрДлина(СокрЛП(ПРазделитель))) И (СтрДлина(ПРазделитель)>0) Тогда вРазделительСТ = Да; КонецЕсли; Если (вРазделительСТ = Да) Тогда Разделитель = ПРазделитель; ПромСтрока = ПСтрока; Иначе Разделитель = сокрЛП(ПРазделитель); ПромСтрока = СокрЛП(ПСтрока); КонецЕсли; Если (ПустоеЗначение(ПромСтрока) = 0) И ((вРазделительСТ = Да) ИЛИ (ПустоеЗначение(ПРазделитель) = 0)) Тогда Пока Найти(ПромСтрока,Разделитель) > 0 Цикл ПозРазделителя = Найти(ПромСтрока,Разделитель); КусокСтроки = Сред(ПромСтрока,1,ПозРазделителя-1); КусокСтроки = СокрЛП(КусокСтроки); Если (ПустоеЗначение(КусокСтроки) = 0) или (псСПустыми = 1) Тогда Если псРаздЗначПредст = "" Тогда ЗначВозврата.ДобавитьЗначение(КусокСтроки); Иначе /// Добавим разбиение на значение и представление... КусокСтроки_Знач = КусокСтроки; КусокСтроки_предст = КусокСтроки; ПозРазделителя2 = Найти(КусокСтроки,псРаздЗначПредст); Если ПозРазделителя2>0 Тогда КусокСтроки_Знач = Сред(КусокСтроки,1,ПозРазделителя2-1); КусокСтроки_предст = Сред(КусокСтроки,ПозРазделителя2+1); КонецЕсли; ЗначВозврата.ДобавитьЗначение(КусокСтроки_Знач, КусокСтроки_предст); КонецЕсли; КонецЕсли; ПромСтрока = Сред(ПромСтрока,ПозРазделителя+СтрДлина(Разделитель)) КонецЦикла; КонецЕсли; Если ПустоеЗначение(ПромСтрока) = 0 Тогда Если псРаздЗначПредст = "" Тогда ЗначВозврата.ДобавитьЗначение(ПромСтрока); Иначе /// Добавим разбиение на значение и представление... КусокСтроки_Знач = ПромСтрока; КусокСтроки_предст = ПромСтрока; ПозРазделителя2 = Найти(ПромСтрока,псРаздЗначПредст); Если ПозРазделителя2>0 Тогда КусокСтроки_Знач = Сред(ПромСтрока,1,ПозРазделителя2-1); КусокСтроки_предст = Сред(ПромСтрока,ПозРазделителя2+1); КонецЕсли; ЗначВозврата.ДобавитьЗначение(КусокСтроки_Знач, КусокСтроки_предст); КонецЕсли; КонецЕсли; Возврат ЗначВозврата; КонецФункции // Строка_В_Список() //****************************************************************************** // глНайтиEx(Patern, ГдеИщем) Функция глНайтиEx(Patern, ГдеИщем, РазделитьНайденные = "", псСписПриемник = "") Экспорт ЗначВозврата = ""; глРегулярноеВ.Pattern = Patern; Если ТипЗначенияСтр(псСписПриемник) <> "СписокЗначений" Тогда псСписПриемник = СоздатьОбъект("СписокЗначений"); КонецЕсли; псСписПриемник.УдалитьВсе(); Matches = глРегулярноеВ.Execute(ГдеИщем); Если Matches.Count()<> -1 Тогда СчетчикЦикла = 0; Для СчетчикЦикла = 0 По Matches.Count()-1 Цикл Match = Matches.Item(СчетчикЦикла); Если СчетчикЦикла = 0 Тогда ЗначВозврата = Match.Value; Иначе ЗначВозврата = ЗначВозврата + РазделитьНайденные + Match.Value; КонецЕсли; псСписПриемник.ДобавитьЗначение(""+Match.Value); КонецЦикла; КонецЕсли; Возврат ЗначВозврата; КонецФункции // глНайтиEx() //****************************************************************************** // глТипИВидЗначения(Значение) Функция глТипИВидЗначения(Значение) Экспорт ЗначВозврата = ТипЗначенияСтр(Значение); Если ПустоеЗначение(Значение) = 0 Тогда ЗначВозврата = ТипЗначенияСтр(Значение); Если (ЗначВозврата = "Справочник") ИЛИ (ЗначВозврата = "Документ") ИЛИ (ЗначВозврата = "Регистр") ИЛИ (ЗначВозврата = "Перечисление") Тогда ЗначВозврата = ЗначВозврата + "." + Значение.вид(); ИначеЕсли ЗначВозврата = "ГрупповойКонтекст" Тогда Попытка Если Метаданные.Документ(Значение.Вид()).Выбран() = 1 Тогда ЗначВозврата = "Документ." + Значение.вид(); ИначеЕсли Метаданные.Справочник(Значение.Вид()).Выбран() = 1 Тогда ЗначВозврата = "Справочник." + Значение.вид(); КонецЕсли; Исключение КонецПопытки; КонецЕсли; Иначе ЗначВозврата = ТипЗначенияСтр(Значение); Попытка Если (ЗначВозврата = "Справочник") ИЛИ (ЗначВозврата = "Документ") ИЛИ (ЗначВозврата = "Регистр") ИЛИ (ЗначВозврата = "Перечисление") Тогда ЗначВозврата = ЗначВозврата + "." + Значение.вид(); КонецЕсли; Исключение КонецПопытки; КонецЕсли; Возврат ЗначВозврата; КонецФункции // глТипИВидЗначения() //****************************************************************************** // глЕстьКолонкаВТаблицеЗначений(НазвКолонки, ТаблЗнач)// <<© ТрДм 2004>> Функция глЕстьКолонкаВТаблицеЗначений(НазвКолонки, ТаблЗнач) Экспорт ЗначВозврата = Нет; Если ТипЗначенияСтр(ТаблЗнач) = "ТаблицаЗначений" Тогда Если ТаблЗнач.КоличествоКолонок()>0 Тогда СЦ = 0; Для СЦ = 1 По ТаблЗнач.КоличествоКолонок() Цикл ИДКолонки = ТаблЗнач.ПолучитьПараметрыКолонки(СЦ); Если Врег(ИДКолонки) = Врег(НазвКолонки) Тогда ЗначВозврата = Да; Прервать; КонецЕсли; КонецЦикла; Иначе Возврат Нет; КонецЕсли; КонецЕсли; Возврат ЗначВозврата; КонецФункции // глЕстьКолонкаВТаблицеЗначений() Попытка глРегулярноеВ = СоздатьОбъект("VBScript.RegExp"); глРегулярноеВ.IgnoreCase= 1; глРегулярноеВ.Global = 1; Исключение глРегулярноеВ = ""; Сообщить("Системная ошибка при создании объекта: ""VBScript.RegExp""! |Некоторые возможности недоступны"); КонецПопытки;