как добавить колонку в форму списка в 1с
Добавление колонки в Динамический список (ОсновнаяТаблица)
Пытаюсь решить казалось бы простую задачу.
Берем любую конфу на 8.3.
Требуется добавить колонку в форму списка и заполнять ее произвольным текстом.
Деталь состоит в том, что для Динамического списка задана ОсновнаяТаблица.
И вот в таком случае у меня проблема, не понимаю как обойти ограничение, колонка не добавляется, не появляется.
Задача легко решается для случая Произвольного запроса, но я не хочу изменять это свойство.
Неужели никак не обойти это ограничение?
(1) Так что за колонка? Если это не поле основной таблицы, не реквизит какого-либо поля, а также не значение характеристики, то действительно, добавить не меняя запрос не получится.
Можно разве что попробовать подменить одно значение другим. Вытянуть на форму любую возможную колонку, а в обработчике события «ПриПолученииДанныхНаСервере» динамического списка получить нужные значения и подставить их в новую колонку.
(2) Воооот. Все так, я пытался таким способом делать.
Но в событии СписокПриПолученииДанныхНаСервере не могу добраться до колонки.
пытаюсь добраться кодом
(6) Не понимаю, где именно возникла сложность с использованием обработчика события «ПриПолученииДанныхНаСервере». Приведу свой пример.
Итак, при создании формы добавляем элемент для вывода своего значения. В качестве примера я взял колонку ссылочного типа (что только усложнило задачу):
Я понял.. подменяемая колонка, должна содержать значение еще не выведенного реквизита.
К примеру если в форме списка уже Номер выведен, то через него сделать колонку, а потом подменить не получится. Нужно чтобы был какой то другой еще не выведенный, но сидящей в основной таблице реквизит.
(17) Т.е. Запрос изменили в самой конфигурации, сняв с поддержки, а потом в расширении заполнили колонку своим значением?
Полностью в расширении не получилось?
Просто хочется всё реализовать в расширении, не трогая саму конфигурацию.
У меня наподобе задача, добавить колонку в список Счетов в ФормуСписка и заполнять её значениями из РС, который заполняется обработкой от СБИС.
(18) В запросе динамического списка ФормыСписка документа ПоступлениеТоваровУслуг есть:
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ДокументПоступлениеТоваровУслуг
.
<ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД
ПО ДокументПоступлениеТоваровУслуг.Ссылка = СостоянияЭД.СсылкаНаОбъект>
.
У вас данные из СБИС хранятся в каком-то регистре? Если нет, то откуда вы их хотите вытаскивать? Если да, то просто добавьте такое же соединение с тем регистром:
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияДокументооборота КАК СостоянияДокументооборота
ПО (СостоянияДокументооборота.ОбъектДокументооборота = ДокументРеализацияТоваровУслуг.Ссылка)
и выше в запросе, например:
ВЫБОР
КОГДА (НЕ ДокументРеализацияТоваровУслуг.Проведен)
ТОГДА ЗНАЧЕНИЕ(Перечисление.СостояниеДокументооборота.ПустаяСсылка)
ИНАЧЕ
ЕСТЬNULL(СостоянияДокументооборота.СостояниеДокументооборота, ЗНАЧЕНИЕ(Перечисление.СостояниеДокументооборота.ПустаяСсылка))
КОНЕЦ КАК СостояниеДокументооборота,
В этом примере у нас есть независимый регистр состояний внутреннего документооборота, в который пишутся состояния, перечисленные в Перечисления.СостоянияДокументооборота. Регистр и Перечисление добавлены в расширении
(Конфигурация Бухгалтерия 3.0.86.16, платформа 8.3.15.2107, документ СчетНаОплатуПокупателю, Форма Списка.)
Как получилось:
Создал отдельную Функцию:
Вот пока не получается создать колонку программно в Расширении с типом Строка.
Есть мысли?
Далее, в форме списка в расширении добавляете этот реквизит на форму (предварительно в расширение нужно добавить все реквизиты, которые будете использовать в запросе). В форме у вас будет две процедуры:
(25) Тогда все просто, делаете по описанному мной (23) и берете свою функцию ПрочитатьПараметрыДокументаСБИС:
2. Возникла другая проблема:
Когда у пользователя в списке документов не включена колонка состояние ЭДО, тогда выдаётся ошибка и в список вообще нельзя войти:
Ошибка в этой строке: ОформлениеЯчейки = Элемент.Значение.Оформление[«СостояниеВерсииЭД»];
Еще раз, по порядку. Вся. доработка происходит в расширении. В основной конфе делать ничего не надо.
1. В расширение добавляете документ СчетНаОплатуПокупателю, Форма Списка.
2. В расширение добавляете:
— реквизиты Организация, Контрагент, Комментарий, ВалютаДокумента, СуммаДокумента документа СчетНаОплатуПокупателю;
— перечисления СостоянияВерсийЭД, СтатусОплатыСчета, СтатусыОтгрузки;
— измерение СсылкаНаОбъект и ресурс СостояниеВерсииЭД регистра сведений СостоянияЭД;
— измерения Организация, Документ и ресурсы Статус, ДополнительныйСтатус регистра сведений СтатусыДокументов;
— измерение Документ регистра сведений ДокументыСОшибкамиПроверкиКонтрагентов;
— измерение ОбъектСФайлами и ресурс ЕстьФайлы регистра сведений НаличиеФайлов;
3. В форме списка в расширении меняете запрос динамического списка (Список-Объект-Настройка списка-Открыть) на следующий:
2. Возникла другая проблема:
Когда у пользователя в списке документов не включена колонка состояние ЭДО, тогда выдаётся ошибка и в список вообще нельзя войти:
Ошибка в этой строке: ОформлениеЯчейки = Элемент.Значение.Оформление[«СостояниеВерсииЭД»];
Как программно добавить колонку в форму списка 1С
Как добавить картинку в форму списка мы рассматривали в данном уроке.
Как добавить столбец в форму списка 1С программное рассмотрим на примере добавления столбца инвентарный номер в справочнике основных средств.
В конфигураторе найдем нужный справочник, откроем форму списка в форме списка дважды кликнем по Динамическому списку и проверим наличие флага у свойства Произвольный запрос, как на рисунке ниже.
Кликаем по кнопке открыть около надписи Настройка списка, и перед нами откроется окно редактора запроса
Дорабатываем запрос, получаем в запросе необходимые дополнительные данные, в нашем случае инвентарный номер из регистра ПервоначальныеСведенияОСБухгалтерскийУчет.
Кликаем ОК, теперь в Динамическом списке появился новый реквизит Инвентарный номер, который мы выбрали в запросе.
Установим флаг Использовать всегда и перетянем, зажав левой кнопкой реквизит на форму, как на картинке.
Чтобы поменять заголовок столбца кликнем по нему и в свойстве заголовок напишем нужное название.
Для примера ниже оставлю свой запрос.
Программное изменение динамического списка
В функции ПолучитьТекстЗапроса(), программно формируем нужный запрос и передаем его в Динамический список.
Нажмите, чтобы связаться со мной:
Добавить колонку с дополнительным реквизитом в список номенклатуры
Допустим, вы завели новый дополнительный реквизит номенклатуры, заполнили его и теперь вам нужно добавить этот реквизит в список. Как это сделать не прибегая к программированию и изменению конфигурации? Рассмотрим в данной статье.
Добавление колонки с дополнительным реквизитом в форму списка справочника в 1С 8.3
Рассмотрим механизм добавления колонки с дополнительным реквизитом на примере конфигурации УТ 11 (подойдет также и для Бухгалтерия 3.0, Розница 2.2, 2.3 и др. конфигураций на управляемых формах).
У нас есть дополнительный реквизит под названием «Категория цветов».
Дополнительный реквизит номенклатуры
Нам требуется вывести его в список номенклатуры следующим образом:
Колонка с дополнительным реквизитом
Для этого в форме списка номенклатуры нажимаем кнопку «Еще»/ «Изменить форму».
Кнопка изменить форму
Попадаем в настройки формы, тут нам нужно найти таблицу и в ней поле «Ссылка», выделяем его и нажимаем кнопку «Добавить поля». Обратите внимание, что кнопка «Добавить поля» будет неактивна, пока выделены поля не ссылочного типа.
Кнопка добавить поля
После чего откроется окно в котором вы можете выбрать любые реквизиты номенклатуры, в том числе и дополнительные. Выбираем нужный реквизит и нажимаем «Ок».
Выбранный реквизит появится в настройках формы. Отмечаем его галочкой и нажимаем «Применить».
Вот мы и добавили новую колонку с нашим дополнительным реквизитом в форму списка номенклатуры.
Колонка с дополнительным реквизитом
Надеюсь, статья была вам полезна. Если что-то не получилось — вы всегда можете обратиться ко мне.
Похожие записи:
- Как добавить дополнительный реквизит в 1С 8.3?В 1С 8.3 появился такой механизм как дополнительные реквизиты. Он.Отчет «Номенклатура со штрихкодами» для 1С УТ, Розница и БП 8.3 и 8.2В типовых конфигурациях 1С в списке номенклатуры вы не сможете.Как заполнить значения дополнительных реквизитов во всей номенклатуре?Если у вас много номенклатуры, заполнить значения дополнительного реквизита во.Пожертвования в 1С БП 8.3Очень важно правильно отразить поступление пожертвования в вашей 1С. Это.
От Программист 1С
Просмотреть все записи от Программист 1С по этой ссылке.
УФ: Размещение элементов на форме 7 в 1С
Добавление колонки на форму списка (Произвольный запрос динамического списка)
| Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti → |
Продолжаем рассматривать варианты размещения элементов на форме на примере вывода реквизитов документа на форму списка документов, состав документа представлен на рис. 1:
Рис. 1. Реквизиты документа
Добавим на форму списка документов колонку со значением статуса приходной, статус приходной находится в регистре сведений. Открываем форму списка документа пр_Приходная. Если формы списка еще нет, то нажимаем значок лупы на вкладке Формы окна свойств документа (рис. 2):
Рис. 2. Создание формы списка документа
В открывшемся окне Конструктор формы документа нажимаем Далее > и выбираем поля, которые хотим вывести на форму (поля – это реквизиты и табличные части документа), нажимаем Готово. Открывается окно формы списка документа.
В форме списка документа открываем свойства реквизита Список (правой кнопкой мышки – Свойства), в окне Свойства ставим галочку у свойства Произвольный запрос (рис. 3):
Рис. 3. Свойства реквизита формы Список
После установки свойства Произвольный запрос состав свойств раздела Объект изменится (рис. 4):
Рис. 4. Состав раздела Объект окна Свойства
Нажимаем на гиперссылку Открыть свойства Настройка списка (рис. 4). Открывается окно Динамический список (рис. 5):
Рис. 5. Окно Динамический список
Добавляем в запрос текст для получения статуса приходной из регистра сведений. В примере используется регистр сведений пр_СтатусПриходной со значением свойства Периодичность – В пределах дня, состав регистра представлен на рис. 6:
Рис. 6. Состав регистра с данными о статусе приходной
Изменить запрос в окне Динамический список можно нажав на кнопку Конструктор запроса… или можно сразу написать нужный текст в поле Запрос (рис. 7):
Рис. 7. Измененный запрос
Важно проверить, что в поле Основная таблица окна Динамический список указан нужный документ (рис. 7), иначе, если поле будет не заполнено, то в форме списка документов не будет возможности добавлять новые документы и открывать существующие (и не будет привычных кнопок Создать, Создать копированием и т.п.). Нажимаем ОК. Теперь в составе реквизита Список те поля, которые были выбраны в запросе (рис. 8):
Рис. 8. Состав реквизита Список
Перетаскиваем новое поле Статус из вкладки Реквизиты на вкладку Элементы в состав элемента Список (рис. 8). И размещаем поле Статус на вкладке Элементы после полей Дата, Номер (рис. 9):
Рис. 9. Размещение поля Статус
У реквизитов (на вкладке Реквизиты) в составе динамического списка можно отметить свойство Использовать всегда (рис. 8). Это нужно, когда поля должны быть в составе динамического списка в любом случае, даже если они не будут добавлены на форму как элементы, например, будут использоваться в дальнейшем в коде модуля формы списка документа.
Проверяем работу формы списка документа в пользовательском режиме: появилась колонка Статус, содержащая значение статуса приходной из регистра сведений (рис. 10):
1С 8.3 : Как добавить дополнительную вычисляемую колонку в табличной части управляемой формы
Реализация на платформе 1С: Предприятие 8.1
В начале коротко о том, как добавить дополнительную колонку в табличное поле на платформе 1С 8.1. Предположим, что у нас есть некий документ с табличной частью “Товары” (с колонками “Номенклатура” и “Количество”) и нам нужно вывести дополнительную колонку “Цена”, которая бы содержала данные реквизита “Цена” элементов справочника “Номенклатура”, выбранных в строках табличной части. Для этого нам достаточно добавить в форме документа новую колонку “Цена” в табличное поле, содержащее данные табличной части документа и написать следующий код в обработчике события “ПриПолученииДанных” этого табличного поля:
Хочу обратить внимание на то, что строки табличного поля обрабатываются порциями, по мере прокрутки списка.
Реализация на платформе 1С: Предприятие 8.2
На платформе 8.2 с использованием управляемых форм решение данной задачи потребует бóльших усилий. Это связано с тем, что за счет своей клиент-серверной ориентированности в платформе 8.2 в управляемом режиме отсутствуют некоторые привычные возможности – например, у табличного поля отсутствуют обработчики событий “ПриПолученииДанных” и “ПриВыводеСтроки”, которые мы могли бы использовать для этих целей в 1С 8.1 или 8.2 в обычных формах.
Пусть в нашей конфигурации есть документ “ВводОстатковДолга” с табличной частью “Контрагенты” (с колонками “Контрагент” и “Сумма”). В свою очередь у справочника “Контрагенты” есть реквизит “ИНН”, значение которого необходимо выводить в строках табличного поля.
Откроем управляемую форму документа, добавим новую колонку “ИНН” реквизита “Контрагенты” и перенесём её на закладку “Элементы” (для отображения в форме).
Откроем палитру свойств поля “КонтрагентыКонтрагент” и добавим обработчик события “ПриИзменении”














