예제 #1
0
        private OLE DefaultSubconto(int SubcontoNumber, string SubcontoName)
        {
            OLE Result;

            if (SubcontoName == "договора")
            {
                Result = V7B.CreateObject("Документ.Договор");
                if (Result.Method("НайтиПоНомеру", TemplateEntry.Property("Субконто" + Marker + (SubcontoNumber + 1)).Property("Code").ToString()).ToBool())
                {
                    return(Result.Method("CurrentItem"));
                }
            }
            else
            {
                Result = V7B.CreateObject("Справочник." + SubcontoName);
                int search = 0;
                if (V7B.EvalExpr("Метаданные.Справочник(\"" + SubcontoName + "\").СерииКодов").ToString().Trim().ToUpper() == ("ВПределахПодчинения").ToUpper())
                {
                    search = 2;
                }

                if (Result.Method("FindByCode", TemplateEntry.Property("Субконто" + Marker + (SubcontoNumber + 1)).Property("КАУ").ToString().Trim(), search).ToBool())
                {
                    if (SubcontoName.ToUpper() == "ВидыЗатрат".ToUpper())
                    {
                        Zatrat = Result.Method("CurrentItem");
                    }
                    return(Result.Method("CurrentItem"));
                }
            }
            return(null);
        }
예제 #2
0
        private OLE GenDoc231()
        {
            OLE doc = FindDoc(V7B, "ЗатратыПроизводственногоХарактера", CommonVariables.ДатаПериода.End,
                              CommonVariables.ДатаПериода.End, OperationDescription);

            if (doc != null)
            {
                if (doc.Method("Проведен").ToBool())
                {
                    doc.Method("СделатьНеПроведенным");
                }
                doc.Method("УдалитьСтроки");
            }
            else
            {
                doc = V7B.CreateObject("Документ.ЗатратыПроизводственногоХарактера");
                doc.Method("New");
                V7B.Method("глУстановитьФирму", doc);
                doc.Property("ПроводитьПоЭлементамЗатрат", V7B.EvalExpr("?(ИспользоватьСчетаРасходов <> Класс9,1,0)"));
                doc.Property("ДатаДок", CommonVariables.ДатаПериода.End);
                doc.Property("Операция").Property("Description", OperationDescription);
            }
            doc.Property("Примечание", "Генерація проводок " + DateTime.Now);


            // Проверим на пригодность к записи
            bool entr_ok = true;

            do
            {
                try
                {
                    doc.Method("Записать");
                    entr_ok = true;
                }
                catch
                {
                    entr_ok = false;
                    doc.Property("НомерДок", int.Parse(doc.Property("НомерДок").ToString()) + 1);
                }
            } while (!entr_ok);
            return(doc);
        }
예제 #3
0
        private OLE CreateOperation()
        {
            OLE Operation = V7B.CreateObject("Operation");

            if (FindOperation(ref Operation))
            {
                while (Operation.Method("SelectEntries").ToBool())
                {
                    Operation.Method("DeleteEntry");
                }
            }
            else
            {
                Operation.Method("New");
                Operation.Property("OperDate", CommonVariables.ДатаПериода.End);
                Operation.Property("Description", OperationDescription);
            }
            Operation.Property("Документ").Property("Фирма", CommonVariables.GetFirm(Operation) /*CommonVariables.BFirm.CurrentItem*/);
            Operation.Property("Документ").Property("Примечание", "Генерація проводок " + DateTime.Now);


            // Проверим на пригодность к записи
            bool entr_ok = true;

            do
            {
                try
                {
                    Operation.Method("Записать");
                    entr_ok = true;
                }
                catch
                {
                    entr_ok = false;
                    Operation.Property("Документ").Property("НомерДок", int.Parse(Operation.Property("Документ").Property("НомерДок").ToString()) + 1);
                }
            } while (!entr_ok);
            return(Operation);
        }
예제 #4
0
        protected override bool doExecute()
        {
            OLE ZIKReferences = V7Z.CreateObject("—правочник.¬иды—убконто");
            OLE ZIKRefChild   = V7Z.CreateObject("—правочник.ќбъектыјналит”чета");

            #region  ашиƒенежные—чета
            OLE PUBRefMain = V7B.CreateObject("—правочник.Ќашиƒенежные—чета");
            PUBRefMain.Method("»спользовать¬ладельца", CommonVariables.GetFirm(V7B) /* CommonVariables.BFirm.CurrentItem */);

            if ((double)ZIKReferences.Method("Ќайтиѕо–еквизиту", (object)"»дентиф", (object)"Ќашиƒенежные—чета", (object)1) != 1.0)
            {
                MessageBox.Show("Ќе могу найти в «и  субконто Ќашиƒенежные—чета", "ќшибка текущей формы !!!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return(false);
            }
            ZIKRefChild.Method("»спользовать¬ладельца", ZIKReferences.Method("“екущийЁлемент"));
            System.Diagnostics.Trace.WriteLine("ќбрабатываем справочник Ќашиƒенежные—чета");
            Sinchro(PUBRefMain, ZIKRefChild);
            cbƒенежные—редства.Checked = true;
            #endregion
            #region Ўкала—тавок
            PUBRefMain = V7B.CreateObject("—правочник.Ўкала—тавок");
            if ((double)ZIKReferences.Method("Ќайтиѕо–еквизиту", (object)"»дентиф", (object)"Ўкала—тавок", (object)1) != 1.0)
            {
                MessageBox.Show("Ќе могу найти в «и  субконто Ўкала—тавок", "ќшибка текущей формы !!!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return(false);
            }
            ZIKRefChild.Method("»спользовать¬ладельца", ZIKReferences.Method("“екущийЁлемент"));
            System.Diagnostics.Trace.WriteLine("ќбрабатываем справочник Ўкала—тавок");
            Sinchro(PUBRefMain, ZIKRefChild);
            cbЎкала—тавок.Checked = true;
            #endregion
            #region  онтрагенты
            PUBRefMain = V7B.CreateObject("—правочник. онтрагенты");
            if ((double)ZIKReferences.Method("Ќайтиѕо–еквизиту", (object)"»дентиф", (object)" онтрагенты", (object)1) != 1.0)
            {
                MessageBox.Show("Ќе могу найти в «и  субконто  онтрагенты", "ќшибка текущей формы !!!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return(false);
            }
            ZIKRefChild.Method("»спользовать¬ладельца", ZIKReferences.Method("“екущийЁлемент"));
            System.Diagnostics.Trace.WriteLine("ќбрабатываем справочник  онтрагенты");
            Sinchro(PUBRefMain, ZIKRefChild);
            cb онтрагенты.Checked = true;
            #endregion
            #region ¬иды«атрат
            PUBRefMain = V7B.CreateObject("—правочник.¬иды«атрат");
            if ((double)PUBRefMain.Method("FindByDescr", (object)"«арплата") == 0)
            {
                MessageBox.Show("Ќе могу найти в сравочнике ¬иды«атрат ѕ”Ѕ папку «арплата", "ќшибка текущей формы !!!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return(false);
            }
            object zarp = PUBRefMain.Method("CurrentItem");
            PUBRefMain.Method("UseParent", zarp, 0);
            if ((double)ZIKReferences.Method("Ќайтиѕо–еквизиту", (object)"»дентиф", (object)"¬иды«атрат", (object)1) == 0)
            {
                MessageBox.Show("Ќе могу найти в «и  субконто ¬иды«атрат", "ќшибка текущей формы !!!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return(false);
            }
            ZIKRefChild.Method("»спользовать¬ладельца", ZIKReferences.Method("“екущийЁлемент"));
            System.Diagnostics.Trace.WriteLine("ќбрабатываем справочник ¬иды«атрат");
            Sinchro(PUBRefMain, ZIKRefChild);
            cb¬иды«атрат.Checked = true;
            #endregion
            CommonVariables.ProgressBarHide();
            return(true);
        }
예제 #5
0
        protected override bool doExecute()
        {
            Refresh();
            Trace.WriteLine("Начата синхронизация даных");
            Base DataBase = new Base();

            conf.RestopeBase(ref DataBase);
            OLE temp;

            // Активируем соединения с 1С7.7
            if (CommonVariables.ZConnection != null)
            {
                CommonVariables.ZConnection.Dispose();
            }
            try
            {
                CommonVariables.ZConnection = new NTICS.OLE1C77.OLEConnection(conf.CONNECTION_BasePatchZ, (NTICS.OLE1C77.V77Servers)conf.CONNECTION_ServerType, false, conf.UserName, conf.PassWord);
            }
            catch (Exception e)
            {
                Trace.WriteLine("Неудачная попытка подключения к  " + conf.CONNECTION_BasePatchZ + "\n" + e.Message);
                CommonVariables.ZConnection = null;
                return(false);
            }
            System.Diagnostics.Trace.WriteLine("Вы подключились к Зик.");
            if (CommonVariables.ZConnection == null)
            {
                return(false);
            }

            OLE FirmZ = CommonVariables.GetFirm(CommonVariables.ZConnection.Global);

            if (FirmZ == null)
            {
                System.Diagnostics.Trace.WriteLine("Отсутствует хотябы одна зарегистрированая фирма в ЗиК !!!");
                return(false);
            }


            if (CommonVariables.BConnection != null)
            {
                CommonVariables.BConnection.Dispose();
            }
            try
            {
                CommonVariables.BConnection = new NTICS.OLE1C77.OLEConnection(conf.CONNECTION_BasePatchB, (NTICS.OLE1C77.V77Servers)conf.CONNECTION_ServerType, false, conf.UserName, conf.PassWord);
            }
            catch
            {
                Trace.WriteLine("Неудачная попытка подключения к  " + conf.CONNECTION_BasePatchB);
                CommonVariables.BConnection = null;
                return(false);
            }
            System.Diagnostics.Trace.WriteLine("Вы подключились к Бухгалтерии.");
            if (CommonVariables.BConnection == null)
            {
                return(false);
            }
            OLE FirmB = CommonVariables.GetFirm(CommonVariables.BConnection.Global);

            if (FirmB == null)
            {
                System.Diagnostics.Trace.WriteLine("Отсутствует хотябы одна зарегистрированая фирма в Бухгалтерии !!!");
                return(false);
            }

            System.Diagnostics.Trace.WriteLine("Соединение прошло успешно");



            CommonVariables.ДатаПериода = new NTICS.Period(selectPeriod.Period);

            // Справочник Сотрудников ПУБ
            PUBRefWoker = V7B.CreateObject("Справочник.Сотрудники");

            // Заполним список сотрудников
            CommonVariables.MEMPUBWoker = MEMReferences.CopyOLERefToMEMRef(PUBRefWoker, "ИНН");
            CommonVariables.MEMPUBWoker.Sort();

            Проводка.МаксКоличествоСубконто = 4;


            // Перебираем всех сотрудников
            OLE Сотрудники     = V7Z.CreateObject("Справочник.Сотрудники");
            OLE ЖурналЗарплата = V7Z.CreateObject("ЖурналРасчетов.Зарплата");


            Сотрудники.Method("ВыбратьЭлементы");
            Проводки prov = new Проводки();

            //НалогиНаФОП nalogs = new НалогиНаФОП();
            CommonVariables.аспределения = new  аспределения(V7Z);

            // Список действующих налогов на фоп
            List <НалогНаФОП> NalogsFOP = НалогНаФОП.ПолучитьСписокТекущихНалоговНаФОП();

            #region Create Entries and nalogs on FOP
            while (Сотрудники.Method("ПолучитьЭлемент").ToBool())
            {
                Trace.WriteLine("Сотрудник - " + Сотрудники.Property("Description").ToString().Trim());

                // Пропустим сотрудника без начислений
                if (!ЖурналЗарплата.Method("SelectPeriodByObject", Сотрудники.Method("CurrentItem"), ДатаПериода).ToBool())
                {
                    continue;
                }

                SotrFOP Сотрудник = new SotrFOP();
                Сотрудник.INN = Сотрудники.Property("ФизическоеЛицо").Property("ИНН").ToString();
                while (ЖурналЗарплата.Method("GetRecord").ToBool()) // Выведем проводки по даному начислению
                {
                    decimal rez = (decimal)ЖурналЗарплата.Property("Результат");
                    if (rez == 0)
                    {
                        continue;           // пропустим нулевые
                    }
                    if (Проводки.СистемныйВидРасч(ЖурналЗарплата))
                    {
                        continue;                                            // пропустим системные расчёты
                    }
                    Trace.WriteLine("Вид расчёта - " + ЖурналЗарплата.Property("ВидРасч").Property("Code").ToString().Trim() + " на сумму - " + rez);
                    prov.Add(Сотрудники.Method("CurrentItem"), ЖурналЗарплата, rez);
                    Сотрудник.Add(ЖурналЗарплата, rez, NalogsFOP);
                }
                Сотрудник.GenEntries(ref prov, Сотрудники, NalogsFOP);  // Сгенегируем проводки для налогов ФОП
                Trace.WriteLine("Проводок - " + prov.Item.Count.ToString());
                Application.DoEvents();
            }
            #endregion
            Trace.WriteLine("Проводок - " + prov.Item.Count.ToString());

            #region Generate Entries

            OLE Operation = CreateOperation();
            OLE DOC       = GenDoc231();

            int WriteCount = 0;
            foreach (Проводка provodka in prov.Item)
            {
                if (provodka.Debit == null)
                {
                    continue;
                }
                if (provodka.Debit.Account == null)
                {
                    continue;
                }
                if (provodka.Credit.Account == null)
                {
                    continue;
                }
                // счёт 231
                if (provodka.Debit.Account.Property("CODE").ToString().Trim() == "231")
                {
                    SetLineDoc(ref DOC, provodka, WriteCount);
                    WriteCount++;
                    continue;
                }

                Operation.Method("НоваяПроводка");
                Trace.WriteLine(WriteCount + " Проводка - Д(" + provodka.Debit.Account.Property("Код").ToString() +
                                ") K(" + provodka.Credit.Account.Property("Код").ToString() +
                                ") SUMM(" + (double)provodka.Summ + ")");

                Operation.Property("Дебет").Property("Счет", provodka.Debit.Account);
                int i;
                for (i = 0; i < provodka.Debit.Subconto.Length; i++)
                {
                    if (provodka.Debit.Subconto[i] != null)
                    {
                        Operation.Property("Debit").Method("Subconto", i + 1, provodka.Debit.Subconto[i]);
                    }
                }


                Operation.Property("Кредит").Property("Счет", provodka.Credit.Account);
                for (i = 0; i < provodka.Credit.Subconto.Length; i++)
                {
                    if (provodka.Credit.Subconto[i] != null)
                    {
                        Operation.Property("Credit").Method("Subconto", i + 1, provodka.Credit.Subconto[i]);
                    }
                }

                Operation.Property("Сумма", (double)provodka.Summ);
                Operation.Property("Комментарий", provodka.Comment);
                Operation.Property("НашаФирма", CommonVariables.GetFirm(Operation) /* CommonVariables.BFirm.CurrentItem */);
                WriteCount++;

                if (WriteCount % 100 == 0)
                {
                    try
                    {
                        Operation.Method("Записать");
                        Debug.WriteLine("WRITE OK");
                    }
                    catch
                    {
                        Debug.WriteLine("WRITE ERROR");
                    }
                }
            }
            try
            {
                Operation.Method("Записать");
                DOC.Method("Провести");
                DOC.Method("Записать");
                Debug.WriteLine("WRITE OK");
            }
            catch
            {
                Debug.WriteLine("WRITE ERROR");
            }
            Operation.Dispose();
            Operation = null;



            #endregion

            CommonVariables.MEMPUBWoker = null;
            PUBRefWoker = null;
            CommonVariables.ZConnection = null;
            CommonVariables.BConnection = null;
            Trace.WriteLine("Сохраним базу даных ...");
            conf.StoreBase(DataBase);
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Trace.WriteLine("ОК");
            Trace.WriteLine("Перенос проводок выполнен.", Traces.Status);
            return(true);
        }