Имя: Пароль:
1C
1С v8
Взаимодействие между 2мя формами
0 Блондинка_
 
23.05.14
10:28
Доброе утро)
Давно не могу придумать ничего с этой проблемой:
Есть документ, у документа есть форма, пользователь работает с ней, заполняя строки и вот в одной колонке чтобы заполнить что-то типа анкеты, открывается еще одна форма. Там появляются вопросы и пользователь ставит ответы, при закрытии формы результат (заполнено, не заполнено (отказ), заполнение переносится) передается в 1 форму. Где хранить ответы к вопросам, да и сами вопросы, при условии что документ может в итоге не быть проведенным и записывать эти данные в регистр сведений мне нужно только после проведения документа? Причем если пользователь откроет эту форму еще раз ему должны быть показаны проставленные ответы.
Я хотела сначала сделать на форме скрытую таблицу где бы хранились все эти данные пока таблица не проведется. Но при открытии формы №2 я не могу передать значения обратно именно в открытую форму№1, могу сохранить их в ТЧ самого документа, но тогда 1ая форма ругается на то, что она уже не соответствует объекту.
Как-то так)
1 piter3
 
23.05.14
10:29
смотрите как в зуп например реализовано
2 Cube
 
23.05.14
10:31
(0) Во второй форме не редактируй ОБЪЕКТ и всё будет хорошо.
На вторую форму ложи ТЗ, котору заполняй по ТЧ документа при открытии формы. А после закрытия формы перезаполняй ТЧ документа по этой ТЗ.
3 Cube
 
23.05.14
10:34
(2) То есть, алгоритм, примерно, такой:

ТаблицаВопросов = ТЧ_Вопросы.Выгрузить();

// открываешь форму, работаешь с ТаблицаВопросов, закрываешь форму.

ТЧ_Вопросы.Загрузить(ТаблицаВопросов);
4 Рэйв
 
23.05.14
10:36
(0)Сделай реквизиты документа и не выводи их на форму 1.
Добавь еще одну форму документа и туда вот выведи эти реквизиты. В результате формы имеешь две, но хранится все в одном объекте и при открытии все будет показываться что сохранилось
5 Блондинка_
 
23.05.14
12:28
(3) А как мне эту ТЗ из формы в форму передавать?
(4) Идея кажется отличной!))) Спасибо, сейчас попробую)))
6 Cube
 
23.05.14
12:30
(5) СП:

Глобальный контекст (Global context)
ОткрытьФорму (OpenForm)
Вариант синтаксиса: По названию

Синтаксис:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>)

Параметры:
...
<Параметры> (необязательный)
Тип: Структура.
Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры.
П = Новый Структура("Ключ", Поставщик);
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П);
Форма.Открыть();
7 Crush
 
23.05.14
12:32
(5) Не передавай. Форму с вопросами сделай формой документа и на форме размести табличную часть с вопросами
8 Cube
 
23.05.14
12:32
(4) Будет то же самое, что и в (0)...
9 Cube
 
23.05.14
12:33
(7) Я так понял, форма у документа уже есть, места под вопросы там нет, поэтому открывается другая форма...
10 Crush
 
23.05.14
12:42
(9) У документа может быть неограниченное количество форм документа. А основных форм документа может быть не более одной:)
11 mzelensky
 
23.05.14
12:55
(0) Мдя....а может все-таки замуж???
12 Cube
 
23.05.14
12:55
(10) Ууу.... С тобой всё понятно... Иди, попробуй редактировать один и тот же объект в разных открытых формах, а потом пиши тут с умным видом...
13 mzelensky
 
23.05.14
12:58
(12) Зря ты так...уж не знаю как дела в УФ (не проверял), а в толстом клиенте можно редактить один объект из 2 форм.
14 Cube
 
23.05.14
13:01
(13) С фига ли? После редактирования объекта в форме 2, в форме 1 вылезет сообщение, что поздно пить баржоми...
15 Crush
 
23.05.14
13:03
(12) Только предположения:
Модифицированность объекта определяется по полю ВерсияДанных.
Если во второй форме не записывать объект в базу данных, то всё сработает.
Запись в базу производить только из основной формы
16 Crush
 
23.05.14
13:05
+(15) а сам объект будет одинаков в обоих формах
17 mzelensky
 
23.05.14
13:20
(14) Ты попробуй сперва!
Это тоже самое, что одну табличную часть отобразить на форме в двух разных табличных полях.

Тут аналогично - основнйо реквизит формы будет один и тот же объект. И все там будет работать нормально - проверено!
18 Блондинка_
 
23.05.14
13:22
Я же блондинка) У меня сейчас мозг взорвется)
По поводу второй формы того же документа:
(4) Когда я хочу записать заполненные реквизиты в форме анкеты, мне придется записывать весь документ..а если пользователь в итоге не будет его записывать?
(14)  Сейчас попробую с передачей ТЗ. Помнится, была у меня такая идея, но я почему-то проанализировала ее и отбросила, только не помню, почему))
Ааааа, по-моему я когда из формы анкеты ТЗ передавала в форму основную, то обратно (уже заполненную) я ее не могла открыть, не записав данные в документ, а записывать документ по 100 раз не хотелось.
Хотя видимо придется, потому что из 2х форм все записывается отлично, только при закрытии анкеты программа все равно предлагает сохранить документ, и этот диалог будет выскакивать всякий раз когда открывается новая анкета.
19 Crush
 
23.05.14
13:25
(18) Не надо их записывать во второй форме. После её закрытия они останутся в объекте первой формы. А там уж если пользователь запишет, то они сохранятся
20 Cube
 
23.05.14
13:25
(17) Да запарило одну и ту же тему жевать...
v8: v8: УФ Как открыть другую форму этого же объекта?
21 Crush
 
23.05.14
13:27
А при закрытии второй формы система смотрит на модифицированность и предлагает сохранить. Этот вопрос нужно отключить:
или сбросить модифицированность
или убрать галку с табПоля Изменяет данные
или закрывать программно
22 Блондинка_
 
23.05.14
13:29
Вообще идея со 2 формой хорошая, если без записи документа все равно не обойтись и с передаваемой из формы в форму ТЗ и со 2ой формой. Но как избавиться от постоянного предложения записать документ когда закрываю вторую форму?
(21) Программно и закрываю, причем для этого у меня на 2 форме свои кнопки, а диалог все равно выскакивает
23 Блондинка_
 
23.05.14
13:30
(21)  А если я отключу "Изменяет Данные", будут ли тогда данные сохраняться до записи основной формы?
24 Crush
 
23.05.14
13:31
Да кстати, а приложение какое обычное или управляемое. В управляемом я ничего не знаю если что:)
25 Crush
 
23.05.14
13:31
(23) А фиг знает. Нужно проверить:)
26 Crush
 
23.05.14
13:35
Попробуй так
    Модифицированность    = Ложь;
    Закрыть();
27 Блондинка_
 
23.05.14
14:42
(26) Уже сделала именно так!)))) Похоже работает!!!!)))) Урааа))) Спасибо преоргромное!!!
Всем, всем, всем СПАСИБО!!!)))
28 Cube
 
23.05.14
16:21
(27) Да ну, нафиг? О_о
Блин, в понедельник проверю...
29 Cube
 
26.05.14
10:14
Проверил: действительно, в обычных формах один и тот же объект можно редактировать в двух формах одновременно...

Был не прав. Пепельницу мне на голову))
30 Блондинка_
 
26.05.14
10:28
(29) Уметь признать свою ошибку много стоит))
Кстати я же ведь тоже сначала редактировала из 2х форм, но выдавало ошибку, а все потому что одна форма у меня вообще была не формой документа)
31 Cube
 
26.05.14
10:33
(30) Не, ну а чо выё... (зачеркнуто) выпендриваться-то?)))
Правда - она ведь только одна))
32 Блондинка_
 
26.05.14
10:36
(31) Ага, одна, но у каждого своя))
Ошибка? Это не ошибка, это системная функция.