public static List <MEMReferences> CopyOLERefToMEMRef(OLE OLERef, string Index, bool ISMethodIndex, bool NoDeleted, bool NoGroup) { List <MEMReferences> MEMRef = new List <MEMReferences>(); OLERef.Method("¬ыбратьЁлементы"); while (OLERef.Method("ѕолучитьЁлемент").ToBool()) { if (NoDeleted) { if (OLERef.Method("DeleteMark").ToBool()) { continue; } } if (NoGroup) { if ((double)OLERef.Method("IsGroup") == 1.0) { continue; } } MEMReferences MR = new MEMReferences(); try { if (ISMethodIndex) { MR.INDEX = OLERef.Method(Index).ToString().Trim(); } else { MR.INDEX = OLERef.Property(Index).ToString().Trim(); } } catch { throw new Exception("ќшибка копировани¤ справочника"); } MR.CODE = OLERef.Property("Code").ToString().Trim(); MR.DESCRIPTION = OLERef.Property("Description").ToString().Trim(); MR.Reference = OLERef.Method("CurrentItem"); MR.FULLCODE = OLERef.Method("FullCode").ToString().Trim(); MEMRef.Add(MR); } return(MEMRef); }
public static OLE ПолучитьСотрудникаПУБ(string СотрудникКод) { OLE SotrZIK = GetReferenceElementZIK("Сотрудники", СотрудникКод); string TIN = SotrZIK.Property("ФизическоеЛицо").Property("ИНН").ToString().Trim(); MEMReferences MR = new MEMReferences(); MR.INDEX = TIN; int i = 0; OLE PUB = V7B.CreateObject("Справочник.Сотрудники"); do { i = MEMPUBWoker.BinarySearch(MR); if (i < 0) { // Нет сотрудника в ПУБ MR.DESCRIPTION = SotrZIK.Property("Description").ToString().Trim(); if (AutoInsertUser) { MR.Reference = SotrZIK; PUB.Method("New"); PUB.Property("ИНН", MR.INDEX); PUB.Property("Description", MR.DESCRIPTION); PUB.Method("Write"); MR.CODE = PUB.Property("Code").ToString().Trim(); MR.FULLCODE = PUB.Method("FullCode").ToString().Trim(); MEMPUBWoker.Add(MR); MEMPUBWoker.Sort(); Trace.WriteLine("Вставим сотрудника в Бухгалтерию - " + MR.CODE + " " + MR.DESCRIPTION + " ИНН - " + MR.INDEX); return(PUB.Method("CurrentItem")); } DialogResult result = MessageBox.Show("В 1С7.7 Бух отсутствует сотрудник " + MR.DESCRIPTION + " с кодом ИНН - " + MR.INDEX + ". Загрузите не монопольно 1С7.7 и введите даного пользователя, после чего нажмите ОК.", "Ошибка в справочнике Сотрудники.", MessageBoxButtons.OKCancel); if (result == DialogResult.Cancel) { return(null); } CommonVariables.MEMPUBWoker = MEMReferences.CopyOLERefToMEMRef(PUB, "ИНН"); MEMPUBWoker.Sort(); } } while (i < 0); PUB.Method("FindByCode", MEMPUBWoker[i].CODE); return(PUB.Method("CurrentItem")); }
void Sinchro(OLE refmain, OLE refchild) { #region INSERT ELEMENTS List <MEMReferences> MEMRef; bool FullCod = (refmain.EvalExpr("ћетаданные.—правочник(\"" + refmain.Method("¬ид").ToString() + "\").—ерии одов").ToString().Trim().ToUpper() == ("¬ѕределахѕодчинени¤").ToUpper()); if (FullCod) { MEMRef = MEMReferences.CopyOLERefToMEMRef(refmain, "FullCode", FullCod, true, true); } else { MEMRef = MEMReferences.CopyOLERefToMEMRef(refmain, "Code", FullCod, true, true); } // Count elements CommonVariables.ProgressBarInitialize(0, MEMRef.Count, 0); //refmain.Method("¬ыбратьЁлементы"); foreach (MEMReferences MRef in MEMRef) { if (!(bool)refchild.Method("Ќайтиѕо–еквизиту", " ј”", MRef.INDEX, 0)) { IncInsertCounter(); refchild.Method("New"); refchild.Property("Description", MRef.DESCRIPTION); refchild.Property(" ј”", MRef.INDEX); refchild.Method("Write"); System.Diagnostics.Trace.WriteLine("¬ставлен елемент - " + MRef.INDEX + " " + MRef.DESCRIPTION); } else { if ((bool)refchild.Method("DeleteMark")) { refchild.Method("ClearDeleteMark"); //refchild.Method("Write"); } } CommonVariables.ProgressBarInc(); } #endregion #region DELEDE ELEMENTS // Count elements int refchildCount = 0; refchild.Method("¬ыбратьЁлементы"); while (refchild.Method("ѕолучитьЁлемент").ToBool()) { if ((bool)refchild.Method("DeleteMark")) { continue; } refchildCount++; } CommonVariables.ProgressBarInitialize(0, refchildCount, 0); refchild.Method("¬ыбратьЁлементы"); MEMRef.Sort(); while (refchild.Method("ѕолучитьЁлемент").ToBool()) { if ((bool)refchild.Method("DeleteMark")) { continue; } CommonVariables.ProgressBarInc(); MEMReferences mr = new MEMReferences(); mr.INDEX = refchild.Property(" ј”").ToString().Trim(); if (MEMRef.BinarySearch(mr) < 0) { IncDeleteCounter(); refchild.Method("Delete", 0); refchild.Method("Write"); System.Diagnostics.Trace.WriteLine("ѕомечен к удалению елемент - " + refchild.Property("Code").ToString() + " " + refchild.Property("Description").ToString()); } } #endregion }
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); }
public int CompareTo(object obj) { MEMReferences b = (MEMReferences)obj; return(string.Compare(this.INDEX, b.INDEX)); }