Строка в дату. Универсальное решение. Применение NetObjetToIDispatch45

0. 22 14.12.15 12:42 Сейчас в теме
Нам часто приходится делать преобразования строк в даты. В 1С нет специальных средств на эту тему. Более того, я не встречал никаких универсальных решений в 1С, которыми был бы доволен и в очередной раз нам приходится писать костыли вроде этого: Дата(Сред(стрДата,7,4)+Сред(стрДата,4,2)+Лев(стрДата,2)). Конечно же, в microsoft уже давно решили эту задачу на своей платформе NET. Почему мы бы им не воспользоваться.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. olbu 16.12.15 10:07 Сейчас в теме
Интересная статья. У меня возник вопрос, есть ли методы обойти "2. Регистрация NetObjetToIDispatch45.dll", те зарегистрировать dll не имея административных прав? У большинства пользователей нет административных прав...
Если это можно как то обойти, то можно использовать в работе.
2. invertercant 22 16.12.15 10:12 Сейчас в теме
(1) olbu, Устанавливать это на каждой клиентской машине было бы странно. Лучше поставить на сервер и все функции использующие com объект, сделать серверными. На сервере права администратора все равно потребуются, но сделать это надо будет всего один раз.
3. Serginio 877 16.12.15 16:44 Сейчас в теме
В функции СоздатьОбъект можно передавать как строку так и тип. Например
КлассCultureInfo = БиблиотекаNET.ПолучитьТип("System.Globalization.CultureInfo");
ОбъектCultureInfo = БиблиотекаNET.СоздатьОбъект(КлассCultureInfo, "ru-Ru");

можно заменить одной строкой

ОбъектCultureInfo = БиблиотекаNET.СоздатьОбъект("System.Globalization.CultureInfo", "ru-Ru");

Вот описание функции

Type ТипДляСоздатьОбъект(object ТипOrig)
        {
            object Тип = ТипOrig;
            string ТипСтр = Тип.ToString();
            if (Тип is AutoWrap)
            { Тип = ((AutoWrap)Тип).O; }
            else if (Тип.GetType() == typeof(String))
            {

                Тип = НайтиТип((string)Тип);

                if (Тип == null)
                {
                    string ошибка = " неверный тип " + ТипСтр;
                    MessageBox.Show(ошибка);
                    throw new  COMException(ошибка);
                }
            }
            return (Type)Тип;
        }


public object СоздатьОбъект(object Тип, params object[] argOrig)
        {
            //   MessageBox.Show(Тип.ToString() + " параметров=" + args.Length.ToString());

            var res = ТипДляСоздатьОбъект(Тип);

            object[] args = AutoWrap.ПолучитьМассивРеальныхОбъектов(argOrig);
            return AutoWrap.ОбернутьОбъект(System.Activator.CreateInstance(res, args));

        }
Показать

Кстати нужно мне изменить с проверкой на ВыводитьСообщениеОбОшибке
4. gubanoff 50 17.12.15 09:15 Сейчас в теме
(0) Все супер, но внешние компоненты, определенные версии Net и тому подобное очень затруднительно использовать более, чем у одного клиента. Всегда возникают проблемы с совместимостью, что-то не установлено, что-то не той версии и т.п. Поэтому я бы взял все варианты дат для своего языка и обработал бы их в коде 1С. Плюс какие-то некорректные случаи. Но для общего развития полезный материал, спасибо.
5. Serginio 877 17.12.15 10:11 Сейчас в теме
(4) Во первых можно делать все на сервере. Во вторых какие проблемы с версиями и совместимостью? Если хочешь полную совместимость, то есть NetObjetToIDispatch для 2.0 используй её. А так с Win 7 обновление .Net framework

кстати актуальная версия 4.6.1

И зачем заного изобретать велосипед, когда все придумано давно
invertercant; +1 Ответить
6. gubanoff 50 17.12.15 11:57 Сейчас в теме
(5) Serginio, у каких-то клиентов Win XP, у каких-то Win 7, у каких-то и Linux может быть и еще много чего интересного.
7. Serginio 877 17.12.15 13:09 Сейчас в теме
Еще раз для Win XP есть NetObjetToIDispatch для 2.0 Ну а насчет Linux, то они ССЗБ.
8. Serginio 877 17.12.15 13:15 Сейчас в теме
И еще добавлю используя классы .Net для расширения возможностей 1С
1. Экономия времени, а значит и денег
2. Увеличение производительности
3. Замена ВК. Нужно умет программировать на 1С и знать классы .Net
9. Serginio 877 17.12.15 15:56 Сейчас в теме
(0) Может пример использования с Regex сделаешь? Уж больно у тебя все красиво
10. invertercant 22 18.12.15 14:28 Сейчас в теме
(9) Serginio, Пусть лучше на эту тему знающий человек пишет. /(?:(?:\s*[+>~,]\s*|\s+)|[^:+>~,\s\\[\]]+(?:\\.[^:+>~,\s\\[\]]*)*)|\[(?:[^\\[\]]*(?:\\.[^\\[\]]*)*|[^=]+=~?\s*(?:"[^\\"]*(?:\\.[^"\\]*)*"|'[^\\']*(?:\\.[^'\\]*)*'))\]|:[^\\:([]+(?:\\.[^\\:([]*)*(?:\((?:[^\\()]*(?:\\.[^\\()]*)*|"[^\\"]*(?:\\.[^"\\]*)*"|'[^\\']*(?:\\.[^'\\]*)*')\))?/g Я к такому не готов. пока.
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Руководитель проектов 1С
Москва
зарплата от 200 000 руб.
Полный день

Консультант-аналитик 1С
Нижний Новгород
зарплата от 55 000 руб. до 100 000 руб.
Полный день

Аналитик 1С ERP
Санкт-Петербург
зарплата до 200 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Бизнес-аналитик 1С
Москва
зарплата от 100 000 руб.
Полный день