Thứ Hai, 13 tháng 4, 2015

Kỳ 1: Phát triển công cụ tích hợp giải pháp 1C với gian hàng trực tuyến (kết nối trực tiếp website với 1C)

Trong chuỗi bài viết này, các chuyên gia công nghệ của Bitrix chia sẻ một số kinh nghiệm khi tiến hành xây dựng công cụ tích hợp giữa hệ thống quản trị Web (CMS) của Bitrix với giải pháp Back-office của 1C. Hiện nay, công cụ này có tính đa năng và đã được đóng gói sẵn trong CMS Bitrix và 1C. Như vậy, việc tích hợp Website và 1C đã trở nên đơn giản hơn bao giờ hết. 

Làm thế nào để luôn đảm bảo cho danh sách hàng hóa và số lượng hàng tồn trên Website luôn được cập nhật, việc xử lý đơn hàng của khách được thực hiện theo đúng như quy trình nghiệp vụ được quy định trong doanh nghiệp? Rất nhiều chủ gian hàng trực tuyến (cửa hàng trên Internet) đã va chạm đến bài toán này.

Tích hợp một gian hàng trực tuyến với hệ thống kế toán của doanh nghiệp, nói chung không phải là một công việc quá phức tạp. Nhưng để tạo ra một cơ chế tích hợp một giải pháp CMS đóng gói và sao cho việc này trở nên đơn giản và dễ hiểu khi ứng dụng đại trà, đồng thời đảm bảo tính đa năng cho nhiều nhiệm vụ khác nhau thì lại là bài toán không hề đơn giản, nhưng rất hấp dẫn. Trong bài viết này, chúng tôi sẽ mô tả kinh nghiệm triển khai công cụ tích hợp gian hàng trực tuyến với hệ thống giải pháp 1C:DOANH NGHIỆP.


Trước tiên, chúng tôi sẽ nói về việc lựa chọn kiến trúc và kỹ thuật của giải pháp, và cuối cùng để biết được xem cách tùy chỉnh và làm việc của cơ chế tích hợp này.

Thường thì rất nhiều các gian hàng trực tuyến được tạo ra để bổ sung cho các kênh bán hàng sẵn có: cửa hàng, điểm bán hàng, bán hàng đại lý… Và thông thường thì tất cả các kênh đều hợp nhất vào một hệ thống kế toán chung hoặc hệ thống ERP mà trong đó có thực hiện các quy trình nghiệp vụ chính của công ty:
  • quản lý danh mục hàng hóa;
  • bán hàng và mua hàng;
  • tài chính, báo cáo, phân tích…
Trong trường hợp này sẽ phát sinh ra một vấn đề nóng bỏng là để làm sao cho gian hàng trực tuyến được tích hợp với hệ thống kế toán hoặc hệ thống ERP của doanh nghiệp.

Điều đầu tiên và quan trọng nhất khi tích hợp là ý thức được mục đích và nhiệm vụ cần giải quyết. Và sau đó từ đây thì mới lên kế hoạch thực thi, xem cần chuyển dữ liệu gì và và chuyển như thế nào:
  • đảm bảo kết xuất danh mục hàng hóa (mà đã nhập trong ERP) lên Website và duy trì tính thiết thực của danh mục này;
  • chuyển đơn hàng với các thông tin cần thiết từ Website vào ERP;
  • thông báo cho khách hàng về tiến trình thực hiện đơn hàng của khách mà đã được xử lý trong ERP. 
Tất cả đều rất hợp lý và đơn giản. Nhưng các bạn có lẽ sẽ đồng ý rằng, rất nhiều người trong số bạn đều đã chứng kiến một điều, đó là Website đang sống trong một cuộc sống riêng, còn hệ thống kế toán thì cũng có riêng cho mình một cuộc sống. Khi đặt hàng ở gian hàng trực tuyến, sau cuộc gọi từ phía người quản lý bán hàng thì chúng ta mới phát hiện ra rằng, trong kho đã hết mất mặt hàng cần đặt, còn đơn giá hay tỷ giá ngoại tệ thì không đúng với thực tế, hoặc trên Website đã đăng tải hàng hóa không đúng như đóng gói, hoặc là với hình vẽ có màu khác.

Tất nhiên, đối với cửa hàng như vậy chỉ có thể có chung một kết quả như sau: với tâm trạng thất vọng và bức xúc, khách hàng sẽ khó có được mong muốn quay trở lại đây một lần nữa, cho dù có rất nhiều cố gắng chăm sóc từ phía người quản lý bán hàng.


Việc này đã xảy ra vào năm 2007. Cùng với việc phổ cập các gian hàng trực tuyến và mức độ tăng nhanh về nhu cầu đối với bài toán tích hợp thì chúng tôi, những người phát triển hệ thống CMS hiểu ra rằng, cần phải đề xuất cho khách hàng một giải pháp đóng gói và có độ tin cậy cao để giải quyết bài toán tích hợp như vậy: đơn giản trong tùy chỉnh và sử dụng.

Nhiệm vụ đầu tiên: cần lựa chọn hệ thống Back-office nào để xây dựng giải pháp tích hợp? Tại thời điểm đó, và cũng như hiện tại, giải pháp phổ dụng nhất ở Nga là nền tảng công nghệ 1C:DOANH NGHIỆP, và phần lớn khách hàng đều muốn tích hợp Website của mình với 1C. Trong phần giải quyết bài toán thương mại, nhu cầu lớn nhất là cấu hình 1C:Quản lý thương mại. Và việc tích hợp đã được tiến hành chính cho giải pháp này.

Tất nhiên, tất cả những gì được viết ra ở đây đều có thể áp dụng cho việc giải quyết bài toán tích hợp của các giải pháp ERP và CMS khác. Nhưng phương pháp và ý tưởng là điều quan trọng, bởi vì nó mang tính đa năng, và mã nguồn đã dùng đều có thể tùy biến cho mọi tình huống.

Nhiệm vụ ngày càng được chi tiết hóa và chúng tôi đã bắt đầu công việc. Để bắt đầu, cần phải xác định xem cần có kiến trúc tương tác như thế nào. Nói chung, ở đây có 2 cách tiếp cận (phương pháp):
  1. Kết nối trực tiếp Website đến 1C.
  2. Trao đổi định kỳ giữa 1C và Website.
Chúng ta cùng thử xem phương pháp thứ 1: kết nối trực tiếp từ Website đến 1C

Khi áp dụng phương pháp này, khi cần thiết, Website sẽ gửi 1 truy vấn đến 1C hoặc gửi đi dữ liệu cho 1C.
Cần lưu ý rằng, việc hiển thị danh mục hàng hóa trên Internet và đặt hàng trực  tuyến hoàn toàn có thể được thực hiện mà không cần phải có CMS, bởi vì 1C đã có tính năng như vậy, ví dụ như Web-extension, hoặc nền tảng công nghệ 1C:DOANH NGHIỆP phiên bản 8.2 với công nghệ “Managed application” mà cho phép chuyển các tính năng cục bộ của giải pháp 1C lên Website. 

Đây là ví dụ điển hình của phương pháp thứ nhất mà có một số ưu điểm, cũng như nhược điểm cho bài toán của chúng ta.
Các ưu điểm rất dễ dàng nhận thấy:
  • danh mục hàng hóa luôn được cập nhật ở chế độ thời gian thực;
  • xuất hiện tức thời các đơn hàng mới ở 1C sau khi khách hàng đặt trên Website;
  • thông báo nhanh chóng cho khách hàng về kết quả xử lý đơn hàng;
Để chọn làm giao diện tương tác giữa Website và 1C, thường sử dụng công nghệ Web-service (công nghệ này có tính đa nền tảng và là chuẩn được thừa nhận rộng rãi để tích hợp các hệ thống khác nhau).

Khi đó, tại 1C cần đăng tải Web-service với bộ các phương thức, còn Website sẽ “gõ cửa” đều đều theo thời gian: lấy đi và chuyển lại dữ liệu. Tất cả đều có vẻ rất chuẩn. NHƯNG… phương pháp đầy tính công nghệ này trên thực tế rất tiếc lại không được phổ biến rộng rãi. Theo chúng tôi, có một số nguyên nhân sau đây:

1. Phức tạp trong việc tùy chỉnh để sử dụng đại trà

Để có thể đăng tải Web-service, cần phải thiết lập Web-server, viết lại mã nguồn kết nhập của mô-đun mở rộng, và đăng tải chính Web-service đó. Nếu có ai đó nói rằng: “điều này hoàn toàn không khó, là chuyện nhỏ” thì nói chung đó là ý kiến đúng. Trong 1C thậm chí đã có cả hàm để đăng tải Web-service trên Web-server. NHƯNG… cuộc sống vẫn là cuộc sống, đối với những người sử dụng đại trà, những người không phải là lập trình viên thì cảm thấy rất phức tạp và khó hiểu. Còn khi bắt đầu xuất hiện các vấn đề như: Web-service không làm việc, nhìn ngoài thì không thấy gì, không khởi tạo được người sử dụng, không đủ quyền truy cập… thì mọi người mới bắt đầu thấy choáng váng. Ngoài ra, nếu như doanh nghiệp có quy mô lớn thì cần phải huy động đến chuyên gia công nghệ.

2. Tính phụ thuộc Website vào 1C

Hệ thống kế toán theo nhiều nguyên nhân khác nhau có thể không làm việc: đang cập nhật phần mềm, thay đổi thiết bị, phục hồi từ bản sao lưu dự phòng… Trong khoảng thời gian này, Website sẽ có thể làm việc không chuẩn xác, bởi vì hoàn toàn gắn kết với 1C. Tất nhiên, bạn có thể tính đến các tình huống này và tạo thêm các công cụ bảo vệ nhất định cho Website mà có thể tính đến một số tình huống có lỗi của cơ sở dữ liệu. Nhưng điều này lại buộc phải viết thêm mã nguồn, thêm các thủ thuật lô-gic mà sẽ làm phức tạp hóa hệ thống Web.

3. Tính phụ thuộc của 1C vào Website

Một gian hàng trực tuyến có tiếng thường có nhiều khách ghé thăm, có mức tải lớn, nhiều đơn hàng trong một đơn vị thời gian. Nếu như Website cần phải thường xuyên chui vào 1C để lấy ra danh mục hàng hóa, bảng giá và số lượng hàng tồn thì tất cả mọi thứ đều rất chậm! Web-service là cơ chế thuận tiện, đầy tính công nghệ nhưng không phải là phương pháp trao đổi nhanh. Và ngay cả trong trường hợp khi mà Server 1C được chạy trên thiết bị khá tốt. Còn khi Website có mức tải cao điểm thì có thể làm tê liệt hoàn toàn công việc của cơ sở dữ liệu. Tất nhiên, danh mục hàng hóa có thể để trong bộ nhớ đệm trung gian (Cach) và truy vấn đến đó theo từng thời điểm, nhưng, thứ nhất, sẽ mất đi ưu việt của phương pháp này (chế độ thời gian thực), và thứ hai, còn có một một đề khá lớn nữa theo cách nhìn của chúng tôi: đó là yếu tố TÂM LÝ…  

4. Đe dọa tiềm tàng từ phía Website 

Cùng nhớ lại rằng, 1C là hệ thống kế toán và quản lý chính của doanh nghiệp, trong đó có lưu toàn bộ cuộc sống của doanh nghiệp. Chương trình “1C:Quản lý thương mại” thường được tích hợp với “1C:KẾ TOÁN”, “1C:Nhân sự và tiền lương”. Còn có giải pháp tổng thể, trong đó có tất cả trong 1 gói. Thường thì vấn đề bảo mật của hệ thống này giống như để trên đầu kim, và cách giải quyết khá đơn giản: ngắt bỏ dây cáp “với Internet” ra khỏi Server (phương pháp vật lý, nếu theo như cách nói khoa học). Bây giờ, thử tưởng tượng xem, Bạn đang đứng ở vị trí nhà lãnh đạo mà được nghe thông báo rằng, bây giờ Website sẽ thường xuyên chui vào 1C để lấy ra dữ liệu: ghi, nhận, cập nhật. Như chúng ta đã biết, Website không chui trực tiếp vào 1C mà chỉ thông qua Web-service, nơi mà chỉ có một số quyền với mức độ hạn chế, tuy nhiên dù sao thì như thế cũng sẽ rất khó có thể chấp nhận được. Tại sao vậy? Website có thể bị tấn công và nhiễm vi-rút, đồng thời lại CÓ QUYỀN TRUY CẬP TỚI 1C? Ôi, thế thì phải giải tán ngay…!?

Bởi vậy, chúng tôi đã áp dụng phương pháp thứ hai. 
Việc trao đổi định kỳ giữa 1C và Website như thế nào sẽ được đề cập trong bài viết kỳ 2.

Không có nhận xét nào:

Đăng nhận xét