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); }
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); }
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); }
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); }
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); }