Список значений в реквизите табличной части. |
Я |
04.10.12 — 15:53
Здравствуйте. Хочется сделать в строке табличной части список значений в колонке, но не знаю каким образом это можно связать еще с реквизитом табличной части. Для чего хочу связать с реквизитом, для того, чтобы потом программно добавлять в эту колонку со списком, значения. Думал все повязать с регистром сведений, но че то не особо нравится, информацию получу оперативно, а вот записывать в элемент справочника в табличную часть хз как эту информацию. У кого какие идеи, подскажите как быть?
1 — 04.10.12 — 15:53
Никак.
2 — 04.10.12 — 15:57
в смысле никак, что никто не делал?
3 — 04.10.12 — 15:59
(2) В смысле никак.
Только что разве через хранилище значения.
4 — 04.10.12 — 16:00
up?
5 — 04.10.12 — 16:00
(3) я к этому и подвожу как там делать, где прочитать про хранилище можно и как оно вообще данные хранит?
6 — 04.10.12 — 16:06
(5) Делать так как нужно, прочитать в СП, хранит в двоичных данных, ссылочная целостность не поддерживается, так что не рекомендую.
7 — 04.10.12 — 16:08
совсем нежавно решал подобную задачу, остановился на дополнительном справочнике — как альтернативе списку значений
8 — 04.10.12 — 16:08
(0)
добавить ТЧ, связать по ключу
?
9 — 04.10.12 — 16:08
значит тока вариант через регистр сведений остается да?
10 — 04.10.12 — 16:09
нежавно = неДавно
11 — 04.10.12 — 16:10
РС, справочник, хранилище значения… выбирай
12 — 04.10.12 — 16:11
не в вводите автора в заблуждение, все нормально реализуется и красиво работает
13 — 04.10.12 — 16:12
Пойду схожу за попкорном :))
14 — 04.10.12 — 16:12
(12) вы щас о чем?
(11) через справочник эт как? ссылку делать на примерные списки значений или что ?
15 — 04.10.12 — 16:13
пример откуда можно содрать готовое решение это ОСВ, там таблица по развернутому сальдо, отдельная колонка тип список значений заполняется списком раскрываемых субконто. курить БП, УПП
16 — 04.10.12 — 16:14
(14) > (7)
17 — 04.10.12 — 16:22
(8) еще громоздить 1 ТЧ и связи делать, а еще потом добавлять соблюдая связи правильно понял? а которую добавлю ТЧ мне ее как показывать?
(7) как образом делали это примерно идею бы что в доп справочнике держали.
18 — 04.10.12 — 16:25
да РС помойму покрасивше будет
19 — 04.10.12 — 16:26
(18) я бы сказал сердито и красиво)
хотел бы еще че то новое испытать … =)
20 — 04.10.12 — 16:27
(19) хранилище значения попробуй
21 — 04.10.12 — 16:28
тока вот проблемно будет с занесением программно данных в этот список значений при реализации при помощи РС.
22 — 04.10.12 — 16:28
(21) ничо проблемного, при записи дока
23 — 04.10.12 — 16:28
(18) Причем здесь красивше? РС удалять можно. А справочник фиг.
24 — 04.10.12 — 16:30
(23) при правильном подходе и справочник красивше, например посмотрев как Ключи аналитики учета и т.д. при РАУЗе формируются… элегантно и красиво
25 — 04.10.12 — 16:30
(22) как при записи? если у меня не реквизит а элемент на форме …
26 — 04.10.12 — 16:31
как я элемент на форме список значений, напихаю данные программно из РС.
интерактивно все ок будет.
27 — 04.10.12 — 16:31
(25) LOL
Некоторое дежавю, недавно ветка была с ровно таким же развитием :))
28 — 04.10.12 — 16:31
(17) начало v8: СписокЗначений в ТЧ документа — кошерно?
сделал допСправочник Маршруты, в табЧасти которого находятся Склады
29 — 04.10.12 — 16:32
(28) ну я и говорю сделать ссылку на этот справочник, в котором в ТЧ, будет то что я ищу верно?
30 — 04.10.12 — 16:33
а серьезно как в форму в реквизит формы записать данные.
ЭтотОбъект.ЭтаФорма.РеквизитФормы и пихать получается да?
31 — 04.10.12 — 16:34
(30) данные формы не сохраняются в ИБ
32 — 04.10.12 — 16:36
(31) вот именно, тогда мне придется каждый раз при открыии и записи эти данные запихивать ?
33 — 04.10.12 — 16:37
(32) угу
34 — 04.10.12 — 16:37
(32) вот и не изобретай велосипед, делай через справочник
35 — 04.10.12 — 16:39
(33) ну тута мы и будем валится на скорости открытия и записи данных.
Всем спасибо буду думать. Потом расскажу сделал. Думаю элемент со справочником будет удобнее людям добавлять данные …
36 — 04.10.12 — 16:46
37 — 04.10.12 — 16:48
38 — 04.10.12 — 16:50
(37) ну я вас так и понял, эт был один из самых таких простых но удобных вещей, правда эти элементы справочника когда удалять могут быть проблемы.
39 — 04.10.12 — 17:05
Всем спасибо за помощь.
palpetrovich
40 — 04.10.12 — 17:08
(38) Решается проверкой (приЗаписи, удалении)
Если Не ЭтоНовый() Тогда
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| АвтоперевозкаПеревозки.Ссылка
|ИЗ
| Документ.Автоперевозка.Перевозки КАК АвтоперевозкаПеревозки
|ГДЕ
| АвтоперевозкаПеревозки.Маршрут = &Ссылка
| И АвтоперевозкаПеревозки.Ссылка.Проведен»;
Запрос.УстановитьПараметр(«Ссылка», Ссылка);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
ТекстСообщения = «Элемент «+ Ссылка.НаименованиеПолное + » уже участвует в движениях документов: «;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ТекстСообщения = ТекстСообщения + »
|» + СокрЛП(Выборка.Ссылка);
КонецЦикла;
Сообщить(ТекстСообщения);
Отказ = Истина;
КонецЕсли;
КонецЕсли;
// в данном, конкретном случае проверка по одному доку
Как разместить в колонке табличной части в форме реквизит содержащий тип «список значений» (вид документов)?
Надо установить для колонки ТипЗначения=СписокЗначений
Может задача другая? может требуется при выборе выводить список зачений для выбора в данный реквизит?
Задача: форма с табличным полем в него заносится вид документа, ответственный, дата исполнения и таких строчек несколько.
Подскажите направление, как задать выбор из списка в табличнгом поле формы, списка значений.
Это уже другая задача. Для нее не надо чтобы колонка имела тип СЗ. Тут надо использовать ПолеВыбора.СписокВыбора куда надо записхать все возможные значения.
Можно я по порядку пойду. 1. Это внешняя обработка (пока) 2. Завожу табличную часть 3. В табличной части завожу элемент «ВидДокумента» — Тип:ЛюбаяСсылка?
Посмотри документ внутренний заказ поле размещение
Тебе надо не ссылку на документ, а его вид, т.е. мозно просто тип «Строка»
а потом мне надо данные в регистр сведений сведений, и что — строку в регистр, а затем на основании регистра сведений контролироватьесть такой документ в базе или нет?
Задал строку для нее указал выбор из списка значение, но оно почему-то не сохраняется при окончании выбора? Что не так?
В табличном поле формы реквизит табличной части «ВидДокумента»(тип строка) имеет кнопку списка выбора и событие: начало выбора из списка — ТПвводаВидДокументаНачалоВыбораИзСписка. Но после окончания выбора из списка не происходит выбор значения, т.е. курсор мигает в поле ввода и на нажатие Enter не реагирует ни как. Только счелкнув мышкой в любом другом месте формы завершает ввод. В чем дело?
Благодарю, теперь у меня все работает как надо. Для Каждого МетаданныеДокумента из Метаданные.Документы Цикл ВидДокументаСписок.Добавить(МетаданныеДокумента.Имя);
Тэги:
Комментарии доступны только авторизированным пользователям
24 / 24 / 1 Регистрация: 11.04.2008 Сообщений: 541 |
|
1 |
|
Реквизит документа с типом «СписокЗначений»17.10.2013, 14:23. Показов 19205. Ответов 11
В документе мне необходим реквизит «Поразделения» составного типа: справочник — Подразделения и Список значений, несколько подразделений, чтоб указать.
0 |
856 / 655 / 111 Регистрация: 01.11.2012 Сообщений: 2,410 |
|
17.10.2013, 14:38 |
2 |
Используйте табличную часть документа. Каждой строке своё подразделение
0 |
24 / 24 / 1 Регистрация: 11.04.2008 Сообщений: 541 |
|
17.10.2013, 15:07 [ТС] |
3 |
не вариант, ТЧ заполняется по подразделениям или подразделению
0 |
900 / 877 / 8 Регистрация: 15.03.2012 Сообщений: 2,680 |
|
17.10.2013, 15:12 |
4 |
не вариант Почему?
0 |
24 / 24 / 1 Регистрация: 11.04.2008 Сообщений: 541 |
|
17.10.2013, 15:14 [ТС] |
5 |
ТЧ заполняется по подразделениям или подразделению
0 |
856 / 655 / 111 Регистрация: 01.11.2012 Сообщений: 2,410 |
|
17.10.2013, 15:23 |
6 |
Логику документа объясните тогда, что он делает?
0 |
900 / 877 / 8 Регистрация: 15.03.2012 Сообщений: 2,680 |
|
17.10.2013, 15:38 |
7 |
Оленька, если я вас правильно понимаю, Вам нужно заполнять табличную часть документа, на основании данных о подразделениях. Это так? Если до то мы Вам и предлагаем создать отдельную ТЧ в которой будут хранится список подразделений.
0 |
856 / 655 / 111 Регистрация: 01.11.2012 Сообщений: 2,410 |
|
17.10.2013, 15:44 |
8 |
А вдруг это 7.7?
0 |
24 / 24 / 1 Регистрация: 11.04.2008 Сообщений: 541 |
|
18.10.2013, 06:45 [ТС] |
9 |
1С 8.2
0 |
900 / 877 / 8 Регистрация: 15.03.2012 Сообщений: 2,680 |
|
18.10.2013, 08:56 |
10 |
Если вы мне предлагаете перетащить подразделения в ТЧ Нет. Мы предлагаем создать дополнительную таб. часть «Подразделения». В ней можно будет указать как одно подразделение, так и несколько.
0 |
24 / 24 / 1 Регистрация: 11.04.2008 Сообщений: 541 |
|
18.10.2013, 09:08 [ТС] |
11 |
т.е. в шапке вместо поля подразделение делать ТЧ?
0 |
856 / 655 / 111 Регистрация: 01.11.2012 Сообщений: 2,410 |
|
18.10.2013, 10:20 |
12 |
Можно запихнуть с помощью ЗначениеВСтрокуВнутр() ЗначениеИзСтрокиВнутр(), но вам надо самой будет делать интерфейс добавления и редактирования списка подразделений. Поэтому не страдайте фигнёй и сделайте ТЧ, это не сложно
т.е. в шапке вместо поля подразделение делать ТЧ? Да, именно так.
1 |
На чтение 3 мин. Просмотров 182 Опубликовано 15.12.2019
Для чего это нужно? Например, вы хотите предложить пользователю выбрать одно из значений, содержащихся в колонке таблицы значений. Давайте посмотрим, как это можно реализовать.
Предположим, у нас есть таблица значений вида:
Наименование | Цена |
---|---|
Стол деревянный | 10000 |
Стол деревянный | 9500 |
Стул деревянный | 3500 |
Шкаф для одежды | 15500 |
Шкаф для одежды | 14000 |
Для того, чтобы предложить пользователю выбрать одно из значений колонки Наименование , напишем следующий код:
Только вот незадача: элементы «Стол деревянный» и «Шкаф для одежды» будут показываться дважды. Чтобы пользователь видел только уникальные значения, в наш код необходимо внести небольшие правки:
Нужно на форме документа сделать кнопочку Подбор для справочника сотрудники и чтобы выбранные элементы добавлялись в табличное поле документа?
В данной статье я приведу пример подбора элемента справочника в Список значений и в Табличную часть!
Создаем на форме следующие элементы:
Логика такова:
При нажатии на кнопку ПОДБОР (Процедура КоманднаяПанельПодбор) должена открыться форма подбора сотрудников:
Для Списка значений (СЗ) — ОткрытьФормуВыбораСотрудника(ЭлементыФормы.СписокСотрудников, ЭтотОбъект, Ложь, );
Для Табличного поля (ТП) — ОткрытьФормуВыбораСотрудника(ЭлементыФормы.ТабличноеПолеРаботники, ЭтотОбъект, Ложь, );
Далее открывается форма подбора сотрудника, при двойном щелчке — сотрудник должен добавится в СЗ или ТП.
Для этого у СЗ и ТП в Свойства — События добавляем ОбработкуВыбора :
Для Списка значений (СЗ) — Процедура СписокСотрудниковОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Для Табличного поля (ТП) — Процедура ТабличноеПолеРаботникиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
А в них пропишем проверку, добавлен сотрудник или нет — чтобы не было задвоений!
И так, код будет следующий:
Код 1C v 8.х
Автор: Мигачев Евгений
В документе ИНДЕКСАЦИЯ ЗАРПЛАТЫ по кнопке ЕЩЕ нет действия ВЫВЕСТИ СПИСОК.
Можно ли список значений в табличной части документа 1С (все строки с полным набором колонок) как-то сохранить в файл?
Оцените, пожалуйста, данный вопрос:
Содержание
- Вам будет интересно
- Ещё более 100 Лайфхаков по работе в 1С:БП 8.3 и ЗУП 3.1 смотрите на нашем втором сайте — БухЭксперт8
- Получить ещё Лайфхаки 1С >>
Вам будет интересно
Спасибо. ОЧЕНЬ помогли. Сама не догадалась бы. Все получается.
Дмитрий Герасимов Profbuh8.ru Дек 21 2016 — 14:46
Здравствуйте!
Можно открыть новый табличный документ (Главное меню – Файл – Новый – Табличный документ) и в него поколоночно скопировать содержимое табличной части (нужные колонки). Я нашел только такой вариант.
Ольга Горшенина Profbuh8.ru Дек 21 2016 — 09:43
Ваш вопрос принят в обработку
Ещё более 100 Лайфхаков по работе в 1С:БП 8.3 и ЗУП 3.1 смотрите на нашем втором сайте — БухЭксперт8
Получить ещё Лайфхаки 1С >>
© Все права защищены, Profbuh8.ru
© ООО «ПРОФБУХ» 2011-2019 г., ОГРН 1117746700686
© Все права защищены, Profbuh8.ru
© ООО «ПРОФБУХ» 2011-2019 г., ОГРН 1117746700686
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов.
Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт
Предположим, в табличной части документа есть реквизит, который допускает наличие нескольких значений одновременно. К примеру, в учебном плане вуза есть реквизит Компетенция, привязанный к реквизиту Дисциплина. Для компетенций в этом реквизите должно храниться несколько значений из справочника Компетенции. Один из способов реализации этого механизма состоит в том, чтобы определить составной тип данных для реквизита Компетенции (Строка, СправочникСсылка. Компетенции).
В случае единственного значения в реквизите будет храниться элемент справочника Компетенции. В случае множественного значения – строка, содержащая представление списка компетенций. Для редактирования реквизита Компетенции можно использовать событие «Начало выбора», в котором открыть соответствующую форму выбора и сформировать представление списка компетенций. Кроме того, потребуется определить еще одну табличную часть Компетенции, в которой для строки с указанным ключом нужно создать строки для каждой компетенции. Далее при редактировании реквизита Компетенции нужно соответственно корректировать табличную часть Компетенции. Фактически мы вручную создаем реляционную модель данных и должны вручную выполнять операции выборки, соединения и модификации данных. Существенным минусом такого способа представления компетенций является неактуальность представления компетенций при изменении названия компетенции или удалении ее из справочника компетенций. |
||
В 1С помимо реляционной модели данных реализована реляционно-иерархическая модель данных, то есть модель, допускающая вид связи «один-ко-многим». Примером объекта, реализующего такую модель, является справочник с табличной частью. Можно создать справочник КомпетенцииДисциплин, подчиненный справочнику Дисциплины.
Для справочника КомпетенцииДисциплин нужно еще определить реквизит Специальность, так как набор компетенций определяется специальностью и дисциплиной. При открытии формы элемента справочника нужно еще делать отбор в табличной части справочника по специальности, выбранной в учебном плане. Наименование справочника КомпетенцииДисциплин должно формироваться в событии «перед записью» из списка компетенций в табличной части. Изменение представления компетенций по дисциплине можно выполнить, например, с помощью подписки на события «при изменении компетенции». При этом нужно только изменить наименование элементов справочника, у которых в табличной части имеется данная компетенция. Для этого можно использовать соответствующий критерий отбора. В первом способе привести представления компетенций к актуальному виду сложнее, так как нужно анализировать все документы, в которых содержатся измененные компетенции, а их может быть очень много. |
||
Итак, создадим справочники Дисциплины, Компетенции и КомпетенцииДисциплин, подчиненный справочнику Дисциплины. В справочнике КомпетенцииДисциплин добавим табличную часть Компетенции с единственным реквизитом Компетенция (СправочникСсылка.Компетенции). Для простоты специальность рассматривать не будем. Создадим также документ АУП с табличной частью Дисциплины. В табличной части добавим реквизиты Дисциплина и Компетенция. В связях параметров выбора для реквизита Компетенция укажем Отбор.Владелец(Дисциплины.Дисциплина). | ||
В форме элемента справочника КомпетенцииДисциплин можно определить событие «перед записью»: | ||
&НаСервере Процедура КомпетенцииПриИзмененииНаСервере() Представление = «»; Первая = Истина; Для Каждого ТекСтр Из Объект.Компетенции Цикл Если Не Первая Тогда Представление = Представление + «;» + ТекСтр.Компетенция; Иначе Представление = ТекСтр.Компетенция.Наименование; Первая = Ложь; КонецЕсли; КонецЦикла; Объект.Наименование = Представление; КонецПроцедуры |
||
&НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) КомпетенцииПриИзмененииНаСервере(); КонецПроцедуры |
||
В форме элемента справочника Компетенции определим событие «после записи на сервере» | ||
&НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ РАЗЛИЧНЫЕ | КомпетенцииДисциплинКомпетенции.Ссылка КАК Ссылка |ИЗ | Справочник.КомпетенцииДисциплин.Компетенции КАК КомпетенцииДисциплинКомпетенции |ГДЕ | КомпетенцииДисциплинКомпетенции.Компетенция = &Компетенция»; Запрос.УстановитьПараметр(«Компетенция», ТекущийОбъект.Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ВыборкаОбъект = Выборка.Ссылка.ПолучитьОбъект(); Представление = «»; Первая = Истина; Для Каждого ТекСтр Из ВыборкаОбъект.Компетенции Цикл Если Не Первая Тогда Представление = Представление + «;» + ТекСтр.Компетенция; Иначе Представление = ТекСтр.Компетенция.Наименование; Первая = Ложь; КонецЕсли; КонецЦикла; ВыборкаОбъект.Наименование = Представление; ВыборкаОбъект.Записать(); КонецЦикла; КонецПроцедуры |
||
Теперь наименование компетенций будет актуально как при изменении наименования самой компетенции, так и при изменении состава компетенций для дисциплины. А механизмы реализации стали проще и надежнее.
Если есть вопросы по материалу — обращайтесь! |
||
Сергей Семенов, |
1С пример отбора, поиска в табличной части по списку из нескольких значений
Например: документ «Пересчет товаров» в конфигурации «1С:Управление торговлей». Необходимо сделать поиск по части строки, по колонкам «наименование» и «артикул». В результатах поиска может выводиться несколько значений.
Порядок действий:
- В табличную часть добавим вспомогательный реквизит отбор:
- В форму элемента добавим поле «Поиск» и кнопку «Найти»;
- При нажатии на кнопку «Найти» запускать следующую процедуру:
&НаСервере Процедура НайтиНаСервере() СтруктураПоиска = Новый Структура; Для каждого Стр Из Объект.Товары Цикл Если Найти(Врег(Стр.Номенклатура.Наименование), Врег(_Поиск)) > 0 или Найти(Врег(Стр.Номенклатура.Артикул), Врег(_Поиск)) > 0 Тогда Стр._Отбор = Истина; КонецЕсли; КонецЦикла; СтруктураПоиска.Вставить("_Отбор", Истина); Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураПоиска); КонецПроцедуры
Если необходимо очистить поиск, то можно добавьте кнопку с запуском следующей процедуры:
&НаКлиенте Процедура ПоискОчистка() СтруктураПоиска = Новый Структура; Для каждого Стр Из Объект.Товары Цикл Стр._Отбор = Ложь; КонецЦикла; СтруктураПоиска.Вставить("_Отбор", Ложь); Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураПоиска); КонецПроцедуры
Связанные статьи
Задание типа значения для реквизита с типом СписокЗначений в управляемых формах
В управляемых формах невозможно задать тип значения для реквизита, который имеет тип СписокЗначений, хотя в обычных формах такая возможность есть. Если реквизит с типом СписокЗначений является реквизитом формы, то здесь особых сложностей нету, достаточно в обработчике события формы ПриСозданииНаСервере написать код по установке типа для значения списка:
ТипыСписка = "Строка";
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
Как видно из примера, тип значения устанавливается через свойство списка значений ТипЗначения, которое имеет тип ОписаниеТипов.
Другое дело, когда форма содержит таблицу значений, у которой имеется реквизит с типом СписокЗначений. В такой ситуации через обработчики событий формы к этому реквизиту не достучаться, поэтому нужно использовать обработчики событий элемента формы, связанного с данным реквизитом.
1. Реквизит ТЧ с типом СписокЗначений |
Для этого напишем код по установке типа значения в обработчике события элемента формы НачалоВыбора:
Процедура РеквизитыТаблицыСписокДоступныхЗначенийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТипыСписка = "Строка";
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
Элемент.Родитель.ТекущиеДанные.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
КонецПроцедуры
Что бы для типа значения задать составной тип, необходимо в конструктор объекта ОписаниеТипов передать первым параметром массив типов:
ТипыСписка = Массив;
ТипыСписка.Добавить(Тип("Строка"));
ТипыСписка.Добавить(Тип("Число"));
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
Единственный минус составного типа в списке значений — это отсутствие множественного выбора (кнопки Подбор), придется добавлять по одному значению в список. а это просто печалит.