Дарю всем процедуру "выпиливания" номера и даты договора из наименования договора.
Процедура ПолучитьРеквизитыДоговора(Знач Договор, НомерДог, ДатаДог)
// Если название договора пустое, то выход
Если ПустоеЗначение(Договор) = 1 Тогда
Возврат;
КонецЕсли;
Гг = 0; Мм = 0; Дд = 0;
// Создадим объект для использования регулярных выражений
RegExp = CreateObject("VBScript.RegExp");
// Найдем в наименовании договора нужные нам значения
RegExp.Pattern = "(№\s*(\S+))?\s*от\s*(\d{1,2})\D(\d{1,2})\D(\d{1,4})";
RegExp.IgnoreCase = -1;
Matches = RegExp.Execute(Договор);
Если Matches.Count = 1 Тогда
// Подстрока поиска в названии договора найдена
Match = Matches.Item(0);
Если Match.SubMatches.Count = 5 Тогда
// Получим номер договора
НомерДог = СокрЛП(Match.SubMatches.Item(1));
КонецЕсли;
// Найдем значения года, месяца и дня в цифровом виде
Дд = Число(Match.SubMatches.Item(Match.SubMatches.Count - 3));
Мм = Число(Match.SubMatches.Item(Match.SubMatches.Count - 2));
Гг = Число(Match.SubMatches.Item(Match.SubMatches.Count - 1));
КонецЕсли;
// Если не указано столетие, то укажем текущее
Если (Гг > 0) И (Гг < 100) Тогда
Гг = Гг + Цел(ДатаГод(ТекущаяДата()) / 100) * 100;
КонецЕсли;
// Проверим и преобразуем нужные нам значения
ДатаДог = Дата(Гг, Мм, Дд);
Если ПустоеЗначение(НомерДог) = 1 Тогда
// Для ненайденного номера договора устанавливаем значение "без номера"
НомерДог = "б/н";
КонецЕсли;
КонецПроцедуры // ПолучитьРеквизитыДоговора
Поиск осуществляется с помощью встроенной в ОС Microsoft Windows компоненты RegExp. Шаблон поиска реквизитов подразумевает следущий шаблон:
№[Номер]от[Дата]
, где между ключевыми словами "№" и "от" и значениями реквизитов могут быть любое количество пробелов. Поиск осуществляется вне зависимости от регистра ключевого слова "от" ("ОТ", "От", "оТ").
Для использования процедуры перед ее вызовом надо задать переменные для получемых значений номера и даты договора:
НомерДоговора = ""; ДатаДоговора = Дата(0);
ПолучитьРеквизитыДоговора(НаименованиеДоговора, НомерДоговора, ДатаДоговора);
Попробовать процедуру можно в тестовой обработке.