+15
Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором?
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация)
1.
Создание реквизита:
Добавляем новый реквизит формы (!!! не путать с реквизитом справочника !!!) с типом «ДинамическийСписок»
В поле «Основная таблица» выбираем нужный регистр сведений.
2.
Отображение на форме:
Перетащить реквизит формы в элементы формы (c права налево .
Так же для отображения необходимо задать хотя-бы одну колонку для вывода.
3.
Настройка отбора:
В процедуре ПриСозданииНаСервере вручную устанавливаем необходимый отбор.
Пример:
Код 1C v 8.2 УП
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОтбора = КонтактнаяИнформация.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = Объект.Ссылка;
КонецПроцедуры
Решение явно не единственное, так что если кто что накопает ещё — пишите
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация)
1.
Создание реквизита:
Добавляем новый реквизит формы (!!! не путать с реквизитом справочника !!!) с типом «ДинамическийСписок»
В поле «Основная таблица» выбираем нужный регистр сведений.
2.
Отображение на форме:
Перетащить реквизит формы в элементы формы (c права налево :).
Так же для отображения необходимо задать хотя-бы одну колонку для вывода.
3.
Настройка отбора:
В процедуре ПриСозданииНаСервере вручную устанавливаем необходимый отбор.
Пример:
Код 1C v 8.2 УП
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОтбора = КонтактнаяИнформация.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = Объект.Ссылка;
КонецПроцедуры
Решение явно не единственное, так что если кто что накопает ещё — пишите
Информация взята с сайта http://helpf.pro
Хотите узнать больше по этому вопросу?
Подпишитесь на нашу рассылку новостей
Подписаться
Чтобы задать вопрос или предложить тему статьи, нажмите на кнопку ниже:
Предложить статью
Регистр сведений
Регистры сведений — это прикладные объекты конфигурации. Они позволяют хранить в прикладном решении произвольные данные в разрезе нескольких измерений. Например, в регистре сведений можно хранить курсы валют в разрезе валют, или цены предприятия в разрезе номенклатуры и типа цен.
Структура
Информация в регистре сведений хранится в виде записей, каждая из которых содержит значения измерений и соответствующие им значения ресурсов.
Измерения регистра описывают разрезы, в которых хранится информация, а ресурсы регистра непосредственно содержат хранимую информацию. Например, для регистра сведений Цены товаров, который имеет следующую структуру:
записи, хранимые в базе данных, будут выглядеть следующим образом:
Вместе с каждой записью, находящейся в регистре сведений, можно хранить дополнительную произвольную информацию. Для этого служат реквизиты регистра сведений.
Периодичность
Одной из возможностей регистра сведений является хранение данных не только в разрезе указанных измерений, но и в разрезе времени. Разработчик может указать минимальную периодичность, с которой записи будут заноситься в регистр:
В этом случае к каждой записи регистра будет добавляться поле Период, хранящее дату, которой были внесены записи в регистр. Использование периодичности регистра сведений позволяет не просто хранить статические данные, но и отслеживать их изменение во времени.
Например, периодический регистр сведений Цены товаров может не только хранить информацию о том, какова цена на определенную номенклатуру сейчас, но и о том, как она изменялась в прошлом (или будет изменяться в будущем):
Подчинение регистратору
Внесение изменений в регистр сведений может выполняться как вручную, так и при помощи документов. В случае, когда изменения в регистр сведений вносятся с помощью документов, к каждой записи регистра добавляется специальное поле, в котором хранится информация о регистраторе — документе, с которым связана эта запись. В процессе создания прикладного решения разработчик указывает, какой именно режим записи будет использоваться данным регистром сведений:
Использование режима записи Подчинение регистратору может потребоваться в случае, когда логика работы прикладного решения требует того, чтобы изменения, выполняемые в регистре сведений, были жестко связаны с документами, фиксирующими факты хозяйственной деятельности.
Например, изменение цен компании может производиться только определенным кругом лиц, и каждое такое изменение должно сопровождаться «бумажным» документом. В этом случае можно использовать режим подчинения регистратору, при котором изменение цен может быть выполнено только специальным документом — Изменение цен товаров.
Уникальность записей
Система обеспечивает контроль уникальности записей, хранящихся в регистре сведений. Таким образом, в регистре сведений не может находиться двух одинаковых записей. Одинаковыми считаются записи, у которых совпадает ключ записи. Ключ записи формируется системой автоматически, на основании значений, содержащихся в полях записи, и зависит от вида регистра сведений.
В общем случае в формировании ключа записи будут участвовать значения регистратора, периода и значения измерений. Таким образом, например, в непериодическом регистре сведений Цены товаров с независимым режимом записи не может существовать двух записей о розничной цене конфет ассорти. Точно так же, как в периодическом регистре сведений Цены товаров, подчиненном регистратору, не может существовать двух записей о розничной цене конфет ассорти, внесенных одной и той же датой, одним и тем же документом Изменение цен товаров.
Формы
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в регистре сведений, система поддерживает несколько форм представления регистра. Система может автоматически генерировать все нужные формы регистра. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:
Форма списка
Для просмотра данных, содержащихся в регистре сведений, используется форма списка. Она позволяет выполнять навигацию по регистру, добавлять, помечать на удаление и удалять записи регистра. Форма списка позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:
Форма записи
Для просмотра и изменения отдельных записей регистра сведений используется форма записи. Как правило, она представляет данные в удобном для восприятия и редактирования виде:
Функциональные возможности регистра сведений
Основными функциональными возможностями, которые предоставляет регистр сведений разработчику, являются:
- создание, изменение и удаление записей;
- выбор записей в заданном интервале по заданным критериям;
- выбор записей по регистратору;
- получение значений ресурсов записей, соответствующих указанному периоду и значениям измерений;
- получение значений ресурсов наиболее ранних и наиболее поздних записей регистра, соответствующих указанному периоду и значениям измерений.
Здравствуйте, уважаемые специалисты по 1С. Помогите, пожалуйста, разобраться со следующим вопросом. Это — 1С 8.2, конфигурация «УТП». В справочнике есть периодические реквизиты, данные в них добавляются как самим справочником, так и при проведении из документа. Всё нормально работает, даже отображение значения периодического реквизита в форме элемента справочника (запросом из регистра сведений). Но вот с отображением этого реквизита в форме списка этого справочника возникли сложности. Код, я понимаю, совершенно неправильный:
Функция ПриОткрытии()
ЭлементыФормы.СправочникСписок.Колонки.ЦенаПриходная = ВернутьПриходнуюЦену(СправочникОбъект.Ссылка);
КонецФункции
Функция ВернутьПриходнуюЦену(Наименование)
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| ЦенаПриходнаяСрезПоследних.Цена
|ИЗ
| РегистрСведений.ЦенаПриходная.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК ЦенаПриходнаяСрезПоследних»;
Запрос.УстановитьПараметр(«Дата», КонецДня(ТекущаяДата()));
Запрос.УстановитьПараметр(«Номенклатура», Наименование);
ТаблицаРезультата = Запрос.Выполнить().Выгрузить();
Если ТаблицаРезультата.Количество()=0 Тогда
Возврат 0;
Иначе
Возврат ТаблицаРезультата[0].Цена;
КонецЕсли;
КонецФункции
Функция «ПриОткрытии» установлена в событии формы списка справочника «ПриОткрытии». При этом для «СправочникОбъект» отладчик показывает только код одной из записей данных, остальные поля/атрибуты в нём пустые, для «ВерсияДанных» есть фраза «Ошибка чтения значения». Подозреваю, что к моменту вызова «СправочникОбъект» сам справочник ещё не открыт, как его программно открыть — не пойму. Даже если бы нормально выгрузилось содержимое справочника, то надо было бы, конечно же, заполнить каждую строку элемента формы «СправочникСписок», но он не ведёт себя как таблица, и я не соображу, как по-нормальному пробежать его строки в цикле (если в этом вообще есть необходимость). Извините за сумбурность и обилие текста, вопрос вкратце таков: как правильно присвоить некоторым полям формы списка справочника соответствующие данные периодических реквизитов из регистра сведений ?
19.09.08 — 13:02
Есть справочник, есть регистр сведений с двумя измерениями, одно из которых — ссылка на этот справочник. Хочется на управляемой форме элемента справочника разместить таблицу, в которой бы отображался список регистра сведений с отбором по данному элементу и с возможностью редактирования. Пока получилось закинуть на форму таблицу, но как ей в данные подпихнуть регистр сведений?
1 — 19.09.08 — 13:05
меня мучают смутные сомнения… а зачем Вам это надо?
2 — 19.09.08 — 13:15
(1) Красиво и удобно потому что. Или среди адинеснегов тяготение к красоте и удобству не распространены? ))
3 — 19.09.08 — 14:44
Таки никто 8.2 не юзает или всем просто лень отвечать по причине тяпницы?
4 — 19.09.08 — 14:52
(0) Если хочеш красиво, то забудь про 8.2. В управляемых форм намного меньше возможностей чем в обычных, и это даже может оказатся не возможным. Упарвляемая форма ориентриована на тонкий клиент, а не нарюшечки всякиею
По теме: создай форму для регистра мастером и посмтри что будет, я так многое делал.
5 — 19.09.08 — 14:55
(4) Оно понятно, что возможностей меньше, но из этого «меньше» хочется выжать максимум. Счас попробую мастера.
6 — 19.09.08 — 19:52
Ну в общем если кому интересно будет рассказываю:
1. Добавляем новый реквизит формы (!!! не путать с реквизитом справочника !!!) с типом «ДинамическийСписок»
2. В поле «Основная таблица» выбираем нужный справочник, перечисление или регистр сведений
3. Добавляем новый элемент формы — таблицу
4. В качестве данных для таблицы выбираем созданный нами реквизит формы
Наслаждаться еще рано, потому что никакой таблицы на форме не появится )) Таблица отображается только в том случае, если для нее определена хоть одна колонка. Колонки можно заполнить автоматически (1С сама спросит «Хотите ли вы добавить колонки?») или добавить руками в списке элементов формы.
Собственно все. Как настроить в режиме конфигуратора отбор и сортировку списка пока не знаю.
7 — 19.09.08 — 19:58
(4) Кстати, получилось красиво несмотря на тонкий клиент )))
8 — 19.09.08 — 20:18
(7) Красиво то может и получилось, а как с функциональностью? Невозможным я имел ввиду синхронизацию.
9 — 19.09.08 — 20:33
Вот кстати как я делал:
Запрос динамического списка Реквизит2:
ВЫБРАТЬ
НастройкаКассы.Коментарий
ИЗ
РегистрСведений.НастройкаКассы КАК НастройкаКассы
ГДЕ
НастройкаКассы.БанковскийСчетКасса = &БанкКасса
И потом:
Реквизит2.Параметры.Вставить(«БанкКасса»,оБанковскийСчетКасса);
Элементы.Таблица2.Обновить();
10 — 19.09.08 — 20:50
(9) А в этом случае список обновляться будет? И как с редактированием: создать новый, изменить и т.д.?
11 — 19.09.08 — 20:58
Все нормально, тольк нельзя чтобы этот запрос выполнялся до
Реквизит2.Параметры.Вставить(«БанкКасса»,оБанковскийСчетКасса);
Тоесть это нужно в ПриОткрытии, а ты же тогда еще не знаеш по чем отбирать.
Кстати текст запроса можна менять програмно, даже после того как форма открылась.
12 — 19.09.08 — 22:18
а где найти 1С 8.2? интересно посмотреть..
она на файлах работает? Linux?
13 — 22.09.08 — 10:50
(11) Прикольно! Пока, правда, руки не доходят до этого, но позже обязательно попробую!
(12) Не знаю, нам 1С дала
14 — 22.09.08 — 11:12
(6) Вместо пп.3 и 4 можно просто перетащить реквизит формы в элементы формы. А отбор с сортировкой можно настроить: в свойствах реквизита формы есть пунктик «Настройка списка». Справа жмем «Открыть» и настраиваем …
(4) А чего в упр.формах нельзя сделать?
15 — 22.09.08 — 12:33
(14) Помоему не доступны Структуры, само-собой запросы нельзя. Также нельзя ДокументОбъект.ПолучитьФорму. Вообще куче непреятностей.
16 — 22.09.08 — 13:31
(15) Структуры — это только по-твоему, запросы — что мешает в модуле формы поместить серверную процедуру и сделать там все нужное?
Что мешает получить форму и открыть ее с передачей параметров?
Может дело не в ограничениях, а сложностях освоения доступных возможностей?
TitanLuchs
17 — 23.09.08 — 00:08
(14) Пробовал настроить отбор через настройку списка — не получилось. Мне нужно было чтобы регистр сведений отбирался по элементу справочника, в форме которого размещена форма списка регистра. Так в настройках можно указать только уже записанный ранее элемент. Тогда сделал как в (9): установил галку «Произвольный запрос» и дописал условие. Кста, строка «Элементы.Таблица2.Обновить();» не нужна — оно само все нормально обновляет.
Содержание
- Похожие FAQ
- Еще в этой же категории
- Функциональные возможности регистра сведений
- Структура объекта 1С «Регистры сведений»
- Периодичность регистра сведений 1С
- Подчинение регистратору
- Свойство «Режим записи»может быть в значении:
- Уникальность записей регистра сведений
- Свойства измерения регистра сведений
- Программная запись в регистр сведений 1С
1С:Предприятие 8 поддерживает готовую функциональность для организации выбора из форм списков объектных данных (справочников, документов и т.д.). В большинстве случаев выбираются именно такие значения. Однако, в некоторых случаях, необходимо организовать выбор и других значений. Механизм форм 1С:Предприятия 8 включает универсальный механизм выбора, позволяющий организовать выбор практически любых значений.
Для этого используется возможность открытия формы в режиме выбора и возможность обработки события выбора.
В качестве примера приведем реализацию выбора записи регистра сведений. Стандартные расширения форм не поддерживают механику выбора, однако ее несложно реализовать.
Вначале создадим новую форму списка регистра сведений и назовем ее «ФормаВыбора». В форме реализуем событие Выбор табличного поля отображающего список.
В этом событии мы отменяем стандартное действие, предусмотренное расширением табличного поля, и вместо него вызываем метод ОповеститьОВыборе() , передавая ему в качестве параметра текущую строку. Значением текущей строки будет являться значение типа РегистрСведенийКлючЗаписи. .
Теперь реализуем функциональность выбора в той форме, в которой это требуется. Например, в форме обработки, имеющей поля ввода «Валюта» и «Период».
Вначале мы сформируем ключ записи регистра сведений, который будет использоваться для установки в списке текущей строки в соответствии с текущими значениями полей ввода. Сама установка будет выполняться через стандартный параметр формы ПараметрТекущаяСтрока .
Заметим, что если для установки текущей строки расширение формы не предоставляет стандартного параметра, то можно создать свой реквизит у формы выбора, заполнить его аналогично заполнению стандартного параметра в этом примере, и при открытии формы обеспечить позиционирование в списке в соответствии со значением данного реквизита.
Далее мы создаем форму, устанавливаем ей режим выбора, владельца формы, и выполняем открытие формы.
Теперь нам нужно только реализовать обработчик выбора в форме и выполнить в нем необходимее действия с выбранным значением.
Заметим, что в качестве владельца формы может устанавливаться не только сама форма, в которой осуществляется выбор, но и ТабличноеПоле , ПолеВвода и ПолеВыбора . Соответственно и обработчик выбора нужно будет реализовывать у этих элементов управления.
Как на управляемой форме разместить список регистра сведений с отбором?
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация)
1. Создание реквизита:
Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом «ДинамическийСписок»
В поле «Основная таблица» выбираем нужный регистр сведений.
2. Отображение на форме:
Перетащить реквизит формы в элементы формы (c права налево .
Так же для отображения необходимо задать хотя-бы одну колонку для вывода.
3. Настройка отбора:
В процедуре ПриСозданииНаСервере вручную устанавливаем необходимый отбор.
Пример:
Код 1C v 8.2 УП
Решение явно не единственное, так что если кто что накопает ещё — пишите 😉
Похожие FAQ
Еще в этой же категории
Заполнение списка значений в элементе поле выбора на форме 9
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Как установить параметр динамического списка? 8
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма
Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Форма
Как активизировать, перевести фокус на необходимый элемент на форме? 6
//Текущему Элементу формы присваиваем элемент котровый необходимо активизировать ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ТабличноеПоле; Форма
Программное добавление элементов на форму 6
ЭлементыФормы (Controls) . Добавить (Add) — Добавляет элемент управления на форму. Синтаксис: Добавить( Тип , Имя , Видимость , ПоместитьНа ) Параметры: Тип (обязательный) Тип: Тип. Тип добавляемого элемента управления: Индикатор; П Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Объект 1С «Регистры сведений» — это прикладные объекты конфигурации, которые позволяют хранить в прикладном решении произвольные данные в разрезе нескольких измерений.
Например, в регистре сведений можно хранить курсы валют в разрезе валют, или цены предприятия в разрезе номенклатуры и типа цен.
Функциональные возможности регистра сведений
Основными функциональными возможностями, которые предоставляет регистр сведений разработчику, являются:
- создание, изменение и удаление записей;
- выбор записей в заданном интервале по заданным критериям;
- выбор записей по регистратору;
- получение значений ресурсов записей, соответствующих указанному периоду и значениям измерений;
- получение значений ресурсов наиболее ранних и наиболее поздних записей регистра, соответствующих указанному периоду и значениям измерений.
Структура объекта 1С «Регистры сведений»
Информация в регистре сведений хранится в виде записей, каждая из которых содержит:
- значения измерений регистра (описывают разрезы, в которых хранится информация);
- соответствующие им значения ресурсов (непосредственно содержат хранимую информацию).
Например, регистр сведений цены товаров может иметь следующую структуру:
где » Вид цен» может иметь значения «Оптовая», «Розничная», и т.д.
Вместе с каждой записью, находящейся в регистре сведений, в его реквизитах можно хранить дополнительную произвольную информацию.
Периодичность регистра сведений 1С
Одной из возможностей регистра сведений является хранение данных не только в разрезе указанных измерений, но и в разрезе времени.
Данное свойство позволяет добавить к списку измерений регистра дополнительное измерение — «Период».
Использование периодичности регистра сведений позволяет не просто хранить статические данные, но и отслеживать их актуальность на определенную дату или изменение во времени.
Разработчик может указать минимальную периодичность, с которой записи будут заноситься в регистр:
Периодичность может принимать следующие значения:
- Непериодический;
- В пределах секунды;
- В пределах дня;
- В пределах месяца;
- В пределах квартала;
- В пределах года.
В этом случае к каждой записи регистра будет добавляться поле «Период», хранящее дату, которой были внесены записи в регистр.
При выборе периодичности, отличной от варианта «Непериодический», система будет контролировать уникальность записей в пределах заданного промежутка времени. Если запись не уникальна, система 1C выдаст сообщение » Запись с такими ключевыми полями существует !» и не даст произвести запись в базу данных.
Например, периодический регистр сведений «Цены товаров» может не только хранить информацию о том, какова цена на определенную номенклатуру сейчас, но и о том, как она изменялась в прошлом (или будет изменяться в будущем).
Особенность периодического регистра сведений:
- Возможность получать готовые значения «Срез первых» и «Срез последних». Эта информация позволяет очень быстро получить из базы данных информацию о последнем (первом) установленном значении на определенную дату.
Подчинение регистратору
Внесение изменений в регистр сведений может выполняться:
В случае, когда изменения в регистр сведений вносятся с помощью документов, к каждой записи регистра добавляется специальное поле, в котором хранится информация о регистраторе — документе, с которым связана эта запись.
Какой именно режим записи будет использоваться данным регистром сведений указывается разработчиком в процессе создания прикладного решения:
Свойство «Режим записи»может быть в значении:
- « Независимый » — записи можно произвести как программно, так и из формы списка регистра сведений;
- « Подчинение регистратору » — обязательно указание документа-регистратора записи.
Использование режима записи «Подчинение регистратору» необходимо в случае, когда логика работы прикладного решения требует того, чтобы изменения, выполняемые в регистре сведений, были жестко связаны с документами, фиксирующими факты хозяйственной деятельности.
Например, изменение цен компании может производиться только определенным кругом лиц, и каждое такое изменение должно сопровождаться «бумажным» документом. В этом случае можно использовать режим подчинения регистратору, при котором изменение цен может быть выполнено только специальным документом — «Изменение цен товаров».
Уникальность записей регистра сведений
Система обеспечивает контроль уникальности записей, хранящихся в регистре сведений. Таким образом, в регистре сведений не может находиться двух одинаковых записей (с одинаковым ключом записи). Ключ записи формируется системой автоматически, на основании значений, содержащихся в полях записи, и зависит от вида регистра сведений.
В общем случае в формировании ключа записи будут участвовать значения регистратора, периода и значения измерений.
Таким образом, например, в непериодическом регистре сведений «Цены товаров» с независимым режимом записи не может существовать двух записей о розничной цене конфет ассорти. Точно так же, как в периодическом регистре сведений «Цены товаров», подчиненном регистратору, не может существовать двух записей о розничной цене конфет ассорти, внесенных одной и той же датой, одним и тем же документом «Изменение цен товаров».
Свойства измерения регистра сведений
Особое внимание следует обратить на флаги «Ведущее» и «Основной отбор» палитры свойств измерений регистра сведений.
- Ведущее — свойство измерения, указывающее на то, что без значения этого измерения запись регистра не имеет смысл. Установка флага означает что система при удалении значения из измерения удаляет еще и запись регистра с «Ведущим» измерением. Может быть установлено только одно измерение.
- Основной отбор — если регистр независимый, то по этим измерениям будет устанавливаться регистрация изменений для плана обмена. Аналогично использование «Основной отбор» по периоду включает основной отбор для периода периодических регистров.
Программная запись в регистр сведений 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):
Рис. 10. Новая колонка формы списка