1c'de excel programının adı nedir? Hangisi daha iyi - 1C veya Excel? Programlamadan yükleme

Bir Excel dosyasını 1C'de açmanın çeşitli yolları vardır ve bunun tersi de geçerlidir. Başlangıç ​​seviyesindeki kullanıcılar, belgeyi farklı bir formatta kaydederek veya özel programlar kullanarak daha basit işlemleri tercih edeceklerdir. Ancak verileri bir programdan diğerine görüntülemek ve işlemek için biraz çaba harcamaya ve yazılım araçlarıyla nasıl çalışılacağını öğrenmeye değer. Bu temel programlama becerileri gelecekte rutin görevlerden kaçınmanıza yardımcı olacaktır.

Excel belgeleri 1C'de nasıl açılır ve bunun tersi de geçerlidir

Microsoft Excel elektronik tablo düzenleyicisi, işlevsellik açısından 1C muhasebe yazılımı ürünlerinden üstündür. Bu nedenle, 1C kullanıcıları bazı işlemleri bir elektronik tablo düzenleyicide gerçekleştirmeyi ve ardından verileri muhasebe programına döndürmeyi tercih eder. Ve bu şaşırtıcı değil, çünkü daha önce birçok şirketin muhasebesi yalnızca Microsoft programları kullanılarak yapılıyordu. Ancak işletmelerin iş süreçlerinin mevcut otomasyon düzeyiyle, özel programlardan vazgeçmek imkansızdır. Farklı uygulamalar arasında etkileşim kurmanın aşağıdaki basit yolları vardır:

    Mevcut bilgisayarınızda yüklü olmayan yazılım ürünlerinin dosyalarıyla uğraşmanız gerektiğinde, en kolay yol, Excel tablolarını 1C formatına (veya tam tersi) dönüştürmek için özel bir uygulama kullanmaktır. 1C ürün web sitesinde bulunabilir.

    Bilgisayarınızda hem 1C hem de Excel varsa, dosyayı "yerel" uygulamasında manuel olarak açabilir ve ardından başka bir programın formatında kaydedebilirsiniz. Genellikle bu seçenek, yazdırılabilir veya düzen kaydedilirken kullanılabilir.

    1C 7.7 kullanıcıları, gelişmiş bir tablo düzenleyiciye sahip olan 1C 8 sürümüne yükseltme yapabilir.

1C ve Excel programlı olarak nasıl etkileşime girebilir?

1C ile Excel arasındaki etkileşim, Microsoft tarafından geliştirilen OLE Otomasyon teknolojisi kullanılarak program düzeyinde gerçekleştirilebilir. COM nesnelerine doğrudan çeşitli programların komut dosyası yorumlayıcılarından erişmenizi sağlar. Basitçe söylemek gerekirse OLE, bir çalışmayı bir programdan diğerine aktarmanıza ve ardından çalışmayı orijinal uygulamaya geri döndürmenize olanak tanır. Bu, muhasebecilerin Microsoft'un elektronik tablo düzenleyicisinden tam olarak ihtiyaç duyduğu şeydir.

OLE araçlarını kullanmak için programcı olmanıza gerek yoktur. Kod satırlarıyla ilk tanışmaya hatalar eşlik edecek olsa da, kontrol etmek bunların belirlenmesine yardımcı olacak ve kazanılan deneyim gelecekte bunlardan kaçınmaya yardımcı olacaktır. Aşağıda, muhasebe programlarında Excel verileriyle çalışmak için en popüler komutlar (bunlara liste adı verilir) verilmiştir ve bunun tersi de geçerlidir.

1C'de bir Excel dosyası programlı olarak nasıl açılır

Dolayısıyla, aralarında veri alışverişi yapmak istediğiniz her iki program da bilgisayarınızda yüklüyse, etkileşimi programlı olarak düzenleyebilirsiniz. Bunu yapmak için, her iki uygulamayı da başlatmanız ve ardından 1C'den Excel'e erişim sağlamak için OLE'yi kullanmanız gerekir:

  • İstisna

    Report(ErrorDescription() + "Excel bu bilgisayarda yüklü değil!");

  • Denemenin Sonu.

Tablo düzenleyiciye erişim yüklendi; şimdi aşağıdaki komutları kullanarak erişmeniz gerekiyor:

    özel belge:

    • Kitap = Excel.WorkBooks.Open(DosyaYolu)

    • Sayfa = Book.WorkSheets(SheetNumber);

  • belirli bir sayfa numarası dahil:

    belirli bir sayfa adı dahil:

    • Sayfa = Book.WorkSheets(SayfaAdı);

    • Değer = Sheet.Cells(RowNumber, ColumnNumber).Value;

Bir dosyanın ilk sayfasındaki verileri okumak için aşağıdaki listeleri kullanın:

    Excel = CreateObject("Excel.Application");

    Kitap = Excel.WorkBooks.Open(FilePath);

    Sayfa = Book.WorkSheets(1);

    TotalColumns = Sheet.Cells(1,1).SpecialCells(11).Column;

    TotalRows = Sheet.Cells(1,1).SpecialCells(11).Row;

    Satır İçin = 1 TotalRows Döngüsüne Göre

    • Sütun için = 1 Toplam Sütun Döngüsüyle

      Değer = Abbr(Sheet.Cells(Row,Column).Value);

      EndCycle;

    EndCycle;

Dosyanın yolunun tam olarak belirtilmesi gerektiğini unutmayın. Bir belge adını kaydederken \, /, :, *, ?, ", >, gibi karakterleri ekleyemezsiniz.< и |.

Bir 1C dosyasını Excel aracılığıyla programlı olarak açma

Verileri Excel'e kaydetmek için şunları yapmalısınız:

    veya mevcut bir belgeyi açın:

    • Kitap = Excel.WorkBooks.Open(Dosya Yolu) - 1C'den bir Excel dosyasını okumaya benzer şekilde;

    veya yeni bir tane ekleyin:

    • Çalışma Kitabı = Excel.WorkBooks.Add();

    Yeni bir belgede yeni bir sayfa oluşturabilirsiniz:

    • Sayfa = Book.Sheets.Add();

    ve hücreye yeni bir değer ekleyin:

    • Sheet.Cells(RowNumber, ColumnNumber).Value = Değer; (OLE kullanarak değer yazma yöntemleri internette ayrıntılı olarak açıklanmaktadır).

  • Book.SaveAs(FilePath);

    İstisna

    Report(ErrorDescription()+"Dosya kaydedilmedi!");

    Denemenin Sonu.

Elektronik tablo düzenleyicisiyle çalışmayı bitirdiğinizde özel komutu (Excel.Application.Quit();) kullanarak çıkın. Bu yöntem, daha fazla çalışma sırasında bilgisayar kaynaklarından tasarruf etmenize yardımcı olacaktır.

1C ile Excel arasında veri alışverişi yaparken tehlikeler

1C ve Excel farklı şirketler tarafından geliştirilmiştir ve verileri işlemenin farklı yollarını kullanır. Bu nedenle tabloları bir programdan diğerine aktarırken aşağıdaki tuzakları unutmayın:

    Kesirli sayılarda çeşitli ayırıcılar. Microsoft ondalık sayıları virgül kullanarak ayırır. Bu nedenle, bir muhasebe programından tabloları aktarırken tarihlerin bolluğuna ve diğer karışıklıklara şaşırmayın. Sadece bir muhasebe programında kesirleri yazarken bir nokta kullanılabilir, Microsoft elektronik tablo düzenleyicisi bunu tarih ayırıcı olarak yorumlayacak ve 15,5, 15 Mayıs'a dönüşecektir. Muhasebe verilerini bir elektronik tablo düzenleyicide işlemek için ayırıcının virgülle değiştirilmesi gerekecektir.

    Verileri Excel'den 1C'ye aktarırken, muhasebe programında olmayan Excel sabitleri yanlış görüntülenebilir. Bunları deşifre etmek için elektronik tablo düzenleyicisinin Yardımına veya hata ayıklama moduna gitmeniz ve çeşitli sabitlerin sayısal ifadelerini kontrol etmeniz gerekir.

Büyük miktarda veri alışverişi yapmanız gerekiyorsa veya hatalardan kurtulamıyorsanız yardım için Setby şirketinin profesyonelleriyle iletişime geçin. Sorunlarınızı program düzeyinde çözmenize ve işiniz için gerekli komutları anlamanıza yardımcı olacağız.

Çoğu zaman, potansiyel müşterilerle iletişim kurarken, ofis paketindeki tablo işlevselliğinin onlar için oldukça yeterli olduğunu ve 1C programlarında bir anlam görmediklerini duyuyorum. Bunun nedeni, bazı kişilerin bu çözümü hâlâ yalnızca muhasebecilere yönelik programlarla ilişkilendirmesidir ki bu doğru değildir.

Excel evrensel ve seri üretilen bir üründür, bununla tartışamazsınız. Dar uzmanlara yönelik 1C gelişmelerinin aksine hemen hemen herkes bu programı kullanabilir. "Yeşil" tabloları kullanarak, uygun olacak gerekli işlevselliği özgürce uygulayabilirsiniz: işte tüm karşılıklı anlaşmalar, yönetim muhasebesi, hatta düzenlenmiş olanlar, geniş bir veri görselleştirme seçimi, bağımsız olarak yeteneği ile organizasyonun finansal modeli çeşitli eklentiler kullanarak programın yeteneklerini genişletin - her şey sizin elinizde, her şey sıfırdan...

İşinize yeni başlıyorsanız, müşterilerle, tedarikçilerle, düzenleyici makamlarla ilişkilerle ilgili tablodaki gerekli verileri yavaş yavaş hesaba katarak kendi keyfi yapınızı oluşturmanız iyi olur, ancak veritabanı hacimli hale geldiğinde ve personel sayısı arttığında bundan sonra ne yapmalısınız? düzinelerce mi? Hala kendi parametrelerinize göre mi sayıyorsunuz? Ben kolaylık ile işin sistemleştirilmesine ve dolayısıyla optimizasyonuna sıklıkla müdahale eden alışkanlıkla karıştırılmaması taraftarıyım.

Açıklık sağlamak için, örneğin ticaret için muhasebe otomasyonu için hangi ihtiyaçların ortaya çıkabileceğini hayal edelim:

1. Belirli bir dönem içindeki satışların analizi.

Satış departmanı başkanı satış verilerini analiz edebilir. Planın uygulanıp uygulanmadığını, stratejilerinin ne kadar etkili olduğunu anlaması onun için önemlidir, böylece etkisizlik durumunda işte zamanında ayarlamalar yapabilir.

2. Depo muhasebesi.
Satışlar için stoktaki malların mevcudiyetini, hangi malların rezerve edilebileceğini, hangilerinin stokta olmadığını ve nelerin sipariş edilmesi gerektiğini anlamanın da önemli olduğunu açıklamama gerek var mı? Burada her şeyin açık olduğunu düşünüyorum.

3. Karşı tarafların veri tabanının bakımı.
Sahibi, B2C sektörü için tipik olan, yalnızca burada ve şimdi satın alınabilecek şeyleri satsa bile, tedarikçi tabanıyla biraz farklı bir ilişkisi vardır - sözleşmeler, birincil... Her şeyin şirketle bağlantılı olmasının ne kadar uygun olduğunu hayal edin. tedarikçi otomatik olarak tek bir veritabanında anında görüntüleniyor mu? Depodan sorumlu yönetici, depodaki malların mevcudiyetini anında görür, belgelerden sorumlu başka bir çalışan, malların mevcudiyeti, sözleşme ilişkileri kapsamındaki tüm yükümlülüklerin yerine getirilip getirilmediği, kimin kime ve ne kadar borçlu olduğu hakkındaki bilgileri izler. Tutarsızlık olması durumunda, verileri belirli bir süre için uzlaştırabilir ve bir dakikadan daha kısa sürede sonuç üretebilirsiniz.

4. Kuruluşun karı.
Gider ve gelirle ilgili tüm veriler zaten veri tabanında mevcut olduğundan kar raporu oluşturmak zor olmayacaktır. Bilgilerin zamanında, en azından gerekli tarihe kadar girilmesi şartıyla. Burada temel faktör kullanıcının kişisel sorumluluğudur.

Çok fazla müşteriniz ve tedarikçiniz yoksa, Excel size gerçekten uyacaktır, çünkü tabloda kendi diyagramlarınızı tasarlamak ve bunları doldurmak için bolca zamanınız vardır, ardından belgeleri bilgisayardaki çeşitli klasörlere dağıtabilirsiniz: sözleşmeler, tedarikçiler, istemciler, mahalledeki istemciler, geliştirilmekte olan istemciler, silinecek istemciler – bir klasör içinde klasörler oluşturmanın sonsuz ve büyüleyici süreci. Ve eğer çok fazla bilgi varsa, veritabanınızı takip etmek uygun mudur? Elbette istisnalar her zaman vardır; bazen finansal verileri yalnızca Excel'de tutulan, büyük cirosu olan kuruluşlar da vardır. Departmanlar arasında veri alışverişi ve birleştirmeleri ne kadar zaman alıyor? Cevap vereceğim: çok.

Rastgele bir sistemde düzenlenen çok sayıda Excel belgesinde ihtiyacınız olanı hızlı bir şekilde nasıl bulacağınızı hayal edemiyorum. Örneğin, vergi dairesinden gereksinimler için belgeler sağlarken. Bilgiler dağılmışken bir muhasebeci düzenleyici otoritelere nasıl rapor sunacak? Muhasebe elbette dışarıdan temin edilebilir ve ne yazık ki bazı işletme sahipleri, dengeleri dengelediği sürece belirli bir uzmanın hangi süreçlere sahip olabileceğini umursamayabilir. Peki öyle olsa bile belge alışverişi süreci nasıl organize ediliyor? Dışarıdan bir çalışan doğaçlama bilgi yapısını ne kadar çabuk anlayacak?

1C için aynı şeyi söyleyemem çünkü oradaki tüm bilgiler yapılandırılmış ve birbirine bağlıdır:

    Hem uzaktan hem de tam zamanlı çalışanlar için, tüm standart ve özel belgelerle çalışabileceğiniz tek bir veritabanı;
    Düzenleyici makamlara raporlama, halihazırda programa yansıtılan verilere dayanarak oluşturulur; nihai sonuçları elde etmek için birçok dosya açmaya, birkaç değeri tek bir tabloda birleştirmeye gerek yoktur.
İyi anlamda "1C", faaliyet alanına bağlı olarak hem tipik muhasebe görevlerini hem de tüm organizasyonel süreçleri otomatikleştirmeyi amaçlayan çok görevli bir sistemdir. Buradaki ana kelime sistemdir. Hiç kimse sizi iş sisteminizi Excel'de organize etmekten alıkoyamaz; ancak zaman ve finansal maliyetlerin optimize edilmesine yönelik neredeyse tüm ihtiyaçları karşılayan ve işinizi sistemleştirmenize yardımcı olan çözümler varken neden tekerleği yeniden icat edesiniz ki?

Excel'in savunmasında

Muhtemelen size "yeşil" tablolarda veri oluşturmaya karşı olduğumu düşündüm. Hiç de bile. Aslında ben de Excel'de sık sık bazı işler yapıyorum: keyfi hesaplamalara ihtiyacım varsa, verileri müşteriye göre bölümlere ayırmam gerekiyorsa, 1C'de olmayan parametrelere dayalı analizler yürütmem gerekiyorsa - evet, bu olur - " Excel"e giderim. Basitçe söylemek gerekirse, tablolarda hesaplamalar ve standart dışı analizler yapıyorum, ancak sonra yine de her şeyi 1C'de sistematik hale getiriyorum.

Ve sonra, 1C'den indirilen dosyaları görüntülemek için yine de Excel'e ihtiyacınız olacak, çünkü 1C'deki veriler elektronik tablolarda saklanıyor. Bunun bir kısır döngü olduğunu mu düşünüyorsunuz? Farklı söyleyeceğim: "1C" ve "Excel" iki ortak gibi yan yana gidiyor ama her birinin kendi amacı var, birbirlerini iyi tamamlıyorlar ama birbirlerinin yerine geçmiyorlar.

İşlerinizi devletimizin yasama sistemini dikkate alarak, işin özelliklerini ve odak noktasını dikkate alarak, özellikle de büyük miktarda bilgi söz konusu olduğunda sistematikleştirmeniz gerekiyorsa, o zaman 1C'ye ihtiyacınız var. Rastgele hesaplamalara, sıfırdan strateji oluşturmaya, standart dışı analitik verilerini görselleştirmeye ihtiyacınız varsa Excel hizmetinizdedir. Ancak bu çözümlerle aynı anda çalışmak çok daha uygundur.


Sonuç nedir – “1C” veya “Excel”?

Başlangıçta soru otomasyonun finansmanı ile ilgiliyse, temel 1C programları bu kadar paraya mal olmasa da Excel kullanırdım. Büyük bir artı, "yeşil" tablolardan gelen verilerin 1C'ye kayıpsız olarak yüklenebilmesidir. Ancak ölçeklendikçe iş süreçlerini otomatikleştirmeye yönelik programlara dikkat etmenizi tavsiye ederim. Birçoğu var ve mutlaka 1C olmayabilir...

Müşteriler, tedarikçiler ve denetleyici otoritelerle ilişkilerle ilgili sorunların otomatikleştirilmesi de dahil olmak üzere kaynaklarınızı optimize etmeniz gerektiğini anladığınızda "1C"ye geçiş gerçekleştirilebilir. Genel olarak, bilgilerin işlenmesinin çok zaman alacağı ve Excel dosyalarının artık girdi verilerinin hacmiyle başa çıkamayacağı durumlarda, iş verimliliğinizi artırmak için iş süreçlerinizi ayarlayın.

Ancak her "1C" sizin için uygun olmayabilir, çeşitli faktörleri dikkate almanız gerekir: işin özellikleri ve kapsamı, ölçek, günlük görev ihtiyacı, en aza indirilmesi gereken rutin. Her şey bireyseldir. Gerçek, daha önce de söylediğim gibi, "1C" ile "Excel" arasında bir yerdedir - birbirini tamamlar.

Muhtemelen hepsi bu. Ancak herhangi bir sorunuz varsa lütfen bizimle iletişime geçin, size yardımcı olmaya çalışacağız. Başarılı iş süreçleri meslektaşlarım!

Bu yöntem basittir. Onun özü, nesnenin TabloluBelge yöntemleri vardır:

  • Yaz (< ИмяФайла>, < ТипФайлаТаблицы >) verileri bir dosyaya yüklemek için;
  • Okumak (< ИмяФайла>, < СпособЧтенияЗначений >) bir dosyadan veri yüklemek için.

Dikkat!

Write() yöntemi hem istemcide hem de sunucuda kullanılabilir. Read() yöntemi yalnızca sunucu tarafında kullanılabilir. Bunu hatırlamam gerekiyor
İstemci-sunucu etkileşimini planlarken.

Bir elektronik tablo belgesini bir dosyaya kaydetme örneğine bakalım. TabularDocument nesnesini herhangi bir şekilde oluşturup doldurmak gereklidir ve boşaltma dosyaya yalnızca bir satırla yapılır:

SekmeDoc . Write(FilePath, TabularDocumentFileType.XLSX);

Burada SekmeDoc- oluşturulan elektronik tablo belgesi, Dosyanın yolu— yüklenecek dosyanın adı, TabularDocumentFileType.XLSX— oluşturulan dosyanın formatı. Aşağıdaki Excel biçimleri desteklenir:

  • XLS95 - Excel 95 formatı;
  • XLS97 - Excel 97 formatı;
  • XLSX bir Excel 2007 formatıdır.

TabDoc = Yeni TabularDocument;
SekmeDoc . Read(PathToFile, ReadingTabularDocumentValues.Value Yöntemi);

Burada Dosyanın yolu— indirilen Excel dosyasının yolu. Tablolu Bir Belgenin Değerlerini Okuma Yöntemi.Value Kaynak belgeden okunan verilerin nasıl yorumlanması gerektiğini belirler. Mevcut seçenekler:

  • Anlam;
  • Metin.

OLE aracılığıyla değişim

OLE otomasyon teknolojisi aracılığıyla değişim, Excel dosyalarıyla programlı olarak çalışmak için belki de en yaygın seçenektir. Excel'in sağladığı tüm işlevleri kullanmanıza olanak tanır ancak diğer yöntemlere göre daha yavaştır. OLE aracılığıyla alışveriş yapmak için MS Excel kurulumu gereklidir:

  • Son kullanıcının bilgisayarında, eğer değişim istemci tarafında gerçekleşiyorsa;
  • 1C:Enterprise sunucu bilgisayarında, eğer değişim sunucu tarafında gerçekleşirse.

Örnek boşaltma:

// Bir COM nesnesi oluştur
Excel = Yeni COMObject("Excel.Application");
// Uyarıları ve soruları devre dışı bırak
excel . DisplayAlerts = Yanlış;
// Yeni bir kitap oluştur
Kitap = Excel'dir. Çalışma Kitapları. Eklemek();
// İlk sayfadaki konum
Çarşaf = Kitap. Çalışma Sayfaları(1);

//Hücreye bir değer yazıyoruz
Çarşaf . Hücreler(RowNumber, ColumnNumber). Değer = HücreDeğeri;

// Dosya 'yı kaydet
Kitap . Farklı Kaydet(DosyaAdı);


excel . Çıkış yapmak();
Excel = 0;

Örnekler okuma:

// -- SEÇENEK 1 --

// Bir COM nesnesi oluştur
Excel = Yeni COMObject("Excel.Application");
// Bir kitap aç
Kitap = Excel'dir. Çalışma kitapları. Açık( Dosyanın yolu);

Çarşaf = Kitap. Çalışma Sayfaları(1);

// Kitabı kapatıyorum
Kitap . Kapat(0);

// Excel'i kapatın ve belleği boşaltın
excel . Çıkış yapmak();
Excel = 0;

// -- SEÇENEK 2 --

// Bir kitap aç
Kitap = GetCOMObject( Dosyanın yolu);
// İstenilen sayfaya konumlandırma
Çarşaf = Kitap. Çalışma Sayfaları(1);

// Hücre değerini okuyun, genellikle hücre geçiş döngüsü burada bulunur
Hücre Değeri = Sayfa. Hücreler(RowNumber, ColumnNumber). Değer;

// Kitabı kapatıyorum
Kitap . Başvuru. Qui T();

İçin kalp ameliyati Excel çalışma sayfasının tamamlanan tüm satırları için aşağıdaki teknikleri kullanabilirsiniz:

// -- SEÇENEK 1 --
Satır Sayısı = Sayfa. Hücreler(1 , 1 ). Özel Hücreler(11). Sıra;
RowNumber için = 1 Satır Sayısına Göre Döngü
Hücre Değeri = Sayfa. Hücreler(RowNumber, ColumnNumber). Değer;
EndCycle;

// -- SEÇENEK 2 --
SatırNumarası = 0;
Hakikat Döngüsü devam ederken
SatırNumber = SatırNumber + 1 ;
Hücre Değeri = Sayfa. Hücreler(RowNumber, ColumnNumber). Değer;
ValueFilled DEĞİLSE(CellValue) Daha sonra
İptal;
endIf;
EndCycle;

Sayfanın tüm satırlarını sırayla geçmek yerine, tüm verileri bir diziye aktar ve onunla çalış. Büyük miktarda veri okurken bu yaklaşım daha hızlı olacaktır:

Toplam Sütunlar = Sayfa. Hücreler(1 , 1 ). Özel Hücreler(11). Kolon;
Toplam Satır Sayısı = Yaprak. Hücreler(1 , 1 ). Özel Hücreler(11). Sıra;

Bölge = Yaprak. Range(Sheet. Cells(1, 1), Sheet. Cells(TotalRows,TotalColumns));
Veri = Bölge. Değer. Boşalt();

Aşağıdaki tablo, OLE aracılığıyla Excel ile çalışmaya yönelik en popüler özellikleri ve yöntemleri göstermektedir:

Aksiyon Kod Bir yorum
Uygulamayla çalışma
Uygulama penceresi görünürlüğünü ayarlama excel . Görünür= Yanlış;
Uyarı çıkış modunun ayarlanması (görüntüleme/görüntülememe) excel . Uyarıları Görüntüle= Yanlış;
Uygulamayı kapatma excel . Çıkış yapmak();
Bir kitapla çalışmak
Yeni bir kitap oluşturma Kitap = Excel'dir. Çalışma Kitapları. Eklemek();
Mevcut bir çalışma kitabını açma Kitap = Excel'dir. Çalışma Kitapları. Aç(DosyaAdı);
Bir kitabı kaydetme Kitap . Farklı Kaydet(DosyaAdı);
Kitabı kapatmak Kitap . Kapat(0);
Bir sayfa ile çalışma
Geçerli sayfayı ayarlama Çarşaf = Kitap. Çalışma Sayfaları(Sayfa Numarası);
Adı ayarlama Çarşaf . Ad = Ad;
Korumayı ayarlama Çarşaf . Korumak();
Korumanın kaldırılması Çarşaf . Korumayı Kaldır();
Sayfa yönünü ayarlama Çarşaf . Sayfa ayarı. Yön = 2; 1 - portre, 2 - yatay
Sol kenarlığı ayarlama Çarşaf . Sayfa ayarı. LeftMargin = Excel. SantimetreToPoint(Santimetre));
Üst limitin ayarlanması Çarşaf . Sayfa ayarı. TopMargin = Excel. SantimetreToPoint(Santimetre));
Doğru sınırı ayarlama Çarşaf . Sayfa ayarı. RightMargin = Excel. SantimetreToPoint(Santimetre));
Alt limitin ayarlanması Çarşaf . Sayfa ayarı. BottomMargin = Excel. SantimetreToPoint(Santimetre));
Satırlar, sütunlar ve hücrelerle çalışma
Sütun Genişliğini Ayarlama Çarşaf . Sütunlar(ColumnNumber). Sütun Genişliği = Genişlik;
Bir satırı sil Çarşaf . Satırlar(RowNumber). Silmek();
Bir sütunu kaldırma Çarşaf . Sütunlar(ColumnNumber). Silmek();
Hücreyi silme Çarşaf . Hücreler(RowNumber, ColumnNumber). Silmek();
Değerin ayarlanması Çarşaf . Hücreler(RowNumber, ColumnNumber). Değer = Değer;
Hücreleri birleştirme Çarşaf . Range(Sheet. Cells(RowNumber, ColumnNumber), Sheet. Cells(RowNumber1, ColumnNumber1)). Birleştirmek();
Yazı tipini ayarlama Çarşaf . Hücreler(RowNumber, ColumnNumber). Yazı tipi. Ad = Yazı TipiAdı;
Yazı tipi boyutunu ayarlama Çarşaf . Hücreler(RowNumber, ColumnNumber). Yazı tipi. Boyut = Yazı Tipi Boyutu;
Kalın yazı tipini ayarlama Çarşaf . Hücreler(RowNumber, ColumnNumber). Yazı tipi. Gözü pek = 1 ; 1 - kalın, 0 - normal
İtalik ayarı Çarşaf . Hücreler(RowNumber, ColumnNumber). Yazı tipi. İtalik = 1 ; 1 - italik, 0 - normal
Altı çizili yazı tipini ayarlama Çarşaf . Hücreler(RowNumber, ColumnNumber). Yazı tipi. Altını çizmek = 2 ; 2 - altı çizili, 1 - değil

Hangi özelliğin değiştirilmesi gerektiğini veya hangi yöntemin çağrılacağını öğrenmek için kullanabilirsiniz. makrolar Excel. Gerekli eylemleri içeren bir makro kaydederseniz, kaydedilen makronun VBA koduna bakabilirsiniz.

COMSafeArray'i kullanma

1C'den Excel'e büyük miktarda veri indirirken, hızlandırmak için nesneyi kullanabilirsiniz. COMSafeArray. Sözdizimi asistanındaki tanıma göre COMSafeArray, çok boyutlu bir dizi üzerinde bir nesne sarmalayıcıdır Güvenli Dizi COM'dan. COM nesneleri arasında veri alışverişi için SafeArray oluşturmanıza ve kullanmanıza olanak tanır. Basitçe söylemek gerekirse, OLE teknolojisini kullanan uygulamalar arasında alışveriş yapmak için kullanılabilecek bir değerler dizisidir.

// COMSafeArray'i oluştur
ArrayCom = Yeni COMSafeArray("VT_Variant" , TotalColumns, TotalRows);
// COMSafeArray'i doldur
İçin Sayfa = 0 ToplamSatırlara Göre - 1 Döngü
İçin Sayı = 0 Toplam Sütun - 1 Döngü
DiziCom . SetValue(Sayı, Sayfa, Değer);
EndCycle;
EndCycle;
// COMSafeArray'den değerlere bir Excel çalışma sayfası alanı atama
Çarşaf . Aralık(Sayfa. Hücreler(1, 1), Sayfa. Hücreler(ToplamSatırlar,ToplamSütunlar)). Değer = ArrayCom;

ADO aracılığıyla değişim

ADO aracılığıyla değiştirildiğinde bir Excel dosyası, SQL sorguları kullanılarak erişilebilen bir veritabanıdır. MS Excel'in kurulumu gerekli değildir ancak erişimin sağlanacağı bir ODBC sürücünüz olması gerekir. Kullanılan ODBC sürücüsü, dosyaya bağlantı dizesi belirtilerek belirlenir. Genellikle gerekli sürücü bilgisayarda zaten yüklüdür.

ADO yoluyla değişim, OLE yoluyla değişimden belirgin şekilde daha hızlıdır, ancak yükleme sırasında hücreleri tasarlamak, sayfaları düzenlemek, formülleri ayarlamak vb. için Excel işlevselliğini kullanmak mümkün değildir.

Örnek boşaltma:


Bağlantı = Yeni COMObject("ADODB.Connection");


Birleştirmek . BağlantıDizesi = "

|Veri Kaynağı=" + DosyaAdı + ";
;
Birleştirmek . Açık(); // Bir bağlantı aç

// Komut için bir COM nesnesi oluşturun
Komut = Yeni COMObject("ADODB.Command");
Takım

// Tablo oluşturmak için komut metni atama
Takım . Komut Metni = "CREATE TABLE [Sayfa1] (Sütun1 char(255), Sütun2 tarihi, Sütun3 int, Sütun4 kayan nokta)";
Takım . Uygulamak(); // Komutu yürüt

// Tablo satırı eklemek için komut metni atama
Takım . Komut Metni = "INSERT INTO [Sayfa1] (Sütun1, Sütun2, Sütun3, Sütun4) değerleri ('abvwhere', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // Komutu yürüt

// Komutu kaldırın ve bağlantıyı kapatın
Komut = Tanımsız;
Birleştirmek . Kapalı();
Bağlantı = Tanımsız;

Yeni bir sayfa oluşturmak ve yapısını oluşturmak için nesneleri kullanabilirsiniz. ADOX.Katalog Ve ADOX.Tablo. Bu durumda kod şöyle görünecektir:

// Kitapla çalışmak için bir COM nesnesi oluşturun
Kitap = Yeni COMObject("ADOX.Catalog");
Kitap . ActiveConnection = Bağlantı;

// Sayfadaki veri yapısıyla çalışacak bir COM nesnesi oluşturun
Tablo = Yeni COMObject("ADOX.Table");
Masa . İsim = "Sayfa1";
Masa . Sütunlar. Append("Sütun1", 202);
Masa . Sütunlar. Append("Sütun2", 7);
Masa . Sütunlar. Append("Sütun3", 5);
Masa . Sütunlar. Append("Sütun4", 5);

// Çalışma kitabında açıklanan yapıya sahip bir sayfa oluşturun
Kitap . Tablolar. Ekle(Tablo);
Tablo = Tanımsız;
Kitap = Tanımsız;

Yukarıdaki örnekte yöntemde

Masa . Sütunlar. Ekle(“Sütun1”, 202);

ikinci parametre sütun tipini belirtir. Parametre isteğe bağlıdır; burada bazı sütun türü değerleri verilmiştir:

  • 5 - adDouble;
  • 6 - reklam para birimi;
  • 7 - adDate;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

Örnek okuma:

// Bağlantı için bir COM nesnesi oluşturun
Bağlantı = Yeni COMObject("ADODB.Connection");

// Bağlantı dizesini ayarlayın
Birleştirmek . BağlantıDizesi = "
|Sağlayıcı=Microsoft.ACE.OLEDB.12.0;
|Veri Kaynağı=" + DosyaAdı + ";
|Genişletilmiş Özellikler=""Excel 12.0 XML;HDR=EVET"";";
Birleştirmek . Açık(); // Bir bağlantı aç

// Seçimi alacak bir COM nesnesi oluşturun
Seç = Yeni COMObject("ADODB.Recordset");
İstek Metni = "[Sayfa1$]'DAN * SEÇİN";

// İsteği yürüt
Örnek . Aç(QueryText, Bağlantı);

// Örnek sonucunu atla
Henüz bir seçim değil. EOF() Döngüsü
Sütun1 değeri = Seçim. Alanlar. Öğe ("Sütun1"). Değer ; // Sütun adına göre erişim
Sütun2Değeri = Seçim. Alanlar. Öğe(0). Değer; // Sütun indeksine göre erişim
Örnek . MoveNext();
EndCycle;

Örnek . Kapalı();
Örnek = Tanımsız;
Birleştirmek . Kapalı();
Bağlantı = Tanımsız;

Bağlantı dizesinde parametre HDR sayfanın ilk satırının nasıl algılanacağını belirler. Olası seçenekler:

  • EVET - ilk satır sütun adları olarak kabul edilir. Değerlere isim ve sütun indeksi ile ulaşılabilir.
  • HAYIR - ilk satır veri olarak değerlendirilir. Değerlere yalnızca sütun indeksi ile ulaşılabilir.

Bu örnekler yalnızca birkaç ADO nesnesini kapsamaktadır. ADO nesne modeli aşağıdaki nesnelerden oluşur:

  • bağlantı;
  • Emretmek;
  • kayıt kümesi;
  • Kayıt;
  • Alanlar;
  • Aktarım;
  • Hatalar;
  • parametreler;
  • Özellikler.

Programlamadan yükleme

Verileri 1C'den Excel'e kaydetmek için programlamaya başvurmanız her zaman tavsiye edilmez. Kullanıcı, Kurumsal modda indirme için gereken verileri görüntüleyebiliyorsa, bunlar programlamaya gerek kalmadan Excel'e kaydedilebilir.

Bir elektronik tablo belgesini (örneğin bir raporun sonucunu) kaydetmek için şu komutu çağırabilirsiniz: Kaydetmek veya Farklı kaydet… ana menü.

Açılan pencerede kaydedilen dosyanın dizinini, adını ve biçimini seçmeniz gerekir.

Dinamik listelerden (örneğin bir öğe listesi) verileri kaydetmek için şunları yapmanız gerekir:

  1. Komutu kullanarak verileri bir elektronik tablo belgesine çıkarın Daha fazlası ⇒ Listele...;
  2. Elektronik tablo belgesini gerekli formatta kaydedin.

1C'de MS Excel dosyalarıyla çalışmanın 2 yolu vardır: bir COM nesnesi aracılığıyla ve bir elektronik tablo belge nesnesi kullanan yerleşik 1C araçları aracılığıyla. Bu yöntemlerin her ikisine de daha ayrıntılı olarak bakalım.

1. Bir COM nesnesi üzerinde çalışın.

Bu yöntem, MS Excel'in yüklü olmasını gerektirir ve sunucuda bir dosyayla çalışıyorsanız, sunucuda MS Excel'in yüklü olması gerekir, istemcide ise istemci tarafında da MS Excel'in yüklü olması gerekir.

Örnek (makalenin sonunda metin halinde görebilirsiniz):

COM nesnesi "Excel.Application" tarafından sağlanan tüm nesnelerin, yöntemlerin ve özelliklerin, MS Office programlama dili olan VBA'nın nesneleri, yöntemleri ve özellikleri olduğuna dikkat edilmelidir.

Not:

Bazen mevcut bir şablonla çalışmanız gerekir. Daha sonra bu şablonu gerekli tüm kullanıcıların erişebileceği bir yere saklamamız gerekiyor. Ancak daha basit bir çözüm var; şablonu ikili düzen olarak kaydedin.

2. Tablo Belgesi 1C üzerinde çalışın.

1C elektronik tablo belgesi, platform 8'den başlayarak kayıt için MS Excel formatını destekler, ancak yalnızca platform 8.3.6'dan itibaren açma için. Üstelik açıldığında tüm sayfalar tek bir elektronik tablo belgesine yüklenir. Sürüm 8.3.10'dan itibaren yükleme sırasında farklı sayfalar farklı alanlar olarak yüklenir.

Örnek bir giriş çok basittir ve özel bir dikkat gerektirmez:

Ancak burada bir sorunumuz var. Bir Excel çalışma kitabında 1C'den kayıt yaparken, sayfa adlarının görüntülenmesi varsayılan olarak devre dışıdır.

Bu sorun 2 şekilde çözülebilir, 1 - kitabın kendisinde, sayfaların ayarlarda görüntülenmesini etkinleştirin (tüm kullanıcılar bunu yapmayı kabul etmeyecektir), 2 - bunu bir COM nesnesi aracılığıyla yapın (yine MS Excel'in kurulu olmasına ihtiyacımız var) ).

Bu küçük eklemeden sonra MS Excel dosyasında sayfa etiketleri görünecektir.

Okuma yöntemi yalnızca sunucuda veya kalın istemcide mevcut olduğundan MS Excel'i okumak o kadar kolay bir iş değildir. Bunun için MS Excel dosyasını sunucuya aktarmamız gerekiyor.

&İstemcide

Prosedür CreateDocument()

İstisna

Deneme Sonu;

Kitap = Excel.WorkBooks.Add(); //Yeni bir MS Excel çalışma kitabı oluştur

Sayfa = Book.WorkSheets.Add(); //Sayfa ekle

Sheet.Name = "1C'den örnek"; //Sayfa adını belirledik

Sheet.Cells(1,1).Value = "Bir formül oluşturalım";!}

Sheet.Cells(2,1).Value = 1;

Sheet.Cells(2,2).Value = 2;

Sheet.Cells(2,3).Formula = "=A2+B2";

Sheet.Cells(3,1).Value = CurrentDate();

Book.SaveAs("C:\1\Test.xlsx");

Book.Close();

Prosedürün Sonu

&Sunucuda

İşlev GetLayoutServer()

Return FormAttributesValue("Object").GetLayout("TemplateForUpload"); //Bu şekilde harici işleme düzenini elde ediyoruz;

Son Fonksiyon

&İstemcide

Prosedür Çalışması()

Excel = Yeni COMObject("Excel.Application");

İstisna

Report("Excel bileşenine bağlanma denemesi başarısız oldu. Excel bu bilgisayara yüklenmemiş olabilir!");

Deneme Sonu;

Düzen = GetLayoutServer();

Layout.Write(GeçiciDosyaAdı);

Bir sorunuz mu var veya bir danışmanın yardımına mı ihtiyacınız var?

Kitap = Excel.WorkBooks.Open(GeçiciDosyaAdı);

SheetTemplate = Book.WorkSheets(1);

SheetTemplate.Cells(6,1).Value = "Date:";!}

SheetTemplate.Cells(6,2).Value = CurrentDate();

SheetTemplate.NumberFormat = "gg/aa/yy;@"; // Tarih formatını verin, bu format MS Excel'de bir makro kaydedilerek elde edildi

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // Tarih tam olarak sığacak şekilde sütunu genişletin

Book.SaveAs(DosyaAdı);

Book.Close();

Prosedürün Sonu

&İstemcide

Prosedürün Sonu

&İstemcide

Prosedür WriteTabularDocument()

TabularDocument = Yeni TabularDocument();

TabularDocument.Area("R1C1").Text = "1C'den MS Excel'deki bir kayıt örneği";

TabularDocument.Write("C:\1\Test2.xls",TabularDocumentFileType.XLSX);

Excel = Yeni COMObject("Excel.Application");

Excel.WorkBooks.Open("C:\1\Test2.xls");

Excel.Visible = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0,6;

Excel.ActiveWorkbook.Save();

Excel.Application.Quit()

Prosedürün Sonu

İkili Veri = Yeni İkili Veri("C:\1\test2.xlsx");

Adres=PlaceInTemporaryStorage(BinaryData,ThisForm.UniqueIdentifier) ​​​​;

TabularDocument = UploadOnServer(Adres);

TabularDocument.Show();

Prosedürün Sonu

&Sunucuda

İşlev UploadOnServer(Adres)

TemporaryFileName = GetTemporaryFileName("xlsx");

FileData = GetFromTemporaryStorage(Adres);

FileData.Write(GeçiciDosyaAdı);

TabularDocument = Yeni TabularDocument();

TabularDocument'ı döndür;