Имя: Пароль:
1C
1С v8
заполнение формы новой группы справочника
,
0 Alt321
 
15.12.21
13:34
У меня есть такой код
&НаКлиенте
Процедура СоздатьГруппу(Команда)
    
    СозданиеГруппы = Новый Структура("Наименование");
    СозданиеГруппы.Наименование = Наименование;
    
    Если СоздатьГруппуНаСервере(СозданиеГруппы) = 0 Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Наименование не введено";
        Сообщение.Сообщить();
    Иначе
        ОткрытьФорму("Справочник.Контрагенты.ФормаГруппы",,ЭтаФорма)
    КонецЕсли
КонецПроцедуры

&НаСервере
Функция СоздатьГруппуНаСервере(СтруктураСправочника)
    
    СправочникКонтрагенты = Справочники.Контрагенты;
    НоваяГруппа = СправочникКонтрагенты.СоздатьГруппу();
    НоваяГруппа.Наименование = СтруктураСправочника.Наименование;
    
    Если ЗначениеЗаполнено(НоваяГруппа.Наименование) Тогда
    
        НоваяГруппа.Записать();
        Возврат 1;
    Иначе
        
        Возврат 0;
    
    КонецЕсли;

КонецФункции

Он программно создаёт группу. Его нужно доработать,то есть нужно открывать форму группы справочника и программно заполнять соответствующие реквизиты. А записывать эту информацию или нет, решит пользователь. Попробовал всё что знаю и у меня не получилось .
1 Kassern
 
15.12.21
13:37
(0) вы гуглили дальше по списку, который я вам отправлял?
2 Alt321
 
15.12.21
13:43
(1) да, сейчас у меня всё создаётся и записывается
Но сейчас задача заключается в том , что у меня 2 формы
Одна 1(Моя) в которую записываются значения затем по кнопке создать группу открывается 2 форма(стандартная) и в неё должны переносится значения если это нужно
3 Kassern
 
15.12.21
13:47
(0) Как вариант.
&НаКлиенте
Процедура СоздатьОтчетКомиссионера(Команда)

    Форма = ПолучитьФорму("Документ.ОтчетКомиссионера.ФормаОбъекта");
    ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
    ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
    Форма.Открыть();

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

&НаСервере
Функция ЗаполнитьДокументНаСервере(ДанныеФормы);

Док = Документы.ОтчетКомиссионера.СоздатьДокумент();
Док.Дата=ТекущаяДата();
//Заполняем остальные поля

ЗначениеВДанныеФормы(Док,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

КонецФункции
4 Alt321
 
15.12.21
13:48
(3) Спасибо , сейчас буду пробовать
5 Alt321
 
15.12.21
14:29
(3) &НаКлиенте
Процедура СоздатьГруппу(Команда)    
    
    Форма = ПолучитьФорму("Обработка.ВводКонтрагентов.Форма.Форма"); //<--------
    
    ДанныеФормы = Форма.Объект;
    
    СоздатьГруппуНаСервере(ДанныеФормы);
    
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    
    Форма.Открыть();
КонецПроцедуры

&НаСервере
Функция СоздатьГруппуНаСервере(ДанныеФормы)
    
    СправочникКонтр = Справочники.Контрагенты;
    НоваяГруппа = СправочникКонтр.СоздатьГруппу();
    НоваяГруппа.Наименование = ДанныеФормы.Наименование;
    
    ЗначениеВДанныеФормы(НоваяГруппа, ДанныеФормы);
    //ЗначениеВДанныеФормы(ДанныеФормы, НоваяГруппа);
КонецФункции

Подскажи по коду:
В переменную Форма , я должен класть форму стандартную или свою ?
Потому что когда я передаю данные на сервер у меня почему-то не отображается что там что-то есть, только пустая строка
6 Kassern
 
15.12.21
14:31
(5) "ПолучитьФорму("Обработка.ВводКонтрагентов.Форма.Форма")" - тут нужна форма нового объекта. В Вашем случае контрагента
7 Alt321
 
15.12.21
15:33
(6)
Похоже я до конца не понял
Получить значения на клиенте всё ещё не могу
у меня 2 формы: 1(моя) - Обработка.ВводКонтрагентов.Форма.Форма, 2(стандартная) - Справочник.Контрагенты.ФормаГруппы;
Мне нужно из моей формы(Там 1 поле Наименование) при нажатии на кнопку открыть форму и перенести наименование во 2 форму.
Но в данный момент когда я через дебаггер смотрю, то значения пустые "ДанныеФормы = Форма.Объект;"
Код целиком
&НаКлиенте
Процедура СоздатьГруппу(Команда)    
    
    Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаГруппы");
    
    ДанныеФормы = Форма.Объект;
    
    СоздатьГруппуНаСервере(ДанныеФормы);
    
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    
    Форма.Открыть();
КонецПроцедуры

&НаСервере
Функция СоздатьГруппуНаСервере(ДанныеФормы)
    НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
    НоваяГруппа.Наименование = ДанныеФормы.Наименование; //<---------- Если я поменяю "ДанныеФормы" на произвольную строку , то всё работает, а если хочу получить наименование с данных формы то там пустые строки
    
    ЗначениеВДанныеФормы(НоваяГруппа, ДанныеФормы);

КонецФункции
8 Kassern
 
15.12.21
15:36
(7) Структуру заполняемых полей передайте доп реквезитом:
СоздатьГруппуНаСервере(ДанныеФормы,СтруктураЗаполнения);

А для новой группы:
ЗаполнитьЗначенияСвойств(НоваяГруппа,СтруктураЗаполнения)
9 Alt321
 
15.12.21
15:38
(8)
Ок, спасибо
10 Alt321
 
15.12.21
16:27
&НаКлиенте
Процедура СоздатьГруппу(Команда)    
    СозданиеГруппы = Новый Структура("Наименование");
    СозданиеГруппы.Наименование = Наименование;
    
    Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаГруппы");
    
    ДанныеФормы = Форма.Объект;
    
    СоздатьГруппуНаСервере(ДанныеФормы, СозданиеГруппы);
    
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    
    Форма.Открыть();
КонецПроцедуры

&НаСервере
Функция СоздатьГруппуНаСервере(ДанныеФормы, СозданиеГруппы)

    НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
    НоваяГруппа.Наименование = СозданиеГруппы.Наименование;
    
    ЗаполнитьЗначенияСвойств(НоваяГруппа, СозданиеГруппы);
КонецФункции
(9)

ок функция теперь получает реквизит , но в конечном итоге почему-то не отображается во 2 форме заполнение
11 Kassern
 
15.12.21
16:35
(10) Вы строчку одну забыли...
ЗначениеВДанныеФормы(НоваяГруппа,ДанныеФормы);
12 Alt321
 
15.12.21
16:37
(11)
Я понял, Спасибо что помог