Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Зміна значення елемента форми
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
mister-x
На разі 1С 8.2 на вивченні, тому цікавить наступне - що правильніше використовувати для зміни значення у формі:

- реквізит форми;

- елемент форми?

Думаю так: якщо реквізит форми розташований на формі - тоді

Элементы.ИдентификаторЭлементаФормы =...


якщо, передавати значення в іншу процедуру/функцію - то:

Функция(Объект.ИдентификаторРеквизитаФормы)
або
Функция(ИдентификаторРеквизитаФормы)


Якщо елемент форми розташований тільки на формі (серед реквізиту форми його немає), то його значення в базу не зберігається?

Чи правильно я думаю?
logist
Цитата(mister-x @ 10.02.11, 15:20) необходимо зарегистрироваться для просмотра ссылки
Якщо елемент форми розташований тільки на формі (серед реквізиту форми його немає), то його значення в базу не зберігається?

А как это элемент содержащий значение и размещенный на форме может отсутствовать в реквизитах формы? Такого не бывает... Или Вы путаете реквизиты формы и реквизиты документа... На форме могут быть только реквизиты присутствующие в реквизитах ФОРМЫ.
Ну и разумеется значения реквизитов формы автоматически не сохраняются после закрытия формы.
mister-x
Тобто Ви хочете скажете, що будь-який елемент на формі (крім група, кнопка та інн. службових) має мати зв'язок із реквізитом форми?

Реквізити документа і так доступні на формі через "Объект".

Цитата
на формі через "Объект".
- реквізит форми
logist
Цитата(mister-x @ 10.02.11, 16:10) необходимо зарегистрироваться для просмотра ссылки
Тобто Ви хочете скажете, що будь-який елемент на формі (крім група, кнопка та інн. службових) має мати зв'язок із реквізитом форми?

Если я правильно понял начальный вопрос, то - да. Т.т не будь який, а ті що містять значення.
pablo
Цитата
Ну и разумеется значения реквизитов формы автоматически не сохраняются после закрытия формы.

Вообще-то для реквизитов формы есть булевское свойство "Сохраняемые данные", при установке которого, значение данного реквизита сохраняется в базе, но, вероятно, сохраненное значение будет одинаковых для всех таких форм.
disfinder
"ну ви блін дайоте"...

ви як програміст маєте знати, що є дані а є їх відображення.
реквізити - хоч документа, хоч обработки, хоч форми - це дані.
елементи форми - це відображення даних. (ну крім елементів оздоблення).

ви міняєте дані (реквізит) - система міняє також і їх відображення. передавати у функцію слід дані (реквізит1), а не їх відображення (ЕлементиФорми.Реквізит1).
mister-x
Цитата(disfinder @ 27.02.11, 21:51) необходимо зарегистрироваться для просмотра ссылки
"ну ви блін дайоте"...

ви як програміст маєте знати, що є дані а є їх відображення.
реквізити - хоч документа, хоч обработки, хоч форми - це дані.
елементи форми - це відображення даних. (ну крім елементів оздоблення).

ви міняєте дані (реквізит) - система міняє також і їх відображення. передавати у функцію слід дані (реквізит1), а не їх відображення (ЕлементиФорми.Реквізит1).

на жаль, в 7.7 це не мало значення
Vofka
Цитата
на жаль, в 7.7 це не мало значення

Как это "не мало"? Имело значение, т.к. тоже там есть элементы формы и реквизиты документа. Как вам писали выше - это разные вещи.
mister-x
У 7.7 цей механізм простіше організований, ось якраз тому є запитання - при зміні номенклатури у табл. част. документу:
СтрокаТЧ = Элементы.Товары.ТекущиеДанные;
    СтрокаТЧ.ЕдиницаИзмерения = ПолучениеОсновнойЕдиницыИзмерения(СтрокаТЧ.Номенклатура);    
    СтрокаТЧ.Цена = ПолучитьПоследнее(СтрокаТЧ.Номенклатура, Объект.Дата,Объект.Контрагент);

а чому не можна:
СтрокаТЧ = Объект.Товары.ТекущиеДанные;
    СтрокаТЧ.ЕдиницаИзмерения = ПолучениеОсновнойЕдиницыИзмерения(СтрокаТЧ.Номенклатура);    
    СтрокаТЧ.Цена = ПолучитьПоследнее(СтрокаТЧ.Номенклатура, Объект.Дата,Объект.Контрагент);

ось, що на це мені відповів викладач:

Цитата
С табличной частью немного по другому.
> СтрокаТЧ = Элементы.Товары.ТекущиеДанные; - коллекция значений (таблица)
В функции пересчета суммы Вы обращаетесь с новым данным? Нет! Все есть в форме. Поэтому нет необходимости обновлять "Объект" - основной
реквизит формы. И внутри этой коллекции значений происходит изменение данных, которая связана с табл. частью формы: Элементы.Товары


але ж реквізит Цена, то зберігається у об'єкті на сервері у його табл. формі. Я так зрозумів, що ця колекція значень сама передається на сервер - тому для табл. частини є таке виключення, в інших випадках необхідно змінювати значення через Объект.

Сама табл. частина форми змінюється, потім передається на сервер.
Vofka
Цитата
СтрокаТЧ = Элементы.Товары.ТекущиеДанные;

У Объекта нельзя взять "ТекущиеДанные". Просто это следует запомнить.

И следует понимать, что из ЭлементовФормы вы можете получить данные, которые в этой же форме вы меняете. А в Объекте эти данные появятся только после записи.
mister-x
Цитата(Vofka @ 19.03.11, 11:00) необходимо зарегистрироваться для просмотра ссылки
У Объекта нельзя взять "ТекущиеДанные". Просто это следует запомнить.

И следует понимать, что из ЭлементовФормы вы можете получить данные, которые в этой же форме вы меняете. А в Объекте эти данные появятся только после записи.


Тобто (якщо я Вас правильно зрозумів), якщо ми змінюємо дані у відкритій формі, то ці зміненні дані доступні із елементів форми поки ця форма відкрита: всі зміни в межах форми потрібно читати через програмну констукцію Элементы (а також передавати в інші форми), а не через реквізит форми Объект (оскільки там цих змін ще немає, пока не закрита форма або їх програмно попередньо не записали); інакше їх треба читати із копії об'єкту - через реквізит форми Объект?


Тобто, якщо змінював реквізит - отримую інфо у ньому через Элементы, ящо ні - через Объект?
mister-x
ще актуально
disfinder
Цитата(mister-x @ 19.03.11, 22:28) необходимо зарегистрироваться для просмотра ссылки
Тобто, якщо змінював реквізит - отримую інфо у ньому через Элементы, ящо ні - через Объект?

ні, не зовсім так.
залежно від того, як змінювали.
якщо ви ПРОГРАМНО змінили значення Об'єкт.Реквізит, то система автоматично відобразить цю зміну у ЕлементиФорми.Пов'язанийЕлемент.
однак якщо навпаки - то нічого не відбудеться.

якщо ж ІНТЕРАКТИВНО (користувач клацнув) змінилося значення у ЕлементиФорми.Пов'язанийЕлемент, то воно потрапить у Об'єкт.Реквізит тільки після того, як користувач натисне "Записати"
logist
Цитата(disfinder @ 22.03.11, 20:40) необходимо зарегистрироваться для просмотра ссылки
якщо ж ІНТЕРАКТИВНО (користувач клацнув) змінилося значення у ЕлементиФорми.Пов'язанийЕлемент, то воно потрапить у Об'єкт.Реквізит тільки після того, як користувач натисне "Записати"

Не согласен. Даже аргументировать не буду.
mister-x
Тоді цікавить, в яких випадках використовувати Элементы, а у яких Объект?
Думаю Элементы коректно (у 7.7 відповідник
Форма.РеквізитФорми.Доступность[Видимость]
) викор. у випадку доступності чи видимості елементу на формі.
Ще у яких випадках необіхдно його викор.? І щодо Объект цікавить.
disfinder
Цитата(logist @ 22.03.11, 22:31) необходимо зарегистрироваться для просмотра ссылки
Не согласен. Даже аргументировать не буду.

так, я не зовсім корректно сформулював думку.
після "записати" значення реквізита попаде в базу, а в контексті форми, де основний реквізит є об'єктом, значення реквізиту присвоїться одразу


mister-x, перечитав іще раз ваше саме перше питання, моя відповідь така: елементи форми використовувати не треба ніколи.
якщо вам треба змінити значення реквізиту об'єкта - міняйте реквізит.
може, варто почитати якусь літературку на кшалт Радченка або ІТС?
pablo
Элементы формы использую только для определения текущей строки в табличном поле. Иногда удобнее изменить значение реквизита табличной части именно через ТекущиеДанные, чем определять номер текущей строки и обращаться через Объект.
mister-x
Цитата
Элементы формы использую только для определения текущей строки в табличном поле. Иногда удобнее изменить значение реквизита табличной части именно через ТекущиеДанные, чем определять номер текущей строки и обращаться через Объект.

Дякую, буду знати.
Цитата
може, варто почитати якусь літературку на кшалт Радченка або ІТС?

Анжеронок та ін. Розробка форм, що керуються. (рос: Разработка управляемых форм) + буду на вебінарі по навчанню програмування в 1С 8.2. Дист. навчання себе не оправдало:
- не зручна форма спілкування - ел. почта (час відповіді - до 4 днів);
- розгляд простіших ситуцій у методичці, пізніше потрібно у самост. роботі вкінці розробляти складніші варіанти і там активно потрібно питати що і як викладача (а час то спливає). ІМХО.

Цитата
Анжеронок та ін. Розробка форм, що керуються. (рос: Разработка управляемых форм)

Точніше - Анжеронок, Островерх, Радченко, Хрусталева. Разработка управляемого интерфейса.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.