4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676

Библиотека не работает должным образом

09.11.2022, 13:37. Показов 406. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!

Пишу библиотеку расширение синтаксиса для 1С 7.7 (да да ей еще пользуются куча недорода)

дак вот решил писать более менее удобным (по крайней мере для себя способом)

но что то идет не так (

Вот код класса "AlexEngineU"
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
using System;
using System.Runtime.InteropServices;
 
namespace AlexEngineU
{
    [ComVisible(true), Guid("776264DE-FADE-4435-8E03-9387D43D8EF0"), ProgId("AddIn.V7AlexEngineU")]
 
    public class V7AlexEngineU : IInit, ILanguageExtender
    {
        
 
        private bool _isModified = false;
 
        public bool IsModified
        {
            get { return _isModified; }
            set
            {
                _isModified = value;
            }
        }
 
        const string c_AddinName = "V7AlexEngineU";
 
        public void Init([MarshalAs(UnmanagedType.IDispatch)] object pConnection)
        {
            V7Data.V7Object = pConnection;
        }
 
        public ФайловаяСистема РаботаСФайлами()
        {
            var ФС = new ФайловаяСистема();
            return ФС;
        }
 
  //      public ServerAnswer ИзменитьКодировкуФайла(string file)
        //{
 
        //  try
        //  {
  //              File.WriteAllText(file, File.ReadAllText(file, Encoding.GetEncoding(1251)), Encoding.UTF8);
 
  //              ServerAnswer serveranswer = new ServerAnswer();
  //              serveranswer.Результат = "Удачно";
  //              serveranswer.Описание = "Выполнено удачно";
  //              return serveranswer;
  //          }
 
        //  catch (Exception ex)
        //  {
        //      ServerAnswer serveranswer = new ServerAnswer();
        //      serveranswer.Результат = "Ошибка";
        //      serveranswer.Описание = ex.Message;
        //      return serveranswer;
        //  }
 
        //}
 
        public void RegisterExtensionAs(ref string bstrExtensionName)
        {
            bstrExtensionName = c_AddinName;
        }
 
    }
 
 
    [Guid("0dfd7314-6d80-473d-8595-7cb028b7e2da"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IInit
    {
 
        void Init([MarshalAs(UnmanagedType.IDispatch)] object pConnection);
 
        //ServerAnswer ИзменитьКодировкуФайла(string file);
 
        ФайловаяСистема РаботаСФайлами();
 
    }
 
    [Guid("823007ff-9808-427e-8ebc-e4cced58e9f5"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface ILanguageExtender
    {
        void RegisterExtensionAs(ref string bstrExtensionName);
 
    }
 
    internal class V7Data
    {
 
        public static object V7Object
        {
            get
            {
                return m_V7Object;
            }
            set
            {
                m_V7Object = value;
            }
        }
 
        private static object m_V7Object;
 
    }
}
далее код класса "ServerAnswer"

C#
1
2
3
4
5
6
7
8
9
10
namespace AlexEngineU
{
    public class ServerAnswer
    {
        public string Результат { get; set; }
 
        public string Описание { get; set; }
 
    }
}

и наконец код класса "ФайловаяСистема"

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.IO;
using System.Text;
 
namespace AlexEngineU
{
    public class ФайловаяСистема
    {
 
        public ServerAnswer ИзменитьКадировкуФайла(string file, string old_encoding, string new_encoding)
        {
            return ChangeFileEncoding(file, old_encoding, new_encoding);
        }
 
        public ServerAnswer ChangeFileEncoding(string file, string old_encoding,string new_encoding)
        {
 
            try
            {
                File.WriteAllText(file, File.ReadAllText(file, Encoding.GetEncoding(old_encoding)), Encoding.GetEncoding(new_encoding));
 
                ServerAnswer serveranswer = new ServerAnswer();
                serveranswer.Результат = "Успех";
                serveranswer.Описание = "Успешно выполнено";
                return serveranswer;
            }
 
            catch (Exception ex)
            {
                ServerAnswer serveranswer = new ServerAnswer();
                serveranswer.Результат = "Исключение";
                serveranswer.Описание = ex.Message;
                return serveranswer;
            }
 
        }
    }
}

Библиотека решится класс вызывается но сторонняя программа (в моем случае 1С 7,7) ругается что нету метода ИзменитьКадировкуФайла, так же пытался вызвать на англоязычном ChangeFileEncoding ничего не работает


отчего? что я не так сделал?

вот код как юзать библиотеку

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//*******************************************
Процедура Выполнить()
    //Будет наделем субклассами 
    //типа ФайловаяСистема - Класс будет включать в себя методы и перечисления для работы с файлами 
    //(Чтение / запись / упаковка) и т д 
    //каждый метод будет иметь свой возвращаемый тип данных
    //к примеру метод ИзменитьКадировкуФайла возращает структуру и два значения  "Результат = тип строка "Успех-(если выполнено успешно) / Исключение-(если выплнено не удачно)"
    //метод ИзменитьКадировкуФайла(ПолныйПутьКФайлу,ТекущаяКадировкаФайлы,НоваяКадировкаФайла) принимает три обязательных парамтера
    //ПолныйПутьКФайлу Полный путь к файлу 
    //ТекущаяКадировкаФайлы Текущая кадировка файла в виде строки ("1251" или "utf-8'либо "utf/32") 
    //НоваяКадировкаФайла Новая кадировка файла в виде строки ("1251" или "utf-8'либо "utf/32") 
    
    //Подключаем компаненту    
    Расширение = СоздатьОбъект("AddIn.V7AlexEngineU"); 
    //Создаем новый экземпляр класса в нашем счлучае "ФайловаяСистема"
    ФайловС = Расширение.ФайловаяСистема(); 
    //Выполняем метод и ожидаем результата 
    Ответ =    ФайловС.ИзменитьКадировкуФайла("D:\1С\081122.xml","1251","utf-8");
    //Сообщаем результат
    Сообщить("Результат: "+Ответ.Результат+" Описание: "+Ответ.Описание);
    
    //В будущем некоторые методы которые подразумевают долгосрочную работу можно будет вызывать ассинхронно
    // Например Вам необходимо начать обмен с сайтом но при всем при этом необходимо продолжать работу в 1С
    //Можно будет сделат ьчтото подобно следующего
    //Передать Путь до базы данных 1С, либо Путь до журнала логирования для логов хода работы программы
    //Заполнять таблицу значений полными данными
    //И создать новый экземлряр ассинхронного класса типа ВебЗапрос = Расширение.ВебЗапрос("АС"); 
    //Парамтер АС подразумевает инструкцию что далее мы будем выполнять методы данного класса ассинхронно
КонецПроцедуры
Добавлено через 9 минут
не дописал

если раскосматить методы в первом классе и обращаться к ним то все отлично выполняется

я так понимаю мне необходимо из первого класса описать методы класса которые я буду вызывать? но не понимаю ка кэто сделать помогите кто может пожалуйста

Добавлено через 13 минут
извиняюсь не поправил код в 1С но это не влияет на мою пролему

C#
1
2
3
4
5
6
7
Было
 
ФайловС = Расширение.ФайловаяСистема(); 
 
Стало
 
ФайловС = Расширение.РаботаСФайлами();
Добавлено через 54 минуты
Как оказалось все работает! просто почему то исключение мне не вернулось

в общем проблема была в том что я передавал
Encoding.GetEncoding("1251") а необходимо было передавать число (

в общем я переписал немного код и все заработало спасибо всем!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.11.2022, 13:37
Ответы с готовыми решениями:

Не работает должным образом StreamWriter
Доброго времени суток! После написания кода , который содержит StreamWriter программа ошибок не выдает, однако, в указанный файл ничего не...

Не работает должным образом программа - работа со строками.
нужно реализовать вывод на экран всех строк содержащих двузначные числа . дан исходный текстовый документ. прогу сделал, но чего-то не до...

Не получается должным образом получить HTML код сайта программным способом
Здравствуйте! Недавно решил сделать прогу на C#, а чтобы она нормально работала нужно считывать инф-цию с сайта. Информация считывается, но...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2022, 13:37
Помогаю со студенческими работами здесь

Программа не работает должным образом! C#
Была задача: Вводится текст. Отредактировать текст, удаляя те слова которые уже встречались ранее. Конец ввода F1. Задачу сделал, но...

Асинхронный вызов веб сервиса не работает должным образом
Есть веб сервис Service.cs. Нужно реализовать синхронный и асинхронный вызов. Синхронный нормально работает и все считает, а вот с...

WPF / Save The Humans / не работает должным образом кнопка startButton / VS CM2017
Добрый вечер! Сейчас прохожу пример из книжки Эндрю Стиллмена "Head First. C#" издательства O'Reilly. Застрял на первом примере Save The...

WPF / Save The Humans / не работает должным образом кнопка startButton / VS 2019
Добрый вечер! Сейчас читаю книгу Эндрю Стиллмена "Head First. C#". Сделал первый пример, сборка прошла без ошибок, но кнопка старт не...

Не обрабатывается должным образом нажатие клавиш
на форме есть кнопка Button которая должна двигатся при нажатии на стрелки на клавиатуре. при нажатии на клавишу(одну или несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru