I. Как сделать самому подобное.
Хотелось бы не только решить конкретную задачу, но и показать, что пользоваться NET совсем не трудно.
Объемную статью Использование сборок .NET в 1с 7.x и 8.x по этому написал serginio. Я использую его наработки.
Вдохновившись знанием, что это реально, я начал поиски нужной функции.
Очень быстро гугл выдал DateTime.ParseExact.
Это статическая функция типа DateTime, которая проводит парсинг строки и возвращает дату.
и примеры использования
Теперь о том, как это использовать в 1С.
1. Подключить ком-объект, позволяющий использовать функции NET
БиблиотекаNET = новый COMОбъект("NetObjectToIDispatch45");
2. Создать тип DateTime
DateTime = БиблиотекаNET.ПолучитьТип("System.DateTime");
3. Вызвать функцию ParseExact
4. Параметры функции s и format примитивного типа, их можно передавать из 1С как есть
5. Параметры функции provider и style объектного типа. Их необходимо сначала создать.
6. Параметр style имеет тип DateTimeStyles. В описании пространство имен для него установлено System.Globalization.
Таким образом получить тип можно
DataTimeStyles = БиблиотекаNET.ПолучитьТип("System.Globalization.DateTimeStyles");
DataTimeStyles - перечисление и в описании определены его члены
Для того, чтобы передать параметр в функции, будем использовать член - DataTimeStyles.None
7. Параметр provider имеет тип IFormatProvider.
Это интерфейс, его реализацию получили классы NumberFormatInfo, DateTimeFormatInfo и CultureInfo.
В примере вызова используется CultureInfo. Поступаем точно так же.
КлассCultureInfo = БиблиотекаNET.ПолучитьТип("System.Globalization.CultureInfo");
ОбъектCultureInfo = БиблиотекаNET.СоздатьОбъект(КлассCultureInfo, "ru-RU");
В итоге получаем
БиблиотекаNET = новый COMОбъект("NetObjectToIDispatch45");
DateTime = БиблиотекаNET.ПолучитьТип("System.DateTime");
КлассCultureInfo = БиблиотекаNET.ПолучитьТип("System.Globalization.CultureInfo");
ОбъектCultureInfo = БиблиотекаNET.СоздатьОбъект(КлассCultureInfo, "ru-Ru");
DataTimeStyles = БиблиотекаNET.ПолучитьТип("System.Globalization.DateTimeStyles");
Дата = DateTime.ParseExact
(
"10 февраля 1978",
"dd MMMM yyyy",
ОбъектCultureInfo,
DataTimeStyles.None
);
Для каждого региона есть стандартные шаблоны записи дат. Их можно посмотреть программой CultureInfoExplorer
Например, стандартные шаблоны дат для русского языка
В обработке вместо рассмотренной функции используется TryParseExact и учитывается вариант без указания формата, а указания только региона.В этом случае произойдет перебор всех стандартных шаблонов описания дат для региона со скриншота от d до y.
Результат после нажатия на кнопку "Пуск":
II. Как установить и начать пользоваться.
1. Установить NET Framework 4.5 https://www.microsoft.com/ru-ru/download/details.aspx?id=30653
2. Регистрация NetObjetToIDispatch45.dll
2.1 Запустить РегистрацияКомСервера.exe
2.2 Нажать кнопку "Регистрация Сервера"
2.3 Выбрать файл NetObjetToIDispatch45.dll, после чего сгенерится строка вызова, необходимая для регистрации
2.4 Запустить командную строку от имени Администратора.
2.5 Скопировать строку вызова из формы в командную строку и запустить.
2.6 Убедиться, что результатом запуска стало "Типы зарегистрированы успешно"
3. Запустить обработку Универсальная_СтрокаВДату.epf
3.1 По нажатию кнопки "Пуск" все строки должны сконвертироваться в даты.