Реализована возможность редактировать пользовательские настройки динамического списка в отдельной группе формы, отображающей динамический список, для указания которой реализовано свойство таблицы формы Группа пользовательских настроек. Реализована возможность редактировать настройки динамического списка в отдельной общей форме, которая указывается с помощью свойства конфигурации Основная форма настроек динамического списка.
Для объекта ДинамическийСписок реализовано свойство КомпоновщикНастроек, аналогичное соответствующему свойству отчетов.
В режиме совместимости с версией 8.3.2 поведение не изменилось.
Для расширения таблицы формы для динамического списка реализована стандартная команда СоздатьПоПараметру.
Для элемента формы Кнопка реализовано свойство Параметр, доступный только в том случае, если кнопка связан с командой СоздатьПоПараметру.
Для обработчика события ПередНачаломДобавления таблицы формы реализован параметр Параметр, который служит для передачи в обработчик события значения типа создаваемого документа.
В режиме совместимости с версией 8.3.3 поведение не изменилось.
В режиме совместимости с версией 8.3.3 поведение не изменилось.
В режиме совместимости с версией 8.3.3 поведение не изменилось.
Основной реквизит управляемой формы типа ДинамическийСписок будет отключен в том случае, если функциональной опцией отключен объект конфигурации, который указан в качестве основной таблицы динамического списка.
В обоих случаях анализируются только те функциональные опции, которые не имеют параметров.
В версии 8.3 основной реквизит формы типа Объект отключался, если функциональной опцией был отключен соответствующий объект конфигурации. При этом анализировались все функциональные опции.
В предыдущих версиях «1С:Предприятия» основной реквизит типа ДинамическийСписок отключался в том случае, если функциональной опцией был отключен объект конфигурации, который указан в качестве основной таблицы динамического списка. При этом анализировались все функциональные опции.
Для автоматически созданных форм, в которых присутствует таблица, связанная с динамическим списком, изменен набор элементов (и их внешний вид) отвечающий за поиск данных в динамическом списке. Изменен внешний вид диалога поиска.
Реализован элемент управляемой формы ДополнениеЭлементаФормы, предназначенный для отображения дополнительных свойств элементов форм.
Реализованы расширения дополнения элемента формы для отображения строки поиска, состояния просмотра, управления поиском.
Для элемента управляемой формы ТаблицаФормы реализованы предопределенные элементы СтрокаПоиска, СостояниеПросмотра, УправлениеПоиском, а также свойства ПоложениеСтрокиПоиска, ПоложениеСостоянияПросмотра, ПоложениеУправленияПоиском.
История поиска хранится в хранилище системных настроек с ключом Общее/ИсторияПоискаТаблицы/<Имя формы>.<Имя таблицы>.
В библиотеке картинок реализована картинка УправлениеПоиском
В режиме совместимости с версией 8.3.4 поведение не изменилось.
Для расширения таблицы управляемой формы для динамического списка реализованы следующие методы:
ПолучитьИсполняемуюСхемуКомпоновкиДанных();
ПолучитьИсполняемыеНастройкиКомпоновкиДанных().
Для объекта ПользовательскиеНастройкиКомпоновкиДанных реализованы колонки Отбор, Порядок, Выбор, УсловноеОформление, Структура.
Переработана форма пользовательских настроек отчета и динамического списка: вместо полей ввода для вызова редакторов (отбора, порядка и т.д.) реализованы закладки с таблицами (аналогично редактору схемы компоновки данных в конфигураторе).
Команда формы отчета Настройки отображается в основной командной панели формы.
Форма пользовательских настроек отчета и динамического списка выглядела по-другому.
Команда формы отчета Настройки находилась в меню Еще.
Рекомендуется выполнять получение свойства Период в обработчике события управляемой формы ПриЗагрузкеПользовательскихНастроекНаСервере.
В режиме совместимости с версией 8.3.5 поведение не изменилось.
Свойство Отображение таблицы формы, связанной с динамическим списком, получалось из настроек на клиенте при открытии формы.
В режиме совместимости с версией 8.3.5 поведение не изменилось.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
Генерируется ошибка в том случае, если в таблице, указанной в качестве основной таблицы динамического списка, отсутствуют ключевые поля (с точки зрения объектной модели языка) и настроена группировка.
При установке из встроенного языка отбора, упорядочивания или группировки по полю, отсутствующего в тексте запроса, будет выдана ошибка о ненайденном поле.
Изменен список ограничений для запросов, использующихся при формировании динамического списка.
Описаны особенности упорядочивания динамического списка.
Изменено описание способов получения данных динамическим списком.
Стандартная картинка строк формируется на основе стандартных реквизитов. Если в тексте запроса списка есть поля, псевдонимы которых совпадают с именами стандартных реквизитов, но в них получаются другие данные — такие поля не будут использоваться для формирования стандартной картинки.
При невозможности преобразовать отбор динамического списка в конструкцию языка запросов, выдается ошибка.
На сторону клиента не передаются данные колонок динамического списка, которые не используются для отображения и не помечены свойством Использовать всегда. Доступ к данным таких колонок на стороне клиента невозможен.
На сторону клиента не передаются данные колонок динамического списка, которые помечены свойством Использовать всегда, но для которых у текущего пользователя отсутствует право Просмотр. Доступ к данным таких колонок (с помощью свойства ТекущиеДанные и метода ДанныеСтроки()) на стороне клиента невозможен.
Отборы, которые автоматически накладываются динамическим списком на стандартные поля Владелец, Родитель, Дата, Период и ЭтоГруппа, применяются средствами системы компоновки данных.
Отборы, которые автоматически накладываются динамическим списком на ключевые поля, могут применяться как средствами системы компоновки данных, так и путем непосредственного добавления в текст запроса условия на поля основной таблицы.
В результате применения отборов средствами системы компоновки данных, они могут примениться во вложенных запросах и параметрах виртуальных таблиц. При этом возможно существенное изменение результата выборки данных динамическим списком (относительно результата в режиме совместимости с версией 8.3.7).
Более подробное описание указанных особенностей приведено в документации.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
Список ограничений на настройки группировок и упорядочивания был другим и не являлся полным.
Если в таблице, указанной в качестве основной таблицы динамического списка, отсутствуют ключевые поля (с точки зрения объектной модели языка) и настроена группировка, то состав отображаемых данных был неопределен.
При установке из встроенного языка отбора на поле, отсутствующее в тексте запроса, отбор мог быть успешно применен или проигнорирован. При установке из встроенного языка упорядочивания или группировки по полю, отсутствующему в тексте запроса, такое поле игнорировалось.
Список ограничений для запросов, использующихся при формировании динамического списка, был другим.
Список особенностей упорядочивания динамического списка был не документирован.
Описание способов получения данных динамическим списком было другим.
Если в тексте запроса динамического списка есть поля с псевдонимами, совпадающими с именами стандартных реквизитов, используемые для формирования стандартной картинки, они использовались для формирования стандартной картинки (кроме реквизита ЭтоГруппа).
При невозможности преобразовать отбор динамического списка в конструкцию языка запросов, отбор применялся средствами процессора компоновки данных после получения данных, что могло приводить к уменьшению количества отображаемых данных, относительно их реального количества (с учетом отбора).
При наличии в настройках динамического списка недоступных (без учета прав и функциональных опций) полей сортировки или группировки, такие поля игнорировались.
В некоторых случаях на сторону клиента передавались данные колонок динамического списка, которые не использовались для отображения и не помечены свойством Использовать всегда.
На сторону клиента передавались данные колонок динамического списка, которые помечены свойством Использовать всегда, но для которых у текущего пользователя отсутствовало право Просмотр. В качестве значения таких колонок выступали значения по умолчанию для соответствующего типа.
Отборы, автоматически накладываемые динамическим списком на ключевые поля и стандартные поля Владелец, Родитель, Дата, Период, ЭтоГруппа, всегда применялись путем непосредственного добавления условия в текст запроса.
В информации для технической поддержки будет доступен список полей, на которые отсутствуют права доступа.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
Дочерние поля полей, являющихся агрегатными функциями языка запросов;
Дочерние поля полей из других (внешних) источников данных;
Дочерние поля–характеристики полей табличных частей.
Поиск через строку поиска по ссылочным полям, являющимся агрегатными функциями языка запросов, не выполняется.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
Дочерние поля полей, являющихся агрегатными функциями языка запросов;
Дочерние поля полей из других (внешних) источников данных;
Дочерние поля–характеристики полей табличных частей
При установке отбора на такие поля, динамический список мог работать неправильно – не отображать часть или все данные.
Поиск, через строку поиска, по ссылочным полям, являющимися агрегатными функциями языка запросов, пытался выполняться. При этом могли выдаваться ошибки, а в случае если ошибки не выдавались – динамический список мог работать неправильно: не отображать часть или все данные.
Если в тексте запроса, установленном для динамического списка, уже есть поле, псевдоним которого совпадает с псевдонимом поля основной таблицы – для отбора будет использоваться именно это поле, в независимости от того действительно оно является этим полем основной таблицы.
Поля, имеющие несколько вариантов пути (на разных вариантах встроенного языка), доступны только на текущем варианте встроенного языка.
В режиме совместимости с версией 8.3.7 и более ранними, поведение не изменилось.
реализована возможность редактировать пакетный запрос (страница конструктора Пакет запросов).
не поддерживается установка количества выбираемых записей, но поддерживается отключение этой возможности запроса.
при закрытии конструктор запроса диагностирует наличие ключевого слова ПЕРВЫЕ и сообщается об этом.
В режиме совместимости с версией 8.3.8 поведение не изменилось.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
Реализовано свойство динамического списка ПолучениеПредставленийДляНевидимыхПолей.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
Если в динамическом списке не указана основная таблица или в основной таблице отсутствует поле ключа, которое может использовать динамический список, то в таком списке не поддерживается настройка полей группировки.
В режиме совместимости с версией 8.3.9 поведение не изменилось.
Если в динамическом списке не указана основная таблица или в основной таблице отсутствует поле ключа, которое может использовать динамический список, настройка группировок была доступна, однако приводило к ошибке получения данных.
Не поддерживается присвоение значения реквизиту формы типа ДинамическийСписок.
Не поддерживается передача реквизита типа ДинамическийСписок в качестве параметра метода или возвращаемого значения клиент-серверного взаимодействия.
В режиме совместимости с версией 8.3.9 поведение не изменилось.
Поддерживалось присвоение значения реквизиту управляемой формы типа ДинамическийСписок. При этом дальнейшее поведение системы было неопределено.
Допускалась передача реквизита типа ДинамическийСписок в качестве параметра метода или возвращаемого значения клиент-серверного взаимодействия. При этом дальнейшее поведение системы было неопределено.
Поведение системы аналогично такой возможности схемы компоновки данных.
Реализовано свойство динамического списка АвтоЗаполнениеДоступныхПолей.
В режиме совместимости с версией 8.3.7 поведение не изменилось.
реализована возможность искать полную дату (с указанием времени);
реализована возможность искать числа с дробной частью без указания дробной части;
улучшено отображение результатов поиска.
В режиме совместимости с версией 8.3.9 поведение не изменилось.
при поиске полной даты (с указанием времени) — отдельно искалась дата и отдельно строка, содержащая время;
при поиске значения, похожего на число с указанием дробной части — выполнялся поиск отдельно целой части и отдельно дробной части, результаты объединялись «по И»;
отображение результатов поиска не всегда работало корректно.
Если текущей колонкой таблицы, связанной со списком, является колонка, которая отображает поле, недоступное для использования в отборе – недоступна команда Найти по значению.
Доступность команды Найти по значению не зависело от того, доступно поле, отображаемое текущей колонкой динамического списка, для использования в отборе или нет.
Для такой формы становятся доступными свойство формы Группа пользовательских настроек и обработчик события ПриОбновленииСоставаПользовательскихНастроекНаСервере.
В режиме совместимости с версией 8.3.9 поведение не изменилось.
Доступны только виды сравнений Равно, Не равно, В списке, Не в списке, Заполнено и Не заполнено.
Не поддерживается поиск через строку поиска динамического списка.
Расширенный поиск возможен только по точному соответствию.
Были доступны все виды сравнения.
При поиске через строку поиска динамического списка генерировалась ошибка.
Расширенный поиск позволял указать любой вариант поиска, но при поиске по вхождению или началу строки генерировалась ошибка.
к разрыву связи между полем динамического списка и отображающим это поле элементом формы;
потере значения признака ИспользоватьВсегда поля динамического списка.
В режиме совместимости с версией 8.3.10 поведение не изменилось.
к разрыву связи между полем динамического списка и отображающим это поле элементом формы;
потере значения признака ИспользоватьВсегда поля динамического списка.
В режиме совместимости с версией 8.3.10 поведение не изменилось.
В режиме совместимости с версией 8.3.10 поведение не изменилось.
В режиме совместимости с версией 8.3.11 поведение не изменилось.
В тонком клиенте для этой колонки в качестве заголовка использовалось имя колонки таблицы формы.
В веб-клиенте для этой колонки в качестве заголовка использовался заголовок колонки таблицы формы.
Если в схеме компоновки данных отсутствует описание параметра, используемого в запросе, то в источнике доступных настроек компоновки данных в доступном параметре автоматически устанавливается возможность использовать в параметре списка значений, если в запросе этот параметр находится в операции В.
Если в запросе динамического списка параметр расположен в операции В, то в настройках компоновки данных динамического списка данный параметр может принимать список значений и динамический список будет корректно передавать установленный список значений в запрос.
В режиме совместимости с версией 8.3.11 поведение не изменилось.
Если в схеме компоновки данных отсутствует описание параметра, то считалось, что в данный параметр можно передавать только единичные значения.
Динамический список некорректно отрабатывал установку списка значений для параметра запроса.
В режиме совместимости с версией 8.3.11 поведение не изменилось.
Общий размер искомого текста не должен превышать 1000 символов.
Количество отдельных слов в искомом тексте не должно быть больше 20.
При нарушении данных ограничений генерируется ошибка. Правила разбиения поискового запроса на отдельные слова приведены в документации.
Из основных настроек динамического списка и настроек варианта отчета, отмеченных как пользовательские, удаляются элементы с недоступными и отсутствующими полями.
Из пользовательских настроек, сформированных по умолчанию, удаляются элементы, содержащие недоступные и несуществующие поля.
Вызываются обработчики событий ПередЗагрузкойПользовательскихНастроекНаСервере и ПриЗагрузкеПользовательскихНастроекНаСервере.
Для обработчиков событий ПередЗагрузкойПользовательскихНастроекНаСервере и ПриЗагрузкеПользовательскихНастроекНаСервере реализован параметр ИспользуютсяСтандартныеНастройки.
При выполнении команды Установить стандартные настройки форм отчетов и динамических списков выполняются следующие действия:
Из основных настроек динамического списка и настроек варианта отчета, отмеченных как пользовательские, удаляются элементы с недоступными и отсутствующими полями.
Из пользовательских настроек, сформированных по умолчанию, удаляются элементы, содержащие недоступные и несуществующие поля.
Если за время использования отчета или динамического списка пользовательские настройки не изменялись на стороне клиента ни интерактивно, ни с помощью встроенного языка, то при закрытии формы отчета или динамического списка, текущие пользовательские настройки удаляются из системного хранилища.
Метод КомпоновщикНастроекКомпоновкиДанных.Восстановить(), вызванный с параметром СпособВосстановленияНастроекКомпоновкиДанных.Полное, выполняет следующие действия: отключает флаг Использование у элементов основных настроек, потерявших связь с доступными полями, удаляет элементы пользовательских настроек и основных настроек, отмеченных, как пользовательские, но которые содержат поля, отсутствующие в коллекции доступных полей или недоступные для текущих функциональных опций и прав.
В режиме совместимости с версией 8.3.12 поведение не изменилось.
Из основных настроек динамического списка и настроек варианта отчета, отмеченных как пользовательские, не удалялись элементы с недоступными и отсутствующими полями.
Из пользовательских настроек, сформированных по умолчанию, не удалялись элементы, содержащие недоступные и несуществующие поля.
Не вызывались обработчики событий ПередЗагрузкойПользовательскихНастроекНаСервере и ПриЗагрузкеПользовательскихНастроекНаСервере.
При выполнении команды Установить стандартные настройки форм отчетов и динамических списков наблюдалось следующее поведение:
Из основных настроек динамического списка и настроек варианта отчета, отмеченных как пользовательские, не удалялись элементы с недоступными и отсутствующими полями.
Из пользовательских настроек, сформированных по умолчанию, не удалялись элементы, содержащие недоступные и несуществующие поля.
Если за время использования отчета или динамического списка пользовательские настройки не изменялись на стороне клиента ни интерактивно, ни с помощью встроенного языка, то при закрытии формы отчета или динамического списка, в качестве пользовательских настроек сохранялись стандартные настройки, сформированные на основании текущего варианта (основных настроек динамического списка).
Метод КомпоновщикНастроекКомпоновкиДанных.Восстановить(), вызванный с параметром СпособВосстановленияНастроекКомпоновкиДанных.Полное, отключал флаг Использование у элементов основных настроек, потерявших связь с доступными полями.
19.01.12 — 10:20
Всем привет. Подскажите, у меня следующая задумка. В зависимости от отборов и настроек пользователя на форме, у меня формируется «произвольный запрос» для динамического списка. Основа запроса одна и та же, но добавляются некоторые поля и таблицы для запроса, чтобы без надобности не грузить систему. Так вот, когда запрос «тянет» дополнительные поля, необходимо их отображать на форме в таблице. В конфигураторе добавил новую колонку, но без привязки «Путь к данным», что не дает ей отображаться у клиента, как и на превьюве в самом конфигураторе, но и программно до нее не достучаться, чтобы в нужный момент установить ей «Путь к данным». Скажите, возможно ли вообще реализовать задачу таким образом, либо к колонке созданной на этапе конфигурирования, либо и колонку создать программно с установлением ей данных??? Как вариант вижу пока такой путь решения, на этапе конф-ия сразу прописать путь к данным, но в нужный момент запрос в это поле будет возвращать актуальные данные, а иначе просто колонка из запроса с не важно каким значением. Ну и разумеется управлять видимостью этой колонки.
P.S. Основная таблица для динамического списка: документ
Всем спасибо
1 — 19.01.12 — 10:22
можно, уже убсудали динамику колонок и реквизитов УФ, в том числе и я — мои вставки идеальны, хвастаюсь)
ищи)
2 — 19.01.12 — 10:22
есть возможность добавлять поля формы програмно … вроде
почему програмно не удается поле добавить?
3 — 19.01.12 — 10:23
//Опишем тип реквизита «Динамический список»
ТипыРеквизитаДинамическийСписок = Новый Массив;
ТипыРеквизитаДинамическийСписок.Добавить(Тип(«ДинамическийСписок»));
ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(ТипыРеквизитаДинамическийСписок);
//Выберем из метаданных все регистры бухгалтерии, созда
Для Индекс = 0 По Метаданные.РегистрыБухгалтерии.Количество() — 1 Цикл
МетаданныеРегистра = Метаданные.РегистрыБухгалтерии.Получить(Индекс);
ИмяРеквизита = СтрЗаменить(МетаданныеРегистра.ПолноеИмя(),».»,»_»);
//Создадим страницу для каждого регистра
СтраницаРегистра = Элементы.Добавить(«_стр» + ИмяРеквизита,Тип(«ГруппаФормы»),Элементы.СтраницыСписокРегистрыБухгалтерии);
СтраницаРегистра.Вид = ВидГруппыФормы.Страница;
СтраницаРегистра.Заголовок = МетаданныеРегистра.Представление();
//Создадим на форме группу для каждого регистра
ГруппаРегистра = Элементы.Добавить(«_гр» + ИмяРеквизита,Тип(«ГруппаФормы»),СтраницаРегистра);
ГруппаРегистра.Вид = ВидГруппыФормы.ОбычнаяГруппа;
//Создадим новый реквизит формы
ТаблЗначений = Новый РеквизитФормы(«_т» + ИмяРеквизита, ОписаниеТиповДляРеквизита);
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(ТаблЗначений);
//Изменим структуру реквизитов формы
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//Теперь у формы есть реквизит, к которому можно обратиться по имени и изменить различные параметры
// укажем для него основную таблицу — Движения с субконто
РеквизитТаблЗначений = ЭтаФорма[«_т» + ИмяРеквизита];
РеквизитТаблЗначений.ОсновнаяТаблица = МетаданныеРегистра.ПолноеИмя() + «.ДвиженияССубконто»;
//Теперь на форме создадим таблицу формы
ТаблицаФормы = Элементы.Добавить(«_ф» + ИмяРеквизита, Тип(«ТаблицаФормы»),ГруппаРегистра);
ТаблицаФормы.ПутьКДанным = «_т» + ИмяРеквизита;
//Создадим колонки, используя доступные поля отбора СКД
ДоступныеПоляОтбора = ЭтаФорма[«_т» + ИмяРеквизита].Отбор.ДоступныеПоляОтбора;
Для Каждого Реквизит Из ДоступныеПоляОтбора.Элементы Цикл
Попытка
НоваяКолонкаТаблицы = Элементы.Добавить(«Колонка» + Реквизит.Поле, Тип(«ПолеФормы»), ТаблицаФормы);
НоваяКолонкаТаблицы.ПутьКДанным = «_т» + ИмяРеквизита + «.»+ Реквизит.Поле;
Исключение
//Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецЦикла;
4 — 19.01.12 — 10:26
(1) и ну и дал бы ссылки, у тебя ж отобор по темем есть, и сам лучше помнишь, в каких темах было
5 — 19.01.12 — 10:27
*отбор и «темам»
6 — 19.01.12 — 10:29
Вот этот код работает. (Не претендую на правильность, меня
»
ДоступныеПоляОтбора = ЭтаФорма[«_т» + ИмяРеквизита].Отбор.ДоступныеПоляОтбора;
Для Каждого Реквизит Из ДоступныеПоляОтбора.Элементы Цикл
»
смущает.
Но, принцип такой…
1. Объявляешь тип реквизита формы:
ТипыРеквизитаДинамическийСписок = Новый Массив;
ТипыРеквизитаДинамическийСписок.Добавить(Тип(«ДинамическийСписок»));
ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(ТипыРеквизитаДинамическийСписок);
2. Создаешь РЕКВИЗИТ формы:
ТаблЗначений = Новый РеквизитФормы(«_т» + ИмяРеквизита, ОписаниеТиповДляРеквизита);
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(ТаблЗначений);
3. Обновляешь реквизиты:
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
4. Получаешь доступ к свойствам реквизита. Текст запроса тоже будет доступен
РеквизитТаблЗначений = ЭтаФорма[«_т» + ИмяРеквизита];
РеквизитТаблЗначений.ОсновнаяТаблица = МетаданныеРегистра.ПолноеИмя() + «.ДвиженияССубконто»;
5. Ну, теперь создаешь элементы формы
ТаблицаФормы = Элементы.Добавить(«_ф» + ИмяРеквизита, Тип(«ТаблицаФормы»),ГруппаРегистра);
ТаблицаФормы.ПутьКДанным = «_т» + ИмяРеквизита;
и колонки:
НоваяКолонкаТаблицы = Элементы.Добавить(«Колонка» + Реквизит.Поле, Тип(«ПолеФормы»), ТаблицаФормы);
НоваяКолонкаТаблицы.ПутьКДанным = «_т» + ИмяРеквизита + «.»+ Реквизит.Поле;
7 — 19.01.12 — 10:39
Добавил 2 строчки кода, для добавления колонки с установлением «Путь к данным» :
НоваяКолонкаТаблицы = Элементы.Добавить(«Колонка_1», Тип(«ПолеФормы»), Элементы.Список);
НоваяКолонкаТаблицы.ПутьКДанным = «Документ_СпецификацияККонтракту.Вложение»;
На этапе события, пишет:
{Документ._СпецификацияККонтракту.Форма.ФормаСпискаУправляемая.Форма(22)}: Ошибка при вызове метода контекста (Добавить)
НоваяКолонкаТаблицы = Элементы.Добавить(«Колонка_1», Тип(«ПолеФормы»), Элементы.Список);
по причине:
Изменение состава элементов недоступно
8 — 19.01.12 — 10:42
Хотя вторая строка наверное должна быть такой:
НоваяКолонкаТаблицы.ПутьКДанным = «Список.Вложение»;
Но суть ошибки не меняет, все так же не доступно изменение состава элементов
9 — 19.01.12 — 10:46
Господа, это я обшибся, добавление должно происходить на сервере. Всем спасибо большое !!!!
10 — 19.01.12 — 10:53
0_0
ProgerLink
11 — 19.01.12 — 16:15
Подведу итог, может кому пригодится. Колонка программно создавалась без проблем, ей были установлены следующие свойства:
.Вид = ВидПоляФормы.ПолеКартинки;
и
.КартинкаЗначений = БиблиотекаКартинок.ТолькоСкрепка;
Но в форме списка картинок не появлялось, пока не добавил одну строчку. Вся процедура:
Процедура УправлениеКолонкой_Вложение(РежимДобавить)
КолонкаТаблицы = Элементы.Найти(«КолонкаВложение»);
Если КолонкаТаблицы = Неопределено Тогда
КолонкаТаблицы = Элементы.Вставить(«КолонкаВложение», Тип(«ПолеФормы»), Элементы.Список, Элементы.Найти(«Дата»));
КолонкаТаблицы.ПутьКДанным = «Список.Вложение»;
КолонкаТаблицы.Вид = ВидПоляФормы.ПолеКартинки;
КолонкаТаблицы.Заголовок = » «;
КолонкаТаблицы.КартинкаЗначений = БиблиотекаКартинок.ТолькоСкрепка;
Список.УстановитьОбязательноеИспользование(«КолонкаВложение», Истина); // <- Та самая строчка
//КолонкаТаблицы.Картинка.Вид = ВидКартинки.ИзБиблиотеки;
Иначе
Если РежимДобавить Тогда
КолонкаТаблицы.Видимость = Истина;
Иначе
КолонкаТаблицы.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Главная » Статьи 1с » 1С как установить параметры динамического списка
Динамические списки: использование и установка параметров в 1С 8.2 и 8.3
Давайте представим, что вы работаете в режиме управляемых форм и вам необходимо при работе некоторого справочника постоянно производить фильтрацию элементов по определенному и постоянному отбору. Более того вы к примеру работаете в документом и при выборе реквизитов необходимо,чтобы открывалась форма выбора элементов справочника, но чтобы в данном списке отображались только те элементы, которые соответствуют определенному условию. В таком случае вам непременно помогут динамические списки. что это такое и с чем его «едят» рассмотрим далее.
К примеру у нас есть справочник СтруктураПосевныхПлощадей, в котором есть наименование культуры, поле и год в котором данная культура была посажена.
рис.1
Добавим в командную панель поле ВыборГода и перенесем мышкой на форму. В результате чего будем делать отбор по необходимому нам году. Как вы уже заметили в панели реквизитов есть реквизит Список с типом ДинамическийСписок. Вот это именно то, что позволит нам производить любые манипуляции и любые отборы. Если мы нажмем свойства в контекстном меню динамического списка(нажать правой кнопкой), то увидим что основная таблица состоит полностью из всех реквизитов данных элементов справочника.
рис.2
Если мы поставим галочку в поле ПроизвольныйЗапрос и в настройке списка нажмем открыть, то увидим привычный для нас запрос. Здесь мы можем полностью его переписать вручную, либо при помощи конструктора запроса, что намного удобнее.
рис.3
Добавим условие, чтобы наш запрос выглядел так, как на рисунке 3. Мы видим, что у нас появился параметр &ВыборГода , в который мы будем передавать данные с поля, который мы поместили на форму.
рис.4
Как передать параметр в динамический список 1С, а именно в запрос, который мы отредактировали? Нам необходимо в модуле формы добавить некоторый код. Для этого нам очень подойдет процедура ПриСозданииНаСервере, так как она отрабатывает еще до открытия формы. &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Параметры.УстановитьЗначениеПараметра(«ВыборГода», Параметры.ВыборГода); КонецПроцедуры Таким образом при открытии данного справочника из необходимого вам места вы можете при изменении года тут же фильтровать структуру посевов.
Настройки динамического списка
Если вы не желаете «заморачиваться» с параметрами и запросами, вы можете перейти во вкладку Настройки и устанавливать уже жесткий отбор. Например установим год 2016. Также вы можете по вашему желанию производить сортировку, группировку и даже использовать оформление.
рис.5
На этом настройка завершена. Как видите данный механизм очень прост и удобен.
1chelp.net
Обработка и оформление данных динамического списка | 1С:Зазеркалье
08.07.2016
Реализовано в версии 8.3.10.2168.
Как вы знаете, динамический список удобен и полезен для быстрого показа больших списков. Он довольно гибок, позволяет вам изменять стандартный запрос, и даже создавать собственный сложный запрос. Благодаря этому у вас есть возможность выводить в списке разные дополнительные данные, связанные с основными данными списка.
Однако такая универсальность имеет и оборотную сторону. Желание «показать сразу всё» может приводить вас к значительному усложнению запроса. В результате вы будете получать неэффективные планы выполнения и, как результат, снижение производительности при отображении и пролистывании списка.
Кроме этого есть ряд прикладных задач, в которых алгоритм отбора и оформления данных списка довольно сложен. В этих случаях возможностей произвольного запроса и условного оформления просто не хватает. Хочется иметь более «свободный» и более «точный» инструмент, который позволит сделать «что угодно» и «только там, где нужно».
Событие ПриПолученииДанныхНаСервере
Специально для этих целей мы реализовали новый обработчик ПриПолученииДанныхНаСервере(). Он добавлен в расширение таблицы, отображающей динамический список.
Этот обработчик вызывается на сервере после того, как динамический список получил и оформил для отображения очередную порцию данных.
Важная особенность заключается в том, что в этом обработчике недоступен контекст формы. Вы можете оперировать только коллекцией тех строк списка, которые получены из базы, уже отобраны и оформлены в соответствии с настройками динамического списка.
Вы можете изменить данные, находящиеся в этих строках, или применить к ячейкам собственное оформление. Доступны такие возможности оформления как ЦветФона, ЦветТекста, Шрифт, ГоризонтальноеПоложение, Видимость, Доступность, Отображать, Текст и Формат.
Также, при необходимости, вы можете посмотреть и проанализировать копию полных настроек динамического списка. Но изменить настройки вы не сможете.
Простейший сценарий использования
Проще всего понять назначение этого обработчика на примере. Пример заключается в том, чтобы в списке товаров показать их остатки из регистра накопления. Количество меньше некоторого значения выделить красным цветом.
До сих пор эта задача решалась левым соединением в запросе динамического списка, и условным оформлением списка, устанавливаемым в конфигураторе.
Теперь она решается так. Стандартный запрос списка не усложняется, в него добавляется только фиктивное поле Остаток.
А в обработчике ПриПолученииДанныхНаСервере() только для полученных строк вычисляются остатки. И тут же маленькие остатки выделяются красным.
Здесь, методом ПолучитьКлючи(), из коллекции строк динамического списка вы получаете их ключи (ссылки), и передаёте эти ключи в запрос остатков.
Затем, при обходе результатов запроса, вы получаете нужные строки по ключу, в колонку Остаток помещаете значение, и устанавливаете оформление этого поля, если нужно.
В результате пользователь видит следующий список:
В чём преимущество такого варианта?
Во-первых, запрос списка остаётся простым. Или он не остаётся простым, но количество соединений в нём уменьшается. А это значит, что для него, с большой долей вероятности, будет построен хороший план.
Во-вторых, получение остатков в обработчике будет выполняться только один раз, в то время как запрос списка может быть выполнен несколько раз (в зависимости от настроек списка и сценария листания).
И, в-третьих, новый обработчик выполняется уже после того, как основные данные получены из базы и прошли проверку прав. Это значит, что в некоторых сценариях получение связанных данных в обработчике можно выполнять в привилегированном режиме, без проверки прав. Это ускоряет работу списка.
Ограничения на изменяемые и добавляемые поля
Тот факт, что в обработчике вы можете изменить значения полей списка, несет в себе особенность, которую нужно всегда учитывать.
Если не предпринять дополнительных мер, то пользователь может быть сильно удивлён результатами группировки, сортировки или отбора (в том числе и поиска) по тем полям, которые вы изменили. Ведь эти действия будут выполняться по исходным данным, получаемым запросом, а не по тем данным, которые видит пользователь.
Поэтому в тех случаях, когда вы изменяете значения полей, не забывайте исключить их из группировки, порядка и отбора. Специально для этого мы реализовали три новых метода.
Кроме этого, возможно, в некоторых сценариях имеет смысл визуально выделить такие колонки в таблице, чтобы пользователи видели, что эти колонки «особенные», не такие, как все.
wonderland.v8.1c.ru
Как обновить динамический список или реквизит на форме клиента?
+6
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закрыть форму и открыть снова — все обновится
НО если нужно обновить сразу в открытой форме, то используйте код:
Код 1C v 8.3 &НаКлиенте Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт Если Не Результат Тогда Возврат; КонецЕсли; // Много кода обработки //… //… //… // ОБНОВИМ динамический список файлы Элементы.Файлы.Обновить(); // для обновления Реквизитов ЭтаФорма.Прочитать(); // Обновление данных ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры
Обновить() — Обновляет данные в таблице.
Прочитать() — Обновляет объект управляемой формы.
ОбновитьОтображениеДанных() — В принудительном порядке обновляет содержание элементов управления. Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.
helpf.pro
Смотрите также
+17
Как установить параметр динамического списка?
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента
Для вывода используется используется запрос:
Код 1C v 8.3
ВЫБРАТЬ
РегистрСведенийFinans.Период,
РегистрСведенийFinans.Клиент,
РегистрСведенийFinans.Движение,
РегистрСведенийFinans.Расшифровка,
РегистрСведенийFinans.СуммаОбщая,
РегистрСведенийFinans.РасходыСервиса,
РегистрСведенийFinans.W1C
ИЗ
РегистрСведений.Finans КАК РегистрСведенийFinans
ГДЕ
РегистрСведенийFinans.Клиент =Клиент
Чтобы при открытии не отображалась информацию по другим клиентам, необходимо установить параметр динамического списка, сделаем это так:
Код 1C v 8.3
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Финансы.Параметры.УстановитьЗначениеПараметра("Клиент", Объект.Ссылка);
КонецПроцедуры
Можно и просто настроить отбор через настройки, используя ЭлементОтбораКомпоновкиДанных
Подробнее об этом: Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором?
Динамический список 1С предназначен для вывода на форму любых данных в произвольном виде. Эти данные могут быть представлены в виде списка, таблицы или дерева. Динамический список позволяет делать сортировку выводимых данных, отбор, группировку, условное оформление и т.д. Причём, отбор, группировку и прочее может делать как разработчик, так и пользователь.
Динамический список 1С можно создать в качестве реквизита управляемой формы. Для этого достаточно, типу реквизита присвоить значение ДинамическийСписок.
В моем примере динамический список создан на основной форме обработки.
Для того, чтобы динамический список выводил какие-то данные, нам следует или указать основную таблицу в свойствах динамического списка, или написать произвольный запрос на языке запросов 1С.
Динамический список 1С — основная таблица
Динамическому списку можно назначить основную таблицу. Основная таблица – это произвольный объект метаданных (документ, справочник, регистр значения и т.д.), данные которого должны отобразиться в динамическом списке.
Например, в качестве основной таблицы выберем справочник Номенклатура.
И поместим динамический список на форму в виде таблицы, не забыв добавить колонки при размещении.
Если мы сейчас откроем обработку в пользовательском режиме 1С: Предприятия, то на основной форме обработки будет номенклатура в виде иерархического списка.
Можно сделать отображение списка в виде дерева. Для этого можно изменить режим просмотра таблицы на форме в пользовательском режиме.
Либо, поменять значение свойства Отображение таблицы формы, в которой был размещен динамический список.
После этого, динамический список на форме будет в виде дерева.
Произвольный запрос динамического списка 1С
Помимо использования основной таблицы, можно также динамический список сделать на основании запроса. Причем, можно взять за основу основную таблицу. Для примера, выведем вместе с номенклатурой цены, которые хранятся в периодическом регистре сведений Цены номенклатуры. Если мы в свойстве Произвольный запрос динамического списка установим флаг, при уже выбранной основной таблице, то у нас основная таблица будет взята за основу при формировании запроса.
Чтобы посмотреть на запрос, следует нажать на гиперссылку Открыть свойства НастройкаСписка.
В случае произвольного запроса мы можем изменить набор данных, который должен отображаться в динамическом списке. Но в этом случае все равно рекомендуется указывать основную таблицу, необходимо это делать для того, чтобы платформа могла определить, какая информация в этом динамическом списке главная, а какая второстепенная, и исходя из этого настроить стандартные команды. В том случае, если у Вас несколько таблиц и они связаны каким-то соединением, то все равно рекомендуется всегда указывать основную таблицу, потому что в противном случае производительность основного списка будет желать лучшего.
Свяжем справочник Номенклатура с виртуальной таблицей срез последних регистра сведений Цены номенклатуры.
Для этого, вызовем конструктор запроса из окна динамического списка, и добавим в список таблиц запроса виртуальную таблицу СрезПоследних. У виртуальной таблицы выберем ресурс Цена, который поместим в список полей, применив к этому полю функцию ЕстьNULL.
Свяжем левым соединением таблицу номенклатуры с виртуальной таблицей СрезПоследних регистра сведений.
И исправим имя поля Цена.
Наш запрос готов.
Обратите внимание на свойства «Динамическое считывание данных», которое есть и в свойствах динамического списка, когда указана основная таблица, и в том случае, когда указан произвольный запрос . Если это свойство установлено, то считывание данных происходит порциями, т.е. выбираются только те данные, которые необходимы для отображения на экране. В целях улучшения производительности, лучше всегда это свойство устанавливать.
Поскольку, мы переделывали существующий динамический список, то поле цена в таблице формы не отобразилось. Добавим это поле.
После такой доработки динамического списка, на в таблице на форме будут отображаться цены у номенклатуры.
Очень подробно работа с динамическими списками дается в моей книге «Основы разработки в 1С: Такси».
В этой книге вы научитесь:
- Настраивать динамические списки;
- Работать с поиском в динамическом списке;
- Программировать динамические списки (программная установка параметров, отборов, группировок, сортировок и условного оформления).
У вас, как у читателя блога, есть скидка 15 % по промо-коду: 48PVXHeYu
Более подробно о работе с другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.
В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком
Для моих читателей, купон на скидку 25%: hrW0rl9Nnx
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
[Практика программирования] Управляемые формы 1С 8: как программно изменить запрос динамического списка и программно вывести колонку добавленного реквизита списка
Ранее уже описывалось в соответствующей статье то, как разместить программно в форме колонку реквизита объекта базы (например, документа или справочника). В этой статье будет рассмотрено как программно добавить колонку с флажком в список управляемой формы с динамическим списком, данные для которого выбираются произвольным запросом.
Для программного добавления элементов управляемой формы должно быть учтено условие о том, что добавление происходит на стороне сервера, а не на клиенте (не в процедуре «ПриОткрытии», как это было в обычном приложении). И так можно ошибочно подумать по старой привычке (если есть опыт программирования в обычном интерфейсе), учитывая архитектуру платформы 1С: Предприятие 8.2 и 8.3. Ведь процедура «ПриОткрытии» формы есть и в управляемом приложении, но через не создать программно и не разместить элементы для прикладной задачи. Поэтому «&НаСервере» и преимущественно в процедуре «ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)» формы документа или элемента справочника или формы списка теперь происходит программное добавление каких-либо элементов формы.
В общем информация о том, как программно изменить текст запроса динамического списка, использующего произвольный запрос можно найти на странице сайта ИТС 1С, если у Вас есть доступ. Но если доступа нет, то можете сильно не расстраиваться — информация на странице как и во многих случаях методологической информации от 1С носит условно практический характер. А это означает, что мелочи и нюансы, о которых бы было неплохо упомянуть на указанной странице ИТС, не упомянуты никак. И их понимание будет происходить на практике. Вот часть такой практики изложена ниже на прикладной задаче.
Нажатие на изображении увеличит его
Рис. 1. Пример теоретического кода для программного изменения текста произвольного динамического списка для управляемой формы в 1С 8.
Прикладная задача заключалась в том, чтобы выводить программно в управляемую форму списка документов «Реализация товаров и услуг» колонку добавленного реквизита документа. Реквизит с именем «ДопМФ_Отгружено» тип «Булево», в данном примере добавлен в расширении, но может быть и добавлен в основной конфигурации, если она на частичной поддержке. Как вывести программно элемент формы, содержащей флажок, добавленного реквизита, повторимся, можно изучить в соответствующей статье, о которой уже упоминалось в начале страницы.
Рис. 2. Пример добавленного реквизита объекта конфигурации (документа) в 1С 8 для дальнейшего программного вывода колонки в управляемую форму списка объекта.
Прежде чем перейти непосредственно к программному добавлению колонки элемента таблицы формы нужно добавить его выбор в текст запроса динамического списка. Таким образом подготовительный рабочий исполняемый код получается примерно следующим:
1 | | | СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); |
2 | | | СвойстваСписка.ОсновнаяТаблица = «Документ.РеализацияТоваровУслуг»; |
3 | | | СвойстваСписка.ДинамическоеСчитываниеДанных = Истина; |
4 | | | ИсхТекстаЗапроса = СписокРеализацииТоваровУслуг.ТекстЗапроса; |
5 | | | |
СвойстваСписка.ТекстЗапроса = СтрЗаменить(ИсхТекстаЗапроса, «ВЫБРАТЬ», «ВЫБРАТЬ»+Символы.ПС+«РеализацияТоваровУслуг.ДопМФ_Отгружено КАК ДопМФ_Отгружено,»); |
6 | | | |
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.СписокРеализацииТоваровУслуг, СвойстваСписка); |
7 | | | //СписокРеализацииТоваровУслуг.Параметры.УстановитьЗначениеПараметра(«Параметр1», 42); |
Прокомментируем его основные моменты. В строке 1 происходит получение структуры через функцию «СтруктураСвойствДинамическогоСписка()» общего модуля «ОбщегоНазначения» для заполнения ее значений и передачи для заполнения свойств динамического списка. Для ключа «ОсновнаяТаблица» структуры в строке 2 указывается название основной таблицы, которая используюется для динамического списка, в примере это «Документ.РеализацияТоваровУслуг». Значение ключа структуры в строке 3 «ДинамическоеСчитываниеДанных» в значении «Истина». В строках 4 и 5 ведется произвольная модификация запроса.
Нажатие на изображении увеличит его
Рис. 3. Пример исходного текста произвольного запроса динамического списка реквизита управляемой формы списка документов.
Можно просто подготовить новый или измененный исходный текст запроса для указания его в ключе «ТекстЗапроса» структуры. В данном же случае была использована хитрость, чтобы минимизировать зависимость от изменений разработчиков. Происходит модификация исходного текста запроса, который определили разработчики, за счет замены подстроки «ВЫБРАТЬ», которая есть в любом запросе, на подстроку так же содержащее это обязательное слово текста запроса и текст для выборки значения добавленного реквизита документа «ДопМФ_Отгружено». Таким образом, доработка в расширении может сломаться тогда, когда разработчики существенным образом изменять исходный текст запроса. И на примере строки 5 помещаем новый вариант текста запроса в структуру. В данном примере получилось, что запрос содержит одну дополнительную строчку, чтобы выбирать значения добавленного реквизита. Порядок следования полей выборки в запросе для динамического списка не имеет значения.
Т.е. в практической задаче начало запроса программно изменялось:
С: |
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка, |
На: |
ВЫБРАТЬ РеализацияТоваровУслуг.ДопМФ_Отгружено КАК ДопМФ_Отгружено, РеализацияТоваровУслуг.Ссылка, |
Особенно обратим внимание на то, к каким объектам ведется обращение в строке 7, когда выполняется установка новой настройки для динамического списка с помощью процедуры «УстановитьСвойстваДинамическогоСписка» общего модуля «ОбщегоНазначения». В этом месте важно не перепутать, т.к. в типовой конфигурации названия элемента формы таблицы-списка и реквизита формы одинаковые. А важно, что первым параметром передается элемент управляемой формы — Таблица реквизита формы. Не перепутать его с названием реквизита формы, к которому ранее обращались для получения текста исходного запроса. Вторым параметром передается заполненная структура. Строка 7 в данном примере закомментирована, т.к. в данной прикладной задаче в тексте запроса не содержится параметров. Но, если параметр есть, то устанавливается через свойство «Параметры» и метод «УстановитьЗначениеПараметра» реквизита управляемой формы, а не элемента формы. Установка значения по имени параметра по коду как для классического запроса в 1С: первое значение — текстовое имя параметра, второе значение — собственно значение для параметра.
Нажатие на изображении увеличит его
Рис. 4. Сравнение одноименных реквизита и элемента управляемой формы 1С 8 для программного изменения текста произвольного запроса динамического списка этого реквизита формы.
После модификации текста произвольного динамического запроса реквизита управляемой формы 1С 8, становится возможным размещение колонки нового реквизита. И теперь рассмотрим код для программного вывода, размещения, добавления (как будет угодно) колонки в элемент-таблицу формы.
Нажатие на изображении увеличит его
Рис. 5. Пример кода в 1С 8 для программного вывода колонки нового реквизита объекта конфигурации, в частности документа, в элемент «Таблица» управляемой формы
По логике программного вывода в прикладной задачи новая колонка, напомним с флажком, должна выводиться сразу после колонки «Номер», содержащей данные номеров документов списка. Код на скриншоте содержит условие на то, что если колонка «Номер» по каким то причинам, например скрыта пользователем в управляемой форме, что вполне может быть (странно но может быть, ведь номер для документа является ключевым реквизитом для работы пользователей), то тогда новая колонка будет выведена самой первой в списке.
1 | | | ТаблицаФормы = Элементы.СписокРеализацииТоваровУслуг; |
2 | | | КолонкаВставки = ТаблицаФормы.ПодчиненныеЭлементы.Найти(«Номер»); |
3 | | | |
4 | | | КолонкаОтгружено = Элементы.Вставить(«_Отгружено», Тип(«ПолеФормы»), ТаблицаФормы, КолонкаВставки); |
5 | | | КолонкаОтгружено.Вид = ВидПоляФормы.ПолеФлажка; |
6 | | | КолонкаОтгружено.Заголовок = «О.»; |
7 | | | КолонкаОтгружено.Подсказка = «Отгружено»; |
8 | | | КолонкаОтгружено.ТолькоПросмотр = Истина; |
9 | | | КолонкаОтгружено.ШиринаЭлемента = 5; |
10 | | | КолонкаОтгружено.ПутьКДанным = «СписокРеализацииТоваровУслуг.ДопМФ_Отгружено»; |
Есть небольшие отличия от случая, который уже упоминался выше, добавления колонки для элемента формы Таблица динамического списка, как было описано смежной статье. В смежном случае был пример для таблицы, данными (ПутьКДанным) которой выступал «динамический список», но у которого основанием выступала таблица, а не произвольный запрос. Если отличия не учесть, то будут просто возникать ошибки. В данном же примере
Отличия заключаются в двух местах кода. Во-первых, это обращение к свойству «ШиринаЭлемента, а не просто «Ширина» как в случае, если колонка — это программно выводимая колонка динамического списка, но у которого указана «Основная таблица» и не используется произвольный запрос. Т.е. для программно добавляемой колонки динамического списка с произвольным запросом указывается свойство «ШиринаЭлемента».
Во-вторых, очень важно правильно указать значение свойства «ПутьКДанным», иначе можно получить ошибку:
Нажатие на изображении увеличит его
Рис. 6. Пример ошибки «Недопустимое значение» при указании неверного значения для свойства «ПутьКДанным» элемента управляемой формы .
{Документ.РеализацияТоваровУслуг.Форма.ФормаСписка.Форма(26)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)
КолонкаОтгружено.ПутьКДанным = «Объект.СписокРеализацииТоваровУслуг.ДопМФ_Отгружено»;
по причине:
Недопустимое значение
Недопустимое значение
Конечно, подобную ошибку можно «поймать» и при других условиях. Но когда она касается свойства «ПутьКДанным», то это явно говорит о том, что указанное строковое значение попросту не верное. Следует тщательно проанализировать корректность ее составления, т.к. в реквизитах управляемых форм можно запутаться.
Нажатие на изображении увеличит его
Рис. 7. Демонстрация того, что данные элемента формы Таблица — это динамический произвольный запрос.
В текущей задаче реквизит формы (он не основной) носит имя «СписокРеализацийТоваровУслуг», а не так, как часто можно встретить в конфигурации, что основной реквизит формы носит имя «Объект». И значения для добавленной колонки берется из реквизита типа «ДинамическийСписок» и для элемента формы. Поэтому строка для «ПутьКДанным» — «СписокРеализацииТоваровУслуг.ДопМФ_Отгружено» с указанием через «.» имени нового реквизита.
Это все условия и нюансы, с которыми пришлось столкнуться на практике для программной модификации произвольного запроса динамического списка реквизита управляемой формы в 1С 8, чтобы потом программно вывести колонку нового реквизита объекта конфигурации базы в элемент «Таблица» формы .
Оцените, оказалась ли эта публикация полезна для Вас?
© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
25-11-2021
Журавлев А.С.
(Сайт azhur-c.ru)
Назад