Имя: Пароль:
1C
1С v8
Открытие формы с отбором, а далее заполненными реквизитами
,
0 Ayvengo
 
08.10.12
17:19
Вопрос к профессионалам или просто знающим людям.
Цель - открыть форму с заполненными реквизитами (какими, я определяю сам)
Ограничения - ничего не изменять в модулях форм, объектов
Последовательность действий:
1. Открываем форму списка с отбором по переданным реквизитам
2. При нажатии на кнопку Добавить открывается объект с заполненными реквизитами

Что-то никак в голову не придет как это можно организовать :(
1 DrShad
 
08.10.12
17:21
[Ограничения - ничего не изменять в модулях форм, объектов] исключающее условие в задании
2 Ayvengo
 
08.10.12
17:21
(1) как минимум 1 пункт можно выполнить.
застрял на втором
3 DrShad
 
08.10.12
17:22
что?
4 Ayvengo
 
08.10.12
17:23
(3) Можно открыть форму списка с отбором по переданным значениям реквизитов. При этом не влезая в код модулей этих форм.
5 zladenuw
 
08.10.12
17:23
ну а кто запрещает все сделать в обработке. и крутить вертеть. как тебе нужно
6 DrShad
 
08.10.12
17:24
это как?
7 Ayvengo
 
08.10.12
17:24
(5) ну как минимум неограниченно количество документов, которые могут быть добавлены в систему. Каждый документ настраивать как-то не правильно.
8 DrShad
 
08.10.12
17:25
+(6) по сабжу не сказано что форма из которой открываются списки произвольная
9 DrShad
 
08.10.12
17:25
(7) Внешняя обработка заполнения ТЧ?
10 Ayvengo
 
08.10.12
17:28
(6) СтруктураОтбора = Новый Структура("Контрагент", Контрагент);
СтруктураПараметров = Новый Структура("Отбор", СтруктураОтбора);
ОткрытьФорму("ИмяФормы", СтруктураПараметров, ЭтаФорма);

(8) не думал, что важно от куда открывается форма, а какая разница? Главное что бы были значения реквизитов и все, разве нет?
(9) а если нет ТЧ? Ну и в любом случае нужно этот обработчик прикручивать, мне просто интересно, можно ли сделать так же как и первый пункт (открытие формы списка с отбором).
11 ОбычныйЧеловек
 
08.10.12
17:30
Форма=...ОткрытьФорму()....
Форма.Отбор.ИмяОтбораУстновить(ЗначениеОтбора);
12 Ayvengo
 
08.10.12
17:30
(11) э не.. управляемые формы..забыл упомянуть
13 ОбычныйЧеловек
 
08.10.12
17:31
(12) это ты вовремя про УФ сказал :)
14 Лефмихалыч
 
08.10.12
17:31
(0) вопрос из серии: как снять носки, не снимая ботинок.
15 Ayvengo
 
08.10.12
17:32
(14) не соглашусь, возможно мы чего-то не знаем. Примером является (10) .. отбор же можно наложить, может так же можно и реквизиты заполнять.
16 Ayvengo
 
08.10.12
17:33
+(15) допустим в форму списка еще передать какие-то параметры, которые будут заполнять вновь созданный объект
17 DrShad
 
08.10.12
17:33
(10) [не думал, что важно от куда открывается форма, а какая разница? Главное что бы были значения реквизитов и все, разве нет? ]
разве нет - нужно СтандартнуюОбработку как-то отключать не?
18 Ayvengo
 
08.10.12
17:34
+(16) мне кажется, что вполне разумно было бы такое предусмотреть.
19 Ayvengo
 
08.10.12
17:34
(17) не факт.
20 DrShad
 
08.10.12
17:35
(19) что не факт?
21 Ayvengo
 
08.10.12
17:36
(20) ок, зачем ее отключать?
22 DrShad
 
08.10.12
17:36
(21) чтобы можно было форму со своими параметрами открывать
23 DrShad
 
08.10.12
17:37
сдается мне что ты что-то не договариваешь
выкладывай скрин своей формы откуда открывается форма список
24 Ayvengo
 
08.10.12
17:38
(22) ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
здесь нужно отключать стандартную обработку, что бы можно было сделать так:
ЗаполнитьЗначенияСвойств(Объект, Параметры) ,к примеру ..
25 DrShad
 
08.10.12
17:39
(24) у тебя точно не УФ?
26 Ayvengo
 
08.10.12
17:40
(23) любая форма, любой документ, открываем из какой-нибудь внешней обработки, где заполнено значение реквизита, что бы была возможность его передать.
27 Ayvengo
 
08.10.12
17:41
(25) из (11)(12) - думаю можно понять, что речь идет о УФ :)
28 whitedi
 
08.10.12
17:43
(0) Отбор

ТекФорма = ПолучитьФорму("ИмяФормы");
НовыйОтбор = ТекФорма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Субконто2");
НовыйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйОтбор.ПравоеЗначение = Материал;
ТекФорма.Открыть();

В кнопку "Добавить" можно влезть в процедуре "ПередНачаломДобавления" в таблице формы и там заполнить нужное. Из отбора реквизиты интерактивно в создаваемую форму никак не передашь.
29 Ayvengo
 
08.10.12
17:44
(28) эх, забыл я написать, что речь об Управляемых формах, простите :)
30 YF
 
08.10.12
17:45
(26) Все таки, задача из любой формы, (точнее из всех из которых нужно) открываем с отборами одну конкретную форму?
31 Ayvengo
 
08.10.12
17:47
(30) Да, это первая задача. Вторая - из этой формы списка открывать заполненный объект по значениям реквизитов из отбора.
Первая задача решается так как описано в пункте (10)
Вторая задача - пока не решается :)
32 DrShad
 
08.10.12
17:49
(31) по-умолчанию заполняются только реквизиты основного отбора, не?
33 YF
 
08.10.12
17:49
(31) можно попробовать открывать всегда одну внешнюю обработку, в ней при создании на сервере или в при открытии изменять запрос-источник данных реквизита "Список" и состав колонок отображаемого списка.

Процедуру "Добавления" соответствующим образом дописать
34 Ayvengo
 
08.10.12
17:51
(32) у меня все необходимые реквизиты заполняются, которые возможны для динамического списка.(контрагент, пометка удаления и т.д.)
(33) ну на самом деле вариантов много, просто я думаю, может быть существует какой-то параметр типа "Отбор", вот и развел тут тему эту :)
35 DrShad
 
08.10.12
17:51
(33) +1
демонический список с произвольным запросом
36 DrShad
 
08.10.12
17:52
(34) и тебе нужно чтоб при добавлении объект сразу создавался с пометкой удаления?
37 Ayvengo
 
08.10.12
17:53
(36) в принципе да, т.к. я не рассматриваю объекты с пометкой удаления. т.е. пометка удаления = ложь, так что проблемы здесь не вижу.
38 DrShad
 
08.10.12
17:55
(37) еще раз заполняются автоматом только реквизиты входящие в основной отбор, а не заданный программно
39 Ayvengo
 
08.10.12
18:01
(38) в основной отбор входят реквизиты, которые есть у объекта, который мы хотим создать? Если так, то это не проблема (мне не нужно заполнять табличную часть и по ней отбор делать).
40 Ayvengo
 
08.10.12
18:34
Нашел решение и удовлетворяет всем условиям:
Нужно у каждого реквизита поставить флаг: заполнять из данных заполнения.
41 DrShad
 
08.10.12
19:27
акуеть, решение без изменений форм
42 Ayvengo
 
11.10.12
17:40
(41) что не нравится в решении? Лучше перековырять 100500 форм что ли, а потом при первом обновлении охреневать о того, что хз что на форме менялось? Флаг для реквизита ставится безболезненно и обновление и разработка будет довольно простой. Используются методы предусмотренные платформой, по моему самый лучший вариант разработки, лучшего я не вижу. Если видите, раскройте мне глаза, пожалуйста.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший