What this solution does
In the standard Bitrix implementation, repeating data blocks are often constructed using multiple multiple-value properties: one for the name, another for the value, and a third for the image. The order of elements relies on matching indices, so if an editor deletes a row in the wrong place, the data can become misaligned. The Top Man Digital module eliminates this issue by using a single property to store rows, where each row is a set of named fields.
The structure of a row is defined once in the property settings via code, name, type, required status, and sort order. The number of fields within a row is unlimited; functionality has been verified with configurations containing 30 fields per row.
Fifteen field types are supported: string, text, HTML with a visual editor, number, checkbox, list (dropdown or toggle switches), link, date (with or without time), color, file, image, infoblock element, infoblock section, user, and pass-through for any external property type.
The module provides direct integration for external field types. If a third-party module is installed on the site that adds specific property types (such as HighLoadBlock catalogs, 'Money', 'Link to element with auto-fill', or extended date-time fields), their widgets can be used as fields within rows. The module calls external types directly without emulation.
The editor for composite properties is built directly into the element form. New rows are added dynamically without page reload, can be reordered via drag-and-drop, or collapsed into a single header line. When collapsed, the header displays the value of the field assigned as the row title.
Files are bound to specific rows. Deleting a row removes the associated file, while copying the element duplicates the file rather than sharing it as a common resource. Files inserted from the media library retain their link to the library but are detached from the original context.
Search functionality covers the content of rows. Participation in the site search index can be configured individually for each field. The standard Bitrix search engine can locate elements based on text contained within row fields.
Data reading in templates uses the Rows::get($elementId, 'PROP_CODE', $iblockId) method, which returns row objects. The $row->get('TITLE') method returns an escaped value, $row->label('UNIT') returns a list option label, $row->file('PHOTO') returns a file array, and $row->user('MANAGER') returns user data. Files and user data are loaded lazily, avoiding unnecessary overhead when rendering only titles.
Data writing is handled by the Rows::save() method, which updates only the rows of the composite property without affecting other element properties.
Top Man Digital: Composite Properties of Information Blocks
Query Performance
The number of database queries remains constant at three regardless of the number of rows. Testing on an element with 200 rows and on a list of 20 elements confirmed that the module layer adds no more than three queries to the core operation due to batch reading of rows with prefetching.
Background Cleanup
The agent removes rows associated with deleted elements and properties, orphaned links without rows, and orphaned files. By default, the mode is limited to generating a report; the deletion function is activated via configuration.
Interface and Reporting
The module page displays a list of composite properties for the site, the count of rows and files, a cleanup report, and a warning regarding the max_input_vars limit for the current server.
Settings and Access
The interface supports Russian and English languages. Access rights management is handled by standard Bitrix groups. A dedicated menu section is provided in the administration panel.
If “Top Man Digital: composite infoblock properties” is required, General iT can help with installation, configuration and a technical check after integration.