1c ფონური სამუშაოს თანამშრომლის პროცესი არანორმალურად დასრულდა. ფონური სამუშაო პროცესი არანორმალურად შეწყდა. ასინქრონული პროგრამირების კონცეფცია

კითხვა: ფონური სამუშაო პროცესი ჩაიშალა...


შუადღე მშვიდობისა ყველას და წარმატებულ კვირას გისურვებთ!)
საწარმოთა აღრიცხვა, გამოცემა 3.0 (3.0.46.11).
პლატფორმა 8.3.9.2033წ.
დოკუმენტების ჯგუფებში განთავსებისას ჩნდება შეცდომა „ფონური სამუშაო პროცესი არანორმალურად დასრულდა“. მიზეზებს არ ასახელებენ...
SQL სერვერის გადატვირთვა, 1C სერვერი (არასდროს იცი) არ შველის... იქნებ ვინმეს შეგხვედრიათ მსგავსი პრობლემა??? ძნელი სათქმელია, როდის გაჩნდა ეს შეცდომა, რადგან დიდი ხანია არ გამოგვიყენებია ჯგუფური შესრულება (თვე დახურვა)...

პასუხი:() () კიდევ ერთხელ მშვიდობისა) ჩავრთე ტექნოლოგიების ჟურნალი და აღმოვაჩინე ეს საინტერესო რამ (იქნებ იცით რა არის პრობლემა?):
მცდელობა იყო ჩაეტარებინათ ოპერაცია ობიექტზე, რომელიც არ არის ბუდე...
პროცესი მთავრდება. გამავალი ზარი უარყოფილია...
სერვისის მასპინძელი სერვერები ვერ მოიძებნა...

კითხვა: ფონური სამუშაოები


პლატფორმა 1C: Enterprise 8.3 (8.3.9.2170), conf BP 3.0.
კონფიგურაცია ახდენს ინტეგრაციის კონფიგურაციას მონაცემთა გარე წყაროების მეშვეობით (DBMS ტიპი - OracleDatabase). დამატებულია რამდენიმე ცხრილი, საიდანაც იტვირთება ძირითადი მონაცემები და ტრანზაქციები. იმიტომ რომ ბევრი მონაცემი იყო, ამიტომ გადაწყდა ჯგუფური ჩამოტვირთვა ფონური სამუშაოების მეშვეობით. ნაწილის ზომა არის 100,000, პარტიული ზომა არის 10,000, ტრანზაქციების რაოდენობა დოკუმენტში არის 1000, ერთდროულად გაშვებული ფონური სამუშაოების რაოდენობა არის 8.
გავუშვი, ვტვირთავ, ყველაფერი რიგზეა. მაგრამ ღამით რომ ჩავიცვა, ისეთი შეგრძნებაა, თითქოს 1c გადადის ძილის რეჟიმში, ე.ი. გარკვეული დროის შემდეგ, როგორც ჟურნალში ჩანს, ფონური სამუშაოები დაწყებულია, მაგრამ არ დასრულებულა. შედეგად, აღმოჩნდა, რომ დავალებები ღამის 12 საათზე დაიწყო და დილის 8 საათზე სრულდებოდა (მაუსის გადაადგილებისას) და ამის შემდეგ განაგრძეს შესრულება ნორმალურ რეჟიმში. გავუშვი როგორც გამხდარ, ასევე სქელ კლიენტებში. პარამეტრებში არის პარამეტრი - პასიურ სესიაზე ჩაძინების დრო არის 1200, მაგრამ ეს არ ეხება მხოლოდ თინ კლიენტს და შეიძლება ეს იყოს პრობლემა? არ მინდა გამორთო ეს, რადგან... მომხმარებლები არ გამოდიან პროგრამიდან, დაეძინონ. ვინმეს შეგხვედრიათ მსგავსი პრობლემა? როგორ გადაწყვიტე?

პასუხი:

ასეთი შესაძლებლობა არ არსებობს.

რა აზრი აქვს ფონური სამუშაოს გაშვებას და მის დასრულებას ლოდინს?
ისე, რომ არ შექმნათ 8-ზე მეტი ფონის დავალება?

გადაიტანეთ ფონური სამუშაოების "მენეჯერი" სერვერის მხარეს და მიეცით მას კონტროლი....

Pentuim D840-ზე 40-50 ფონზე დავასრულე - ფრენა ნორმალური იყო, მერე პროცესორი/მეხსიერებით შემოიფარგლა.

კითხვა: როგორ გადავიტანოთ ფაილი ფონურ სამუშაოზე


პლატფორმა 8.3.6.2152
თქვენ უნდა გადაიტანოთ ფაილი UV-დან ფონურ სამუშაოზე შემდგომი დამუშავებისთვის.
გააკეთე ეს:
&OnClient
პროცედურა Command1(Command) FileDD = New BinaryData(FileName); StorageAddressForBackground = PlaceInTemporaryStorage(FileDD, UniqueIdentifier); დაწყება UploadLoadOnServer(StorageAddressForBackground) EndProcedure &OnServer ფუნქცია StartUploadLoadOnServer(StorageAddressForBackground) მეთოდის პარამეტრები = ახალი მასივი; MethodParameters.Add(StorageAddressForBackground); სამუშაო = BackgroundTasks.Run("MyGeneralModule.MyBackground", MethodParameters); საბოლოო ფუნქცია
ზოგად მოდულში:

პროცედურა MyBackground(StorageAddress) Export FileDD = GetFromTemporaryStorage(StorageAddress); თუ TypeValue(FileDD) = Type("BinaryData") მაშინ ჟურნალის ჩანაწერის რეგისტრაცია ჟურნალის ჩანაწერის რეგისტრაცია("გამართვა", "არ DD"); Დაასრულე თუ ; პროცედურის დასასრული მე ვცადე ეს: PlacedFiles = New Array; PlacedFiles.Add(NewDescriptionofTransferFile(FileName)); PlacedFiles = ახალი მასივი; თუ არა PlaceFiles (PlaceFiles, PlaceFiles, False, UniqueIdentifier) ​​მაშინ დაბრუნება; Დაასრულე თუ ; StorageAddressForBackground = PlacedFiles.Storage; მე ვცადე ეს: StorageAddressForBackground = PlaceInTemporaryStorage(Undefined, UniqueIdentifier); PlaceFile (StorageAddressForBackground, FileName, False);
ის ჩვეულებრივ გადადის ფონიდან კლიენტზე დროებითი შენახვის საშუალებით, მაგრამ რატომღაც კლიენტიდან ფონზე არ გადადის.

პასუხი:ზოგადად, ყველაფერი საკმაოდ მარტივი აღმოჩნდა. გამოდის, რომ თქვენ შეგიძლიათ სულელურად გადასცეთ ბინარული მონაცემები, როგორც პარამეტრი ფონურ სამუშაოზე. იმისთვის, რომ არაკვალიფიციურმა მოყვარულებმა მოიყვანონ ცნობები და უთხრან, რომ „ასე იყო განკუთვნილი“, სამუშაო კოდია:
&OnClient
პროცედურა Command1 (ბრძანება) დაწყება UploadLoadOnServer(New BinaryData(FileName)) დასრულების პროცედურა
&OnServer ფუნქცია StartUploadLoadOnServer(DD) მეთოდის პარამეტრები = ახალი მასივი; MethodParameters.Add(DD); სამუშაო = BackgroundTasks.Run("MyGeneralModule.MyBackground", MethodParameters); EndFunctions პროცედურა MyBackground(FileDD) Export If TypeValue(FileDD) = Type("BinaryData") შემდეგ ჟურნალის ჩანაწერის რეგისტრაცია("გამართვა", "დიახ DD"); წინააღმდეგ შემთხვევაში ჟურნალის ჩანაწერის რეგისტრაცია("გამართვა", "არ DD"); Დაასრულე თუ ; პროცედურის დასასრული

შეკითხვა: ფონური სამუშაოს გაშვება სასურველი მომხმარებლის ქვეშ


გამარჯობა!
არის 1C:Enterprise 8.3 (8.3.11.2924), UT 11.3.4.93 კლიენტი - სერვერი.
ამ კონფიგურაციაში „ანგარიშსწორებები კლიენტებთან დოკუმენტებზე“ რეესტრში მოძრაობები ხორციელდება არა დოკუმენტის განთავსების დროს, არამედ რუტინული დავალებით „გადადებული მოძრაობების შესრულება კლიენტებთან/მომწოდებლებთან დასახლებებში“.
ამავდროულად, ზოგჯერ რუტინული დავალება წარმოქმნიდა შეცდომას, რადგან ცდილობდა მოძრაობები გაეკეთებინა დახურულ პერიოდში (რედაქტირების აკრძალვის თარიღამდე). რუტინული დავალების პარამეტრებში ჩვენ დავრეგისტრირდით სპეციალური მომხმარებელი, რომლის აკრძალვის თარიღი ღია იყო, რის შემდეგაც ყველაფერი დაიწყო მუშაობა.
თუმცა, საჭიროა იმის უზრუნველყოფა, რომ ეს გადაადგილებები რეესტრებში განხორციელდეს დოკუმენტის განთავსების დროს და არა მაშინ, როცა ფონური სამუშაო იწყება გრაფიკის მიხედვით.
თუ თქვენ გაუშვით თავად კოდი, რომელიც ასრულებს რუტინულ დავალებას დოკუმენტის გამოქვეყნებისას, მაშინ იგივე შეცდომა ჩნდება - პერიოდი დახურულია. და თუ თქვენ პროგრამულად აწარმოებთ ფონურ ამოცანას, რომელიც მუშაობს იმავე კოდში დოკუმენტის განთავსების დროს, მაშინ ის იწვევს ზუსტად იგივე შეცდომას, რადგან პერიოდი დახურულია და პროგრამულად გაშვებული ფონური სამუშაო გაშვებულია მიმდინარე მომხმარებლის სახელით და მისი აკრძალვის თარიღი დახურულია. თუმცა, როდესაც ფონური სამუშაო გაშვებულია გრაფიკის მიხედვით, რომელსაც აქვს "სწორი" მომხმარებელი დაინსტალირებული განრიგში, მაშინ ყველაფერი მიდის ხმაურით. აი, როგორ უნდა გავაკეთოთ ეს პროგრამულად, როგორ პროგრამულად გაუშვათ ფონური დავალება სასურველი მომხმარებლის ქვეშ "დაგეგმარის საშუალებით", როგორც ამას აკეთებს სტანდარტული დაგეგმილი ამოცანები, გთხოვთ მითხრათ?

პასუხი:

ის არ არის ის, რისთვისაც არის კონფიგურირებული?
ეს უნდა იყოს კონფიგურაციის ხარვეზი

Lis2007-მა თქვა:

გამარჯობა! ზოგჯერ რუტინული დავალება წარმოშობს შეცდომას, რადგან... ცდილობდა მოძრაობები გაეკეთებინა დახურულ პერიოდში (რედაქტირების აკრძალვის თარიღამდე). რუტინული დავალების პარამეტრებში დავარეგისტრირეთ სპეციალური მომხმარებელი, რომლის აკრძალვის თარიღი ღია იყო, ამის შემდეგ ყველაფერი დაიწყო მუშაობა

დააწკაპუნეთ გასაშლელად...

შეკითხვა: ფონური სამუშაოს გამართვა


ფონური სამუშაო შეცდომით მუშაობს. მე გადავწყვიტე მისი გამართვა.
მე ვიწყებ მას გარე დამუშავების გზით ერთი ხაზით:
BackgroundTasks.Run("MyModule.MyTask");
მოდულში წყვეტის წერტილი არ არის მიღწეული.
სერვერზე გამართვა დაშვებულია, გამართვა შემოწმებულია, ავტომატური კავშირი, ფონური სამუშაოები ჩართულია. კიდევ რა შეიძლება იყოს პრობლემა?

პასუხი:ჩვეულებრივ მოდულებში იყო გამოძახება ფუნქციებზე, რომლებიც საჭიროებდნენ კლიენტს და არა სერვერის შესრულებას. მომიწია მათი ჩასმა ფრჩხილებში #If Client Then. ფონმაც იმუშავა.

კითხვა: შეცდომა გაცვლის დროს


შუადღე მშვიდობისა, მითხარით სად გათხრა:
ვაკეთებ გაცვლას ბუღალტრული აღრიცხვის მონაცემთა ბაზაში. სამი ათეული დოკუმენტი იტვირთება UT-shka-დან სტანდარტული გაცვლის საშუალებით. ისინი დიდხანს ფიქრობენ (დაახლოებით ერთი საათი) და ამთავრებენ გზავნილით:
ფონური სამუშაო პროცესი ავარიულად დასრულდა

ალბათ, არც ერთ სერიოზულ კონფიგურაციას 1C 8.3 ან 8.2 არ შეუძლია რუტინული და ფონური ამოცანების გამოყენების გარეშე. ისინი ძალიან მოსახერხებელია, რადგან ისინი შესრულდება მკაფიოდ განსაზღვრული გრაფიკის მიხედვით მომხმარებლის ან პროგრამისტის ჩარევის გარეშე.

მაგალითად, თქვენ უნდა გაცვალოთ მონაცემები სხვა პროგრამით დღეში ერთხელ. რუტინული და ფონური ამოცანების გამოყენებით, 1C შეძლებს ამ მოქმედებების შესრულებას დამოუკიდებლად, მაგალითად, არასამუშაო საათებში. ეს მეთოდი არანაირად არ იმოქმედებს მომხმარებლის გამოცდილებაზე და დაზოგავს დროს.

პირველ რიგში, მოდით გავარკვიოთ, რას გულისხმობენ ისინი და რა განსხვავებაა მათ შორის:

  • დაგეგმილი დავალებასაშუალებას გაძლევთ დაიწყოთ ნებისმიერი კონკრეტული მოქმედება წინასწარ კონფიგურირებული გრაფიკის მიხედვით.
  • ფონური სამუშაოარის ობიექტი, რომელიც შეიცავს განსახორციელებელ მოქმედებებს.

დავუშვათ, რომ ჩვენი კომპანია ყიდის რაღაცას და აქვს საკუთარი ვებ-გვერდი, რომელზეც ფასებია განთავსებული. ჩვენ გვინდა ატვირთოთ ისინი დღეში ერთხელ, რათა შევინარჩუნოთ შესაბამისობა.

გახსენით კონფიგურაცია და დაამატეთ დაგეგმილი დავალება.

თვისებების დაყენება

მოდით შევხედოთ ყველაზე მნიშვნელოვან პარამეტრებს, რომლებიც უნდა შეივსოს მის თვისებებში.

  • სფეროში" მეთოდის სახელი» ირჩევს კონკრეტული ზოგადი მოდულის პროცედურას, რომელიც უშუალოდ შესრულდება. მასში მითითებული იქნება ფასების ატვირთვის ყველა ნაბიჯი ჩვენს ვებსაიტზე. გთხოვთ გაითვალისწინოთ, რომ შესრულება განხორციელდება სერვერზე. ეს ლოგიკურია, რადგან რუტინული ოპერაციები ხორციელდება მომხმარებლის მონაწილეობის გარეშე.
  • დაგეგმილი დავალება შეიძლება გამორთოთ ან ჩართოთ საჭიროებისამებრ. არ არის საჭირო ყოველ ჯერზე მისი განრიგის რედაქტირება. ამისათვის, თვისებების პალიტრაში დააყენეთ ან გაასუფთავეთ დროშა " გამოყენება».
  • კიდევ ერთი მნიშვნელოვანი რამ არის იმის დადგენა, იქნება თუ არა ეს რუტინული ამოცანა წინასწარ განსაზღვრული, თუ არა. წინასწარ განსაზღვრული დაგეგმილი ამოცანები ავტომატურად იხსნება. თუ ეს ფუნქცია არ არის დაინსტალირებული, მაშინ მოგიწევთ მათი გაშვება პროგრამულად, ან გამოიყენოთ "Task Console" დამუშავება ITS-ით.
  • ასევე შეგიძლიათ მიუთითოთ გამეორებების რაოდენობა და მათ შორის ინტერვალიარანორმალური შეწყვეტის შემთხვევაში. არანორმალური შეწყვეტა ეხება იმ სიტუაციებს, როდესაც სამუშაო არ დასრულებულა შეცდომის გამო.

განრიგის დადგენა

საბოლოო ნაბიჯი არის განრიგის დაყენება საიტზე ჩვენი ატვირთვისთვის, თვისებების პალიტრაში შესაბამისი ჰიპერბმულის გამოყენებით.

ტიპიური გრაფიკის პარამეტრს ნახავთ 1C 8.3-ში. აქ არაფერია რთული. ამ მაგალითში, ჩვენ დავაყენეთ ჩვენი ფასების ატვირთვის დაწყება საიტზე ყოველდღე დილის ხუთიდან შვიდამდე. იმ შემთხვევაში, თუ დაგეგმილ დავალებას 7:00 საათამდე დრო არ ექნება, ის მეორე დღესვე დასრულდება.

დაგეგმილი ამოცანების დაბლოკვა

გაუშვით სტანდარტული პროგრამა „1C Enterprise Servers-ის ადმინისტრირება“ და გახსენით ინფო ბაზის თვისებები, სადაც შექმენით რუტინული დავალება (1C-ის კლიენტ-სერვერის ვერსიებისთვის).

ფანჯარაში, რომელიც იხსნება (თქვენი შესვლისა და პაროლის შეყვანის შემდეგ ინფორმაციის უსაფრთხოებაზე წვდომისთვის), შეამოწმეთ, რომ არ არის არჩეული ჩამრთველი „რუტინული ამოცანების დაბლოკვა“. თუ შეხვდებით სიტუაციას, როდესაც დავალება არ მუშაობს, ჯერ შეამოწმეთ ეს პარამეტრი.

ანალოგიურად, შეგიძლიათ მთლიანად გამორთოთ რუტინული დავალებები 1C 8.3-ში. კონკრეტული ფონური სამუშაოების გამოსართავად, შეგიძლიათ გამოიყენოთ უახლეს გამოშვებებში ჩაშენებული „ფონური სამუშაო კონსოლი“ დამუშავება.

ფონური და დაგეგმილი ამოცანები ფაილის რეჟიმში

ამ რეჟიმში, ამ ამოცანების დაყენება და გაშვება გაცილებით რთულია ორგანიზება. ყველაზე ხშირად იქმნება დამატებითი ანგარიში, რომლის სესია ყოველთვის ღია იქნება.

ამ შემთხვევაში, რუტინული ამოცანები გააქტიურებულია "RunTaskProcessing()" მეთოდის გამოყენებით.

თქვენ ასევე შეგიძლიათ გამოიყენოთ შემდეგი კონსტრუქცია:

როგორც პროცედურის სახელი, თქვენ უნდა მიუთითოთ კლიენტის პროცედურის სახელი, რომელიც შესრულდება. ინტერვალი გვიჩვენებს, რამდენი წამის შემდეგ მოხდება შესრულება. პარამეტრი "ერთჯერადი" არ არის საჭირო. ეს ასახავს, ​​ეს პროცედურა ჩატარდება ერთხელ თუ რამდენჯერმე.

შეცდომების თვალყურის დევნება ფონურ სამუშაოებში

თქვენ შეგიძლიათ ნახოთ ფონური სამუშაოების პროგრესი, ასევე შესაძლო შეცდომების არსებობა ჟურნალში. ფილტრში აირჩიეთ "ფონური სამუშაო" აპლიკაცია და, საჭიროების შემთხვევაში, აირჩიეთ ინტერესის მნიშვნელობა, მაგალითად, მხოლოდ "შეცდომები".

ჟურნალი აჩვენებს ყველა ჩანაწერს, რომელიც შეესაბამება თქვენს არჩევანს, კომენტართან ერთად, რომელიც დაგეხმარებათ გაიგოთ შეცდომის მიზეზი.

პრობლემა ახალი არ არის და დროდადრო განიხილება სხვადასხვა 1C ფორუმზე. უმარტივესი და ყველაზე პოპულარული გამოსავალი არის 1C სერვერის გადატვირთვა. სამწუხაროდ, ეს ვარიანტი ყოველთვის არ არის მისაღები ან ძალიან არასასურველი. ასეთ შემთხვევაში უფრო დელიკატური გადაწყვეტილებები არსებობს.

Აქ ერთ-ერთი ეს მეთოდი მოკლე ნაბიჯ-ნაბიჯ ინსტრუქციების სახით:

1. 1C სერვერის ადმინისტრაციის კონსოლის გამოყენებით, ჩვენ ვეძებთ პრობლემურ ვახალი სამუშაო კავშირის სიაში (მაგალითად, მისი მუშაობის დაწყების დროით, სამუშაო კონსოლში რეგულირებული სამუშაოს დაწყების დროსთან შედარებით). ჩვენ განვსაზღვრავთსამუშაო პროცესი, რომელშიც მდებარეობს ჩამოკიდებული კავშირი.

2. გახსენით ამ პროცესის თვისებები და მონიშნეთ იგი გამოუყენებლად (თუ მხოლოდ ერთი პროცესია გამოყენებული, მაშინ ჯერ უნდა შექმნათ ახალი სამუშაო პროცესი, რათა ყველა აქტიური კავშირი ხელახლა დაუკავშირდეს მას). ჩვენ გვახსოვს ამ პროცესის PID ნომერი.


3. ჩვენ ველოდებით, სანამ ყველა მიმდინარე კავშირი არ გადავა გამორთული პროცესიდან ერთ-ერთ გამოყენებულზე. საბოლოო ჯამში, მხოლოდ პრობლემური კავშირები უნდა დარჩეს ჩვენს პროცესში, რომელთა ამოღება გვინდა.

4. 1C სერვერის მქონე კომპიუტერზე, ამოცანების მენეჯერის გამოყენებით, მოძებნეთ შესაბამისი rphost.exe პროცესი გამორთული მუშა პროცესის PID-ით და წაშალეთ იგი.

5 . ყოველ შემთხვევაში, შეგიძლიათ წაშალოთ 1C სამუშაო ნაკადი, რომელიც გამორთეთ ადმინისტრატორის გამოყენებით. კონსოლი და, საჭიროების შემთხვევაში, შექმენით ახალი.

6. მზადაა. შეგიძლიათ შეხვიდეთ სამუშაო კონსოლში და შეამოწმოთ დაგეგმილი სამუშაოს ფუნქციონირება.

ამ სტატიაში მე აღვწერ ჩემს, ჯერჯერობით მცირე გამოცდილებას მონაცემთა გაცვლის ორგანიზებაში უნივერსალური EnterpriseData ფორმატის საშუალებით.

ჩემს შემთხვევაში, ბირჟა კონფიგურირებულია „Trade Management 11.2“ (შემდგომში UT) და „Enterprise Accounting 3.0.43“ (შემდგომში BP) კონფიგურაციებს შორის. გაცვლა არის ცალმხრივი, UT-დან BP-მდე. Trade Management 11.1-ზე 11.2-მდე განახლებამდე, მონაცემთა გაცვლა კონფიგურირებული იყო მონაცემთა კონვერტაციის 2.0 კონფიგურაციის გამოყენებით. თუმცა, „11.2“-ზე გადასვლის შემდეგ, მომხმარებლებისთვის „ვაჭრობის მენეჯმენტში“ გამოჩნდა შეცდომები. გაცვლის წესების განახლების პროცედურა განხორციელდა, მაგრამ შედეგი არ გამოიღო. გამართულმა აჩვენა, რომ პრობლემა მონაცემთა გაცვლაში იყო. გადაწყდა მონაცემთა გაცვლის პარამეტრის ამოღება ორივე კონფიგურაციაში და ხელახლა კონფიგურაცია.

ორივე "ვაჭრობის მენეჯმენტი" და "საწარმოთა აღრიცხვა" მუშაობს კლიენტ-სერვერის ვერსიაში. დავიწყე სინქრონიზაციის დაყენება UT-თან. მე შევასრულე ისე, რომ მონაცემები UT-დან ფაილში აიტვირთა. ანუ სინქრონიზაცია ქსელის დირექტორიაში. BP-ში მე დავაყენე ბირჟის კონფიგურაცია ისე, რომ BP-დან მონაცემები არ გადმოწერილიყო.

შეცდომა კონტექსტური მეთოდის გამოძახებისას (Verify): XDTO მონაცემთა ვალიდაციის შეცდომა:
ობიექტის სტრუქტურა "/Counterparty Bank Account/Bank" არ შეესაბამება ტიპს: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)KeyPropertiesBank
"BIK" ქონების შემოწმება:
ფორმა: ელემენტი
სახელი: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)BIK
ტიპი:
საჭირო ქონება აკლია
ობიექტი: შეთანხმება კონტრაგენტთან No.

შეცდომის გასაანალიზებლად დავაწკაპუნე ხატულაზე „გაგზავნილი მონაცემების შემადგენლობა“ და გასაგზავნად დარეგისტრირებული კონტრაქტორის ხელშეკრულებების სიაში აღმოვაჩინე შეთანხმება, რომლისთვისაც გამოჩნდა შეცდომა. გავხსენი ხელშეკრულება და გამახსენდა ხელშეკრულებაში მითითებული კონტრაგენტის საბანკო ანგარიში. შემდეგ გადავედი ტრანსპორტირებისთვის დარეგისტრირებულ საბანკო ანგარიშებზე. გაირკვა, რომ საჭირო ანგარიში არ იყო დარეგისტრირებულთა სიაში. გადავაკეთე პრობლემური საბანკო ანგარიში და კონტრაქტი. ამის შემდეგ მე ხელით დავარეგისტრირე საჭირო საბანკო ანგარიში.

ისევ ვცადე UT-დან მონაცემების სინქრონიზაცია. ამჯერად მონაცემები წარმატებით აიტვირთა. XML ფაილი შეიქმნა ქსელის საქაღალდეში, რომელიც შეიცავს მონაცემებს UT-დან BP-ში გადასატანად.

შემდეგი ნაბიჯი არის ფაილიდან მონაცემების ჩატვირთვა საწარმოს აღრიცხვის განყოფილებაში. "საწარმოთა აღრიცხვის" კონფიგურაციაში დავაწკაპუნე ღილაკზე "სინქრონიზაცია", დამუშავების ფორმა გაიხსნა მესიჯით "მონაცემთა ანალიზი მიმდინარეობს". ცოტა მოგვიანებით შეტყობინება შეიცვალა „მონაცემების ატვირთვა მიმდინარეობს“. ამავდროულად, ინდიკატორმა და მრიცხველმა აჩვენა, რომ ელექტრომომარაგების ბლოკიდან 80 ათასზე მეტი ობიექტი განიტვირთებოდა. ამან დამაბნია, რადგან პარამეტრებში მივუთითე, რომ კვების წყაროდან არაფერი არ უნდა განიტვირთოს. დამუშავებას საკმაოდ დიდი დრო დასჭირდა და შეცდომით დასრულდა:

ღონისძიება: მონაცემთა გაცვლა
(GeneralModule.Long-runningOperations.Module(371)): ფონური სამუშაოს თანამშრომლის პროცესი არანორმალურად შეწყდა
RaiseException (ErrorText);

შეცდომის ლოკალიზაციისთვის ვცადე ელექტრომომარაგების ბაზის სინქრონიზაციის პარამეტრებისა და მუშაობის პარამეტრების შეცვლა. შედეგად, როდესაც მონაცემთა ბაზის ფაილურ ვერსიაში გადავიყვანე, სისტემა ადეკვატურად მუშაობდა: გაიხსნა ორი მონაცემთა ბაზის შედარების ფორმა. ობიექტების დამთხვევის შემდეგ, თავდაპირველი სინქრონიზაცია წარმატებული იყო. შემდეგ შევცვალე მონაცემთა ბაზა კლიენტ-სერვერის ვერსიაზე.

სინქრონიზაციის შემდგომი ტესტირებით, საჭირო გახდა გარკვეული ცვლილებების შეტანა ობიექტების კონვერტაციის წესებში. დროა გამოვიყენოთ Data Conversion 3.0 კონფიგურაცია. ჩაშენებული კონფიგურაციის დახმარება აღწერს როგორ მუშაობს. ასევე დაგვეხმარა სტატიები ITS ვებსაიტზე.

შედეგად, მე ჩავტვირთე შემდეგი მონაცემები "მონაცემთა კონვერტაცია 3.0"-ში:

  • ზოგადი მოდულის "მონაცემთა გაცვლის მენეჯერი უნივერსალური ფორმატის მეშვეობით" ტექსტები ორი მონაცემთა ბაზიდან
  • ორივე ბაზის განლაგება
  • EnterpriseData ფორმატის აღწერა (ნებისმიერი მონაცემთა ბაზიდან)
  • კონვერტაციის წესები

ჩამოტვირთვის შემდეგ გავხსენი მონაცემების, ობიექტების და თვისებების კონვერტაციის წესები “Data Conversion 3.0”. შევიტანე ცვლილებები რაც მჭირდებოდა. შემდეგ გამოვიყენე ღილაკი "გაცვლის მენეჯერის მოდულის განტვირთვა". მოდულის ტექსტი დაკოპირებულია ბუფერში. რჩება მხოლოდ მისი ჩასმა კონფიგურაციაში.

"მონაცემთა კონვერტაცია 3.0"-ში წესების დაყენების ექსპერიმენტის შემდეგ, მე თვითონ დავასკვენი, რომ იმ შემთხვევაში, როდესაც განხორციელებული ცვლილებები უმნიშვნელოა, უფრო ადვილია წესების დაყენება პირდაპირ UT და BP კონფიგურაციებში, ზოგად მოდულში. "მონაცემთა გაცვლის მენეჯერი უნივერსალური ფორმატის საშუალებით". თუ რედაქტირებები სერიოზულია, როგორიცაა, მაგალითად, ახალი ობიექტის დამატება ბირჟაზე, მაშინ უნდა გამოიყენოთ კონფიგურაცია " მონაცემთა კონვერტაცია 3.0"

მე შევასრულე დავალება გაცვლის გეგმაში დოკუმენტის „შეკვეთა მიმწოდებელზე“ დამატების შესახებ „ მონაცემთა კონვერტაცია 3.0". UT - BP სტანდარტულ ვერსიაში ეს დოკუმენტი არ შედის გაცვლის გეგმაში.

შეგახსენებთ, რომ ატვირთვისთვის ობიექტების რეგისტრაციის წესები კვლავ კონფიგურირებულია "Data Conversion 2.0" კონფიგურაციაში.

ეს არის უნივერსალური EnterpriseData ფორმატის მეშვეობით მონაცემთა სინქრონიზაციის პირველი შთაბეჭდილებები.

P.S. თუ თქვენ გაქვთ შეკითხვები ან თქვენი საკუთარი დაკვირვებები მონაცემთა გაცვლის შესახებ უნივერსალური ფორმატისა და კონფიგურაციების საშუალებით" მონაცემთა კონვერტაცია 3.0", დაწერეთ კომენტარებში. გავცვლით გამოცდილებას.

  • მონაცემთა სინქრონიზაცია
  • უნივერსალური EntepriseData ფორმატი
  • მონაცემთა კონვერტაცია 3.0
  • მონაცემთა კონვერტაცია 2.0
  • ვაჭრობის მენეჯმენტი
  • საწარმოს აღრიცხვა

ალბათ ყველა 1C 8.3 პროგრამისტს ადრე თუ გვიან მოუწია გარკვეული დავალებების შესრულება გრაფიკის მიხედვით. ქვემოთ მე მივცემ ამ მექანიზმების დეტალურ აღწერას, ვიმედოვნებ, რომ ეს სასარგებლო ინფორმაცია იქნება დამწყები 1C პროგრამისტებისთვის. ეს ძალიან მოსახერხებელია, რადგან არ საჭიროებს ადამიანის მოქმედებას, რუტინული დავალება ერთხელ არის კონფიგურირებული და მუშაობს თქვენი გრაფიკის მიხედვით.

თქვენ ნახავთ დეტალურ ინსტრუქციებს ქვემოთ მოცემული მაგალითის გამოყენებით.

რა არის რუტინული და ფონური ამოცანები 1C-ში

  • დაგეგმილი დავალებებიარის სპეციალური 1C Enterprise 8.3 მექანიზმი, რომელიც შექმნილია კონკრეტული მოქმედების შესასრულებლად მოცემული გრაფიკის მიხედვით.
  • ფონური სამუშაო- რუტინული დავალების მიერ წარმოქმნილი ობიექტები, რომლებიც უშუალოდ ასრულებენ დანიშნულ მოქმედებას მომხმარებლის ან 1C 8.2 პროგრამისტის მონაწილეობის გარეშე.

დაგეგმილი და ფონური სამუშაოების მექანიზმი მუშაობს კლიენტ-სერვერის რეჟიმში (SQL), DBMS-ის ფუნქციონირების წყალობით. თუ თქვენ გაქვთ ფაილების მონაცემთა ბაზა, მაშინ დავალების კონფიგურაცია ასევე შესაძლებელია, მაგრამ ოდნავ განსხვავებული პრინციპის მიხედვით.

ფონური სამუშაოების დაყენება 1C კლიენტ-სერვერის რეჟიმში

პირველი, მოდით შევქმნათ ახალი მეტამონაცემების ობიექტი - რუტინული დავალება. ჩემს ამოცანას დავარქმევ "ვალუტის განაკვეთების ჩატვირთვა". მოდით შევხედოთ ამ კონფიგურაციის ობიექტის თვისებების პალიტრას:

მიიღეთ 267 ვიდეო გაკვეთილი 1C-ზე უფასოდ:

  • მეთოდის სახელი— გზა პროცედურისკენ, რომელიც შესრულდება ფონურ სამუშაოში მოცემული გრაფიკის მიხედვით. პროცედურა უნდა იყოს საერთო მოდულში. მიზანშეწონილია არ გამოიყენოთ სტანდარტული, არამედ შექმნათ საკუთარი. არ დაგავიწყდეთ, რომ ფონური სამუშაოები მუშაობს სერვერზე!
  • გამოყენება- რუტინული დავალების გამოყენების ნიშანი.
  • წინასწარ განსაზღვრული— მიუთითებს წინასწარ განსაზღვრული თუ არა რუტინული დავალება. თუ გსურთ, რომ რუტინულმა დავალებამ იმუშაოს მონაცემთა ბაზაში მოთავსებისთანავე, მიუთითეთ ეს დროშა. წინააღმდეგ შემთხვევაში, მოგიწევთ Job Console-ის დამუშავების გამოყენება ან სამუშაოს პროგრამულად გაშვება.
  • განმეორებითი ცდების რაოდენობა, როდესაც სამუშაო არანორმალურად წყდება— რამდენჯერ გადაიტვირთა ფონური სამუშაო, თუ შეცდომით შესრულდა.
  • ხელახლა სცადეთ ინტერვალი, როდესაც სამუშაო არანორმალურად წყდება— რამდენჯერ გადაიტვირთება ფონური სამუშაო, თუ ის დასრულებულია შეცდომით.

და ყველაზე საინტერესო პარამეტრია განრიგი:

აქ თქვენ აკონფიგურირებთ პროცედურის გაშვების ინტერვალს, რომელიც მითითებულია "მეთოდის სახელი" ველში. ვთქვათ, მე დავაკონფიგურირე

ყურადღება!არ დაგავიწყდეთ DBMS დონეზე რუტინული და ფონური სამუშაოების შესრულების დაბლოკვის გამორთვა!

ეს შეიძლება გაკეთდეს კლიენტ-სერვერის ვერსიის ადმინისტრაციულ პროგრამაში ან ახალი მონაცემთა ბაზის შექმნისას:

რუტინული ამოცანების დაყენება 1C ფაილის რეჟიმში

ფაილის რეჟიმში, ასეთი სამუშაოების დაყენება გარკვეულწილად უფრო რთულია. ასეთი ამოცანისთვის, 1C პროგრამის ცალკე სესია უნდა დაიწყოს. ეს ხშირად მოგვარებულია „ტექნიკური“ მომხმარებლის შექმნით, რომლის სესია ყოველთვის მუშაობს.

ფაილის რეჟიმში, რუტინული სამუშაოს ინიციალიზაცია ხდება "RunTaskProcessing()" მეთოდის გაშვებისას.

კონკრეტული მომხმარებლისთვის, შეგიძლიათ დააკონფიგურიროთ ეს მეთოდი სხვა მეთოდის გამოყენებით −

ConnectWaitHandler( <ИмяПроцедуры>, <Интервал>, <Однократно>).

  • პროცედურის დასახელება— პროცედურის დასახელება, რომელიც დაკავშირებულია ლოდინის დამმუშავებლის სახით. მართული აპლიკაციის მოდულის (ჩვეულებრივი განაცხადის მოდული) ან გლობალური გაზიარებული მოდულის ექსპორტირებული პროცედურის სახელი. პროცედურა უნდა განთავსდეს კლიენტზე.
  • ინტერვალი— პერიოდი ოპერაციების შესრულებას შორის წამებში.
  • Ერთხელ- როგორ დავასრულოთ დავალება ერთხელ თუ არა.

ConnectWaitHandler, 3600);

ორწუთიანი ვიდეო, რომელიც აჩვენებს, თუ როგორ უნდა დააყენოთ რუტინული დავალება 1C კონფიგურატორში:



გაქვთ შეკითხვები?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: