Имя: Пароль:
1C
 
Произвольная форма 1с 8.3
,
0 Eeelena
 
05.11.14
09:13
Такая ситуация, у документа есть произвольная форма, которая открывается при нажатии на поле в форме списка, в этой форме заполняется реквизит, и он устанавливается у документа, но при повторном открытии этой произвольной формы значение не сохраняется? подскажите, пожалуйста как исправить ?
1 butterbean
 
05.11.14
09:15
не нужно делать произвольные формы у объектов
2 kosts
 
05.11.14
09:29
(0) Не открывать форму повторно, а открывать как первый раз.
(1) Эт почему?
3 Eeelena
 
05.11.14
09:32
(2) но при открытии все равно не сохраняется значение
4 Адинэснег
 
05.11.14
09:32
не удивлюсь что там даже сохранение значений на форме не включено :-D
5 butterbean
 
05.11.14
09:34
(2) форма, в которой меняются реквизиты объекта, это уже не произвольная форма, а форма этого самого объекта... и зачем люди себе жизнь усложняют
6 Адинэснег
 
05.11.14
09:34
а фу ты, ваще неведомую **ю делают в (0)
код в студию кароче
7 Eeelena
 
05.11.14
09:40
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    
    // Если поле, по которому был произведен двойной клик, является полем наличие акта сверки, то должна произойти специальная обработка, состоящая в открытии формы редактирования реквизита
    ИмяПоля=Поле.Имя;
    Если ИмяПоля="ПлюсАльянсНаличиеАктаСверки" Тогда
        СтандартнаяОбработка=Ложь;
        Документ=ВыбраннаяСтрока;

    ФормаРедактированияРеквизита=ПолучитьФорму("Документ.СверкаВзаиморасчетов.Форма.ПлюсАльянсФормаРедактированияРеквезита");
    
    
    Значение=ФормаРедактированияРеквизита.ОткрытьМодально();
        
            Если значение<>Неопределено Тогда
    Для Каждого ЭлементСтруктуры Из Значение Цикл
        
        УстановитьЗначение(ЭлементСтруктуры.Значение,Документ);
    

        Элементы.Список.Обновить();
    КонецЦикла;
    
КонецЕсли;

КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура УстановитьЗначение(Значение,Док) Экспорт
Документ=Док.ПолучитьОбъект();
Сообщить(Документ);    
Документ.ПлюсАльянсНаличиеАктаСверки=Значение;
Документ.Записать();

КонецПроцедуры;

Это в фрме списка документа
8 Eeelena
 
05.11.14
09:41
в произвольной форме редактирования реквизита

&НаКлиенте
Процедура Записать(Команда)
    СписокПараметров = Новый Структура("Параметр1",НаличиеАктаСверки);
  
    Закрыть(СписокПараметров);
КонецПроцедуры
9 butterbean
 
05.11.14
09:43
(7) ппц... сделай обычную форму документа с нужными реквизитами
10 Eeelena
 
05.11.14
09:46
(9) обычную это какую? у документа уже есть основная форма,нужно чтоб при нажатии на поле формы списка открывалась форма редактирования этого реквизита и значение сохранялось
11 butterbean
 
05.11.14
09:47
(10) обычную — это не произвольную, и она не обязательно должна быть основной, у документа (справочника и т.п.) может быть несколько разных форм, и не обязательно "произвольных"
12 kosts
 
05.11.14
09:52
(7) Не надо из формы возвращать значение. Надо в этой форме при нажатии кнопки ОК выполнять запись документа.
13 Eeelena
 
05.11.14
09:55
(12) а можно поподробнее
14 kosts
 
05.11.14
09:58
(13) Куда уже подробнее.
В форму передали ссылку.
Ввели значение.
Нажали ОК.
В процедуре ОК произошла запись в документ.
Закрыли форму.
Всё.
15 Eeelena
 
05.11.14
10:15
(14) как передать ссылку в форму?
16 kosts
 
05.11.14
10:23
17 Eeelena
 
05.11.14
10:26
(16) пытаюсь через параметры, но у меня не получается
18 ВРедная
 
05.11.14
10:38
(17) Потому что пытаетесь гланды удалить анально.
Все это - передача параметров, запись объекта, делается автоматически, если форма будет не произвольной, а формой объекта, пусть и не основной.
19 Eeelena
 
05.11.14
10:51
(18)я сделала как форму объекта, объект.ссылка пустое значение, почему тогда раз автоматически?
20 butterbean
 
05.11.14
10:53
(19) ПолучитьФорму("Документ.СверкаВзаиморасчетов.Форма.ТвояФорма",Новый Структура("Ключ",СсылкаНаТвойДокумент))
21 Eeelena
 
05.11.14
11:34
всем спасибо за советы, разобралась)