Переход от обычных форм к управляемым в платформе 1С:Предприятие версии 8.3 стал стандартом и принес множество изменений в разработке и пользовательском опыте. Одной из частых трудностей, с которой сталкиваются разработчики, особенно при миграции или создании новых внешних обработок, является правильное отображение табличных данных, например, списка номенклатуры. Если в обычных формах мы могли просто «вытянуть» табличную часть или справочник на форму, то в управляемых формах этот подход часто приводит к отображению данных в виде обычного поля ввода. Давайте подробно разберем, как правильно вывести таблицу номенклатуры во внешней обработке 1С 8.3 УНФ 3 и какие инструменты нам для этого понадобятся.
Наш основной помощник в этом вопросе – это элемент
Прежде чем погрузиться в детали работы с динамическими списками, давайте проанализируем ключевые различия между обычными и управляемыми формами. Это позволит нам лучше понять, почему привычные методы перестают работать и почему требуются новые подходы.
Это обеспечивает унифицированное и адаптивное представление данных независимо от используемого устройства или способа доступа.
&НаСервере и &НаКлиенте. Это позволяет оптимизировать производительность и безопасность, а также более четко структурировать логику приложения. Мы должны всегда помнить, что данные из базы данных доступны только на сервере, поэтому для их получения или записи часто приходится обращаться к серверным вызовам.Именно эти различия требуют нового подхода к отображению табличных данных, где
"Динамический список" – это мощный реквизит управляемой формы, предназначенный для вывода данных. Он идеально подходит для отображения больших массивов информации, таких как справочники (например, номенклатура), документы или произвольные выборки из базы данных. Мы рассмотрим пошаговую инструкцию по его созданию и настройке.
Для начала нам необходимо добавить в форму внешний обработки новый реквизит. Давайте сделаем это следующим образом:
СписокНоменклатуры) и выбираем тип данных Создание этого реквизита является основой для дальнейшей работы.
После создания реквизита, нам нужно указать, откуда он будет брать данные. Существует два основных способа:
Это самый простой способ, если мы хотим вывести данные из одного справочника, документа или регистра. Давайте сделаем следующее:
СписокНоменклатуры.Таким образом, динамический список автоматически будет отображать все элементы справочника "Номенклатура". Это очень удобно, если нам не нужны сложные фильтры или соединения.
Этот способ предоставляет гораздо большую гибкость и контроль над тем, какие данные будут отображаться. Мы можем:
Давайте рассмотрим пример простого запроса для получения номенклатуры с ее артикулом и видом номенклатуры:
ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Код,
Номенклатура.Наименование,
Номенклатура.Артикул,
Номенклатура.ВидНоменклатуры
ИЗ
Справочник.Номенклатура КАК Номенклатура
Этот запрос мы должны будем указать в свойстве "Запрос" нашего динамического списка.
После того как реквизит создан и источник данных настроен, нам нужно визуально отобразить его на форме. Давайте выполним следующие шаги:
СписокНоменклатуры.Особенность "Динамического списка" заключается в том, что он будет автоматически порционно считывать данные по мере навигации пользователя, что очень эффективно для работы с большими объемами информации.
Помимо базового отображения, "Динамический список" предоставляет множество дополнительных функций:
Все эти настройки могут быть выполнены как разработчиком в конфигураторе, так и самим пользователем в режиме 1С:Предприятие.
В некоторых случаях нам может потребоваться вывести на форму данные, которые не привязаны напрямую к объектам метаданных или требуют сложной обработки на сервере. В таких ситуациях мы можем использовать
Давайте рассмотрим, как это сделать:
Подобно "Динамическому списку", нам сначала потребуется реквизит формы:
МояТаблицаДанных) и выбираем тип Этот реквизит будет служить контейнером для наших данных.
Самое интересное здесь – это программное заполнение. Обычно эти действия выполняются на сервере, например, в обработчике события формы ПриСозданииНаСервере или в команде формы. Давайте посмотрим на пример:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Добавляем колонки в таблицу значений
МояТаблицаДанных.Колонки.Добавить("КодНоменклатуры", Новый ОписаниеТипов("Строка", , , Новый КвалификаторыСтроки(9)));
МояТаблицаДанных.Колонки.Добавить("НаименованиеНоменклатуры", Новый ОписаниеТипов("Строка", , , Новый КвалификаторыСтроки(100)));
МояТаблицаДанных.Колонки.Добавить("ЦенаПродажи", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2)));
// Пример заполнения данными (можно использовать запрос)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ПО Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура";
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
// Переносим данные из результата запроса в таблицу значений формы
Для Каждого СтрокаЗапроса Из РезультатЗапроса Цикл
НоваяСтрока = МояТаблицаДанных.Добавить();
НоваяСтрока.КодНоменклатуры = СтрокаЗапроса.Код;
НоваяСтрока.НаименованиеНоменклатуры = СтрокаЗапроса.Наименование;
НоваяСтрока.ЦенаПродажи = СтрокаЗапроса.Цена;
КонецЦикла;
КонецПроцедуры
В этом примере мы сначала определяем структуру нашей таблицы значений, добавляя необходимые колонки с их типами, а затем заполняем ее данными, полученными с помощью запроса.
Чтобы вывести нашу программно заполненную "Таблицу значений" на форму, мы должны сделать следующее:
МояТаблицаДанных.КодНоменклатуры, НаименованиеНоменклатуры, ЦенаПродажи), и настраиваем их заголовки.Таким образом, мы получаем полностью контролируемую нами таблицу с данными.
Внешние обработки — это универсальный инструмент в платформе 1С:Предприятие. Они представляют собой отдельные файлы, содержащие код и формы, которые мы можем подключать к конфигурации 1С без ее изменения. Это очень удобно для выполнения специфических задач, таких как:
В 1С:УНФ 3 (Управление нашей фирмой) также активно используются внешние обработки. Например, стандартные механизмы для загрузки номенклатуры из файлов часто реализованы как специализированные обработки. Понимание работы с управляемыми формами в контексте внешних обработок критически важно для эффективной автоматизации бизнес-процессов в УНФ.
Мы видим, что в мире управляемых форм 1С 8.3 подход к отображению табличных данных кардинально изменился. Элемент