Calculam valorile direct în documentul de tabel, vr-online - un jurnal electronic gratuit pentru

Calculam valorile direct în documentul de tabel, vr-online - un jurnal electronic gratuit pentru
95% din timpul meu de lucru trebuie să cheltuiesc pentru programarea pentru platforma 1C: Enterprise 8.2. Munca mea este strâns legată de dezvoltarea lui 1C: Enterprise timp de mai mulți ani și în acest timp am reușit să acumulez o cunoaștere suficient de bună. Ar părea, structura în capul gândurilor tale și scrie pe site doar despre programare pe platforma ta preferată. Și după toate acestea, această dorință vine în mod constant, dar timpul nu este întotdeauna suficient. La locul de muncă, faceți un loc de muncă și, din moment ce GP nu este suficient, trebuie să rulați 1C / PHP Storm acasă și să lucrați la diverse proiecte suplimentare. Se pare că timpul rămâne destul de puțin și este puțin dorit să se dedice pe deplin familiei (de fapt, familia dorește să dedice tot timpul liber, dar până acum este nerealist să refuzi munca suplimentară). A depăși timpul pentru scrierea câtorva kilobytes de text pentru VR este adesea extrem de problematic. Cu această introducere tristă, vreau să răspund imediat la scrisori cu întrebarea: "Spider_NET, unde ai plecat?".







Ok, acum să ajungem la punct. Săptămâna trecută trebuia să fac un raport simplu pentru departamentul nostru de conturi. A fost foarte puțin de lucru - a scris cererea, a ieșit datele și este gata. Dacă nu pentru un mic "dar". În raport a existat o coloană "Altele", datele pentru care nu pot fi obținute în timpul întocmirii raportului. Pentru un anumit rând, datele pot sau nu pot fi. Capul imediat a ajuns la decizia: "trebuie să implementați abilitatea de a edita celulele corespunzătoare din documentul tabelului și să organizați recalcularea câmpurilor rezultate." Se pare că nu este nimic complicat, dar până în acest moment nu am întâmpinat probleme similare și pentru prima dată trebuia să-mi rup puțin capul.

Luând pe o bucată de hârtie un plan de acțiune aproximativ, am continuat să pun în aplicare. Ca rezultat, am următorul algoritm de acțiuni:

1. Se determină structura celulei tabelul de documente, valorile care vor fi editate. În Object Inspector (încă nu știu cum acest lucru numit limba 1S'nikov, asa ca de obicei folosesc interpretarea Delph'yachyu) pentru astfel de celule expune proprietatea „include“ și selectați tipul de date corespunzător (în cazul meu „Numărul „). Pentru ușurința de editare și afișare a datelor introduse este, de asemenea, recomandat pentru a seta valoarea pentru „Format“ proprietate și „format de editare.“ Pentru raportul meu, am stabilit "CZ = 15; BHC = 2; CG = 3,0 ".







2. Pentru documentul tabelului, în care rezultatul datelor (am avut-o pe formular), vom crea un handler de evenimente "Când conținutul este schimbat". Acest eveniment apare întotdeauna când editați orice zonă a unui document de foaie de calcul. În corpul handlerului, scriem următorul cod:

Procedura TablichnyyDokumentPriIzmeneniiSoderzhimogoOblasti (Element Area) = TabDok ElementyFormy.TablichnyyDokument; // funcția „PoluchitNomeraOblasteyDannyh“ returnează o structură care conține // coloanele de date de poziție care ar trebui să fie editate. Codul complet este disponibil funcția // de mai jos. NomeraOblastey PoluchitNomeraOblasteyDannyh = (); NomeraOblastey.OblastDannyhNiz TabDok.VysotaTablitsy = - 3; // Dacă câmpul de coordonate curent intra în lista de editare, puteți începe să editați // Dacă Oblast.Levo> = NomeraOblastey.KolonkaNachisleno Și Oblast.Levo <= НомераОбластей.КолонкаСуммаКВыплате И Область.Верх>= Numerele zonei. Zona de date este Vertexul și aria Vertexului. <= НомераОбластей.ОбластьДанныхНиз Тогда //Получаем введенные пользователем значения СуммаНачислено = ТабДок.Область(Область.Верх, НомераОбластей.КолонкаНачислено).Значение; СуммаНалогНаДоходы = ТабДок.Область(Область.Верх, НомераОбластей.КолонкаНалогНаДоходы).Значение; СуммаПрочие = ТабДок.Область(Область.Верх, НомераОбластей.КолонкаПрочие).Значение; //Расчитываем итоги по строке СуммаУдержаноВсего = СуммаПрочие + СуммаНалогНаДоходы; СуммаКВыплате = СуммаНачислено - СуммаУдержаноВсего; //Выводим в область расчитанное значение ТабДок.Область(Область.Верх, НОмераОбластей.КолонкаВсего).Значение = СуммаУдержаноВсего; ТабДок.Область(Область.Верх, НомераОбластей.КолонкаСуммаКВыплате).Значение = СуммаКВыплате; //Приступаем к расчету итогов ИтоговоеЗначение = 0; //считаем итог по колонке Для сч = НомераОбластей.ОбластьДанныхВерх ПО НомераОбластей.ОбластьДанныхНиз-1 Цикл ИтоговоеЗначение = ИтоговоеЗначение + ТабДок.Область(сч, Область.Лево).Значение; КонецЦикла; ТабДок.Область(НомераОбластей.ОбластьДанныхНиз, Область.Лево).Значение = ИтоговоеЗначение; КонецЕсли; КонецПроцедуры

Sper că, în înțelegerea acestei proceduri, problemele nu ar trebui să apară și, dacă da, trebuie doar să te uiți la codul funcției Obținerea numărului de câmpuri de date ():

Funcția PoluchitNomeraOblasteyDannyh () Returneaza structură nouă ( "KolonkaNachisleno, KolonkaNalogNaDohody, KolonkaProchie, KolonkaVsego, KolonkaSummaKVyplate, OblastDannyhVerh, OblastDannyhNiz", 29, 38, 45, 52, 60, 22); Terminați funcția

Funcția constă dintr-o linie și tot ce are loc în ea este formarea unei structuri cu coordonatele locației coloanelor.

Pentru toate practicile mele, nevoia de a rezolva o astfel de problemă a apărut o singură dată și nu sunt sigur că va apărea ceva în viitorul apropiat, dar trebuie să fii pregătit pentru tot. Este posibil să întâlniți ceva similar. Dacă se întâmplă acest lucru, sper că postarea mea vă va permite să economisiți puțin timp.







Articole similare

Trimiteți-le prietenilor: