Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 авг 2021, 15:32

Запись данных из общей формы

Автор Алексей_1985_06, 21 июн 2021, 22:13

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Всем привет! Прошу помощи в следующем:
1. В РС "АдресРегистрацииСотрудника" (ресурс - АдресРегистрации, измерение - Сотрудник) при кнопки выбора в реквизите АдресРегистрации - открывается общая форма "Адреса" в которой заполняются: субъект, район, улица и т.д при нажатии на кнопку "ЗаписатьАдрес" - необходимо закрыть форму и записать полный адрес в реквизит "АдресРегистрации" РС (см. рис во вложении). Подскажите пожалуйста как правильно это сделать?
Для кнопки сделал так:
&НаКлиенте
Процедура ЗаписатьАдрес(Команда)

ПолныйАдрес = МодульСервера.ПолныйАдрес(СубъектРФ,Район,ГородНаселенныйПункт,Улица,Дом,Корпус,Строение,Квартира); // формирование полного адреса

ОткрытьФорму("РегистрСведений.АдресРегистрацииСотрудника.Форма.ФормаЗаписи");

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

LexaK

что зачем делаете - не понятно
по кнопке Записать
надо создать или набор записей регистра или менеджер записи
заполнить его данными (Сотрудник, полный адрес) и записать!

зачем вы какие-то формы открываете?
ответ Понравился? (в смысле пригодился?)

Алексей_1985_06

Цитата: LexaK от 22 июн 2021, 10:33что зачем делаете - не понятно
по кнопке Записать
надо создать или набор записей регистра или менеджер записи
заполнить его данными (Сотрудник, полный адрес) и записать!

зачем вы какие-то формы открываете?

LexaK добрый день! Хотелось чтобы адрес каждого был по "структуре" одинаков, поэтому при заполнении адреса открывается форма при заполнении реквизитов которой (город, район, улица и т.д) формируется полный адрес который и записывается в РС. Так делать неправильно?

LexaK

Записывать данные в РС правильно!!!

не понятно зачем при записи надо открывать форму? (что опять с логикой)
вы на форме размещаете кнопку, там все данные уже есть (или выполняете проверку заполнены все данные)

выстроите действия в логическом порядке
1.что-то открыли для изменения (уже какая-то форма элемента)
2.ввели новые данные (вот здесь какие-то новые формы могут быть)
3.проверили эти данные
4.записали данные (здесь уже ни каких форм по вводу данных открывать не надо)

разбейте все на простые понятные операции, не надо разные по логике действия валить в одну кучу!
 
ответ Понравился? (в смысле пригодился?)

Алексей_1985_06

Цитата: LexaK от 22 июн 2021, 11:17Записывать данные в РС правильно!!!

не понятно зачем при записи надо открывать форму? (что опять с логикой)
вы на форме размещаете кнопку, там все данные уже есть (или выполняете проверку заполнены все данные)

выстроите действия в логическом порядке
1.что-то открыли для изменения (уже какая-то форма элемента)
2.ввели новые данные (вот здесь какие-то новые формы могут быть)
3.проверили эти данные
4.записали данные (здесь уже ни каких форм по вводу данных открывать не надо)

разбейте все на простые понятные операции, не надо разные по логике действия валить в одну кучу!
 

LexaK извините сто достаю Вас своими вопросами, вот на шаге 2 и возникает трудность (ввели новые данные (вот здесь какие-то новые формы могут быть)).
Вот открыли форму элемента справочника "Сотрудники" начали вводить новый адрес - открылась форма в которой выбрали город, улицу и т.д. нажали на этой форме кнопку "ЗаписатьАдрес" как их записать в РС - понятно, вот как после нажатия кнопки эти данные отобразить в реквизите "ПолныйАдрес" элемента справочника?

ef0din

А реквизит "ПолныйАдрес" какой тип значения имеет?

ef0din

Кажется понял. Адрес является элементом справочника, ссылка которого является ресурсом РС, Верно? В Форме записи РС  ввод нового элемента справочника адрес осуществляется с открытием формы элемента справочника адреса. Ну так Вы открываете элемент справочника новый через открыть форму, вводите данные, записываете, а при закрытии возвращаете ссылку в оповещение для "Открыть форму", не? Или я что-то не так понял?


ОткрытьФорму (OpenForm)
Вариант синтаксиса: По имени
Синтаксис:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)


Вот Вам нужно ОписаниеОповещенияОЗакрытии добавить, возвращать туда ссыльку и присваивать ее, если она не пустая(если просо закрыли форму без записи нового элемента справочника "Адрес").

Алексей_1985_06

Цитата: ef0din от 22 июн 2021, 17:56Кажется понял. Адрес является элементом справочника, ссылка которого является ресурсом РС, Верно? В Форме записи РС  ввод нового элемента справочника адрес осуществляется с открытием формы элемента справочника адреса. Ну так Вы открываете элемент справочника новый через открыть форму, вводите данные, записываете, а при закрытии возвращаете ссылку в оповещение для "Открыть форму", не? Или я что-то не так понял?


ОткрытьФорму (OpenForm)
Вариант синтаксиса: По имени
Синтаксис:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)


Вот Вам нужно ОписаниеОповещенияОЗакрытии добавить, возвращать туда ссыльку и присваивать ее, если она не пустая(если просо закрыли форму без записи нового элемента справочника "Адрес").

Во, блин не думал что так сложно все получиться  :dfbbdrfb:
1. У меня на форме элемента справочника "Сотрудники" - есть реквизит формы "АдресРегистрации" - который при открытии формы должен заполняться данными из РС.
2. Необходимо реализовать возможность, что при нажатии на поле реквизита "АдресРегистрации" (для записи или редактирования данных) из формы элемента - открывалась форма записи РС, если сотрудник уже записан в БД - то форма РС данного сотрудника, в противном случае форма записи нового.

В данном случае открывается пустая форма РС:
&НаКлиенте
Процедура АдресРегистрацииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", Объект.Ссылка);


ОткрытьФорму("РегистрСведений.АдресРегистрацииСотрудника.ФормаЗаписи",ПараметрыФормы);
КонецПроцедуры

Постарался на рисунке показать (во вложении).... Запутался совсем......

LexaK

ЦитироватьВо, блин не думал что так сложно все получиться 
Все просто как дважды - два! (при условии конечно, если вы знаете таблицу умножения)

даже в вашем случае, когда заводите нового пользователя, перед тем как заполнять и записывать его адрес,
просто сначала сохраните/запишите пользователя (у вас тут же появится ссылка, я уже не говорю по процедуре назначить ссылку),
затем продолжайте вводить/сохранять адрес.

(вообще все не так делается, подсмотрите в любой типовой)   
ответ Понравился? (в смысле пригодился?)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск