Terjadi kesalahan yang tidak dapat diperbaiki pada server 1C Enterprise. Kesalahan Windows: kesalahan eksekusi fungsi, diselesaikan dalam satu menit

Terjadi kesalahan yang tidak dapat diperbaiki pada server 1C Enterprise.  Kesalahan Windows: kesalahan eksekusi fungsi, diselesaikan dalam satu menit
Terjadi kesalahan yang tidak dapat diperbaiki pada server 1C Enterprise. Kesalahan Windows: kesalahan eksekusi fungsi, diselesaikan dalam satu menit

Saya rasa setiap programmer kelas 7 pernah mengalami kesalahan seperti itu setidaknya sekali. Hal ini dapat terjadi selama “penggabungan konfigurasi” atau selama “pengujian dan perbaikan keamanan informasi.”

Namun tidak semua orang mencoba “memperbaiki” konfigurasi tersebut. Dalam kasus seperti itu, mereka biasanya dengan panik mencari cadangan, atau (metode yang lebih kompleks) menggunakan bantuan utilitas GComp, yang “menurut legenda”, dapat menyembuhkan MD jika hanya “dibongkar” dan kemudian “dirakit”. ” menggunakan fungsi program. Memang benar demikian. Tapi tidak di semua kasus... Kasus inilah yang ingin saya bahas dalam artikel ini.

Jadi, data awal:

- "konfigurasi rusak";

Kegunaan MDDiag

- JauhManajer dan plugin File DokumenPeramban padanya. Dengan menggunakan plugin ini, Anda bisa masuk ke dalam MD dan bekerja dengan objeknya.

Karena Configurator menolak untuk menampilkan "kesalahan yang tidak dapat diperbaiki" ini, kami menjalankannya MDDiag untuk mengidentifikasinya atau mereka.

Setelah meluncurkan utilitas, pilih konfigurasi yang diinginkan, lalu semua pengaturan default... jalankan, analisis, dapatkan hasilnya.

Anda mungkin memiliki kesalahan lain, tetapi saya rasa Anda akan dapat mengetahuinya setelah Anda memiliki pemahaman umum tentang cara menemukan kesalahan tersebut dan cara memperbaikinya.

1. Kesalahan>(\\Jurnal)

Utilitas memperjelas bahwa kesalahan diamati untuk 2 objek "\\ Jurnal\Journal_Number 212" dan "\\Journal\Journal_Number 860". Sekarang mari kita pergi keJauh dan melihat benda-benda di sana.


Di sini kita melihat banyak objek dan satu file "Container.Contents". Ini menyimpan deskriptor dari objek yang sama. Setelah mempelajari isi file dengan cermat, kami memahami bahwa tidak ada deskriptor untuk 2 objek kami.

Tambahkan deskriptor seperti yang ditunjukkan pada gambar.

Masalah terpecahkan.

2. Error DOKUMENT.Receipt Invoice (\\Teks yang Diketik\Bantuan Pengguna_Nomor434\Wadah.Isi)

Kami kembali ke MD di sepanjang jalur yang ditunjukkan. Buka filenya" Wadah. Isi " dan perhatikan baik-baik isinya.

Kata-kata aneh Cgntainer, Contentq, Prmgram langsung menarik perhatian Anda. Benar, ini adalah pengidentifikasi yang salah eja. Tidak sulit untuk menebak bagaimana seharusnya yang benar (jika sulit, pergi ke cabang berikutnya, buka file “Container.Contents” yang sama dan lihat bagaimana penulisannya).

3. KesalahanDIREKTORI.Operasi Khas(\\Subconto\Subconto_Number5870\WorkBook\Dialog Stream)

Buka file di jalur yang ditentukan dan perhatikan baik-baik... Semua parameter harus diapit tanda kutip. Salah satu parameter memiliki "spasi" dan bukan "tanda kutip" - kami memperbaikinya (kesalahan ini dapat terjadi ketika deskripsi salah satu elemen objek (bidang, tombol, daftar nilai, dll.) berisi satu atau kutipan ganda, atau lainnya dari "karakter khusus").

Mari kita luncurkan lagi MDDiag dan kita melihat bahwa semua kesalahan sebelumnya telah hilang, tetapi kesalahan lain telah muncul.

Sekarang saatnya beralih ke utilitas GComp dan memeriksa "legenda"...

Kami meluncurkan utilitas, pilih MD kami yang rusak (untuk saat ini), dan folder tempat kami harus meletakkan konfigurasi diurutkan berdasarkan objek, lalu semua kotak centang secara default, satu-satunya adalah mencentang kotak "hapus" templat kosong tabel" pada tab "Parameter umum", klik "Dekompilasi".

Kemudian, tanpa basa-basi lagi, buka tab "kompilasi", atur direktori sumber ke direktori tempat Anda baru saja menguraikan konfigurasi dan tunjukkan jalur ke MD baru.

Utilitas akan merakit semuanya dengan aman.

Sekarang yang harus kita lakukan adalah menggunakan Far Manager untuk mengganti file terkait di dalam MD yang "rusak" dengan yang sama dari yang "baru dirakit" (\\Subconto\Subconto_Number5870\WorkBook\Dialog Stream).

Kami memeriksa konfigurasi lagi menggunakan MDDiag.

Segalanya tampak baik-baik saja. Sekarang kita masuk ke konfigurator dan melakukan “pengujian dan koreksi keamanan informasi” untuk memastikan tidak ada kesalahan lagi.

Itu saja. Biarkan aku pergi. Dan semoga the Force menyertai Anda!)

P.S. Terima kasih khusus kepada pengembang utilitas yang digunakan dalam contoh - mereka sangat membantu kita semua hidup...

Selamat siang!. Terakhir kali kita melihat cara mengatasi "Kesalahan dalam menerapkan transformasi. Periksa kebenaran jalur transformasi yang ditentukan", hari ini saya akan memberi tahu Anda tentang konsekuensi lain darinya. Topik publikasi adalah situasi ketika Anda tidak dapat menginstal platform 1C dan Anda akan menerima pesan: kesalahan Windows: kesalahan eksekusi fungsi, kita selesaikan sebentar lagi, saya yakin topiknya akan bermanfaat bagi banyak orang.

Seperti apa kesalahan eksekusi fungsi?

Seperti yang saya tulis di atas, saya mendapatkan masalah ini di server terminal Windows Server 2012 R2 ketika saya mencoba menginstal platform 1C 8.2. Setelah menjalankan file setup.exe, jendela wizard instalasi muncul, dan segera muncul jendela tambahan dengan pesan:

Kesalahan Windows: kesalahan eksekusi fungsi

Untuk itu Anda akan menerima pemberitahuan ini:

Seperti kebanyakan kasus dengan platform 1C, semuanya dapat diselesaikan dengan sedikit koreksi pada file konfigurasi. Pertama, aktifkan tampilan folder tersembunyi, karena file yang kita perlukan tidak terlihat secara default. Selanjutnya pada drive C:\, cari foldernya Data Program.

C:\ProgramData\1C\1CEStat\1CEStat.cfg

File 1CEStat.cfg dapat dibuka menggunakan apa saja editor teks, klik kanan padanya dan pilih “Buka dengan”, lalu editor yang nyaman.

Di file 1CEStat.cfg, temukan parameternya, Anda perlu menghapusnya dan menyimpan file.

Jika Anda melihat log di penampil acara, Anda akan melihat acara seperti ini.

Kode peristiwa 1013: Produk: 1C:Enterprise 8.2 (8.2.19.130) -- Kesalahan Windows: Kesalahan eksekusi fungsi.

ID Peristiwa 11708: Produk: 1C:Enterprise 8.2 (8.2.19.130) -- Operasi instalasi gagal.

Setelah kami menghapus parameter ADMINISTRATIONFUNC=0, kami telah menerima:

ID Peristiwa 1033: Penginstal Windows menyelesaikan instalasi produk. Produk: 1C:Perusahaan 8.2 (8.2.19.130). Versi: 8.2.19.130. Bahasa: 1049. Pabrikan: 1C. Instalasi selesai dengan status: 1603.

Jadi, apa inti dari artikel saya?

1. Ada server (x64), terinstal Office 2016 (x64), ada 1C 8.3.8 juga x64 (artinya server 1C). Pengguna terhubung melalui klien tipis dan klien web.

2. Ada sekumpulan kontrak dan faktur standar yang diterbitkan (disiapkan) oleh departemen penjualan. Ada font, paragraf, dll, tentunya semuanya didesain di Word, Excel 2016 (x64), tentu saja tidak ada keinginan untuk menggambar semua ini dalam 1C, tetapi ada keinginan untuk memasukkannya ke dalam format ActiveDocument tata letak

Solusinya tampaknya biasa saja :) , saya tidak akan menjelaskan keseluruhan mekanisme, cara melakukannya, cara mengisi data dari 1C ke tata letak ActiveDocument - saya rasa Anda tahu betul hal ini tanpa saya. Namun selama pekerjaan itu menjadi jelas bahwa tidak semuanya berjalan lancar di kerajaan objek COM ov, yaitu:

2. Opsi mana yang lebih baik untuk dipilih: ActiveDocument atau Binary Data? Meskipun bagi saya kedengarannya seperti memilih Vodka With Beer atau Beer With Vodka :) . Bukan masalah besar, Anda perlu mengisi dokumen dengan data dari 1C dan mentransfernya ke Klien.

Baiklah, lewati liriknya, saya memilih ActiveDocument, saya tidak akan menjelaskan keseluruhan algoritma, saya hanya akan mencantumkan kendala dan solusinya. Semua yang disebutkan di bawah ini adalah spekulasi pribadi saya dan sama sekali tidak mengklaim sebagai kebenaran hakiki. Anda mungkin telah memecahkan masalah ini atau menyelesaikannya secara berbeda.

1. Batu" Pertama". Metode SaveAs tidak berfungsi (untuk MSWord dan MSExcel). Saat mencoba menulis Data Biner, 1C langsung crash. Lihat bagian daftar:

MSWord = Tata Letak.Dapatkan(); Coba Dokumen = MSWord.Application.Documents(1); Dokumen.Aktifkan(); //Selanjutnya, kita mendapatkan data dan mengisi dokumen Word //Dapatkan jalur di direktori sementara untuk menyimpan file di sana TimeName = GetTemporaryFileName(".docx"); Dokumen.SaveAs(NameTime); //batu dimulai di sini MyDocumentInBinaryData = New BinaryData(NameTime); //nah, di sini batu ini tersingkir oleh 1C :) MSWord.Application.Quit();

Terima kasih banyak.

Membuat folder
C:\Windows\SysWOW64\config\systemprofile\Desktop
C:\Windows\System32\config\systemprofile\Desktop
masalahnya terpecahkan. Topik ditutup.

Apa alasannya? Alasannya adalah kode tersebut

MSWord = Tata Letak.Dapatkan();

Selalu memanggil instance objek COM (x32), terlepas dari bitness Office yang diinstal. Pernahkah Anda bertanya-tanya mengapa Anda tidak bisa memasukkan file dengan ekstensi docx, xlsx ke dalam layout ActoveDocument?

ini juga dapat diperiksa melalui Task Manager, tetapi faktanya tata letak ActiveDocument secara implisit memanggil instance COM (x32) dan oleh karena itu semua manipulasi lebih lanjut harus dilakukan dengan mempertimbangkan fitur ini.

1. Server dan semua perangkat lunak harus x32. Maka Anda tidak perlu melakukan apa pun (dalam artian menulis ulang kodenya)

2. Tulis ulang kode dengan cara ini

// dapatkan nama file sementara TimeFile = GetTemporaryFileName("doc"); // kode ini pasti akan memanggil instance COM dengan kedalaman bit yang diperlukan, dalam kasus kita x64 Word = New COMObject("Word.Application"); Word.Displayalerts = 0; DocumentN = Word.Application.Documents.Add(); DokumenN.SaveAs(TimeFile,0); Kata.Keluar(); // maka semuanya seperti sebelumnya Layout = Manajemen Cetak. Tata Letak Formulir Pencetakan ("Dokumen. Undang-Undang Pemindahan Peralatan." + Nama Tata Letak); MSWord = Tata Letak.Dapatkan(); Coba Dokumen = MSWord.Application.Documents(1);

Dokumen.Aktifkan();

// disini kita melakukan sesuatu, isi datanya // disini kita akan menyimpan kembali file kita dari COM x62 ke COM x64 MSWord.Application.Selection.WholeStory();

MSWord.Application.Selection.Copy();

Ini dia" Pertama“Saya memutuskan, pada server x64 dengan Office x64, semuanya bekerja persis seperti jarum jam, tanpa kesalahan dan tidak perlu membuat folder apa pun dan yang lainnya.

Batu " Kedua". cuplikan kode

TimeFile = GetTimeFileName("xls");

makannya kurang enak, karena menulis ke folder: “c:\Users\ apa yang ada di sana…”, secara umum folder ini selalu masuk daftar hitam semua firewall, antivirus, dll, dll, di setidaknya buka pusat kendali keamanan di Word atau Excel. Mari kita lihat di sana juga

Anda harus mengotak-atik ini, jika tidak, ada kemungkinan munculnya kesalahan "aneh". Oleh karena itu saya menyarankan hal berikut:

1. Buka Configurator dan tambahkan Daftar Informasi baru

di sini kita akan menyimpan Word kita yang sudah jadi, file excel sudah diisi tentunya:

Nama Tata Letak - ID Tata Letak

DocumentOffice adalah Value Store, di sinilah kami menyimpan dokumen kami berkas siap

2. Kita tambahkan kode di atas sebagai berikut:

MH = Informasi Register.TemporaryStorageOffice.CreateRecordManager(); MH.Objek = Pilihan.Link; MZ.NamaTata Letak = NamaTata Letak; MZ.Baca(); MH.Objek = Pilihan.Link; MZ.NamaTata Letak = NamaTata Letak; MZ.DocumentOffice = NewValueStorage(NewBinaryData(TimeFile)); MZ.Tulis(); HapusFile(TimeFile);

Apa yang kami lakukan adalah menulis file yang sudah selesai ke register informasi dan kemudian menghapus file sementara itu sendiri, memecahkan masalah "Word, Excel Security Center". Yang tersisa hanyalah menunjukkan file yang sudah selesai ini kepada Klien (klien tipis dan web)

3. Batu" ketiga" - mentransfer file ke klien, di sini saya hanya akan memposting semua kode, ada yang diambil dari BSP, ada yang dari konfigurasi Demo " Aplikasi Terkelola", sesuatu dari Internet, tapi secara umum ini kodenya (secara keseluruhan)

////////////////////////////////////////////////// // //////////////////////////// // PROSEDUR DAN FUNGSI LAYANAN BSP & Fungsi OnServer GetLayout() ObjectLink = DataStructure.Object;<>Tidak Terdefinisi Lalu DisableWaitHandler("Connectable_SendFileToClient");

DocumentNumber = DataStructure.DocumentNumber;

Direktori = Struktur Data.Direktori;

LayoutName = DataStructure.LayoutName;

FilePath = Direktori+"\"+NamaTata Letak+"_Tidak"+NomorDokumen+".xls";

Description = Deskripsi Baru dari File yang Ditransmisikan (Jalur ke File, Alamat);

TransferredFiles = Array Baru;

TransferredFiles.Add(Deskripsi);

Mengenai Word, file Excel dimasukkan sebagai Data Biner? apa masalahnya?

1. Kita harus mengeluarkan Data Biner ini dari layout dan mengisinya dengan data dari 1C dan PERHATIAN menuliskannya lagi dalam bentuk Data Biner (Vodka Dengan Bir atau Bir Dengan Vodka)

2. Entah kita harus mendapatkan tata letak BinaryData di sisi Klien dan mengisinya di sana, TETAPI objek COM hanya didukung oleh browser IE dan kemudian dengan tarian dengan pengaturan ActiveX, browser lain telah lama meninggalkan penggunaan ActiveX