1с динамический список добавить колонку реквизита

Как добавить произвольные колонки в динамический список?

В 1С Предприятии 8.2 формы списка объектов конфигурации построены с помощью динамического списка. Например, форма списка справочника Номенклатура содержит основной реквизит типа Динамический список , отображающий основную таблицу Справочник.Номенклатура и динамический список формируется путем запроса к этой таблице.

Однако бывает необходимо добавить произвольные колонки в динамический список. Рассмотрим эту ситуацию на примере отображения актуальной цены в списке справочника Номенклатура .

Эти данные мы можем получить из таблицы регистра сведений Цены.СрезПоследних . Следовательно поле Цена из этой таблицы нам нужно добавить в динамический список Список , который является основным реквизитом формы списка номенклатуры и служит источником данных для таблицы списка.

Создадим форму списка справочника Номенклатура и откроем палитру свойств основного реквизита формы Список . Установим флаг ПроизвольныйЗапрос и в строке Настройка списка нажмем Открыть .

В поле Запрос введем следующий текст запроса:

ВЫБРАТЬ
СправочникНоменклатура.Код,
СправочникНоменклатура.Наименование,
ЦеныСрезПоследних.Цена
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ПО ЦеныСрезПоследних.Номенклатура = СправочникНоменклатура.Ссылка

Теперь перетащим поле Цена из окна реквизитов в окно элементов формы.

В результате мы получим список номенклатуры, выводящийся вместе с ее актуальной ценой.

Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/ПроизвольнаяКолонкаВДинамическомСписке.dt. Пример выполнен на версии платформы 8.2.9.356.

Источник

Программная установка колонок типа дополнительных реквизитов в динамическом списке — Как?

(16) Делается на сервере
Product Group — Имя вашего доп реквизита, специально привел пример наименование реквизита с пробелом

(4) Синтаксис помощник тебе в студию) На клиенте ты уже ничего не создашь, и не посмотришь.

ПолучитьИсполняемуюСхемуКомпоновкиДанных (GetPerformingDataCompositionScheme)
Синтаксис:
ПолучитьИсполняемуюСхемуКомпоновкиДанных()
Возвращаемое значение:
Тип: СхемаКомпоновкиДанных.
Описание:
Возвращает схему компоновки, соответствующую данным, которые отображаются в динамическом списке, связанном с таблицей.
Доступность:
Сервер.

(10) А я тебе соврал))) случайно правда. Не СКД нужна, а настройки

Синтаксис:
ПолучитьИсполняемыеНастройкиКомпоновкиДанных()
Возвращаемое значение:
Тип: НастройкиКомпоновкиДанных.
Описание:
Возвращает настройки компоновки, соответствующие данным, которые отображаются в динамическом списке, связанном с таблицей.
При этом учитывается видимость колонок и установленное значение поиска.
Доступность:
Сервер.
/////////////////////

НастройкиКомпоновкиДанных (DataCompositionSettings)
Свойства:
Выбор (Selection)
ДополнительныеСвойства (AdditionalProperties)
ДоступныеОбъекты (AvailableObjects)
ДоступныеПоляВыбора (SelectionAvailableFields)
ДоступныеПоляГруппировок (GroupAvailableFields)
ДоступныеПоляДополнительныхОтборов

(11)
Конкретно это конфа УНФ, справочник Лиды.

Куда этот метод тулить?
Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных() <(1)>: Метод объекта не обнаружен (ПолучитьИсполняемыеНастройкиКомпоновкиДанных)
ЭтотОбъект.ПолучитьИсполняемыеНастройкиКомпоновкиДанных() <(1)>: Метод объекта не обнаружен (ПолучитьИсполняемыеНастройкиКомпоновкиДанных)

Просмотр в лоб
Вот по этому путю (на сервере):
Список.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы

Заголовок Поле
«Вариант завершения» ВариантЗавершения
«Дата создания» ДатаСоздания
«Есть файлы» ЕстьФайлы
«Заметки» Комментарий
«Заметки завершения работы» ЗаметкиЗавершенияРаботы
«Имя предопределенных данных» ИмяПредопределенныхДанных
«Источник привлечения» ИсточникПривлечения
«Код» Код
«Контрагент» Контрагент
«Наименование» Наименование
«Основные сведения» ОсновныеСведения
«Ответственный» Ответственный
«Пометка удаления» ПометкаУдаления
«Предопределенный» Предопределенный
«Причина неуспешного завершения работы» ПричинаНеуспешногоЗавершенияРаботы
«Результат» Результат
«Родитель» Родитель
«Состояние лида» СостояниеЛида
«Ссылка» Ссылка
«Тег» Теги
«Это группа» ЭтоГруппа
«Юридическое название» ЮридическоеНазвание

Нет в этом списке Свойств ДополнительныхРеквизитов .

Источник

Добавление колонки в Динамический список (ОсновнаяТаблица)

Пытаюсь решить казалось бы простую задачу.
Берем любую конфу на 8.3.
Требуется добавить колонку в форму списка и заполнять ее произвольным текстом.

Деталь состоит в том, что для Динамического списка задана ОсновнаяТаблица.
И вот в таком случае у меня проблема, не понимаю как обойти ограничение, колонка не добавляется, не появляется.

Задача легко решается для случая Произвольного запроса, но я не хочу изменять это свойство.
Неужели никак не обойти это ограничение?

(1) Так что за колонка? Если это не поле основной таблицы, не реквизит какого-либо поля, а также не значение характеристики, то действительно, добавить не меняя запрос не получится.

Можно разве что попробовать подменить одно значение другим. Вытянуть на форму любую возможную колонку, а в обработчике события «ПриПолученииДанныхНаСервере» динамического списка получить нужные значения и подставить их в новую колонку.

(2) Воооот. Все так, я пытался таким способом делать.
Но в событии СписокПриПолученииДанныхНаСервере не могу добраться до колонки.

пытаюсь добраться кодом

(6) Не понимаю, где именно возникла сложность с использованием обработчика события «ПриПолученииДанныхНаСервере». Приведу свой пример.

Основная таблица: регистр сведений «УчетнаяПолитика». Единственное измерение — организация. Требуется вывести ее префикс с использованием вышеобозначенного события.

Итак, при создании формы добавляем элемент для вывода своего значения. В качестве примера я взял колонку ссылочного типа (что только усложнило задачу):

Я понял.. подменяемая колонка, должна содержать значение еще не выведенного реквизита.
К примеру если в форме списка уже Номер выведен, то через него сделать колонку, а потом подменить не получится. Нужно чтобы был какой то другой еще не выведенный, но сидящей в основной таблице реквизит.

(17) Т.е. Запрос изменили в самой конфигурации, сняв с поддержки, а потом в расширении заполнили колонку своим значением?
Полностью в расширении не получилось?
Просто хочется всё реализовать в расширении, не трогая саму конфигурацию.

У меня наподобе задача, добавить колонку в список Счетов в ФормуСписка и заполнять её значениями из РС, который заполняется обработкой от СБИС.

Пояснение:
В Бухгалтерия 3.0 открывают обработку для 1С от СБИС и получают статусы документов ЭДО от СБИС (РС заполняется в 1С) — нужно было руководителю для визуального контроля документов, чтобы не открывать саму обработку от СБИС. (директор есть директор 🙂 ).

(18) В запросе динамического списка ФормыСписка документа ПоступлениеТоваровУслуг есть:
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ДокументПоступлениеТоваровУслуг
.
<ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД
ПО ДокументПоступлениеТоваровУслуг.Ссылка = СостоянияЭД.СсылкаНаОбъект>
.
У вас данные из СБИС хранятся в каком-то регистре? Если нет, то откуда вы их хотите вытаскивать? Если да, то просто добавьте такое же соединение с тем регистром:
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияДокументооборота КАК СостоянияДокументооборота
ПО (СостоянияДокументооборота.ОбъектДокументооборота = ДокументРеализацияТоваровУслуг.Ссылка)

и выше в запросе, например:
ВЫБОР
КОГДА (НЕ ДокументРеализацияТоваровУслуг.Проведен)
ТОГДА ЗНАЧЕНИЕ(Перечисление.СостояниеДокументооборота.ПустаяСсылка)
ИНАЧЕ
ЕСТЬNULL(СостоянияДокументооборота.СостояниеДокументооборота, ЗНАЧЕНИЕ(Перечисление.СостояниеДокументооборота.ПустаяСсылка))
КОНЕЦ КАК СостояниеДокументооборота,

В этом примере у нас есть независимый регистр состояний внутреннего документооборота, в который пишутся состояния, перечисленные в Перечисления.СостоянияДокументооборота. Регистр и Перечисление добавлены в расширении

(20) Значение я выцепил (нашёл в самой обработке от СБИС, куда они сохраняют данные), попробовал в существующую колонку записывать СостояниеЭД — всё удачно, но потом менеджеры не могут исправлять документ — выдаёт ошибку. Поэтому я и хотел создать в Расширении программно колонку с типом Строка и записывать туда значения от СБИС.

(Конфигурация Бухгалтерия 3.0.86.16, платформа 8.3.15.2107, документ СчетНаОплатуПокупателю, Форма Списка.)

Как получилось:
Создал отдельную Функцию:

Вот пока не получается создать колонку программно в Расширении с типом Строка.
Есть мысли?

Далее, в форме списка в расширении добавляете этот реквизит на форму (предварительно в расширение нужно добавить все реквизиты, которые будете использовать в запросе). В форме у вас будет две процедуры:

(25) Тогда все просто, делаете по описанному мной (23) и берете свою функцию ПрочитатьПараметрыДокументаСБИС:

(26)
1. По Запросу:
Конфигурация полностью на поддержке без редактирования — не хотелось бы снисать её в режим редактирования, хотелось бы полностью в расширении всё сделать. Обошёлся пока существующей колонкой Состояние ЭДО.
Попробую на копиях конечно, ради спортивного интереса.

2. Возникла другая проблема:
Когда у пользователя в списке документов не включена колонка состояние ЭДО, тогда выдаётся ошибка и в список вообще нельзя войти:
Ошибка в этой строке: ОформлениеЯчейки = Элемент.Значение.Оформление[«СостояниеВерсииЭД»];

По разному искал, как программно включить колонку пользователю — пока безрезультатно.

Еще раз, по порядку. Вся. доработка происходит в расширении. В основной конфе делать ничего не надо.
1. В расширение добавляете документ СчетНаОплатуПокупателю, Форма Списка.
2. В расширение добавляете:
— реквизиты Организация, Контрагент, Комментарий, ВалютаДокумента, СуммаДокумента документа СчетНаОплатуПокупателю;
— перечисления СостоянияВерсийЭД, СтатусОплатыСчета, СтатусыОтгрузки;
— измерение СсылкаНаОбъект и ресурс СостояниеВерсииЭД регистра сведений СостоянияЭД;
— измерения Организация, Документ и ресурсы Статус, ДополнительныйСтатус регистра сведений СтатусыДокументов;
— измерение Документ регистра сведений ДокументыСОшибкамиПроверкиКонтрагентов;
— измерение ОбъектСФайлами и ресурс ЕстьФайлы регистра сведений НаличиеФайлов;
3. В форме списка в расширении меняете запрос динамического списка (Список-Объект-Настройка списка-Открыть) на следующий:

2. Возникла другая проблема:
Когда у пользователя в списке документов не включена колонка состояние ЭДО, тогда выдаётся ошибка и в список вообще нельзя войти:
Ошибка в этой строке: ОформлениеЯчейки = Элемент.Значение.Оформление[«СостояниеВерсииЭД»];

По разному искал, как программно включить колонку пользователю — пока безрезультатно.

Источник

1С Управляемые Формы. Программное создание таблицы значений и динамического списка (Часть 2)

В данной статье описаны примеры программного создания объектов управляемой формы 1С — таблицы значений и динамического списка, и их программный вывод в элементы формы

Введение в управляемые формы 1С

Перед прочтением данной статьи рекомендуется ознакомиться с первой частью, в которой описаны примеры программного создания элементов, команд, реквизитов управляемой формы, а также описание стандартных возможностей для работы с ними.

В данной же части будет рассмотрено программное создание динамических списков, таблиц значений на форме, их вывод в элементы формы и стандартные возможности для работы.

Модифицировать формы рекомендуется программно для удобного обновления конфигураций и исключения конфликтов, а также для удобной поддержки кода. Со статьями о механизмах модификации можно ознакомиться в разделе полезных ссылок.

Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.
Примеры программного создания элементов, команд, реквизитов управляемой формы, а также описание стандартных возможностей для работы с ними можно будет посмотреть в части 1.

Для запуска обработки в режиме предприятия необходимо наличие объектов «Справочники.Номенклатура», подчиненный ему «Справочники.ХарактеристикиНоменклатуры» и «РегистрыСведений.ЦеныНоменклатуры”.

Создание реквизита типа таблица значений и вывод на форму

Добавление условного оформления таблицы формы

Создаем условное оформление для таблицы:

  • если реквизит формы Использование (тип булево) = Истина, тогда разрешаем изменять цену в строках таб. части;
  • если в строке таб части цена не заполнена, то выделять фон ячейки «Цена» розовым.

В процедуру команды добавим вызов серверной процедуры для заполнения таблицы цен в зависимости от выбранной номенклатуры и характеристики:

Добавляем в процедуру ПриСозданииНаСервере процедуры:

Заполняем реквизиты Номенклатура, Характеристика и заполняем цены в таблице значений.

Создание реквизита типа динамический список с заданными настройками и вывод на форму

На странице 3 создадим динамический список с выводом всех цен выбранной номенклатуры и характеристики.
Добавим Условное Оформление дин. списка, отбор и сортировку программно.

Вывести динамический список в элементы управляемой формы 1С

Для вывода дин. списка воспользуемся процедурами, которые использовали при выводе таблицы значений, так как это один тип — ДанныеФормыКоллекция.

Обновление параметров динамического списка программно

Если в запросе дин. списка используются параметры, то их необходимо обновлять при изменении соответствующих реквизитов.

Добавляем в процедуру ПриСозданииНаСервере процедуры:

Заполняем реквизиты Номенклатура, Характеристика и заполняем цены в таблице значений.

Содержимое регистра сведений ЦеныНоменклатуры:

Динамический список на форме:

Источник

Читайте также:  Могут ли сесть колонки
Оцените статью