Tài liệu bảng tính 1c thêm một dòng. Phím nóng: quản lý biểu mẫu

Để hạch toán tiền và hàng hóa, nhiều bảng khác nhau được sử dụng rộng rãi trong kinh doanh. Hầu hết mọi tài liệu đều là một bảng.

Một bảng liệt kê hàng hóa sẽ được vận chuyển từ kho. Một bảng khác thể hiện nghĩa vụ thanh toán cho những hàng hóa này.

Vì vậy, trong 1C, làm việc với bảng chiếm một vị trí nổi bật.

Các bảng trong 1C còn được gọi là “các phần dạng bảng”. Thư mục, tài liệu và những thứ khác có chúng.

Truy vấn khi được thực thi sẽ trả về một bảng có thể được truy cập theo hai cách khác nhau.

Việc lựa chọn đầu tiên - nhanh hơn - chỉ có thể lấy các hàng từ nó theo thứ tự. Thứ hai là tải kết quả truy vấn lên một bảng giá trị và sau đó truy cập ngẫu nhiên vào nó.

// Tùy chọn 1 – truy cập tuần tự vào kết quả truy vấn

// lấy cái bàn
Chọn = Query.Run().Select();
// chúng ta duyệt qua tất cả các dòng của kết quả truy vấn theo thứ tự
Trong khi vòng lặp Select.Next()
Báo cáo(Selection.Name);
Chu kỳ cuối;

// Tùy chọn 2 – tải lên bảng giá trị
Yêu cầu = Yêu cầu mới ("CHỌN Tên TỪ Directory.Nomenclature");
// lấy cái bàn
Bảng = Query.Run().Unload().
// hơn nữa chúng ta cũng có thể duyệt qua tất cả các dòng
Đối với mỗi hàng từ chu kỳ bảng
Báo cáo(String.Name);
Chu kỳ cuối;
//hoặc truy cập chuỗi tùy ý
Row = Table.Find("Xẻng", "Tên");

Một tính năng quan trọng là trong bảng lấy được từ kết quả truy vấn, tất cả các cột sẽ được nhập đúng. Điều này có nghĩa là bằng cách yêu cầu trường Tên từ thư mục Danh pháp, bạn sẽ nhận được một cột có dạng Chuỗi với độ dài cho phép không quá N ký tự.

Bảng trên mẫu (khách hàng dày)

Người dùng làm việc với bảng khi nó được đặt trên biểu mẫu.

Chúng ta đã thảo luận các nguyên tắc cơ bản khi làm việc với các biểu mẫu trong bài học trên và trong bài học về

Vì vậy, hãy đặt bảng vào biểu mẫu. Để thực hiện việc này, bạn có thể kéo bảng từ bảng Điều khiển. Tương tự, bạn có thể chọn Biểu mẫu/Chèn điều khiển từ menu.

Dữ liệu có thể được lưu trữ trong cấu hình - sau đó bạn cần chọn phần dạng bảng hiện có (đã thêm trước đó) của đối tượng cấu hình có biểu mẫu bạn đang chỉnh sửa.

Nhấp vào nút "..." trong thuộc tính Dữ liệu. Để xem danh sách các phần dạng bảng, bạn cần mở rộng nhánh Đối tượng.

Khi bạn chọn phần dạng bảng thì chính 1C sẽ thêm cột vào bảng trên biểu mẫu. Các hàng do người dùng nhập vào bảng như vậy sẽ được lưu tự động cùng với sách/tài liệu tham khảo.

Trong cùng thuộc tính Data, bạn có thể nhập tên tùy ý và chọn loại Bảng giá trị.

Điều này có nghĩa là một bảng giá trị tùy ý đã được chọn. Nó sẽ không tự động thêm cột và cũng không được lưu tự động, nhưng bạn có thể làm bất cứ điều gì bạn muốn với nó.

Bằng cách nhấp chuột phải vào bảng, bạn có thể thêm một cột. Trong thuộc tính của một cột, bạn có thể chỉ định tên của nó (để tham khảo trong mã 1C), tiêu đề cột trên biểu mẫu, kết nối với thuộc tính của phần dạng bảng (phần sau - nếu không phải bảng tùy ý được chọn, mà là một phần bảng).

Trong thuộc tính bảng trên biểu mẫu, bạn có thể chỉ định liệu người dùng có thể thêm/xóa hàng hay không. Một hình thức nâng cao hơn là hộp kiểm Chỉ xem. Các thuộc tính này rất thuận tiện khi sử dụng để sắp xếp các bảng nhằm mục đích hiển thị thông tin chứ không phải để chỉnh sửa.

Để quản lý bảng, bạn cần hiển thị bảng lệnh trên biểu mẫu. Chọn mục menu Biểu mẫu/Chèn điều khiển/Thanh lệnh.

Trong thuộc tính thanh lệnh, hãy chọn hộp kiểm Tự động điền để các nút trên bảng tự động xuất hiện.

Bảng trên biểu mẫu (máy khách mỏng/được quản lý)

Trên biểu mẫu được quản lý, những hành động này trông hơi khác một chút. Nếu bạn cần đặt một phần dạng bảng trên biểu mẫu, hãy mở rộng nhánh Đối tượng và kéo một trong các phần dạng bảng sang trái. Đó là tất cả!

Nếu bạn cần đặt một bảng giá trị, hãy thêm một thuộc tính biểu mẫu mới và trong thuộc tính của nó chỉ định loại – bảng giá trị.

Để thêm cột, sử dụng menu chuột phải vào thuộc tính biểu mẫu này, chọn Thêm cột thuộc tính.

Sau đó cũng kéo bảng sang trái.

Để bảng có thanh lệnh, trong thuộc tính bảng chọn các giá trị ở phần Cách sử dụng – Vị trí thanh lệnh.

Tải bảng lên Excel

Bất kỳ bảng 1C nào nằm trên biểu mẫu đều có thể được in hoặc tải lên Excel.

Để thực hiện việc này, nhấp chuột phải vào khoảng trống trong bảng và chọn Danh sách.

Trong máy khách được quản lý (mỏng), có thể thực hiện các hành động tương tự bằng cách sử dụng mục menu Tất cả hành động/Danh sách hiển thị.

Đối với ví dụ trước, bạn có thể thêm các dòng mã sau:

Các phần tử biểu mẫu.TableField1.AddRow(); trang = FormElements.TableField1.CurrentRow; p.Đầu tiên = 3; p.Thứ hai = "Bột"; p.Số lượng = 350;

Làm cách nào để xác định số hàng trong bảng giá trị trong 1s 8?

countRows = table.Quantity(); Report("Số hàng trong bảng giá trị bảng = " + số hàng);

Kết quả:

Số hàng trong bảng giá trị bảng = 3

Làm cách nào để xóa một hàng trong bảng giá trị trong 1s 8?

rowTable = bảng; bảng.Delete(rowTable);

Làm thế nào để thu gọn một bảng giá trị trong 1s 8?

Sụp đổ:

table.Collapse("Thứ hai", "Số lượng");

Chúng tôi nhận được sau khi tích chập:

Làm cách nào để sắp xếp bảng giá trị trong 1s 8?

Sắp xếp theo cột thứ hai và thứ ba:

table.Sort("Thứ hai, Số lượng");

Làm cách nào để định vị trường bảng trên một dòng trong 1c 8?

Trên dòng thứ hai:

Các phần tử biểu mẫu.TableField1.CurrentRow = bảng;

Mẫu in được trong 1s 8

Đầu tiên, chúng ta tạo bố cục (tên vùng: chọn các dòng cần thiết của bố cục, trong thuộc tính, trong trường Tên, nhập tên vùng), sau đó hiển thị nó trong tài liệu bảng tính:

Quy trình CommandPanel1Print(Button) biến td, rs, rs1, bố cục, mã, tên, danh pháp; mã = 0; bố cục = GetLayout("Sản phẩm"); tiêu đề = bố cục.GetArea("Tiêu đề"); header.Parameters.datta = CurrentDate(); rs = bố cục.GetArea("rs"); pc1 = bố cục.GetArea("pc1"); td = Tài liệu dạng bảng mới; td.Output(cap); nomen = Thư mục.Danh pháp; lựa chọn = nom.SelectHierarchively(); while get.Next() vòng lặp code = code + 1; nếu sample.ThisGroup = True thì pc1.Parameters.code = code; pc1.Parameters.name = sample.Name; td.Output(rs1); khác rs.Parameters.code = code; rs.Parameters.name = lựa chọn.Name; td.Rút tiền(rs); endIf; endChu kỳ; v.v.ViewOnly = True; td.Show("Thư mục ""Danh pháp"""); Kết thúcThủ tục

Các khả năng cơ bản của ngôn ngữ lập trình thường bao gồm làm việc với số và chuỗi. Thông thường, các tính năng này được mã hóa cứng vào mã trình biên dịch (hoặc các lớp “cơ sở” của ngôn ngữ lập trình được triển khai).

Trong 1C, khả năng làm việc với chuỗi được lập trình trong chính nền tảng. Hôm nay chúng ta sẽ xem xét các tính năng làm việc với chuỗi 1C trong các chương trình bằng ngôn ngữ 1C tích hợp.

Giá trị dòng 1C

1. Hãy bắt đầu với cách đơn giản nhất. Tạo một biến và gán một giá trị chuỗi không đổi cho biến đó trông như thế này trong 1C:

Biến = "Xin chào thế giới!";

Nếu bạn cần chỉ định ký tự trích dẫn trong giá trị chuỗi 1C không đổi thì bạn cần nhân đôi nó “”

Biến = "Xin chào thế giới"!;

2. Ngắt dòng 1C có thể được xác định cùng lúc theo hai cách. Đầu tiên là sử dụng ký hiệu |

Biến = "Xin chào,
| thế giới! ";

Thứ hai là sử dụng bảng liệt kê hệ thống Ký hiệu. Nó cho phép bạn thêm cả ngắt dòng 1C và các ký tự không in khác, chẳng hạn như TAB.

Biến = "Xin chào" + Symbols.PS + "hòa bình!";

3. Cấu hình trong 1C có thể được phát triển không chỉ cho một ngôn ngữ (tiếng Nga, tiếng Anh hoặc ngôn ngữ khác) - mà còn cho nhiều ngôn ngữ đồng thời. Trong trường hợp này, ngôn ngữ hiện đang sử dụng sẽ được chọn ở cuối cửa sổ 1C.

Danh sách các ngôn ngữ nằm trong cửa sổ cấu hình ở nhánh General/Languages. Mỗi ngôn ngữ có một mã định danh ngắn như ru hoặc tiếng anh.

Rõ ràng là khi lập trình cấu hình như vậy, các dòng 1C cũng có thể đa ngôn ngữ. Để làm điều này, có thể tạo một đường 1C như vậy bằng cách chỉ định thông qua; tùy chọn theo mã định danh ngôn ngữ:

Variable = "ru=""Xin chào thế giới! ""; en=""Xin chào thế giới! """;

Nếu bạn sử dụng dòng 1C được hình thành theo cách này như thường lệ thì nó sẽ giống như những gì được viết trong đó. Để hệ thống chia thành hai tùy chọn và sử dụng tùy chọn mong muốn, bạn cần sử dụng hàm НStr():

// đúng cho cấu hình song ngữ
Báo cáo(NStr(Biến));

Đạo cụ có đường loại 1C

Thuộc tính là một trường trong thư mục/tài liệu 1C. Nó khác với một biến trong chương trình bằng ngôn ngữ 1C ở chỗ đối với thuộc tính, loại của nó được chỉ định chính xác (số, chuỗi 1C, v.v.). Nếu bạn cần nhớ lại đạo cụ là gì, hãy xem bài học tiếp theo.

Nếu bạn chỉ định loại thuộc tính - dòng 1C, thì bạn phải chỉ định thêm các tham số.

Các dòng 1C có độ dài không giới hạn (được biểu thị bằng độ dài = 0) và độ dài giới hạn, cho biết số lượng ký tự chính xác. Các hàng 1C có độ dài không giới hạn được lưu trữ trong một bảng SQL riêng biệt, do đó việc sử dụng chúng sẽ kém hiệu quả hơn so với các hàng bị giới hạn.

Đó là lý do tại sao việc sử dụng chuỗi 1C có độ dài không giới hạn có những hạn chế - không thể sử dụng chúng ở mọi nơi. Ví dụ: nó không được phép làm số tài liệu, mã tham chiếu hoặc phép đo.

Làm việc với chuỗi 1C

Có một số chức năng tích hợp sẵn của nền tảng 1C để làm việc với chuỗi.

  • AbbrLP (“Thật đáng kinh ngạc, nhưng có thật!”)
    Loại bỏ khoảng trắng thừa khỏi dòng 1C. Cũng có thể được sử dụng để chuyển đổi bất kỳ loại nào thành chuỗi 1C (ví dụ: số).
  • Biến = "Vasya" + AbbrLP(" plus") + " Olya"; // sẽ có "Vasya cộng với Olya"
    Một ví dụ về tính tổng một số giá trị chuỗi 1C. Kết quả sẽ là một dòng 1C.
  • Biến = Lev("Âm nhạc", 2); // sẽ là "Mu"
    Biến = Trung bình("Âm nhạc", 2, 2); // sẽ có "mối đe dọa"
    Biến = Quyền("Âm nhạc", 2); // sẽ có "ka"
    Nhiều tùy chọn khác nhau để lấy chuỗi con từ chuỗi 1C.
  • Biến = Find("Âm nhạc", "zy"); // sẽ có 3
    Tìm kiếm chuỗi con trong chuỗi 1C, bắt đầu bằng ký tự 1.
  • Biến = StrLength("Âm nhạc"); // sẽ có 6
    Trả về số ký tự trong dòng 1C.
  • Report("Xin chào") //trong cửa sổ tin nhắn ở cuối cửa sổ 1C
    Alert("Xin chào") //hộp thoại bật lên
    Status("Xin chào") //trong dòng hiển thị trạng thái ở phía dưới bên trái
    .

Đưa đối tượng lên dòng 1C

Như bạn đã biết, định dạng phổ biến nhất để trao đổi thông tin có cấu trúc hiện nay là XML. Ngay cả phiên bản mới nhất của MS Office Word và Excel cũng lưu tệp ở định dạng này (docx và xlsx, tương ứng, thay đổi phần mở rộng thành zip, mở trong trình lưu trữ).

Nền tảng 1C để trao đổi dữ liệu cung cấp một số tùy chọn, tùy chọn chính cũng là XML.

1. Phương pháp đơn giản nhất là sử dụng hàm Abbreviation() hoặc String(). Bạn có thể sử dụng hàm REPRESENTATION() trong phần thân yêu cầu. Kết quả hành động của chúng là như nhau - chúng tạo ra một chuỗi biểu diễn bất kỳ đối tượng 1C nào cho người dùng.

Đối với một thư mục, theo mặc định đây sẽ là tên của nó. Đối với một tài liệu – ​​tên tài liệu, số và ngày.

2. Bất kỳ đối tượng 1C nào (có hạn chế) đều có thể được chuyển đổi sang XML và ngược lại. Quá trình chuyển đổi được gọi là tuần tự hóa.

StringViewXml = XMLString(Value); // lấy XML từ giá trị 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //lấy giá trị 1C từ chuỗi XML, bạn phải chỉ định loại 1C cần nhận

3. Nền tảng 1C có cách riêng để chuyển đổi bất kỳ đối tượng 1C nào thành chuỗi. Nó đã di chuyển từ phiên bản 1C 7.7. Định dạng này không được các chương trình khác hiểu, nhưng 1C khác hiểu nó, điều này giúp dễ dàng sử dụng nó để trao đổi giữa các cơ sở dữ liệu 1C.

Hàng = ValueInRowInt(Value1C); //lấy chuỗi 1C từ giá trị 1C
ValueVFile("C:\MyFile.txt", Value1C); // một tùy chọn khác, chúng tôi nhận được một tệp có chuỗi đã lưu từ giá trị 1C
Value1C = ValueFromStringInt(Chuỗi); //trở lại từ dòng 1C
Value1C = ValueFile("C:\MyFile.txt"); //trở lại từ tập tin

Chỉnh sửa dòng 1C trên biểu mẫu

Ngoài việc làm việc với chuỗi 1C trong chương trình bằng ngôn ngữ 1C, tất nhiên tôi muốn người dùng có thể chỉnh sửa chúng. Có một số khả năng cho việc này:

1. Cách dễ nhất là yêu cầu nhập dòng 1C theo yêu cầu. Phương pháp này được sử dụng khi dạy lập trình 1C; trong cuộc sống nó ít được sử dụng hơn nhiều (nhưng nó vẫn được sử dụng!).

Biến = "";
Row = EnterValue(Biến, "Nhập tên đầy đủ");

2. Để hiển thị chi tiết về đối tượng 1C (thư mục/tài liệu) hoặc chi tiết biểu mẫu (xem), trường đầu vào thường được sử dụng nhất. Đây là công cụ phổ biến nhất trong 1C để người dùng làm việc với các trường chỉnh sửa.

3. Khả năng của trường đầu vào có thể được mở rộng (xem thuộc tính của trường đầu vào, nhấp chuột phải vào trường đó để biết thêm chi tiết):

  • Hộp kiểm Chế độ chỉnh sửa nhiều dòng
  • Hộp kiểm chỉnh sửa nâng cao (khả dụng nếu hộp kiểm trước đó được chọn)
  • Hộp kiểm Chế độ mật khẩu (xem).

4. Nếu tất cả các khả năng của trường đầu vào không đủ đối với bạn, thì có một trình chỉnh sửa tích hợp sẵn. Để thêm nó vào biểu mẫu, bạn cần thêm Trường Tài liệu Văn bản vào menu Điều khiển Biểu mẫu/Chèn. Trong thuộc tính của nó, bạn có thể chỉ định chế độ hoạt động của nó – thuộc tính Tiện ích mở rộng.

Trường tài liệu văn bản không thể được liên kết trực tiếp với dữ liệu. Cần phải viết một hàm trong trình xử lý sự kiện OnOpen() của biểu mẫu (xem):

Các phần tử biểu mẫu.ElementNameTextDocumentField.SetText(StringValue); // ở đây ValueString là văn bản nhận được, ví dụ: từ thuộc tính

Và trong trình xử lý lưu - ví dụ: trong nút Lưu - thêm lưu:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueDòng ở đây là thuộc tính nơi chúng ta lưu giá trị

5. Trong phiên bản 1C 8.2.11, trong các biểu mẫu được quản lý, một tùy chọn mới đã xuất hiện để thể hiện dòng 1C - trường Tài liệu được định dạng.


Tương tự như trường của tài liệu văn bản, bạn phải đặt trường khi mở và ghi lại khi tự lưu bằng chương trình.

  • Trong đối tượng 1C có biểu mẫu mà chúng tôi đang tạo (thư mục, tài liệu, xử lý, v.v.) - thêm một thuộc tính với loại Lưu trữ giá trị
  • Trong hàm OnReadOnServer() chúng ta đặt văn bản từ thuộc tính

    // ở đây Thuộc tính là thuộc tính được thêm vào của đối tượng 1C
    // ở đây FormattedDocument là tên trường trên biểu mẫu để chỉnh sửa
    &Trên máy chủ

    FormattedDocument = CurrentObject.Attribut.Get();
    Kết thúcThủ tục

  • Trong hàm BeforeWritingOnServer() hoặc sử dụng nút, chúng ta sẽ viết văn bản từ trường

    &Trên máy chủ
    Quy trình khi ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Kết thúcThủ tục

Các phần dạng bảng tồn tại cho nhiều đối tượng trong 1C:

  • Thư mục
  • Tài liệu
  • Báo cáo và xử lý
  • Biểu đồ tài khoản
  • Kế hoạch loại đặc trưng
  • Các loại kế hoạch tính toán
  • Quy trình và nhiệm vụ kinh doanh

Các phần dạng bảng cho phép bạn lưu trữ lượng thông tin có cấu trúc không giới hạn thuộc về một đối tượng.

Chúng ta hãy xem xét một số kỹ thuật để làm việc với các phần dạng bảng.

Cách bỏ qua phần bảng

Để duyệt phần bảng, bạn có thể sử dụng vòng lặp Cho mỗi

Đối với mỗi hàng từ phần dạng bảng của chu trình

Báo cáo (Thuộc tính String. TabularPart) ;

Chu kỳ cuối;

Tại mỗi lần lặp vào biến Đường kẻ hàng tiếp theo của phần bảng được truyền đi. Các giá trị của chi tiết hàng có thể được lấy bằng biểu thức Line.AttributionName.

Cách lấy và bỏ qua các hàng đã chọn của phần bảng

Để hiển thị thông tin từ phần dạng bảng của đối tượng, hãy sử dụng phần tử biểu mẫu Trường bảng. Để kích hoạt khả năng chọn nhiều hàng trong trường bảng, bạn cần đặt giá trị Nhiều tại tài sản của anh ấy Chế độ lựa chọn.

Để có danh sách các dòng đã chọn, hãy sử dụng mã sau:

Một vòng lặp được sử dụng để lặp qua các dòng đã chọn. Cho mỗi:

SelectedRows = FormElements. Tên trường bảng. Hàng đã chọn;

Đối với mỗi hàng từ vòng lặp hàng đã chọn

// nội dung vòng lặp

Chu kỳ cuối;

Cách lập trình chọn các hàng của phần dạng bảng (trường bảng) và bỏ chọn chúng

Để bỏ chọn các hàng của trường bảng theo chương trình:

Các yếu tố hình thức. Tên trường bảng. Hàng đã chọn. Thông thoáng() ;

Để lập trình chọn tất cả các hàng của trường bảng:

Đối với mỗi vòng lặp CurrentRow từ TabularPart
Các yếu tố hình thức. Tên trường bảng. Các dòng được chọn. Thêm(CurrentRow) ;
Chu kỳ cuối;

Cách xóa phần bảng

TabularPart. Thông thoáng() ;

Cách lấy hàng hiện tại của một phần trong bảng

Dòng hiện tại là dòng thời gian mà người dùng hiện có con trỏ. Để có được nó, bạn cần truy cập vào phần tử điều khiển trên biểu mẫu được liên kết với phần dạng bảng.

Đối với các biểu mẫu thông thường, mã sẽ trông như thế này:

Các yếu tố hình thức. Tên trường bảng. Dữ liệu hiện tại;

Đối với các biểu mẫu được quản lý:

Các yếu tố. Tên trường bảng. Dữ liệu hiện tại;

Cách thêm hàng mới vào phần bảng

Thêm một dòng mới vào cuối phần bảng:

NewRow = TablePart. Thêm vào() ;

Thêm một dòng mới vào bất cứ đâu trong phần bảng (các dòng tiếp theo sẽ được dịch chuyển):

NewRow = TablePart. Chèn(Chỉ mục)
// Index - số dòng được thêm vào. Đánh số dòng bắt đầu từ số 0.

Dòng mới. Props1 = "Giá trị" ;

Cách điền thông tin chi tiết của một hàng trong bảng theo chương trình

Nếu bạn cần điền thông tin chi tiết của một hàng phần bảng được người dùng thêm vào theo chương trình, bạn phải sử dụng trình xử lý sự kiện phần bảng Khi bắt đầu chỉnh sửa.

Thủ tục được tạo bởi trình xử lý có ba tham số:

  • Yếu tố- chứa phần tử điều khiển Trường bảng.
  • Dòng mới- boolean. Chứa giá trị ĐÚNG VẬY, nếu một hàng mới của bảng được thêm vào, và Nói dối, nếu người dùng bắt đầu chỉnh sửa một dòng đã có sẵn.
  • Sao chép- boolean. Chứa giá trị ĐÚNG VẬY, nếu người dùng sao chép dòng và Nói dối trong các trường hợp khác.

Hãy xem một ví dụ. Giả sử chúng ta cần điền thông tin chi tiết của phần dạng bảng Tài khoản tài khoản, trong trường hợp một dòng mới được thêm vào. Khi chỉnh sửa dòng có sẵn không cần thay đổi tài khoản kế toán.

Quy trình TabularPartAtStartEditing(Element, NewRow, Copy)

//Nếu người dùng chỉnh sửa một dòng hiện có thì chúng tôi không làm gì cả
Nếu KHÔNG phải NewRow thì
Trở lại;
Hết Nếu ;

// Nếu dòng mới thì đặt tài khoản kế toán
TechString = Mục. Dữ liệu hiện tại; //Lấy hàng hiện tại của phần bảng
TechString. Kế toán = Biểu đồ tài khoản. Tự hỗ trợ. Tài khoản bắt buộc;
Kết thúcThủ tục