Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Зміна значення елемента форми          
mister-x Подменю пользователя
сообщение 10.02.11, 15:20
Сообщение #1

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

На разі 1С 8.2 на вивченні, тому цікавить наступне - що правильніше використовувати для зміни значення у формі:

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

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

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

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


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

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


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

Чи правильно я думаю?

logist Подменю пользователя
сообщение 10.02.11, 15:39
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

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

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

mister-x Подменю пользователя
сообщение 10.02.11, 16:10
Сообщение #3

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Тобто Ви хочете скажете, що будь-який елемент на формі (крім група, кнопка та інн. службових) має мати зв'язок із реквізитом форми?

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

Цитата
на формі через "Объект".
- реквізит форми

logist Подменю пользователя
сообщение 10.02.11, 16:17
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

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

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: mister-x,

pablo Подменю пользователя
сообщение 25.02.11, 9:58
Сообщение #5

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Цитата
Ну и разумеется значения реквизитов формы автоматически не сохраняются после закрытия формы.

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


Signature
Правильно поставленный вопрос содержит до 90% ответа.

disfinder Подменю пользователя
сообщение 27.02.11, 20:51
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 2 раз
Рейтинг: 0

"ну ви блін дайоте"...

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

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

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 17.03.11, 22:12
Сообщение #7

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(disfinder @ 27.02.11, 21:51) *
"ну ви блін дайоте"...

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

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

на жаль, в 7.7 це не мало значення

Vofka Подменю пользователя
сообщение 18.03.11, 7:57
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

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

Как это "не мало"? Имело значение, т.к. тоже там есть элементы формы и реквизиты документа. Как вам писали выше - это разные вещи.

mister-x Подменю пользователя
сообщение 18.03.11, 17:58
Сообщение #9

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

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

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

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

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


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

Сама табл. частина форми змінюється, потім передається на сервер.

Vofka Подменю пользователя
сообщение 19.03.11, 10:00
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата
СтрокаТЧ = Элементы.Товары.ТекущиеДанные;

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

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

mister-x Подменю пользователя
сообщение 19.03.11, 21:28
Сообщение #11

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(Vofka @ 19.03.11, 11:00) *
У Объекта нельзя взять "ТекущиеДанные". Просто это следует запомнить.

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


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


Тобто, якщо змінював реквізит - отримую інфо у ньому через Элементы, ящо ні - через Объект?

mister-x Подменю пользователя
сообщение 22.03.11, 20:19
Сообщение #12

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

ще актуально

disfinder Подменю пользователя
сообщение 22.03.11, 20:40
Сообщение #13

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 2 раз
Рейтинг: 0

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

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

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

logist Подменю пользователя
сообщение 22.03.11, 21:31
Сообщение #14

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

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

Не согласен. Даже аргументировать не буду.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

mister-x Подменю пользователя
сообщение 22.03.11, 22:03
Сообщение #15

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Тоді цікавить, в яких випадках використовувати Элементы, а у яких Объект?
Думаю Элементы коректно (у 7.7 відповідник
Форма.РеквізитФорми.Доступность[Видимость]
) викор. у випадку доступності чи видимості елементу на формі.
Ще у яких випадках необіхдно його викор.? І щодо Объект цікавить.

disfinder Подменю пользователя
сообщение 22.03.11, 23:09
Сообщение #16

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(logist @ 22.03.11, 22:31) *
Не согласен. Даже аргументировать не буду.

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


mister-x, перечитав іще раз ваше саме перше питання, моя відповідь така: елементи форми використовувати не треба ніколи.
якщо вам треба змінити значення реквізиту об'єкта - міняйте реквізит.
може, варто почитати якусь літературку на кшалт Радченка або ІТС?

pablo Подменю пользователя
сообщение 23.03.11, 12:00
Сообщение #17

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Элементы формы использую только для определения текущей строки в табличном поле. Иногда удобнее изменить значение реквизита табличной части именно через ТекущиеДанные, чем определять номер текущей строки и обращаться через Объект.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

mister-x Подменю пользователя
сообщение 23.03.11, 14:03
Сообщение #18

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата
Элементы формы использую только для определения текущей строки в табличном поле. Иногда удобнее изменить значение реквизита табличной части именно через ТекущиеДанные, чем определять номер текущей строки и обращаться через Объект.

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

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

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

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 7:32
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!