Gửi tin nhắn qua API VK bằng PHP dành cho người lười biếng. Tin nhắn cá nhân cho cộng đồng VKontakte

Bài viết tiếp nối chuỗi bài “Những bước đầu phát triển trên 1C”.

Trong đó, chúng ta sẽ xem xét các phương pháp thông báo cho người dùng có trong nền tảng 1C:Enterprise 8, đồng thời tập trung sự chú ý của bạn vào một số tính năng hoạt động của các cơ chế này, những tính năng này có liên quan đến phương thức sử dụng phương thức này; .

Khả năng ứng dụng

Bài viết thảo luận về chức năng:

  • Giao diện trong phiên bản “Phiên bản 8.2” dành cho cấu hình được phát triển trên nền tảng 1C:Enterprise 8.2.19.130
  • Giao diện taxi dành cho cấu hình được phát triển trên nền tảng 1C:Enterprise 8.3.4.496 đến 8.3.9+
  • Giao diện taxi cho cấu hình được phát triển trên nền tảng 1C:Enterprise 8.3.10-8.3.11

Cách hiển thị thông báo tới người dùng trong 1C

Hiển thị thông báo ở chế độ người dùng giải quyết được một số vấn đề:

  • phản ánh tiến trình của quy trình hiện tại (hiển thị giai đoạn thực hiện quy trình; hiển thị các giá trị tính toán thu được trong quá trình vận hành thuật toán);
  • hiển thị lỗi cho người dùng để có thể sửa chữa;
  • đưa ra khuyến nghị;

Các loại tin nhắn:

  • bộ kết thúc, dừng việc thực thi chương trình và không cho phép nó tiếp tục cho đến khi người dùng đọc thông báo này và thực thi hành động nhất định. Ví dụ: trên màn hình, người dùng sẽ thấy một câu hỏi mà họ cần trả lời Có hoặc Không. Cho đến khi người dùng phản hồi, chương trình sẽ không thực thi hành động hơn nữa;
  • thông báo giới thiệu được hiển thị đơn giản cho người dùng và cho phép làm việc tiếp theo (tức là được sử dụng trong chế độ cảnh báo).

Thông báo chấm dứt phải là thông báo lỗi và thông báo giới thiệu: khuyến nghị, thông báo về giai đoạn hiện tại của quy trình và hiển thị các giá trị được tính toán (in gỡ lỗi).

Tin nhắn giới thiệu nhằm mục đích cung cấp cho người dùng một số thông tin.

Người dùng cần phải làm quen với nó và có thể thực hiện một số hành động được mô tả trong thông báo này.

Điều rất quan trọng là người dùng thực sự đọc những tin nhắn này, vì vậy chúng chỉ nên chứa những thông tin quan trọng.

Thông báo kiểm tra và gỡ lỗi không nên được gửi tới người dùng, bởi vì sớm hay muộn anh ấy sẽ bắt đầu bỏ qua hoàn toàn mọi tin nhắn.

Trong khái niệm về giao diện được quản lý, cách tiếp cận đưa ra thông báo đã thay đổi phần nào. Bây giờ nó được gắn với hình thức mà nó bắt nguồn. Nó không còn có thể được đóng lại để văn bản hoàn toàn vô hình.

Bạn không thể bỏ ghim hộp thông báo khỏi biểu mẫu.

Cú pháp hàm:

Báo cáo (<Текст сообщения>, <Статус>)

Những thứ kia. tham số đầu tiên là chính văn bản.

Tham số thứ hai (trạng thái tin nhắn) là tùy chọn. Bạn có thể chỉ định giá trị cho trạng thái: Bình thường, Quan trọng, Rất quan trọng vân vân.

Từ giá trị đã cho tùy thuộc vào biểu tượng nào sẽ nằm bên cạnh tin nhắn. Tuy nhiên, điều này chỉ hoạt động trong giao diện bình thường.

Trong khái niệm giao diện được quản lý, biểu tượng luôn ở dạng dấu chấm than, nó không thể được xác định lại.

Thực tế là nếu một thông báo được tạo ra tại thời điểm ghi một phần tử thư mục thì tình huống sau có thể xảy ra.

Người dùng nhấp vào một nút Lưu và đóng, trong trường hợp này thông báo sẽ được hiển thị trong cửa sổ tương ứng (ở bên phải biểu mẫu).

Nhưng biểu mẫu sẽ đóng ngay lập tức và người dùng sẽ không thấy bất kỳ thông tin nào được hiển thị cho mình.

Vì vậy, trong khái niệm ứng dụng được quản lý Bạn nên hiển thị các thông báo giới thiệu bằng cách sử dụng cái gọi là cảnh báo. Ví dụ về việc sử dụng sai hàm Báo cáo trình bày trong hình.

Tuy nhiên, chức năng Báo cáo có thể được sử dụng để hiển thị thông tin về một số lỗi nhất định, chẳng hạn như tại thời điểm đăng tài liệu.

Trong trường hợp này, hệ thống có thể được thông báo rằng không cần phải đóng biểu mẫu và hiển thị cho người dùng những lỗi xảy ra khi đăng tài liệu.

Chức năng Báo cáođược hỗ trợ đầy đủ trong Nền tảng 8.3. Nó có thể được sử dụng và nó sẽ hoạt động (cả ở phiên bản tệp và phiên bản máy khách-máy chủ).

Nhưng cũng cần lưu ý rằng chức năng Báo cáophát triển hơn nữa– đây là một lớp thông báo dành cho người dùng, cho phép, ngoài việc hiển thị một thông báo, còn liên kết nó theo ngữ cảnh với bất kỳ thành phần biểu mẫu nào.

Ví dụ: một thông báo lỗi có thể được gắn với một thành phần biểu mẫu, điều này rất rõ ràng đối với người dùng. Chúng ta sẽ quay lại xem xét vấn đề này sau. Chức năng Báo cáo có một tính năng thú vị.

Do đó, mã chương trình trong Nền tảng 8.3 có thể được thực thi ở cả phía Máy khách và phía Máy chủ.

Trong trường hợp này, mã chương trình máy khách chịu trách nhiệm tương tác với người dùng, tức là. Về phía khách hàng, các biểu mẫu sẽ được mở và các báo cáo sẽ được hiển thị.

Các tài liệu hộp thoại khác nhau cũng chỉ được hiển thị trên máy khách. Chúng không thể được thực thi trên máy chủ vì máy chủ không có khả năng tương tác với người dùng.

Nhưng chức năng Báo cáo có thể được thực thi cả ở phía Máy khách và phía Máy chủ. Trong trường hợp này, việc sử dụng phương pháp Báo cáo trên Máy chủ hoàn toàn không có nghĩa là thông báo sẽ được hiển thị trên Máy chủ, đơn giản là không có nơi nào để hiển thị chúng.

Điều này có nghĩa là nếu chúng ta hiển thị một thông báo trong thủ tục máy chủ bằng phương pháp này, chúng sẽ tích lũy trong một số bộ đệm và chúng sẽ chỉ hiển thị trên màn hình khi thủ tục máy chủ kết thúc và quay trở lại Máy khách.

Lúc này hệ thống sẽ yêu cầu dữ liệu từ bộ đệm và hiển thị trên màn hình.

Tính năng tương tự áp dụng cho lớp Tin nhắn cho người dùng. Hình vẽ minh họa một ví dụ về việc sử dụng phương pháp Báo cáo về phía Máy chủ.

Kết quả của việc sử dụng phương pháp Báo cáo về phía Máy chủ, các thông báo được hiển thị trên màn hình ở phía Máy khách.

Cần có một cơ chế cảnh báo để thông báo cho người dùng rằng “điều gì đó” đã xảy ra trong hệ thống và “điều gì đó” cần sự chú ý của người dùng. Cảnh báo được tạo bởi hai kịch bản:

  1. Bởi chính nền tảng khi ghi lại hoặc thay đổi một đối tượng một cách tương tác
  2. Bởi nhà phát triển khi gọi một phương thức trong mã .

Bản thân thông báo là một cửa sổ nhỏ thường xuất hiện ở góc dưới bên phải và thông báo về hành động đã hoàn thành. Trong vòng vài giây nó dần dần mờ đi và biến mất. Đồng thời, nếu bạn di con trỏ chuột lên thông báo thì nó sẽ không biến mất và bạn có thể đọc kỹ.

Ngoài ra, có thể truy cập thông báo trong khu vực tương ứng của bảng thông tin (nút “Lịch sử” ở phía dưới bên trái của mẫu đơn đăng ký trong tùy chọn giao diện “Phiên bản 8.2”).

Để tạo cảnh báo của riêng bạn, bạn phải sử dụng phương pháp bối cảnh chung ShowUserAlert(). Cú pháp của nó trước phiên bản 8.3.10 được trình bày dưới đây:

Hiển thị cảnh báo người dùng (<Текст>, <НавигационнаяССылка>, <Пояснение>, <Картинка>)

Tham số đầu tiên chứa văn bản sẽ được hiển thị trong thông báo.

Sau đó, với tư cách là tham số thứ hai, bạn có thể chuyển một liên kết điều hướng nhất định tới một phần tử cơ sở thông tin(yếu tố tương ứng với nội dung tin nhắn của chúng tôi). Khi người dùng nhấp vào cảnh báo, liên kết sẽ được theo dõi.

Sử dụng tham số thứ ba, bạn có thể chuyển phần giải thích cho thông báo, tức là. một số mô tả mở rộng.

Bạn cũng có thể chỉ định một hình ảnh hiển thị trạng thái thông báo.

Cần lưu ý rằng tất cả các tham số này là tùy chọn. Dưới đây là một ví dụ về việc sử dụng phương pháp này(trong bộ cấu hình và ở chế độ người dùng trong tùy chọn giao diện “Phiên bản 8.2”).

Trong phiên bản nền tảng 8.3.10.216 dành cho giao diện “Taxi”, cơ chế thông báo đã được cải thiện đáng kể nhằm cải thiện khả năng sử dụng của cả máy khách mỏng và máy khách web. Vì lý do này, các tham số truyền vào phương thức cũng đã thay đổi ShowUserAlert(). Bây giờ cú pháp trông như thế này:

ShowUserAlert(<Текст>, <ДействиеПриНажатии>, <Пояснение>, <Картинка>, <СтатусОповещенияПользователя>, <КлючУникальности>)

Có thể thấy rằng tham số thứ hai, trước đây được gọi là Liên kết điều hướng, có tên mới Hành độngKhi được nhấp vào. Điều này là do thực tế là bây giờ đã có thể chuyển không chỉ một chuỗi với liên kết điều hướng, nhưng cũng có mô tả về cảnh báo. Điều này được minh họa trong ảnh chụp màn hình bên dưới:

Như có thể thấy từ ví dụ, giờ đây chúng ta có khả năng xử lý theo chương trình một lần nhấp vào cửa sổ thông báo, theo logic cần thiết.

Tham số tiếp theo Trạng thái cảnh báo người dùng xuất hiện lần đầu tiên. Nó cho biết trạng thái của cảnh báo (Thông tin hoặc Quan trọng).

Trong trường hợp tùy chọn Quan trọng, nếu người dùng chưa trả lời tin nhắn thì sau khi nó bị ẩn khỏi màn hình, nó có thể được đọc qua Trung tâm thông báo (thông tin thêm về nó bên dưới). Trong trường hợp tùy chọn Thông tin, thông báo sẽ bị xóa mà không được lưu trữ trong trung tâm này. Hãy viết lại mã từ ví dụ của chúng tôi như sau:

Sau khi thực hiện lệnh, chúng ta có được chế độ xem gần đúng của cửa sổ ứng dụng:

Một nút có biểu tượng chuông đã xuất hiện trên thanh công cụ, nút này sẽ mở Trung tâm thông báo nêu trên. Nó tích lũy các cảnh báo quan trọng mới mà người dùng chưa phản hồi.

Nếu có bất kỳ cảnh báo nào ở Center, bên cạnh sẽ xuất hiện một chấm nhỏ màu cam để thu hút sự chú ý của người dùng. Người dùng có thể mở Trung tâm thông báo, đọc văn bản và thực hiện một số hành động nếu cần.

Từ Trung tâm, cảnh báo sẽ bị xóa bằng cách nhấp vào nút xóa, nhưng nếu có một số hành động liên quan đến cảnh báo thì ngay khi người dùng nhấp vào nội dung tin nhắn, nó cũng sẽ biến mất.

Và cuối cùng, tham số cuối cùng được thêm vào là Chìa khóa của sự độc đáo. Bạn có thể sử dụng nó để tìm cảnh báo hiển thị trên màn hình và thay đổi nó. Nếu không có cảnh báo nào với tham số này, một cảnh báo mới sẽ được hiển thị.

Như bạn có thể thấy, các khả năng mà phương pháp tương ứng mang lại thậm chí còn lớn hơn! Nhưng đây không phải là tất cả những thay đổi trong cơ chế thông báo.

Như bạn có thể đã nhận thấy, họ vẻ bề ngoài. Cảnh báo giờ đây trông hiện đại và tiện dụng hơn nhưng không thể di chuyển xung quanh màn hình hoặc thay đổi kích thước. Xin lưu ý rằng trong ví dụ của chúng tôi, văn bản thông báo không hoàn toàn vừa với cửa sổ và người dùng chỉ có thể đọc đầy đủ bằng cách mở Trung tâm thông báo. Vì vậy, bạn không nên viết quá nhiều chữ trong văn bản thông báo.

Các tính năng mới cũng bao gồm hiển thị đồng thời tối đa ba cảnh báo trên màn hình.

Điều này kết thúc sự quen biết của chúng tôi với sự hình thành có lập trình cảnh báo. Tuy nhiên, hãy nhớ rằng cảnh báo không chỉ được tạo bởi nhà phát triển theo chương trình mà còn bởi chính nền tảng tại thời điểm ghi tương tác hoặc thay đổi đối tượng. Và thực tế này thường gây ra sự hiểu lầm chủ yếu ở những người mới sử dụng: tại sao những cảnh báo dịch vụ này lại cần thiết, nhân tiện, không thể tắt được?

Hãy tưởng tượng điều này tình huống đơn giản: Người dùng đã thiết lập bộ lọc ở một danh sách nào đó để thuận tiện. Giả sử anh ta làm điều này dưới dạng một danh sách trong thư mục Danh pháp. Sau một thời gian, tôi quyết định giới thiệu phần tử mới với tên “Ghế”, không khớp với bộ lọc đã cài đặt trước đó. Nhập nó, viết nó ra và...? Và anh ấy không thấy nó trong danh sách. Người dùng bình thường sẽ làm gì? Tất nhiên, anh ta sẽ vào lần thứ hai, nhưng sẽ không nhìn thấy nữa. Tiếp theo có thể là lần thứ ba, thứ tư, thứ năm. Khi anh ấy cảm thấy mệt mỏi khi phải lặp đi lặp lại cùng một thứ, cuối cùng anh ấy sẽ hỏi bạn: mọi thứ sẽ đi về đâu?

Đây chính xác là lý do tại sao nền tảng hiển thị các cảnh báo dịch vụ này, thông báo cho người dùng rằng hành động của họ đã hoàn tất. Trong ví dụ của chúng tôi, tại thời điểm ghi tương tác, người dùng sẽ thấy thông báo sau:

Thông báo chấm dứt

Thông báo chấm dứt là những thông báo sẽ không cho phép hoạt động cho đến khi người dùng thực hiện một số hành động nhất định, tức là. cho đến khi nó xử lý tin nhắn.

Chúng ta sẽ nói về khả năng sử dụng thông báo chấm dứt trong Nền tảng 8.3 sau (trong Gần đây Họ cố gắng không sử dụng chúng, vì vậy ví dụ được xem xét phù hợp hơn với Nền tảng 8.2).

Có hai phương pháp đưa ra thông báo kết thúc Cảnh báoCâu hỏi. Cảnh báo khác với Câu hỏi bởi vì nó có một nút duy nhất ĐƯỢC RỒI.

Một câu hỏi có thể chỉ định các nhóm tùy chọn trả lời khác nhau ( Không thực sự, CóKhôngHủy bỏ, ĐƯỢC RỒI, đồng ýhủy, Lặp lạiHủy, Hủy bỏLặp lạiBỏ qua), được chỉ định bằng tham số.

Hãy hiển thị một số cảnh báo bằng cách sử dụng dòng (ví dụ: trong mô-đun ứng dụng được quản lý):

Cảnh báo(“Căn cứ bây giờ sẽ được mở”);

Để mở mô-đun ứng dụng được quản lý, hãy chọn đối tượng trong cây cấu hình Cấu hình, gọi danh mục và chọn mục Mở mô-đun ứng dụng được quản lý.

TRONG trong trường hợp này, khi ứng dụng khởi động, một cửa sổ theo chế độ sẽ được hiển thị. Một cửa sổ phương thức chồng lên tất cả các cửa sổ tồn tại trong ứng dụng. Không thể thực hiện thêm hành động nào cho đến khi chúng tôi xử lý cửa sổ này.

Chức năng này hoạt động theo cách tương tự Câu hỏi.

Cú pháp:
Câu hỏi(<ТекстВопроса>,<Кнопки>,<Таймаут>,<КнопкаПоУмолчанию>,<Заголовок>,
<КнопкаТаймаута>);

Chỉ có hai tham số đầu tiên được yêu cầu. Đối với tham số thứ hai, kiểu dữ liệu là hỗn hợp ( Chế độ đối thoạiCâu hỏi hoặc Danh sách giá trị). Tham số thứ ba ( <Таймаут> ) đặc trưng cho khoảng thời gian tính bằng giây trong đó hệ thống sẽ chờ phản hồi của người dùng.

Khi hết thời gian, cửa sổ câu hỏi sẽ đóng lại. Tham số tương tự ( <Таймаут> ) cũng có mặt trong hàm Cảnh báo.

Như một ví dụ về việc sử dụng chức năng Câu hỏi Bạn có thể sử dụng mã sau đây, được viết trong mô-đun ứng dụng được quản lý:

Xin lưu ý rằng các phương pháp này ( Cảnh báoCâu hỏi) không có sẵn trên Máy chủ. Và điều này là hợp lý, vì các phương thức giao diện không thể được thực thi trên Máy chủ không có người dùng.

Tính năng sử dụng cửa sổ phương thức trong Nền tảng 8.3

Trong nền tảng 8.3, có các chế độ hoạt động có và không có phương thức. Cài đặt mặc định là Không sử dụng chế độ phương thức.

Trong trường hợp này, việc sử dụng các thông báo kết thúc là không thể. Nếu cần sử dụng các thông báo kết thúc (chức năng Cảnh báoCâu hỏi) bạn nên thay đổi giá trị của thuộc tính cấu hình TRÊN Sử dụng.

Cửa sổ phương thức được hiển thị ở trên cùng và các khối hoạt động với các cửa sổ khác cho đến khi hoàn thành các hành động với cửa sổ phương thức. Ngoài ra, việc thực thi dừng lại Mã chương trình tại nơi cửa sổ này được gọi. Việc thực thi mã sẽ chỉ tiếp tục sau khi cửa sổ phương thức được đóng lại.

Thứ nhất, các vấn đề khi sử dụng cửa sổ phương thức phát sinh đối với ứng dụng di động. Thứ hai, trong trình duyệt, phương thức cửa sổ được triển khai bằng cách sử dụng các cửa sổ bật lên riêng biệt.

Cửa sổ bật lên thường bị tắt theo cài đặt trình duyệt mặc định. Người dùng buộc phải đặt quyền cho các cửa sổ này.

Trình duyệt cho máy tính bảng và đối với điện thoại trong hầu hết các trường hợp, chúng hoàn toàn không hỗ trợ cửa sổ bật lên.

Để thay thế các chức năng Câu hỏiCảnh báo phương pháp mới đã được phát triển: Hiển thịCâu hỏi, Hiển thịCảnh báo.

Các phương thức này cho phép bạn gọi một cửa sổ nhưng không dừng việc thực thi mã chương trình. Về mặt kỹ thuật, điều này đạt được bằng cách hình thành một cửa sổ giả bên trong cửa sổ cha. Cửa sổ giả không chồng lên cửa sổ cha. Sau khi mở một cửa sổ như vậy, mã tiếp tục được thực thi.

Việc nhận và xử lý các giá trị do người dùng nhập được thực hiện theo một quy trình riêng, được gọi khi đóng hộp thoại.

Cú pháp hàm Hiển thịCảnh báo:

Hiển thịCảnh báo(<ОписаниеОповещенияОЗавершении>, <ТекстПредупреждения>, <Таймаут>, <Заголовок>)

Tham số <ОписаниеОповещенияОЗавершении> (không bắt buộc)

Loại dữ liệu: Mô tảCảnh báo.

Chứa mô tả về quy trình sẽ được gọi sau khi đóng cửa sổ cảnh báo.

Cú pháp hàm Hiển thịCâu hỏi:

Hiển thịCâu hỏi(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)

Ba tham số đầu tiên là bắt buộc.

Dưới đây là một ví dụ về cách sử dụng chức năng.

Tin nhắn lớp tới người dùng

Sự tiện lợi cơ bản của lớp tin nhắn Tin nhắn cho người dùng có phải đây là một thông báo theo ngữ cảnh (không giống như các phương thức Cảnh báoCâu hỏi).

Tin nhắn có thể được gắn với một thành phần màn hình cụ thể. Đối tượng này cũng có sẵn trên Máy chủ.

Cần lưu ý rằng, trước hết, đối tượng này cần phải được tạo ra. Ví dụ: Tin nhắn = MessageToUser mới;

Vì vậy, chúng tôi tạo ra một thể hiện của đối tượng này.

Thứ hai, bạn cần chỉ định nội dung tin nhắn trong một thuộc tính riêng biệt.

Thứ ba, về tài sản Cánh đồng bạn có thể chỉ định phần tử biểu mẫu nào tin nhăn nay phải được ràng buộc.

Chú ý! Để liên kết với trường biểu mẫu mong muốn, hãy chú ý đến việc khởi tạo các thuộc tính Đường dẫn đến dữ liệuKhóa dữ liệu. Đối với một tài liệu, khi đặt mã vào mô-đun đối tượng, bạn có thể viết:

Message.DataPath = “Đối tượng”;
Message.DataKey = ThisObject.Link;

Để mở mô-đun tài liệu, trong cửa sổ chỉnh sửa đối tượng (tài liệu), hãy chuyển đến tab Khác Nhấn nút Mô-đun đối tượng.

Đối với thử nghiệm, chúng tôi sẽ đặt mã vào mô-đun đối tượng của tài liệu.

Dưới đây là kết quả thu được ở chế độ người dùng cho Nền tảng 8.3.

Cần lưu ý rằng thông báo xuất ra sử dụng đối tượng hệ thống mới Tin nhắn cho người dùng V. trường hợp chung không chấm dứt. Những thứ kia. hệ thống sẽ cho phép người dùng tiếp tục các hành động tiếp theo mà không phản hồi các thông báo được hiển thị.

Nhưng trước hết, những thông điệp này khá đáng chú ý. Thứ hai, các thông báo thường được hiển thị cho người dùng tại thời điểm ghi lại các thành phần của thư mục hoặc xử lý tài liệu, tức là khi một số kiểm tra được thực hiện. Và nếu phát hiện lỗi, người dùng sẽ thấy những thông báo tương tự.

Theo đó, khi phát hiện ra lỗi, giao dịch sẽ bị hủy, tức là. viết một phần tử thư mục đều bị cấm, hoặc đăng một tài liệu đều bị cấm.

Do đó, một kiểu mô phỏng thông báo kết thúc xảy ra. Vì hành động bị hủy cho đến khi người dùng phản ứng với tin nhắn đã nhập nên sẽ không thể hoàn thành hành động, chẳng hạn như đăng tài liệu.

Tuy nhiên, mặt khác, có thể đóng tài liệu mà không cần tiến hành, không phản ứng với tin nhắn dưới bất kỳ hình thức nào. Do đó, những thông báo này cho người dùng sẽ không chấm dứt.

Thông báo trạng thái quá trình

tồn tại chức năng đặc biệt, nhờ đó bạn có thể hiển thị tiến trình gần đúng của một quá trình.

Cú pháp: Tình trạng(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
Tùy chọn:<ТекстСообщения>Và<Пояснение>– tùy chọn, loại – Đường kẻ.
Văn bản được hiển thị trên một thanh trạng thái đặc biệt.
<Прогресс>Tham số này cũng là tùy chọn, nhưng trực quan.
Kiểu: Con số. Giá trị chỉ báo tiến trình (từ 1 đến 100).
<Картинка>cũng là một tham số tùy chọn.
Khi xử lý bất kỳ sự kiện nào, các lệnh gọi định kỳ của một hàm như:

Trong trường hợp này, nhãn có thể thay đổi và giá trị của tham số Tiến trình có thể thay đổi.

Một hàm có thể được gọi từ một thủ tục (hàm) hoặc từ một số thủ tục. Bằng cách này bạn có thể theo dõi trạng thái thực hiện của quá trình.

Nếu bạn muốn xem xét kỹ hơn cơ chế thông báo, hãy dừng lại ngay bây giờ và đọc phần của chúng tôi bài viết mới Hiển thị tiến trình của các hoạt động chạy dài trong 8.3.10. Nó không còn giải thích ở cấp độ mới bắt đầu tất cả sự tinh tế và đá dưới nước hoạt động của cơ chế này.

Chúng tôi đang kết thúc phần giới thiệu về các cách thông báo cho người dùng. Chúng tôi hy vọng rằng bạn hiểu được trong những tình huống nào nên sử dụng phương pháp này hay phương pháp khác.

Tôi muốn một lần nữa thu hút sự chú ý của bạn đến thực tế là nếu cấu hình của bạn (phiên bản 8.3.3+) liên quan đến việc sử dụng ứng dụng khách web thì:

  • ở cấp độ cấu hình, cài đặt chế độ phương thức phải được đặt thành “Không sử dụng”
  • Mã phải sử dụng các phương thức của mô hình tương tác người dùng không đồng bộ. Những phương pháp như vậy bắt đầu bằng những từ Trình diễn hoặc Bắt đầu.

Bạn có thể đọc thêm về việc từ chối sử dụng cửa sổ modal trong nền tảng 1C:Enterprise 8.3 trong bài viết cuối cùng của loạt bài này. Và chúng tôi tiếp tục và cuối cùng, bắt đầu nghiên cứu giao diện Taxi được chờ đợi từ lâu, giao diện này đã được đề cập nhiều lần trong tài liệu của chúng tôi.

Hôm nay tôi sẽ kể cho bạn nghe về một cái mới tính năng thú vị"Thông điệp cho cộng đồng VKontakte." Với sự trợ giúp của nó, bất kỳ người dùng nào cũng có thể viết tin nhắn cho quản trị viên cộng đồng thông qua tin nhắn riêng tư và quản trị viên sẽ thay mặt cộng đồng trả lời.

Để kích hoạt nó, hãy đi tới “Quản lý cộng đồng”. Tiếp theo, đặt nút chuyển trong khối “Tin nhắn cộng đồng” thành “Đã bật”. Ngoài ra bạn có thể thêm liên kết riêng biệt vào cột bên trái của menu VKontakte bằng hộp kiểm "Thêm vào" danh mục bên trái". Để lưu các thay đổi, hãy nhấp vào nút "Lưu" bên dưới.

Bây giờ, khi đã tham gia cộng đồng, nút “Gửi tin nhắn” sẽ xuất hiện ở cột bên phải. Với sự trợ giúp của nó, bất kỳ người dùng nào cũng có thể gửi tin nhắn tới cộng đồng.

Tất cả các tin nhắn nhận được theo cách này sẽ được hiển thị trong cộng đồng và ở cột bên trái.

Trong tương lai, giao tiếp sẽ diễn ra với người dùng thông qua " Tin nhắn riêng tư", và từ cộng đồng thông qua "Tin nhắn cộng đồng".

Khi bạn di chuột qua một đoạn hội thoại, thư đó có thể được thêm vào danh sách quan trọng hoặc bị xóa hoàn toàn. Bạn cũng có thể tạo một tin nhắn quan trọng trong thư từ.

Khi xóa, bạn có thể đánh dấu thư là thư rác hoặc chặn người dùng.

Một cái khác chức năng quan trọng- khả năng đánh dấu tin nhắn là đã trả lời. Hãy tưởng tượng một tình huống trong đó người dùng viết thư cho bạn nhưng lại đưa ra câu trả lời bằng khoảnh khắc này Bạn không thể. Không sao đâu, cộng đồng có 4 tab tin nhắn cho việc này.

  • Quan trọng - những tin nhắn mà bạn đã đánh dấu trong các cuộc đối thoại hoặc trong thư từ;
  • Chưa được trả lời - những tin nhắn đã được đọc nhưng vì lý do nào đó bạn không đưa ra bất kỳ phản hồi nào;
  • Chưa đọc - tin nhắn mới chưa được đọc.

Bạn có thể trả lời tin nhắn trong cuộc trò chuyện bằng cách sử dụng biểu tượng đặc biệt phía trên đoạn hội thoại. Tại đây bạn có thể thêm thông báo vào "Quan trọng".

Đó là tất cả. tôi hy vọng cho bạn Cơ hội này sẽ hữu ích.

Trong bài học này tôi sẽ chỉ cho bạn cách tải nhạc từ VKontakte sử dụng tiện ích mở rộng trình duyệt từ savefrom.net. Bước đầu tiên là cài đặt " Trợ lý Savefrom.net". Hãy theo liên kết và làm theo hướng dẫn để cài đặt tiện ích mở rộng cho trình duyệt của bạn. Đừng để ý đến những gì hướng dẫn nói về youtube. Nhiệm vụ của chúng ta chỉ đơn giản là cài đặt trợ lý.

Trong bài học này, tôi sẽ hướng dẫn bạn cách hủy bỏ phiếu trong VK nếu bạn vô tình đưa nó vào một cuộc thăm dò ý kiến. Nếu bạn nhận ra rằng mình đã mắc sai lầm và muốn bỏ phiếu lại, thì có một số cách để giải quyết vấn đề này - sử dụng chính trang VKontakte hoặc sử dụng dịch vụ của bên thứ ba. Đó là những phương pháp mà chúng ta sẽ nói đến ngày hôm nay.

Trong bài học này tôi sẽ nói với bạn cách đặt biểu tượng cảm xúc ở trạng thái VKontakte.

Ai cũng mắc sai lầm. Lỗi cũng xảy ra khi mọi người tương tác với giao diện người dùng(giao diện người dùng). Đôi khi chúng xảy ra do lỗi của con người và đôi khi nguyên nhân nằm ở chính ứng dụng. Dù lý do là gì đi nữa, những sai lầm và cách bạn giải quyết chúng đều có tác động rất lớn đến ( Kinh nghiệm người dùng). Thông báo lỗi không hữu ích có thể khiến người dùng thất vọng và tìm giải pháp thay thế cho ứng dụng của bạn.

Trong bài viết này, chúng ta sẽ xem xét cách bạn có thể tối ưu hóa để tránh lỗi người dùng và cách tạo thông báo lỗi hiệu quả.

Thông báo lỗi là gì?

Thông báo lỗi là màn hình xuất hiện khi có sự cố xảy ra khiến người dùng không thể hoàn thành công việc Hành động mong muốn. Đây có thể là bất cứ điều gì: hoạt động không tương thích, nhập dữ liệu không chính xác, ứng dụng không thể kết nối với máy chủ, v.v.

Mọi lỗi, bất kể lý do gì, đều trở thành trở ngại cho người dùng của bạn và ngăn họ tương tác thêm với ứng dụng. May mắn thay, cách tiếp cận đúng đắn giải quyết các vấn đề đang nổi lên sẽ giúp giảm bớt trở ngại này.

Phòng ngừa dễ hơn sửa chữa

Nếu đang phát triển một ứng dụng, bạn nên lưu ý đến những tương tác phổ biến nhất có thể dẫn đến lỗi. Ví dụ: người ta thường gặp khó khăn khi hoàn thành biểu mẫu trong lần thử đầu tiên hoặc không thể đồng bộ hóa dữ liệu do kết nối mạng kém. Những trường hợp này phải được tính đến để giảm thiểu sai sót. Nói cách khác, tốt hơn là nên ngăn chặn chúng bằng cách đưa ra lời khuyên cho người dùng và linh hoạt.

Ví dụ: nếu bạn cung cấp dịch vụ tìm và đặt phòng khách sạn, việc cung cấp ngày trong quá khứ để lựa chọn rồi hiển thị thông báo lỗi có ích gì?

Giải pháp khôn ngoan trong trường hợp này là Booking.com: công cụ chọn phạm vi ngày của họ cho phép bạn chỉ chọn ngày hiện tại hoặc ngày tiếp theo và do đó không có cách nào để một người phạm sai lầm.

Thông báo lỗi về việc nhập dữ liệu không chính xác

Xác thực biểu mẫu là cần thiết để thông báo cho người dùng về bất kỳ điểm không chính xác nào trong dữ liệu anh ta đã nhập. Xác thực mẫu tốt có bốn yếu tố quan trọng:

1. Thời gian chính xác (xác thực tích hợp)

Người dùng thực sự không muốn lãng phí thời gian để điền vào một biểu mẫu dài và sau đó chỉ phát hiện ra rằng họ đã mắc sai lầm ở đâu đó.

Việc xác thực sẽ thông báo ngay cho người dùng rằng thông tin họ đã nhập là chính xác. Nguyên tắc chính xác thực biểu mẫu tốt là: Nói chuyện với người dùng! Nói cho họ biết chuyện gì đang xảy ra đi! Điều này sẽ giúp họ giảm thời gian sửa lỗi.

2. Đúng nơi

Thông điệp của bạn phải luôn được đặt trong bối cảnh hành động. Nếu bạn muốn thông báo cho người dùng rằng đã xảy ra lỗi trong một trường cụ thể, hãy hiển thị thông báo bên cạnh trường đó - tốt nhất là ở bên phải trường đó hoặc, nếu không thể, hãy hiển thị ngay bên dưới trường đó.

Ví dụ bên trái: Thông tin nhập vào không được xác minh kịp thời, thông báo lỗi không đúng ngữ cảnh và không đưa ra bất kỳ hướng dẫn nào cho người dùng
Ví dụ ở bên phải: Tin nhắn thông báo cho người dùng về những điểm không chính xác cụ thể trong dữ liệu họ đã nhập, được trình bày theo ngữ cảnh và theo thời gian thực

3. Đúng màu sắc (thiết kế trực quan)

Màu sắc là một trong những công cụ tốt nhất khi phát triển các thông báo lỗi vì nó hoạt động ở mức độ bản năng. Việc sử dụng màu đỏ cho thông báo lỗi, màu vàng cho thông báo cảnh báo và màu xanh lá cây cho thông báo thành công là vô cùng hiệu quả. Tuy nhiên, hãy đảm bảo rằng màu sắc của bạn giao diện kỹ thuật số có sẵn cho người dùng. Cái này khía cạnh quan trọng thiết kế hình ảnh chất lượng cao.

4. Xóa tin nhắn

Thông báo lỗi của bạn phải cho người dùng biết rõ chính xác lỗi gì và họ cần khắc phục điều gì. Nghĩa là, thay vì hiển thị thông báo “email không hợp lệ”, bạn nên làm rõ chính xác lỗi đó là gì: có lỗi đánh máy, lỗi này đã gửi email rồi bận rộn, v.v. Sau đó, bạn cần cung cấp các tùy chọn cho người dùng (đăng nhập hoặc khôi phục mật khẩu).

Lỗi ứng dụng

Bây giờ chúng ta sẽ nói về những lỗi xảy ra mà không có sự can thiệp của người dùng. Ví dụ: khi mất kết nối Internet và người dùng tại thời điểm đó đang ở trên màn hình chỉ khả dụng ở chế độ trực tuyến. Trong những tình huống này, bạn phải làm rõ lại điều gì đã xảy ra và những bước cần thực hiện tiếp theo.

Bạn không bao giờ nên hiển thị các thông báo như thế này:

1. Tin nhắn “Đã mã hóa”. Tin nhắn chứa mã lỗi nội bộ các ứng dụng hoặc những từ viết tắt khó hiểu không cho người dùng biết điều gì mà chỉ khiến họ sợ hãi.

Thông báo lỗi này được nhà phát triển viết cho nhà phát triển: "Không thể hoàn tất thao tác (WDGeneralNetworkError 500)"

2. Thông báo bế tắc. Những tin nhắn như vậy không mang lại bất kỳ thông tin hữu ích cho người dùng.

3. Thông điệp tóm tắt. Thông báo trong ví dụ bên dưới cung cấp cho người dùng lượng thông tin chính xác như trong trường hợp trước. Không rõ nó có ý nghĩa gì và phải làm gì tiếp theo.

Đừng mong đợi mọi người hiểu được ngữ cảnh của thông điệp hoặc họ hiểu biết về mặt kỹ thuật. Nói với họ bằng ngôn ngữ đơn giản, tránh dùng biệt ngữ.

Thông báo lỗi của bạn phải truyền đạt rõ ràng bằng ngôn ngữ thân thiện với người dùng:

  • Điều gì đã xảy ra và vì lý do gì có thể xảy ra
  • Người dùng nên làm gì để khắc phục lỗi này?

Thông báo lỗi là cơ hội tuyệt vời để sử dụng các biểu tượng và hình minh họa vì mọi người phản hồi tốt hơn với thông tin trực quan hơn văn bản thuần túy. Cái này cách tốt“Nhân cách hóa” ứng dụng của bạn và tạo cho nó cá tính. Ngoài ra, sự hài hước sẽ giúp người dùng quên đi cảm giác khó chịu do lỗi gây ra.

Khi ứng dụng Basecamp gặp lỗi liên quan đến đầu vào sai Thông tin, anh hùng nằm ở phía bên trái màn hình có vẻ mặt ngạc nhiên:

Trong Gmail, khi tạo tài khoản mới có thể bạn sẽ gặp phải thông báo lỗi này.

1C Message to User hiển thị thông báo cho người dùng (sau khi xử lý xong) hoặc lưu vào hàng đợi nếu thông báo không thể hiển thị “ngay bây giờ”, ví dụ:
Tin nhắn = MessageToUser mới();
Message.Text = "Xin chào thế giới!";
Message.Message();

Trong nhiều trường hợp, tin nhắn được tạo hàng loạt trong quá trình xử lý nhất định. Ví dụ, khi kiểm tra chiếc bàn lớn, nhiều thông báo lỗi có thể xuất hiện ở các hàng khác nhau của bảng. Hoặc khi xử lý một giao dịch. Trong trường hợp này, việc xử lý có thể được thực hiện trên máy chủ hoặc trong nhiệm vụ pháp lý và rất khó để hiển thị những thông báo này.

1C Thông báo cho Người dùng ghi tin nhắn vào hàng đợi “một số” và sau khi quá trình xử lý hoàn tất, sẽ hiển thị chúng cho người dùng, nếu có thể. Mặt khác, có thể lấy toàn bộ danh sách tin nhắn bằng phương thức GetMessagesToUser().

Để hiển thị thông báo cho người dùng bằng cách sử dụng 1C Message to User theo một cách cụ thể, biểu mẫu mở, bạn cũng cần đặt mã định danh biểu mẫu:
Message.DestinationIdentifier = Form.UniqueIdentifier;

Để thông báo 1C Message to User hiển thị trong cửa sổ bật lên bên cạnh một trường cụ thể của biểu mẫu mà mã được thực thi trong mô-đun, bạn cần chỉ định “đường dẫn” đến nó:
Message.Field = "Tên"; // trong đó Tên là thuộc tính biểu mẫu
Message.Field = "Object.Name"; // trong đó Tên là thuộc tính của đối tượng (tức là thư mục có biểu mẫu đang được chỉnh sửa)
Message.Field = "Sản phẩm.Giá"; // trong đó Sản phẩm là phần dạng bảng của biểu mẫu, Giá là cột của phần dạng bảng này

Để làm tương tự, nhưng trong mô-đun của đối tượng khác (mô-đun chung), bạn cần chỉ định thêm đối tượng (DirectoryObject, DocumentObject, v.v.):
Message.Field = "Tên"; // trong đó Tên là thuộc tính DirectoryObject
Message.SetData(DirectoryObject);
// Khi bạn nhấp đúp vào một tin nhắn, biểu mẫu đối tượng sẽ mở ra với một thông báo bật lên cho trường bắt buộc

Một cách khác để liên kết Thông báo 1C với thông báo Người dùng với dữ liệu đối tượng:
//cho một cuốn sách tham khảo, tài liệu..
Message.DataKey = Liên kết thư mục;
Message.DataPath = "Đối tượng";

// cho các mục đăng ký
Message.DataKey = RegisterRecordManager.InitialRecordKey; //thường là thuộc tính biểu mẫu chính được liên kết với thanh ghi
Message.DataPath = "Ghi";

Trong cấu hình điển hình trên biểu mẫu được quản lý cho khách hàng mỏng, ví dụ: “Quản lý thương mại, Phiên bản 11” và “Kế toán, Phiên bản 3”, trong mô-đun Mục đích chung ClientServer có một hàm NotifyUser(), chức năng này “phổ quát” hoạt động với đối tượng này. Cú pháp hàm trong cấu hình khác nhau- khác biệt.

Vì 1C Message to User tạo danh sách các tin nhắn nên để đặt lại danh sách đó (ví dụ: trước khi thực hiện xử lý phức tạp), bạn có thể gọi hàm:
GetMessagesUser(True);

Chào buổi chiều.

Hôm nay chúng ta sẽ nói về một điều đơn giản như tin nhắn cho người dùng.

TRONG 1C Phương thức 8 được di chuyển từ 7.7 - " Báo cáo(...)". Phương pháp này rất đơn giản, nó mở một cửa sổ tin nhắn nếu nó chưa mở và thêm văn bản của tin nhắn vào đó. Như trong 1C 7.7, nó có tham số thứ hai xác định biểu tượng đối diện với tin nhắn. Biểu tượng này xác định tầm quan trọng của thông điệp.

Thời gian trôi qua và chúng ta đã bắt tay vào làm biểu mẫu được quản lý. Biểu mẫu được quản lý không có hộp thông báo duy nhất. Tuy nhiên phương pháp này vẫn được hỗ trợ. Trong giao diện mới tin nhắn bị kẹt cửa sổ đang hoạt động. Khi tôi chuyển sang cửa sổ khác, các tin nhắn sẽ biến mất khỏi chế độ xem nhưng khi tôi quay lại, chúng lại xuất hiện. Trong một số trường hợp, điều này không thuận tiện, nhưng bạn không thể làm gì với nó; biểu mẫu được quản lý có nghĩa là không có cửa sổ chính để đính kèm tin nhắn.

Tuy nhiên, vì thông báo được liên kết với một biểu mẫu cụ thể nên điều này cho phép tác giả nền tảng mở rộng chức năng của một thông báo đơn giản. Bạn có thể đã thấy trong các cấu hình thông thường rằng các thông báo hiện đã được tích hợp, nhấp vào thông báo sẽ định vị chúng ta trên một trường cụ thể, nhấp đúp có thể mở một số thành phần khác của cơ sở dữ liệu.

Thực tế là hiện nay người ta thường không sử dụng phương thức ngữ cảnh chung "Báo cáo (...)", mà là đối tượng " Tin nhắn cho người dùng". Đối tượng này có sẵn ở mọi nơi, cả trên máy khách và máy chủ. Nó có một số thuộc tính và một số phương thức.

Nói chung, nếu bạn chỉ cần cung cấp cho người dùng một tin nhắn mà không có bất kỳ tương tác nào thì chỉ cần viết:



Message.Message();

Ba dòng này hoàn toàn giống với phương thức mà chúng ta đã biết và do đó việc sử dụng đối tượng này cho một thông báo như vậy là vô nghĩa.

Các lĩnh vực chính mở rộng khả năng của tin nhắn là:

  • Khóa dữ liệu
  • Cánh đồng

Khóa dữ liệu- một liên kết tới đối tượng cơ sở thông tin mà thông báo này liên quan hoặc một khóa bản ghi. Đó là những gì nó nói trong giấy chứng nhận. Nếu chúng ta chèn một liên kết đến một tài liệu hoặc sách tham khảo ở đây thì việc nhấp đúp sẽ mở đối tượng này, bất kể thông báo được hiển thị ở dạng nào. Theo đó, nếu tin nhắn xuất hiện dưới dạng tài liệu và khóa dữ liệu chứa liên kết đến nó thì hình thức mới sẽ không mở.

Điều vô nghĩa có thể xảy ra nếu chúng ta đưa ra một thông điệp dưới dạng một đối tượng chưa được viết ra. Trong trường hợp này chúng tôi có một liên kết trống. Nhưng nền tảng không bị mất và chỉ đơn giản là không mở bất cứ thứ gì, tức là. Bạn vẫn còn trong hình dạng bạn đã vậy.

Cánh đồng- đây là dòng ghi tên trường cần kích hoạt. Và không quan trọng hình thức của đối tượng khác mở ra hay chúng ta vẫn ở dạng hiện tại.

Đây là một ví dụ về cách nó hoạt động:

Giả sử trước khi viết một thành phần thư mục trong mô-đun biểu mẫu, chúng ta kiểm tra tính duy nhất của thuộc tính “Id” và nếu đã tồn tại thì sẽ hiển thị thông báo:


Nếu select.Next() Thì
Từ chối = Đúng;
Tin nhắn = MessageToUser mới;
Message.DataKey = Chọn.Liên kết;
Message.Field = "id";
Message.Text = "Phần có Id này đã tồn tại";
Message.Message();
endIf;

TRONG trong ví dụ này Qua nhấn đúp chuột một thành phần thư mục có cùng Id sẽ mở ra và trường Id sẽ hoạt động và sẽ có gợi ý trong đó:

Có vẻ thuận tiện, chúng ta vừa có thể thay đổi Id của phần tử mới vừa chỉnh sửa phần tử cũ, rất dễ dàng truy cập bằng cách nhấp vào tin nhắn. Nhưng trường trong phần tử hiện tại không được kích hoạt, điều đó có nghĩa là số lượng lớn các trường có thể hữu ích hơn việc mở biểu mẫu của đối tượng khác. Suy cho cùng, một đối tượng khác đã được ghi lại và đang được sử dụng, và khả năng xảy ra lỗi trong đó là rất nhỏ. Rất có thể chúng ta cần chỉnh sửa phần tử hiện tại.

Để thực hiện việc này, hãy thay đổi mã của bạn như sau:

//nếu có trùng lặp, mẫu sẽ chứa dữ liệu
Nếu select.Next() Thì
Từ chối = Đúng;
Tin nhắn = MessageToUser mới;
Message.DataKey = Object.Link;
Message.Field = "id";
Message.Text = "Phần có Id này đã tồn tại";
Message.Message();
endIf;

Sự khác biệt duy nhất là ở chỗ Khóa dữ liệu chúng tôi chuyển một liên kết đến phần tử mà chúng tôi đã mở. Thật không may, mã này không hoạt động: (Nhấp đúp sẽ mở một cửa sổ phương thức.

Để điều này hoạt động, có một điều cần lưu ý là bạn cần điền vào " Đường dẫn đến dữ liệu". Tôi không thể giải thích chính xác tại sao, tôi chỉ cần nhớ điều này. Mở một vật thể khác - đường dẫn dữ liệu không cần thiết, hãy đặt mình vào bên trong cái hiện tại - cần thiết. Kết luận - tốt hơn hết bạn nên điền đầy đủ, bạn không thể sai được. Thêm dòng vào mã:

Message.DataPath = "đối tượng";

Và mọi thứ đều đẹp:

Có một sắc thái nữa mà tôi muốn nói đến. Nếu “trường” bị bỏ trống thì việc định vị trên phần tử điều khiển sẽ không xảy ra và chú giải công cụ sẽ không xuất hiện bên cạnh nó. Nếu “trường” được điền không chính xác thì việc định vị sẽ xuất hiện trên toàn bộ biểu mẫu và chú giải công cụ sẽ xuất hiện nhưng ở cuối biểu mẫu mà không tham chiếu đến trường đầu vào thực.

Sắc thái tiếp theo là tin nhắn có phương thức - " SetData". Dựa trên đối tượng, nó điền vào các trường Khóa dữ liệuĐường dẫn đến dữ liệu. Sẽ thuận tiện hơn nhiều khi làm mọi thứ trong một dòng. Thông thường, ở dạng phần tử/tài liệu, chúng ta có một đối tượng. Điều duy nhất cần được viết trên máy chủ là:

Message.SetData(FormAttributValue("Đối tượng"));

Nhưng trong thủ tục được xác định trước của biểu mẫu Trước khi ghi trên máy chủ thực tế đã có một tham số Đối tượng hiện tại. Nhưng trên client chúng ta sẽ không nhận được đối tượng nào cả. Ngay cả trong mô-đun đối tượng (không phải ở dạng), bạn cần viết điều này:

Message.SetData(ThisObject);

Tóm lại, tôi muốn nói một số điều khó chịu về các biểu mẫu được quản lý. Điều này áp dụng cho cả TAXI và UV thông thường. Thực tế là danh sách giao diện được chuyển sang UV rất kém. Một bảng chứa 1000 hàng được vẽ rất chậm và trình duyệt web Thậm chí có thể mất vài phút để nó mở. Điều này cũng áp dụng cho danh sách tin nhắn. Để thử nghiệm, hãy hiển thị 1000 tin nhắn và thử chuyển đổi giữa các cửa sổ. Hệ thống sẽ chết ngay lập tức. Hơn nữa, có thể thấy rõ cách hệ thống suy nghĩ về đầu ra của tin nhắn. Đi tới một cửa sổ có một loạt tin nhắn trông như thế này:

Nội dung của cửa sổ được hiển thị
- nhấp nháy mạnh và thanh thông báo xuất hiện
-mọi thứ đều bị treo và bạn quan sát cách cuộn trong cửa sổ tin nhắn di chuyển xuống

Những thứ kia. Như trước đây, không thể hiển thị nhật ký xử lý dài hạn trong bảng thông báo, chứa hàng nghìn bản ghi. Tôi khuyên bạn nên giới hạn bản thân ở 10 tin nhắn. Nhật ký phải được xuất ra trên một dòng nhiều dòng; nó được hiển thị gần như ngay lập tức, bất kể số lượng dòng. Tất nhiên, nếu bạn đang kiểm tra tính đầy đủ của các chi tiết của phần bảng, có 1000 hàng trong đó và có lỗi ở mỗi hàng, thì có, bạn sẽ phải đợi :) Mặc dù trong trường hợp này bạn có thể nghĩ về cách hiển thị thông báo riêng, ví dụ như trong trường tài liệu HTML.