Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/126: Рейтинг темы: голосов - 126, средняя оценка - 4.60
Зверушь
454 / 362 / 94
Регистрация: 01.05.2010
Сообщений: 1,729
1

Автозаполнение полей формы при открытии

27.01.2012, 18:18. Просмотров 26123. Ответов 24
Метки нет (Все метки)

Здравствуйте.
Учусь программировать в 1С. Неполучаетея сделать некоторые вещи, просьба помочь.

Суть такова: имеется документ с формой и справочником. Пусть они так и называются:
1. Документ;
2. ФормаДокумента;
3. Справочник.
На форме документа есть текстовое поле с названием "ТекстовоеПоле", тип значения которого сослан на справочник.
При создании нового документа в это поле можно занести позиции из справочника (появляется окно выбора).
Мне нужно вот что: при создании нового документа в это поле автоматически должна заносится позиция из справочника. Какая именно - должно описываться в коде.
Как такое реализовать?
Заранее спасибо за помощь!))
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2012, 18:18
Ответы с готовыми решениями:

Автозаполнение полей при выборе значения в другом поля в 1С 8.2 Управляемое приложение
Есть документ ЗаказКлиента, при его заполнении в режиме отладки вбиваются данные о клиенте, товарах...

Запонение формы при открытии
День добрый вопрос начинающего стоит задача - при открытии формы заполнять поля заранее...

Отбор при открытии формы выбора
ЗначениеОтбора = Новый Структура("Склад", Объект.Склад); П = Новый Структура("Отбор",...

Ошибка при открытии формы документа
Добрый день! При попытке открытия формы документа выдается сообщение "Плохой путь...

Автозаполнение полей ввода
1с 8.2 Подскажите как поступить. Есть Форма с полями ФИО и Адресс. Эти данные хранятся в...

24
kipper22
4 / 4 / 0
Регистрация: 16.03.2011
Сообщений: 200
27.01.2012, 23:28 2
Цитата Сообщение от Зверушь Посмотреть сообщение
Здравствуйте.
Учусь программировать в 1С. Неполучаетея сделать некоторые вещи, просьба помочь.

Суть такова: имеется документ с формой и справочником. Пусть они так и называются:
1. Документ;
2. ФормаДокумента;
3. Справочник.
На форме документа есть текстовое поле с названием "ТекстовоеПоле", тип значения которого сослан на справочник.
При создании нового документа в это поле можно занести позиции из справочника (появляется окно выбора).
Мне нужно вот что: при создании нового документа в это поле автоматически должна заносится позиция из справочника. Какая именно - должно описываться в коде.
Как такое реализовать?
Заранее спасибо за помощь!))
Слушай а не проще ли с начала при создании реквизита задать ему свойсво автоматическое значение заполнения, и не нужна ничего кодировать?
0
Зверушь
454 / 362 / 94
Регистрация: 01.05.2010
Сообщений: 1,729
31.01.2012, 14:18  [ТС] 3
Цитата Сообщение от kipper22 Посмотреть сообщение
Слушай а не проще ли с начала при создании реквизита задать ему свойсво автоматическое значение заполнения, и не нужна ничего кодировать?
Может и проще...) А как такое сделать?))
0
kipper22
4 / 4 / 0
Регистрация: 16.03.2011
Сообщений: 200
31.01.2012, 15:31 4
Зверушь, при создании реквизита задать ему свойсво автоматическое значение заполнения, в палитре свойств
0
Зверушь
454 / 362 / 94
Регистрация: 01.05.2010
Сообщений: 1,729
31.01.2012, 18:02  [ТС] 5
Вроде ставлю это свойство... но всё по прежнему. Вот скрин.
Я не совсем понимаю что значит предопределенные данные...
0
Миниатюры
Автозаполнение полей формы при открытии  
kipper22
4 / 4 / 0
Регистрация: 16.03.2011
Сообщений: 200
31.01.2012, 19:47 6
Зверушь, Ну палитру свойств то вижу, а где чем заполнять то (значение заполнение какое то должно быть) пока заполнять из твоей палитры я не вижу чем он должен. (А сами предопределенные элементы на последней вкладке ПРОЧИЕ создаются)

Скинь .cf, и напиши что куда должно заполнять, и какой реквизит должен быть в автозаполнение

kipper22@bk.ru
2
Зверушь
454 / 362 / 94
Регистрация: 01.05.2010
Сообщений: 1,729
01.02.2012, 16:31  [ТС] 7
kipper22, огромное спасибо, что помогаете!
На указаный ящик отправил конфу и описание.

Что мне нужно: Возьмем документ "Квартплата". Там есть реквизит "Контрагент". При открытии формы мне нужно, что бы в это поле ставился один из контрагентов, занесенных в справочник "Контрагенты". То есть должно заноситя поле Наименование справочника. Со временем контрагент может измениться, поэтом я хотел в коде указать какого контрагента заносить, и если он со временем изменится, то просто отредактировать код.

Остальные реквизиты и документы я сделаю по аналогии.

P.S. Справочник "Контрагенты" предназначен для хранения инфы о всех контрагентах. Но в нашем случае (документе "Квартплата") расчет идет по одному контрагенту, и я хочу, чтобы можно было заносить его на форму автоматически, а не каждый раз выбирать со справочника.

P.S.S. Огромное спасибо за помощ.
0
Зверушь
454 / 362 / 94
Регистрация: 01.05.2010
Сообщений: 1,729
19.02.2012, 01:59  [ТС] 8
В общем ответа я так и не дождался, но проблему решил. спасибо преподавателю на курсах
Проблему можно решить с помощью констант.

Создаем константу "Константа1" и её тип ссылаем на Справочник". Всё, пользователь сможет заносить любую строку справочника в это константу когда пожелает. Теперь нам нужно, что бы значение константы попадало на форму документа при открытии. Пишем такой код:
1C
1
2
3
4
5
Процедура ПриОткрытии()
    Если ЭтоНовый() Тогда
        ЭлементыФормы.ТекстовоеПоле=Константы.Константа1.Получить();
    КонецЕсли;
КонецПроцедуры
Вот и всё
0
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
19.02.2012, 03:31 9
мой низкий поклон преподу. Самый безграмотный выход. Видимо препод твой не слышал про регистр сведений. Потому как в реале может возникнуть такая ситуация, когда твой справочник контрагентов опухнет до пары тысяч и каждому из них в определенный документ необходимо проставлять определенную позицию номенклатуры.
0
Dethmontt
Модератор
Эксперт 1С
2659 / 2446 / 421
Регистрация: 10.03.2011
Сообщений: 8,756
Записей в блоге: 1
Завершенные тесты: 1
19.02.2012, 12:01 10
Препод наверное так ответил чтоб отмазаться)))
0
wade25
145 / 145 / 3
Регистрация: 25.03.2011
Сообщений: 512
19.02.2012, 12:32 11
В типовых смотри настройки пользователя. Вкладка заполнение документов. Там реализован этот механизм.
0
Ayvengo
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 13
08.10.2012, 17:02 12
1C
1
2
3
4
5
Процедура ПриОткрытии()
    Если ЭтоНовый() Тогда
        ЭлементыФормы.ТекстовоеПоле=Константы.Константа1.Получить();
    КонецЕсли;
КонецПроцедуры
Спасибо, смешно. Такой метод не будет работать в 8.2 (тонкий клиент, веб-клиент), только обычное приложение.
Такой метод слишком узок в применении, поэтому жизнь его отвергнет (кроме как валюта регламентированного учета и подобные).

Преподаватель Вас научил лишь тому, что можно подписаться на обработчик "ПриОткрытии" и получить значения констант. Причем тоже не очень оптимально, т.к. при частом открывании будут вылетать различные блокировки (если очень много обращений к константе). Можно использовать параметры сеанса, как вариант, и устанавливать в них значение константы при запуске системы или хэшировать или еще что-нибудь, только не постоянное обращение к базе данных.

Начальный опыт, тоже опыт! А мне было бы интересно как открыть управляемую форму с помощью
"ОткрытьФормуМодально("ИмяФормы", Параметры, ЭтаФорма); при этом в самой открываемой форме мы ничего не хотим изменять (никаких изменений в модуле). В параметрах должно быть что-то, что будет заполнять нужные реквизиты объекта. А для более сложного варианта, изначально открытие списка с отбором по значениям реквизитов, а при создании нового объекта заполнение их нужными. Опять же, ни в какие модули этого документа мы не должны залезать.
0
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
08.10.2012, 17:58 13
Цитата Сообщение от Ayvengo Посмотреть сообщение
"ОткрытьФормуМодально("ИмяФормы", Параметры, ЭтаФорма); при этом в самой открываемой форме мы ничего не хотим изменять
ПередОткрытием() наломать дров, а Отказ поднять в Истина

Добавлено через 1 минуту
Или ПриОткрытии(), короче, где система Отказ в качестве параметра предлагает
0
Ayvengo
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 13
08.10.2012, 18:02 14
Цитата Сообщение от duk337 Посмотреть сообщение
ПередОткрытием() наломать дров, а Отказ поднять в Истина

Добавлено через 1 минуту
Или ПриОткрытии(), короче, где система Отказ в качестве параметра предлагает
Условие - ничего не меняем в модулях форм/объектов. Делаем универсальный механизм.
0
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
08.10.2012, 18:08 15
Цитата Сообщение от Ayvengo Посмотреть сообщение
Спасибо, смешно. Такой метод не будет работать в 8.2 (тонкий клиент, веб-клиент), только обычное приложение.
Что же это не будет-то? Что синтаксис другой - так это как бы штатно понятно.
1C
1
2
3
4
5
6
7
8
9
10
&НаКлиенте
Процедура ПриОткрытии()
    Если ЭтоНовый() Тогда
        Элементы.ТекстовоеПоле=СерверАСерверЧукчаКонстантуХочет("Константа1");
    КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СерверАСерверЧукчаКонстантуХочет(ф)
Возврат Константы[ф].Получить();
КонецФункции
0
Ayvengo
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 13
08.10.2012, 18:09 16
Перефразирую условие задачи:
Цель - открыть управляемую форму с заполненными реквизитами (какими, я определяю сам)
Ограничения - ничего не изменять в модулях управляемых форм, объектов
Последовательность действий:
1. Открываем управляемую форму списка с отбором по переданным реквизитам
2. При нажатии на кнопку Добавить открывается управляемая форма объекта с заполненными реквизитами
0
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
08.10.2012, 18:11 17
Цитата Сообщение от Ayvengo Посмотреть сообщение
Условие - ничего не меняем в модулях форм/объектов.
А кто Вас заставляет? Откройте штатно внешнюю обработку, а оттуда модальный процесс.
0
Ayvengo
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 13
08.10.2012, 18:12 18
Цитата Сообщение от duk337 Посмотреть сообщение
Если ЭтоНовый() Тогда
* * * * Элементы.ТекстовоеПоле=СерверАСерверЧукчаКонстантуХочет("Константа1");
* * КонецЕсли;
не будет, будет если сделаем так:
Если Объект.Ссылка.Пустая() Тогда
ТекстовоеПоле = СерверАСерверЧукчаКонстантуХочет("Константа1");
КонецЕсли;

или при создании на сервере, лучший вариант

Добавлено через 31 секунду
Цитата Сообщение от duk337 Посмотреть сообщение
А кто Вас заставляет? Откройте штатно внешнюю обработку, а оттуда модальный процесс.
Можно подробнее?
0
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
08.10.2012, 18:17 19
Цитата Сообщение от Ayvengo Посмотреть сообщение
Цель - открыть управляемую форму с заполненными реквизитами (какими, я определяю сам)
По-моему, это не вопрос. Создайте да заполните. Или форма сама себя заполнит и настроит. Непонятно, где сложности. Тривиальное стандартнейшее решение. В какую форму ни ткни - везде есть пример. Не трогать конфу - это тоже довольно наезжено. Я бы посоветовал не шугаться и создать свои формы прямо в объекте. При обновлении они никуда не денутся. Ну а стрёмно - так пишите внешние.
0
Ayvengo
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 13
08.10.2012, 18:25 20
Цитата Сообщение от duk337 Посмотреть сообщение
Или форма сама себя заполнит и настроит
в принципе да, ищу именно такой способ. По крайне мере с отбором в динамическом списке - задача решаема. Ищу решение второй части.
0
08.10.2012, 18:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2012, 18:25

При Открытии Формы Курсор Становится Не На Первый Элемент
Здравствуйте, подскажите, пжлста: при открытии формы курсор становится не на то поле, которое...

V7: Таблица значений не соответствует размерас формы при открытии
Здравствуйте. 1с7.7 Разрабатываю форму документа. Табличная часть документа не совпадает с...

Установка параметров динамического списка при открытии формы документа
Здравствуйте. В собственной конфигурации 1с 8.3 сделал документ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru