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

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

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

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

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

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

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