Форма списка. Вывод значений реквизитов справочников
Автор ProMastersss, 02 мая 2018, 19:24
0 Пользователей и 1 гость просматривают эту тему.
Здравствуйте. Имеется справочник со следующими реквизитами:
НомерЛицензии – тип Строка, 30;
Организация – тип Справочник Контрагенты;
ВидыДеятельностиРабот – тип Справочник ВидыДеятельностиРабот;
ДатаВыдачи – тип Дата;
СрокДействия – тип Строка;
ДатаОкончания – тип Дата;
Подразделение – тип Справочник Подразделения;
ОтветственноеЛицо – тип Справочник СотрудникиОрганизаций;
НачалоПереоформления – тип Дата;
РБП – тип Справочник РасходыБудущихПериодов;
Комментарий – тип Строка 100.
Нужно сделать форму списка.
Вопрос: как вывести значения реквизитов из других справочников? Выводятся только названия ссылок на реквизиты, а нужно как в прикрепленном файле
Обработчики ТЧ ПриВыводеСтроки или ПриПолученииДанных.
Поля заполняются программно через ДанныеСтроки или ОформлениеСтроки.Ячейки.ИмяКолонки.УстановитьТекст(ТекстЯчейки), например.
А как добраться до значений реквизитов справочников, чтобы присвоить значения полям? Добавил к форме реквизиты этих справочников и ничего не выводится
Ну есть в данных строки некий реквизит А, в котором есть Ссылка на элемент какого-то справочника Б. И нужен оттуда реквизит С. Рисуем свою колонку и пишем в нее значение этого реквизита С. А колонку с реквизитом А, допустим, скрываем, если надо.
Подскажите, пожалуйста, еще момент. По умолчанию в колонку Организация вывелся реквизит Контрагенты со значением из Наименование Контрагента. И все, у кого тип данных СправочникСсылка выводят Наеименование. А как можно вывести другие реквизиты того же Контрагента, а не наименование справочника Контрагенты?
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
Форма списка. Вывод значений реквизитов справочников
Похожие темы (5)
Поиск
реквизит справочника на форму списка доков |
Я |
07.06.21 — 10:12
Привет, нужно подскажите как на форме списка в колонку запихнуть значение реквизита контрагента соответствующее значению контрагента из документа
1 — 07.06.21 — 10:12
-нужно
2 — 07.06.21 — 10:15
блин, на форме списка документа создал колонку, в неё нужно запихнуть значение реквизита контрагента, который в документе
3 — 07.06.21 — 10:19
УФ/ОФ?
4 — 07.06.21 — 10:20
Зачем создавать колонку? Нужно просо вывести. Если ваш список это как раз журнал документов а контрагент реквизит документа.
5 — 07.06.21 — 10:22
(3) ОФ (4) не совсем понял «просто вывести»
6 — 07.06.21 — 10:24
(0) > нужно подскажите как
О боже, боже, что же о нас подумают на известном телеграм канале?
(5) Твое «запихнуть» сводится к «вывести» — вызову .УстановитьТекст внутри цикла в обработчике ПриПолученииДанных. Код напишешь сам.
7 — 07.06.21 — 10:27
Если оф — тогда в ПриПолученииДанных — рисуй в эту колонку что хочешь.
8 — 07.06.21 — 10:29
Судя по предыдущим темам у автора УТ 10.3
9 — 07.06.21 — 10:30
(8) +
10 — 07.06.21 — 10:31
Для начала что за список?!
11 — 07.06.21 — 10:32
(7) (6) нет такого обработчика (10) РТиУ
12 — 07.06.21 — 10:34
(11) Врёшь. Есть, если это обычные формы.
13 — 07.06.21 — 10:38
(12) ут 10, форма допилена, она ж обычная
14 — 07.06.21 — 10:39
(13) имею ввиду, что форма используется типовая с доработками
15 — 07.06.21 — 10:41
(13) И что? Добавить надо этот обработчик, а не ждать, как ворона на дубе, когда на неё сыр свалится
16 — 07.06.21 — 10:41
(13) «ПриПолучениииДанных» — оно платформенная фишка. Оно есть хоть в «типовой», хоть в «допиленной». Лишь бы форма была неуправляемая.
17 — 07.06.21 — 10:43
(16) я понял, но нет его в вываливающемся списке обработчиков (15) нет его в списке
18 — 07.06.21 — 10:45
я что могу не отличить УФ от ОФ что ли?
19 — 07.06.21 — 10:48
(18) Тут согласен — интрига…
(17) Искать не «в вываливающемся списке обработчиков», а в палитре свойств элемента управления. В списке присутствуют только УЖЕ ОПРЕДЕЛЕННЫЕ обработчики. События которым обработчики не определены в список не попадают.
20 — 07.06.21 — 10:49
(17) Алё, это событие не формы, а списка, запихивающий
21 — 07.06.21 — 10:49
Аааа! Обработчики воруют, дожили!….
А почему у меня есть?
Попробуй ПКМ по списку и свойства… Там поищи
22 — 07.06.21 — 10:52
ну да, не там смотрел…
23 — 07.06.21 — 10:53
(21) можно теперь обработчиками барыжить?
24 — 07.06.21 — 10:54
(23) У одних отбирать, другим отдавать.
25 — 07.06.21 — 10:55
да ладно вам, бывает
26 — 07.06.21 — 10:55
(23) Нельзя,1С запрещает.
27 — 07.06.21 — 10:55
(23) Учти, я у тебя покупать не буду))
28 — 07.06.21 — 10:57
(27) Купи у меня,за полцены отдам
29 — 07.06.21 — 10:58
(28) Мне свои-то девать некуда… Вон, СП куча валяется, обесценивается… А тут ещё обработчики…
30 — 07.06.21 — 11:02
(29) От СП толку особого нет,в отличии от обработчиков)).Сп интересен в первый год работы))
31 — 07.06.21 — 11:26
я мб туплю, у ПРиПолученииДанных параметр Элемент, а как мне обратиться к Элементам всем чтобы циклом пройтись?
32 — 07.06.21 — 11:27
(31) Для кажного …
33 — 07.06.21 — 11:39
(31) Не нужно циклом никуда проходиться. Оно само для каждой строки списка генерится будет.
34 — 07.06.21 — 12:03
(32) для каждого чего, коллекции нет
35 — 07.06.21 — 12:09
(31)
ПриПолученииДанных (OnDataGet)
Синтаксис:
ПриПолученииДанных(<ОформленияСтрок>)
Параметры:
<ОформленияСтрок>
Тип: ОформленияСтрок.
Коллекция оформления строк табличного поля.
Какой элемент?
36 — 07.06.21 — 12:11
(35) Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
37 — 07.06.21 — 12:14
(36) Элемент — это твой список.
А вот ОформленияСтрок — как раз строки, в которых рисовать надо
38 — 07.06.21 — 12:21
(37) в смысле рисовать то? мне нужно заполнить колонку, я создал реквизит Булево, указал путикданным в колонке и мне надо реквизит.значение = контрагент.реквизит.значение
39 — 10.06.21 — 10:15
оформлениестроки.ДанныеСтроки.Реквизит1 = «Да»
Поле объекта недоступно для записи (Реквизит1)
dvrk
40 — 10.06.21 — 10:20
ладно пох через текст сделаю
На чтение 5 мин Просмотров 2.8к. Опубликовано 02.11.2021
Содержание
- Остатки в списке документов
- Неверный путь
- Оптимальное решение
- Обращайте внимание
Рассмотрим задачу, когда нужно вывести дополнительные реквизиты и сведения в общем списке элементов. Рассмотрим на примере конфигурации УТ 11, в справочник Номенклатура добавлен дополнительный реквизит Артикул клиента.
Открываем список элементов справочника Номенклатура, выбираем меню Все действия – Изменить форму… (рис. 1):
Рис. 1. Все действия – Изменить форму…
В открывшемся окне Настройка формы у Списка номенклатуры находим поле Ссылка, выделяем его и нажимаем Добавить поля (рис. 2):
Рис. 2. Добавление полей
Далее в открывшемся окне Выберите поля для размещения в форме выбираем нужный дополнительный реквизит Артикул клиента и нажимаем ОК (рис. 3):
Рис. 3. Выбор дополнительного реквизита
Поле Артикул клиента появляется на форме Настройка формы, можно переместить его, нажимая на стрелочки Вверх, Вниз. После выбора позиции нажимаем ОК (рис. 4):
Рис. 4. Дополнительный реквизит в списке полей
В списке Номенклатуры появилась колонка с дополнительным реквизитом Артикул клиента (рис. 5):
Рис. 5. Новая колонка в списке
Можно выгрузить в файл получившийся список, меню Все действия – Вывести список… (рис. 6):
Остатки в списке документов
Решим следующую задачу: в списке документов «Заказы поставщику» нам необходимо добавить новую колонку «Остаток по заказу», которая будет отображать остаток для документа в регистре накопления «Заказы поставщику» на текущую дату.
Реализовать это нужно в конфигурации «Управление производственным предприятием» версии 1.3.
Неверный путь
Рассмотрим самый «очевидный» путь, он же самый простой. Большинство начинающих программистов делают именно так. У табличного поля формы, которое привязано к реквизиту формы с типом «ДокументСписок» есть событие «ПриВыводеСтроки». В нем напишем Запрос к остаткам по заказу для выводимой строки и полученный результат присвоим ячейке текущей строки в колонке «Остаток». Вот так будет выглядеть код обработчика события «ПриВыводеСтроки»:
Дело сделано! Задача решена! Но! Событие «ПриВыводеСтроки» вызывается для каждой строки отдельно. То есть, если в список выводится 30 строк, то запрос будет формироваться столько же раз! Может есть другой путь?
Оптимальное решение
Другой путь есть. Оптимальное решение кроется в использовании события «ПриПолученииДанных». Это событие вызывается один раз, когда происходит получение порции данных списком документов. В контексте этого события нам доступны данные, которые получила платформа. Поэтому мы можем их обработать одним запросом. Вот программный код обработчика «ПриПолученииДанных» для решения этой задачи:
Результат работы такой же, как и для варианта с использованием события «ПриВыводеСтроки», но есть одно НО.
Обращайте внимание
Самое главное отличие заключается в скорости работы. Вот сравнение времени выполнения для обоих вариантов решения задачи:
При использовании «ПриВыводеСтроки» время формирования списка выполняется дольше практически в четыре раза! Не смотря на это, не рекомендую добавлять подобные поля в список документов, поскольку, в любом случае, это потребует дополнительных ресурсов серверной машины. Лучше используйте отчеты.
Искала приемлемое решение для идентификации графика работы сотрудников при оформлении кадровых документов, в условиях когда одной позиции штатного расписания могут относиться несколько различных графиков работы.
Задача:
Производство. Вахтовый метод работы, сменные графики, когда вахтовый цикл составляет 1 месяц, 2 месяца и 3 месяца. Территория — местность приравненная к районам крайнего севера (МСК), со всеми вытекающими последствиями для учета. По спец. оценке условий труда (СОУТ) количество дней отпуска будет изменяться в зависимости от класса «вредности». Этот факт мы также обязаны предусмотреть при составлении графика. А именно будет изменяться количество дней оплачиваемого отдыха за работу сверх нормы. Итак, условий много. Было решено создавать графики с учетом всех условий, максимально приближено к реальным. Ежемесячные особенности, к примеру изменения дат и количества дней в пути, корректировать индивидуальными.
На выходе получили более 50 графиков работ. Встал вопрос как их идентифицировать при приеме и переводе сотрудников. Заказчик поставил задачу разработать внутренние нормативные документы для упрощения работы кадровой службы. Начали описывать. Договорились что для информативности унифицируем названия графиков. Но по факту этого оказалось недостаточно. Очень хотелось иметь ещё и номер. Структура элемента справочника Графики работы сотрудников к нашему разочарованию не имеет нумерации.
Я пошла искать подобные темы. Форумчане в голос твердили что без снятия конфигурации с поддержки не обойтись. Вот пример такой темы: https://buh.ru/forum/forum18375/topic80453/
Но на моем проекте жёсткое условие, конфигурацию с поддержки не снимать. Подумав пару часов, нашла решение. Применила дополнительные реквизиты и настройки списка.
Решение:
1. Создаем дополнительный реквизит к справочнику Графики работы сотрудников
Как видно на рисунке выше, дополнительный реквизит самый простой, тип строка.
2. Для удобства переместила доп. реквизит на форме элемента справочника вверх
3. В форме списка справочника — Все действия (или «Ещё», если работаете в режиме Такси) — Изменить форму. Добавим на форму поле «Ссылка»
4. Теперь идем в Настроить список (там же, во «Все действия») Условное оформление — Добавим текст, но выберем не Строка, а Поле компоновки данных — ДополнительныеРеквизиты.Значение
5. В качестве оформляемого поля выбираем Ссылка
6. Сохраняем настройки. При необходимости, передаем свои настройки другим пользователям. И радуемся обновленному списку справочника
Буду рада если кому-нибудь пригодится такое решение.
- Распечатать
Оцените статью:
- 5
- 4
- 3
- 2
- 1
(0 голосов, среднее: 0 из 5)
Поделитесь с друзьями!
Как вывести дополнительные реквизиты на форму списка справочника Графики работы сотрудников. Управляемые формы. Без снятия конфигурации с поддержки
24.02.2019
Как вывести дополнительные реквизиты на форму списка справочника Графики работы сотрудников Подходит для ERP, ЗУП v. 3.0; 3.1
Искала приемлемое решение для идентификации графика работы сотрудников при оформлении кадровых документов, в условиях когда одной позиции штатного расписания могут относиться несколько различных графиков работы.
Задача:
Производство. Вахтовый метод работы, сменные графики, когда вахтовый цикл составляет 1 месяц, 2 месяца и 3 месяца. Территория — местность приравненная к районам крайнего севера (МСК), со всеми вытекающими последствиями для учета. По спец. оценке условий труда (СОУТ) количество дней отпуска будет изменяться в зависимости от класса «вредности». Этот факт мы также обязаны предусмотреть при составлении графика. А именно будет изменяться количество дней оплачиваемого отдыха за работу сверх нормы. Итак, условий много. Было решено создавать графики с учетом всех условий, максимально приближено к реальным. Ежемесячные особенности, к примеру изменения дат и количества дней в пути, корректировать индивидуальными.
На выходе получили более 50 графиков работ. Встал вопрос как их идентифицировать при приеме и переводе сотрудников. Заказчик поставил задачу разработать внутренние нормативные документы для упрощения работы кадровой службы. Начали описывать. Договорились что для информативности унифицируем названия графиков. Но по факту этого оказалось недостаточно. Очень хотелось иметь ещё и номер. Структура элемента справочника Графики работы сотрудников к нашему разочарованию не имеет нумерации.
Я пошла искать подобные темы. Форумчане в голос твердили что без снятия конфигурации с поддержки не обойтись. Вот пример такой темы: https://buh.ru/forum/forum18375/topic80453/
Но на моем проекте жёсткое условие, конфигурацию с поддержки не снимать. Подумав пару часов, нашла решение. Применила дополнительные реквизиты и настройки списка.
Решение:
1. Создаем дополнительный реквизит к справочнику Графики работы сотрудников
Как видно на рисунке выше, дополнительный реквизит самый простой, тип строка.
2. Для удобства переместила доп. реквизит на форме элемента справочника вверх
3. В форме списка справочника — Все действия (или «Ещё», если работаете в режиме Такси) — Изменить форму. Добавим на форму поле «Ссылка»
4. Теперь идем в Настроить список (там же, во «Все действия») Условное оформление — Добавим текст, но выберем не Строка, а Поле компоновки данных — ДополнительныеРеквизиты.Значение
5. В качестве оформляемого поля выбираем Ссылка
6. Сохраняем настройки. При необходимости, передаем свои настройки другим пользователям. И радуемся обновленному списку справочника
Буду рада если кому-нибудь пригодится такое решение.
Вы уже научили выводить реквизит иного справочника и документа в форме документа. И даже редактировать.
Тут:
http://novichok1c.ru/comment/1451#comment-1451
Отлично работает, за что еще раз ОГРОМНОЕ Спасибо!
Так же Вы научили редактировать «дистанционно» реквизит другого справочника или документа.
Однако у данного метода есть существенный недостаток:
Чтобы произошли измененния, необходимо, чтобы документ, в который выводится реквизит был открыт и перезаписан.
В связи с чем 2 вопроса:
Вопрос 1.
1С возможно объединить реквизит?
Т.е. создать один реквизит для нескольких документов?
К которому документы обращаются, при открытии форм, который можно редактировать из любого документа связанного с этим реквизитом.
Вопрос 2.
Как вывести данные реквизита документа(справочника) из формы списка другого документа?
(когда документы находятся в подчинении друг друга или связаны, как ЗаказПокупателя и РеализацияТоваровУслуг, Контрагенты и ЗаказПокупателя и т.д.)
Рассмотрим задачу, когда нужно вывести дополнительные реквизиты и сведения в общем списке элементов. Рассмотрим на примере конфигурации УТ 11, в справочник Номенклатура добавлен дополнительный реквизит Артикул клиента.
Открываем список элементов справочника Номенклатура, выбираем меню Все действия – Изменить форму… (рис. 1):
Рис. 1. Все действия – Изменить форму…
В открывшемся окне Настройка формы у Списка номенклатуры находим поле Ссылка, выделяем его и нажимаем Добавить поля (рис. 2):
Рис. 2. Добавление полей
Далее в открывшемся окне Выберите поля для размещения в форме выбираем нужный дополнительный реквизит Артикул клиента и нажимаем ОК (рис. 3):
Рис. 3. Выбор дополнительного реквизита
Поле Артикул клиента появляется на форме Настройка формы, можно переместить его, нажимая на стрелочки Вверх, Вниз. После выбора позиции нажимаем ОК (рис. 4):
Рис. 4. Дополнительный реквизит в списке полей
В списке Номенклатуры появилась колонка с дополнительным реквизитом Артикул клиента (рис. 5):
Рис. 5. Новая колонка в списке
Можно выгрузить в файл получившийся список, меню Все действия – Вывести список… (рис. 6):
Рис. 6. Вывод списка в файл
Автор: Дина Королева
Подписывайтесь на канал
«Полезный 1С»
В телеграм канале — наш практический опыт, бизнес-кейсы и способы повышения эффективности компании, которые мы опробовали внутри группы Neti.
Возврат к списку
Посмотрим, как можно программно добавить реквизиты и новые элементы на форму. В форме элемента справочника «Номенклатура» создадим два реквизита формы и элементы для них. Новые элементы объединим в группу с горизонтальной группировкой.
Сейчас форма имеет следующий вид:
После добавления новых элементов она будет иметь вид:
Итак, добавляем реквизиты:
ЕдиницаИзмерения
, типСправочникСсылка.ЕдиницыИзмерения
;ТекущийОстаток
, типЧисло
.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) #Область ДобавлениеРеквизитовФормы // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив(); // Описываем новые ревизиты формы РеквизитЕдиницаИзмерения = Новый РеквизитФормы( "ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), , "Единица измерения" ); РеквизитТекущийОстаток = Новый РеквизитФормы( "ТекущийОстаток", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), , "Текущий остаток" ); // Заполняем массив новых реквизитов ДобавляемыеРеквизиты.Добавить(РеквизитЕдиницаИзмерения); ДобавляемыеРеквизиты.Добавить(РеквизитТекущийОстаток); // Добавляем новые реквизиты в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы // Добавляем группу без отображения на форме НоваяГруппаФормы = Элементы.Добавить( "ЕдиницаИзмеренияОстаток", Тип("ГруппаФормы") ); НоваяГруппаФормы.Вид = ВидГруппыФормы.ОбычнаяГруппа; НоваяГруппаФормы.Отображение = ОтображениеОбычнойГруппы.Нет; НоваяГруппаФормы.ОтображатьЗаголовок = Ложь; НоваяГруппаФормы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; // Добавляем элементы внутрь новой группы НовыйЭлемент = Элементы.Добавить( "ЯчейкаХранения", Тип("ПолеФормы"), НоваяГруппаФормы ); НовыйЭлемент.ПутьКДанным = "ЕдиницаИзмерения"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; НовыйЭлемент = Элементы.Добавить( "ТекущийОстаток", Тип("ПолеФормы"), НоваяГруппаФормы ); НовыйЭлемент.ПутьКДанным = "ТекущийОстаток"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; #КонецОбласти #Область ЗаполнениеДанных // Имитируем заполнение данных ЭтаФорма.ЕдиницаИзмерения = ПредопределенноеЗначение( "Справочник.ЕдиницыИзмерения.Штука" ); ЭтаФорма.ТекущийОстаток = 12; #КонецОбласти КонецПроцедуры
Для удаления необходимо передать массив реквизитов на удаление в качестве второго параметра метода формы ИзменитьРеквизиты()
. Удалять можно только реквизиты, созданные программно.
Теперь посмотрим, как можно изменить основной реквизит формы. Изменим табличную часть Состав
документа РасходнаяНакладная
:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив(); // Описываем новый ревизит формы РеквизитЕдиницаИзмерения = Новый РеквизитФормы( "ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), "Объект.Состав", "Единица измерения" ); // Заполняем массив новых реквизитов ДобавляемыеРеквизиты.Добавить(РеквизитЕдиницаИзмерения); // Добавляем новый реквизит в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); // Добавляем элемент формы для нового реквизита НовыйЭлемент = Элементы.Добавить( "ЕдиницаИзмерения", Тип("ПолеФормы"), Элементы.Состав ); НовыйЭлемент.ПутьКДанным = "Объект.Состав.ЕдиницаИзмерения"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; КонецПроцедуры
Важно понимать, что данные добавленного реквизита сохраняться в ИБ не будут.
Поиск:
1С:Предприятие • Изменить реквизиты • При создании на сервере • Реквизит • Управляемая форма • Элемент формы