- 1С 8.3 Динамический вывод Таблицы значений на форму — Программист 1С Минск. Автоматизация бизнеса.
- 1С 8.3 Динамический вывод Таблицы значений на форму
- Как добавить произвольные колонки в динамический список?
- Особенности работы табличного поля с колонками динамических списков
- Добавление колонки в Динамический список (ОсновнаяТаблица)
- Динамические колонки в таблице значений из разного числа строк (как в отчёте)
- Скачать файлы
- Специальные предложения
- См. также
- Безопасная работа с транзакциями во встроенном языке Промо
- Пример создания документа с движениями в ERP 2.5.7
- Работа с абстрактным массивом
- Семеро одного не ждут? Асинхронное исследование асинхронности
- План подготовки к аттестации на 1С: Специалиста по платформе (+ Ссылки на материалы) Промо
- Модель запроса
- Как сдать экзамен 1С:Специалист по платформе?
- Динамическая расшифровка СКД (на примере отчета)
- Как выполнить отчет на СКД через COM и получить данные отчета? Промо
- СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках
- Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям
- Программная корректировка при выводе отчета СКД
- Как нарисовать граф на 1С Промо
- Библиотека программного изменения формы (УФ)
- Загрузка, скачивание, удаление файлов с помощью НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера()
- Перевод кода и метаданных конфигурации на английский язык: часть 2
- Простой способ индексирования интервалов Промо
- Подготовка к экзамену 1С:Специалист, платформа 8.3
- Методика обновления формы объекта данных при изменении объекта
- Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки
- Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо
- Вывод сообщений в HTML поле средствами 1С
- Краткое руководство по внесению изменений в конфигурацию
- Универсальные функции: разложение произвольной строки адреса в структуру
- БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо
- Разбираемся с web-kit в 1С, на примере интеграции TinyMCE в управляемую форму в УТ 11.4. Допиливаем обмен с сайтом в УТ 11.4
- «Живые» картинки со Snap.SVG
- RLS — дубли условий в запросах к СУБД
- Некоторая работа с данными через COM Промо
- Полное копирование одной формы в другую
- Многопоточная обработка данных на примере перепроведения документов
- Отображение истории выполнения по всем задачам комплексного процесса в документообороте
- Работа со схемой запроса Промо
- Описание формата внутреннего представления данных 1С в контексте обмена данными
1С 8.3 Динамический вывод Таблицы значений на форму — Программист 1С Минск. Автоматизация бизнеса.
1С 8.3 Динамический вывод Таблицы значений на форму
Процедура Вывести_ТЗ_в_Таблицу_на_форме ( ТЗ , ТабРеквизитФормы , ТабЭлементФормы = Неопределено) Экспорт
// Процедура позволяет выводить любое количество таблиц значений в таблицу формы
// (с различным количеством и названиями полей). При изменении выводимых данных –
// таблица на форме программно очищается и заменяется на новую с новым составом
// полей и данных соответствующей таблицы значений.
Если ТабЭлементФормы = Неопределено Тогда // проверка передан ли элемент формы
ТабЭлементФормы = ТабРеквизитФормы ;
КонецЕсли;
Реквизиты_для_удаления = Новый Массив ;
Элементы_для_удаления = Новый Массив ;
Реквизиты_для_вывода = Новый Массив ;
// Получаем данные (на которые элементы формы ссылаются)
// по добавленным ранее реквизитам и элементам формы
Для Каждого Элемент Из Элементы [ ТабЭлементФормы ]. ПодчиненныеЭлементы Цикл
Реквизиты_для_удаления . Добавить ( Элемент . ПутьКДанным );
Элементы_для_удаления . Добавить ( Элемент );
КонецЦикла;
// Удаляем элементы
Для Каждого УдалитьЭлемент Из Элементы_для_удаления Цикл
Элементы . Удалить ( УдалитьЭлемент );
КонецЦикла;
// Добавляем колонки из Таблицы значений в реквизит ТабРеквизитФормы
Для Каждого КолонкаТЗ Из ТЗ . Колонки Цикл
Реквизиты_для_вывода = Новый РеквизитФормы ( КолонкаТЗ . Имя , КолонкаТЗ . ТипЗначения , ТабРеквизитФормы , КолонкаТЗ . Заголовок );
Реквизиты_для_вывода . Добавить ( Реквизиты_для_вывода );
КонецЦикла;
// Удаляем старые реквизиты и выводим новые реквизиты
ИзменитьРеквизиты ( Реквизиты_для_вывода , Реквизиты_для_удаления );
// Добавляем колонки из Таблицы значений
// в элементы ТабЭлементФормы (со ссылкой на колонки в ТабРеквизитФормы)
Для Каждого КолонкаТЗ Из ТЗ . Колонки Цикл
ЭлементТЗ = Элементы . Добавить ( ТабРеквизитФормы + «_» + КолонкаТЗ . Имя , Тип ( «ПолеФормы» ), Элементы [ ТабЭлементФормы ]);
ЭлементТЗ . Вид = ВидПоляФормы . ПолеНадписи ; //Или ПолеВвода, или что-то другое;
ЭлементТЗ . ПутьКДанным = ТабРеквизитФормы + «.» + КолонкаТЗ . Имя ;
КонецЦикла;
// В реквизит загружаем Таблицу значений
ЭтаФорма [ ТабРеквизитФормы ]. Загрузить ( ТЗ );
Источник
Как добавить произвольные колонки в динамический список?
В 1С Предприятии 8.2 формы списка объектов конфигурации построены с помощью динамического списка. Например, форма списка справочника Номенклатура содержит основной реквизит типа Динамический список , отображающий основную таблицу Справочник.Номенклатура и динамический список формируется путем запроса к этой таблице.
Однако бывает необходимо добавить произвольные колонки в динамический список. Рассмотрим эту ситуацию на примере отображения актуальной цены в списке справочника Номенклатура .
Эти данные мы можем получить из таблицы регистра сведений Цены.СрезПоследних . Следовательно поле Цена из этой таблицы нам нужно добавить в динамический список Список , который является основным реквизитом формы списка номенклатуры и служит источником данных для таблицы списка.
Создадим форму списка справочника Номенклатура и откроем палитру свойств основного реквизита формы Список . Установим флаг ПроизвольныйЗапрос и в строке Настройка списка нажмем Открыть .
В поле Запрос введем следующий текст запроса:
ВЫБРАТЬ
СправочникНоменклатура.Код,
СправочникНоменклатура.Наименование,
ЦеныСрезПоследних.Цена
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ПО ЦеныСрезПоследних.Номенклатура = СправочникНоменклатура.Ссылка
Теперь перетащим поле Цена из окна реквизитов в окно элементов формы.
В результате мы получим список номенклатуры, выводящийся вместе с ее актуальной ценой.
Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/ПроизвольнаяКолонкаВДинамическомСписке.dt. Пример выполнен на версии платформы 8.2.9.356.
Источник
Особенности работы табличного поля с колонками динамических списков
Динамическими списками называются списки , использующие при обращении к базе данных механизм динамической выборки . Особенностью механизма динамической выборки является то , что данные считываются не полностью , а блоками , уменьшая время загрузки всего списка и размер отводимой для него памяти . Примерами динамических списков являются списки справочников , документов , регистров .
При считывании блока данных динамический список выполняет обращение к базе данных . Табличное поле для уменьшения объема выбираемых данных управляет набором полей , считываемых из базы данных . Считываются только те поля таблицы , которые связаны с соответствующими видимыми колонками табличного поля , поля, по которым выполняется упорядочивание, и поля , используемые табличным полем для отображения картинки и контроля удаления ( поля ЭтоГруппа , ПометкаУдаления ).
Отметим следующие особенности работы табличного поля с колонками динамических списков :
- При создании табличное поле инициализирует связанный с ним динамический список набором видимых колонок . Всем колонкам , добавляемым табличным полем, устанавливается свойство колонки списка АвтоУдаление = Истина .
- Специальная форма » Настройка списка «, открываемая через контекстное меню или через меню командной панели , позволяет управлять набором видимых колонок . После установки видимости колонок табличное поле установит новый набор колонок в связанный с ним динамический список , при этом колонки динамического списка, не видимые в табличном поле и у которых свойство АвтоУдаление = Истина, будут удалены из списка .
Следовательно , связанный с табличным полем динамический список содержит в себе только те поля базы данных , которые связаны с видимыми колонками табличного поля , а также поля, необходимые для отображения картинки и других служебных целей .
Иногда может потребоваться обратиться к колонкам динамического списка , не связанными с видидимыми только колонки Номенклатура и Сумма ( будет заполняться при обработке события табличного поля ПриВыводеСтроки ). Так как по умолчанию табличное поле устанавливает в динамический список только видимые колонки , то динамический список не будет содержать колонки Количество и Цена . Следовательно , при обработке события ПриВыводеСтроки возникнет ошибка времени выполнения . Для решения этой проблемы предлагаются следующие способы :
- Если колонки не являются видимыми или не существуют в динамическом списке , то при обработке события формы ПриОткрытии необходимо добавить их в динамический список и запретить им удаление :
Копировать в буфер обмена
- Можно необходимые колонки сделать видимыми и запретить им изменять видимость . Для это необходимо соответствующим колонкам в палитре свойств установить свойство » Видимость » и сбросить свойство » Изменять видимость «.
Источник
Добавление колонки в Динамический список (ОсновнаяТаблица)
Пытаюсь решить казалось бы простую задачу.
Берем любую конфу на 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. Регистр сведений «СведенияОСотрудниках».
Измерения: Сотрудник, Сведение. Ресурс: Значение.
3. Обработка «ДинамическиеКолонки».
Для измерения регистра сведений я ввела план видов характеристик «Сведения» с разнообразными типами.
Обработка «ДинамическиеКолонки»
Модуль формы
Код можно назвать вполне универсальным, в том смысле что, если у вас так же 3 колонки, не важно с какими наименованиями, вы можете воспользоваться им без внушительных доработок.
Я внесла в код три замечания в качестве комментариев, в которых указано, что нужно исправить.
(1) В запросе после КАК оставьте те значения, которые сейчас заданы — Сотрудник, Сведение, Значение.
После того, как протестируете и вникните в код, переименуете их.
(2) Укажите свой тип для колонки «Сведение», у меня это — ПВХ.
(3) Укажите свой тип для колонки «Значение», у меня это массив из типов.
На всякий случай прилагаю базу.
Скачать файлы
Наименование | Файл | Версия | Размер |
---|---|---|---|