Имя: Пароль:
1C
1С v8
Настройка компоновки данных на форме элемента документа
0 nasik90
 
26.03.15
10:55
Как в модуле элемента формы перевести тип "Поле компоновки данных" в вид Объект.Ревизит1?
Т.е. у меня есть поле компоновки данных = "Договор.ПредметДоговора.ВидЛимита", его нужно перевести в вид Объект.Договор.ПредметДоговора.ВидЛимита. Как это сделать?
Нужно это для обработки настроек компоновки данных на форме элемента.
Форма управляемая, платформа 8.3.
1 фобка
 
26.03.15
10:57
Реквизитформывзначение()?
2 Cube
 
26.03.15
11:00
(1) Реквизит реквизита не надо приводить, он и так имеет нужны тип.

(0) Не понятен вопрос. Скрины есть?
3 fisher
 
26.03.15
11:01
(0) Ничего не надо приводить. Ссылка уже есть. Просто записываешь её в значение поля компоновки.
4 fisher
 
26.03.15
11:03
Вернее, не так. "ПолеКомпоновкиДанных" - это медаданные, а не данные. Оно не может хранить значение. Где-то ты мутишь.
Точнее сформулируй задачу.
5 fisher
 
26.03.15
11:08
Вот есть у тебя в реквизитах формы КомпоновщикНастроек (правильно инициализированный). Какие именно настройки ты хочешь задать из данных формы? Отбор, параметр? Что?
6 nasik90
 
26.03.15
11:16
7 nasik90
 
26.03.15
11:22
Возможно ли это реализовать, как думаете?
8 fisher
 
26.03.15
11:24
(6) Ты хочешь странного. Приведенный код самодостаточен и логичен. А ты предлагаешь какой-то бред с непонятной целью.
9 fisher
 
26.03.15
11:31
Логика заложенная сейчас - если значение из документа совпадает с установленным отбором, то устанавливается соответствующий флаг. А чего хочешь ты?
10 nasik90
 
26.03.15
11:35
(8)  Я хотел бы таким образом многие реквизиты объекта на форме документа обработать. В частности те, которые введет пользователь в настройках компоновки данных. Заранее предугадать, что он внесет в настройках, не могу.

Задача заключается в следующем - пользователь в настройках компоновки данных задает отбор для тех или иных полей объекта (происходит это на отдельной форме для настроек). Настройки компоновщика хранятся в базе в типе "Хранилища значений". При открытии формы документа объекта происходит считывание настроек компоновщика и в зависимости от отборов, которые он установил, в табличную часть этого документа попадают те или иные данные, которые он так же указывает на форме настроек.
11 Cube
 
26.03.15
11:40
(10) Я тебя понял. Ты пытаешься использовать отбор компоновки для своих целей без самой СКД. Но зачем тебе это? Сделай СКД с запросом, суй туда свой отбор, выполняй её программно и смотри, если на выходе есть строки, то
УсловияВыполнены = Истина;
12 nasik90
 
26.03.15
11:49
(11) Хорошая идея, спасибо! Жаль, что только не получится использовать эту идею при изменении какого-то реквизита на форме, т.к. данные еще не сохранены и в запрос они не попадут.
А использую отбор компоновки - потому что красиво и не нужно самому писать что-то наподобие. И да, я программно создаю для этого объект СКД.
13 Cube
 
26.03.15
11:59
(12) Да это идея 1С, так реализованы внешние печатные формы в любой типовой (правда там на построителе отчетов, но я и на СКД то же самое делал).

Пусть запишут перед заполнением.
14 fisher
 
26.03.15
12:00
(10) Ничего не понятно. Если отборы пользователь устанавливает не в документе и по ним нужно всего лишь выполнить его начальное заполнение, то и вычитывать данные отборов нужно не в документе. А начальное заполнение документа выполнять штатно без всяких компоновок и не извращаться.
Но каким образом к начальному заполнению документа относится "Объект.Договор.ПредметДоговора.ВидЛимита"??
15 nasik90
 
26.03.15
12:19
(14) Заполнение табличной части документа будет производиться не только в зависимости от выбранного договора(и его реквизитов), но и от других реквизитов документов. И поэтому решили сделать что-то универсальное, чтобы ответственный человек сам мог в режиме Предприятия эти условия заполнения задавать.
К тому же таких документов несколько и условия могут меняться ежедневно - поддерживать условия на уровне конфигурации, постоянно вносить изменения в нее - геморно, хотя это хлеб франчей, наверное)
16 Cube
 
26.03.15
12:21
(15) Так почему ты тогда говоришь, что данные на записаны? Все реквизиты документа записаны в БД по-любому. Вот и суй их в запрос и получай там результат...
17 nasik90
 
26.03.15
12:26
(16)
Как записаны? Пользователь выбрал договор на форме документа - в базе этой информации еще нет, нужно записать.
18 DrShad
 
26.03.15
12:47
(17) не пихай в запрос ссылку - используй внешний набор данных - например ТЗ, в которую собери с формы все что есть
19 Cube
 
26.03.15
12:49
(17) Так ты не пихай в запрос ссылку на документ, ты пихай в запрос реквизиты документа...
20 nasik90
 
26.03.15
12:57
(18) (19) Понял, спасибо! Буду пробовать.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший