Example #1
0
        /// <summary>
        /// Функция добавления записи в справочник базы 1С.
        /// </summary>
        /// <param name="v82Base">объект подключения к базе</param>
        /// <param name="connector">COM объект для соединения с 1С</param>
        /// <param name="thesaurusName">название справочника</param>
        /// <param name="requisites">ассоциативный массив Название реквизита - Значение</param>
        /// <returns>Возвращает код добавленной записи в формате ХХХХХХХХХ(если этот код храниться в базе как строка)</returns>
        public static string addToThesaurus(object v82Base, COMConnectorClass connector, string thesaurusName, Dictionary<string, object> requisites)
        {
            object thesauruses = RequestTo1C.GetProperty(v82Base, "Справочники");
            object thesaurus = RequestTo1C.GetProperty(thesauruses, thesaurusName);
            object record = RequestTo1C.ExecuteFunction(thesaurus, "СоздатьЭлемент", null);

            foreach (KeyValuePair<string, object> kvp in requisites)
                RequestTo1C.SetProperty(record, kvp.Key, new object[] { kvp.Value });

            RequestTo1C.ExecuteFunction(record, "Записать", null);
            return RequestTo1C.GetProperty(record, "Код").ToString();
        }
Example #2
0
 /// <summary>
 /// Метод для подключения к 1С.
 /// </summary>
 /// <param name="filename">путь к базе</param>
 /// <param name="user">логин</param>
 /// <param name="password">пароль</param>
 /// <param name="v82Base">объект подключения к базе</param>
 /// <param name="connector">COM объект для соединения с 1С</param>
 /// <returns></returns>
 public static bool Connect1C(string filename, string user, string password, ref object v82Base, ref COMConnectorClass connector)
 {
     try
     {
         v82Base = connector.Connect(GetConnectionString(filename, user, password));
         return true;
     }
     catch (Exception ex)
     {
         string error = ("Ошибка подключения!\n" + ex.Message);
         return false;
     }
 }
Example #3
0
        /// <summary>
        /// Функция добавления записи в регистр базы 1С.
        /// </summary>
        /// <param name="v82Base">объект подключения к базе</param>
        /// <param name="connector">COM объект для соединения с 1С</param>
        /// <param name="registrType">Тип регистра (РегистрНакопления, РегистрСведений и т.п.)</param>
        /// <param name="registrName">Название регистра</param>
        /// <param name="registratorName">Название регистратора</param>
        /// <param name="dimension">Ассоциативный массив Название измерения - Значение</param>
        /// <param name="resource">Ассоциативный массив Название ресурса - Значение</param>
        public static void addToRegistr(object v82Base, COMConnectorClass connector, string registrType, string registrName, string registratorName,
                        Dictionary<string, object> dimension, Dictionary<string, object> resource)
        {
            object registrs = RequestTo1C.GetProperty(v82Base, registrType);
            object registr = RequestTo1C.GetProperty(registrs, registrName);
            object storage = RequestTo1C.ExecuteFunction(registr, "СоздатьНаборЗаписей", null);
            object registrator = RequestTo1C.GetProperty(RequestTo1C.GetProperty(storage, "Отбор"), "Регистратор");
            object document = RequestTo1C.GetProperty(RequestTo1C.GetProperty(v82Base, "Документы"), registratorName);
            object linkDocument = RequestTo1C.ExecuteFunction(document, "ПолучитьСсылку", null);
            RequestTo1C.ExecuteFunction(registrator, "Установить", new object[] { linkDocument });

            object str = RequestTo1C.ExecuteFunction(storage, "Добавить", null);
            DateTime d = DateTime.Today;
            RequestTo1C.SetProperty(str, "Период", new object[] { d });

            foreach (KeyValuePair<string, object> kvp in dimension)
                RequestTo1C.SetProperty(str, kvp.Key, new object[] { kvp.Value });

            foreach (KeyValuePair<string, object> kvp in resource)
                RequestTo1C.SetProperty(str, kvp.Key, new object[] { kvp.Value });

            RequestTo1C.ExecuteFunction(storage, "Записать", null);
        }
Example #4
0
 /// <summary>
 /// Функция удаления всех записей из справочника базы 1С.
 /// </summary>
 /// <param name="v82Base">объект подключения к базе</param>
 /// <param name="connector">COM объект для соединения с 1С</param>
 /// <param name="thesaurusName">Название справочника</param>
 /// <returns>Возвращает, прошло ли удаление или нет</returns>
 public static bool deleteAllFromThesaurus(object v82Base, COMConnectorClass connector, string thesaurusName)
 {
     try
     {
         object thesauruses = RequestTo1C.GetProperty(v82Base, "Справочники");
         object thesaurus = RequestTo1C.GetProperty(thesauruses, thesaurusName);
         object selection = RequestTo1C.ExecuteFunction(thesaurus, "Выбрать", null);
         while ((bool)RequestTo1C.ExecuteFunction(selection, "Следующий", null))
         {
             object deletingObject = RequestTo1C.ExecuteFunction(selection, "ПолучитьОбъект", null);
             RequestTo1C.ExecuteFunction(deletingObject, "Удалить", null);
         }
         return true;
     }
     catch (Exception ex)
     {
         return false;
     }
 }
Example #5
0
        /// <summary>
        /// Функция изменения записи в базе 1С.
        /// </summary>
        /// <param name="v82Base">объект подключения к базе</param>
        /// <param name="connector">COM объект для соединения с 1С</param>
        /// <param name="thesaurusName">Название справочника</param>
        /// <param name="index">Индекс изменяемой записи в формате ХХХХХХХХХ</param>
        /// <param name="updateValues">ассоциативный массив Название реквизита - Значение</param>
        /// <returns>Возвращает удачно завершилось обновление или нет</returns>
        public static bool updatingRecordFromThesaurus(object v82Base, COMConnectorClass connector, string thesaurusName, string index, Dictionary<string, object> updateValues)
        {
            try
            {
                object thesauruses = RequestTo1C.GetProperty(v82Base, "Справочники");
                object thesaurus = RequestTo1C.GetProperty(thesauruses, thesaurusName);
                object record = RequestTo1C.ExecuteFunction(thesaurus, "НайтиПоКоду", new object[] { index });
                object updatingObject = RequestTo1C.ExecuteFunction(record, "ПолучитьОбъект", null);

                foreach (KeyValuePair<string, object> kvp in updateValues)
                    RequestTo1C.SetProperty(updatingObject, kvp.Key, new object[] { kvp.Value });

                RequestTo1C.ExecuteFunction(updatingObject, "Записать", null);
                return true;
            }
            catch (Exception ex)
            {
                string str = ex.Message;
                return false;
            }
        }
Example #6
0
 /// <summary>
 /// Получает из базы 1С список записей по запросу.
 /// </summary>
 /// <param name="v82Base">Объект подключения к базе 1С</param>
 /// <param name="connector">COM объект для соединения с 1С</param>
 /// <param name="requestText">Текст запроса</param>
 /// <param name="fieldsSelection">Названия полей в полученной выборке (в запросе после слова КАК идут)</param>
 /// <param name="parametrs">Ассоциативный массив Название параметра - Значение</param>
 /// <returns>Возвращает список списков строк, в котором каждый внутренний список - запись</returns>
 public static List<List<string>> requestToListLists(object v82Base, COMConnectorClass connector, string requestText, List<string> fieldsSelection,
                                                     Dictionary<string, object> parametrs = null)
 {
     object storage = RequestTo1C.ExecuteCreateObject(v82Base, "NewObject", new object[] { "Запрос" });
     RequestTo1C.SetProperty(storage, "Текст", new object[] { requestText });
     if (parametrs != null)
     {
         foreach (KeyValuePair<string, object> kvp in parametrs)
             RequestTo1C.ExecuteFunction(storage, "УстановитьПараметр", new object[] { kvp.Key, kvp.Value });
     }
     object result = RequestTo1C.ExecuteFunction(storage, "Выполнить", null);
     object selection = RequestTo1C.ExecuteFunction(result, "Выбрать", null);
     int count;
     int.TryParse(RequestTo1C.ExecuteFunction(selection, "Количество", null).ToString(), out count);
     List<List<string>> list = new List<List<string>>();
     //string [][] list = new string[count][];
     for (int i = 0; i < count; i++)
     {
         //list[i] = new string[fieldsSelection.Count];
         list.Add(new List<string>());
     }
     for (int k = 0; (bool)RequestTo1C.ExecuteFunction(selection, "Следующий", null); k++)
     {
         for (int i = 0; i < fieldsSelection.Count; i++)
         {
             object record = RequestTo1C.GetProperty(selection, fieldsSelection[i]);
             //list[k][i] = (((DBNull.Value.Equals(record) || record == null) ? "NULL" : record).ToString());
             list[k].Add(((DBNull.Value.Equals(record) || record == null) ? "NULL" : record).ToString());//проверка, что в ячейке значение не DBNull или null
         }
     }
     return list;
 }
Example #7
0
 public static object getObjectFromThesaurusByName(object v82Base, COMConnectorClass connector, string thesaurusName, string name)
 {
     object thesauruses = RequestTo1C.GetProperty(v82Base, "Справочники");
     object thesaurus = RequestTo1C.GetProperty(thesauruses, thesaurusName);
     object record = RequestTo1C.ExecuteFunction(thesaurus, "НайтиПоНаименованию", new object[] { name });
     //return RequestTo1C.ExecuteFunction(record, "ПолучитьОбъект", null);
     return record;
 }
Example #8
0
 /// <summary>
 /// Функция удаления записи из справочника базы 1С.
 /// </summary>
 /// <param name="v82Base">объект подключения к базе</param>
 /// <param name="connector">COM объект для соединения с 1С</param>
 /// <param name="thesaurusName">Название справочника</param>
 /// <param name="index">Индекс удаляемой строки( в формате ХХХХХХХХХ если код хранится как строка)</param>
 /// <returns>Возвращает, прошло ли удаление или нет</returns>
 public static bool deleteFromThesaurus(object v82Base, COMConnectorClass connector, string thesaurusName, string index)
 {
     try
     {
         object thesauruses = RequestTo1C.GetProperty(v82Base, "Справочники");
         object thesaurus = RequestTo1C.GetProperty(thesauruses, thesaurusName);
         object deletingRecord = RequestTo1C.ExecuteFunction(thesaurus, "НайтиПоКоду", new object[] { index });
         object deletingObject = RequestTo1C.ExecuteFunction(deletingRecord, "ПолучитьОбъект", null);
         RequestTo1C.ExecuteFunction(deletingObject, "Удалить", null);
         return true;
     }
     catch (Exception ex)
     {
         return false;
     }
 }
Example #9
0
        /// <summary>
        /// Функция удаления записи из регистра базы 1С.(функция не доделана!)
        /// </summary>
        /// <param name="v82Base">объект подключения к базе</param>
        /// <param name="connector">COM объект для соединения с 1С</param>
        /// <param name="registrType">Тип регистра (РегистрНакопления, РегистрСведений и т.п.)</param>
        /// <param name="registrName">Название регистра</param>
        /// <param name="registratorName">Название регистратора</param>
        /// <param name="index">Индекс удаляемой строки</param>
        /// <returns>Возвращает, прошло ли удаление или нет</returns>
        public static bool deleteFromRegistr(object v82Base, COMConnectorClass connector, string registrType, string registrName, string registratorName, int index)
        {
            try
            {
                object registrs = RequestTo1C.GetProperty(v82Base, registrType);
                object registr = RequestTo1C.GetProperty(registrs, registrName);
                object storage = RequestTo1C.ExecuteFunction(registr, "СоздатьНаборЗаписей", null);
                object registrator = RequestTo1C.GetProperty(RequestTo1C.GetProperty(storage, "Отбор"), "Регистратор");
                object document = RequestTo1C.GetProperty(RequestTo1C.GetProperty(v82Base, "Документы"), registratorName);
                object linkDocument = RequestTo1C.ExecuteFunction(document, "ПолучитьСсылку", null);
                RequestTo1C.ExecuteFunction(registrator, "Установить", new object[] { linkDocument });

                object str = RequestTo1C.ExecuteFunction(storage, "Удалить", new object[] { index });

                RequestTo1C.ExecuteFunction(storage, "Записать", null);
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }