Добре, сега за случая. Миналата седмица взех един бърз нескопосан прост доклад за нашия счетоводен отдел. Работата е много малко - писмено искане, подадена на данните и готово. Ако не е малко ", но". В доклада е имало графа "Други", данните за които не могат да бъдат получени по време на формирането на доклада. За конкретна линия на данни могат да бъдат или да не са. Ръководителят веднага дойде решението: "е необходимо да се приложи възможността за редактиране на съответния документ клетки за електронни таблици и организиране на превръщането на обобщени области." Подобно нещо сложно, но до този момент с подобни проблеми се сблъскват и за първи път трябваше да смачка главата му малко.
Опирайки се на лист хартия груб план за действие, аз започнах да се приложи. В края на краищата, аз се следната последователност от действия:
1. Определете оформлението на клетка на таблицата на документа, стойностите на които ще бъдат редактирани. В инспектор на обекта (все още не знам как това нещо, наречено език 1S'nikov, така че по навик използваме интерпретация Delph'yachyu) за такива клетки изложи собственост "включва" и изберете подходящия тип данни (в моя случай "Номер "). За улеснение на редактиране и показване на въведените данни се препоръчва също да се определи стойността на имота "Format" и "формат за редактиране". За протокола, аз си сложа "CC = 15; CHDTS = 2; * Р = 3,0. "
2. документ, електронна таблица, която ще бъде изход (I се е намирал във формуляра) създаде манипулатор събитие "PriIzmeneniiSoderzhimogoOblasti". Това събитие се случва винаги, докато редактирате всеки документ поле таблица. В тялото на работещия пиша за следния код:
TablichnyyDokumentPriIzmeneniiSoderzhimogoOblasti Процедура (Елемент пространство) = TabDok ElementyFormy.TablichnyyDokument; // функция "PoluchitNomeraOblasteyDannyh" връща структура, която съдържа // колоните позиция от данни, които трябва да бъдат редактирани. Пълният код е достъпен // функцията по-долу. NomeraOblastey PoluchitNomeraOblasteyDannyh = (); NomeraOblastey.OblastDannyhNiz TabDok.VysotaTablitsy = - 3; // Ако токът координира поле влезете в списъка за редактиране, можете да започнете да редактирате // Ако Oblast.Levo> = NomeraOblastey.KolonkaNachisleno И Oblast.Levo <= НомераОбластей.КолонкаСуммаКВыплате И Область.Верх>= NomeraOblastey.OblastDannyhVerh И Oblast.Verh <= НомераОбластей.ОбластьДанныхНиз Тогда //Получаем введенные пользователем значения СуммаНачислено = ТабДок.Область(Область.Верх, НомераОбластей.КолонкаНачислено).Значение; СуммаНалогНаДоходы = ТабДок.Область(Область.Верх, НомераОбластей.КолонкаНалогНаДоходы).Значение; СуммаПрочие = ТабДок.Область(Область.Верх, НомераОбластей.КолонкаПрочие).Значение; //Расчитываем итоги по строке СуммаУдержаноВсего = СуммаПрочие + СуммаНалогНаДоходы; СуммаКВыплате = СуммаНачислено - СуммаУдержаноВсего; //Выводим в область расчитанное значение ТабДок.Область(Область.Верх, НОмераОбластей.КолонкаВсего).Значение = СуммаУдержаноВсего; ТабДок.Область(Область.Верх, НомераОбластей.КолонкаСуммаКВыплате).Значение = СуммаКВыплате; //Приступаем к расчету итогов ИтоговоеЗначение = 0; //считаем итог по колонке Для сч = НомераОбластей.ОбластьДанныхВерх ПО НомераОбластей.ОбластьДанныхНиз-1 Цикл ИтоговоеЗначение = ИтоговоеЗначение + ТабДок.Область(сч, Область.Лево).Значение; КонецЦикла; ТабДок.Область(НомераОбластей.ОбластьДанныхНиз, Область.Лево).Значение = ИтоговоеЗначение; КонецЕсли; КонецПроцедуры
Надявам се, че ако възникне разбирането на тази процедура проблеми, и ако това е така, тогава можете да погледнем само PoluchitNomeraOblasteyDannyh () функция код:
функция PoluchitNomeraOblasteyDannyh () Връщане нова структура ( "KolonkaNachisleno, KolonkaNalogNaDohody, KolonkaProchie, KolonkaVsego, KolonkaSummaKVyplate, OblastDannyhVerh, OblastDannyhNiz", 29, 38, 45, 52, 60, 22); KonetsFunktsii
Функцията се състои от една линия и всичко, което се случва в него, защото това е формирането на структури със стойности на колони в произход.
През целия си практика трябва да обърнем внимание на този проблем, е възникнало само веднъж, и аз не съм сигурен, че нещо подобно ще се появят в близко бъдеще, но трябва да сме подготвени за всичко. Възможно е, че нещо такова ще се намира теб. Ако това се случи, аз се надявам моя пост ще ви позволи да спаси поне малко време.
Свързани статии