Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как обновить Табличную часть в управляемых формах  (Прочитано 49871 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« : 21-10-2011 08:15 » 

Здрасте. Как обновить табличнуючасть.
В обработке в данных создал табличную часть Поступ элементы
с таким составом
Элемент1 1
Элемент2 2
Элемент3 3
Как обновить табличную часть? Спасибо
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 21-10-2011 08:30 » 

А в чем сложность?
Код: (1C v8)
ЭтаФорма.Элементы.ТабличнаяЧасть.Обновить();
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 21-10-2011 08:49 » 

А в чем сложность?
Код: (1C v8)
ЭтаФорма.Элементы.ТабличнаяЧасть.Обновить();
Не обновляются данные в таблице. Делал Обновить() и ОбновитьОтображениеДанных() данные не обновляются

Процедура получения данных у меня помещена в обработчик ожидания.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 21-10-2011 09:43 » 

Скорее всего дело не в обновлении.
Приведи код.
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 21-10-2011 10:02 » 

Код: (1C v8)
&НаСервере
Процедура ОбновитьФорму()
-----------
Если Объект.Таблица.Количество()=0 тогда
                ОбновитьТаблицу();
        иначе
                ЭтаФорма.Элементы.Таблица.Обновить();
КонецЕсли;
----------
КонецПроцедуры

&НаСервере
Процедура Обновитьтаблицу()
        НашОбъект = РеквизитФормыВЗначение("Объект");
СтрокаТЧ = НашОбъект.Таблица.Найти(Name, "название");
        Если СтрокаТч = Неопределено Тогда
                                СтрокаТЧ = Объект.таблица.Добавить();
        КонецЕсли;
СтрокаТЧ.Название=ВозвратТекЗнач("N");
СтрокаТЧ.Значение=ВозвратТекЗнач("Z");
КонецПроцедуры



&НаКлиенте
Процедура Ообновить()
Если Объект.Таблица.Количество()=0 тогда
        ОбновитьФорму();
иначе
        ЭтаФорма.ОбновитьОтображениеДанных();
КонецЕсли;

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


&НаКлиенте
Процедура ПриОткрытии(Отказ)
  ПодключитьОбработчикОжидания("Ообновить",1);    
КонецПроцедуры

 

Добавлено через 4 минуты и 41 секунду:
Kivals, где то в нете читал что обновление в том числе и раскраску строк можно делать с помощью скд. можешь подсказать?
« Последнее редактирование: 21-10-2011 10:07 от Элексир » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 21-10-2011 10:22 » 

По основному вопросу:
у тебя в Обновитьтаблицу() нет обратного преобразования: ЗначениеВРеквизитФормы()
А вообще-то ИМХО по твоему алгоритму можно обойтись и без этих преобразований: РеквизитФормыВЗначение()/ЗначениеВРеквизитФормы()

По раскрашиванию:
это делается через условное оформление формы

* sc-20111021131938.png (99.77 Кб - загружено 20313 раз.)
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 21-10-2011 10:33 » 

Kivals, спасибо!!! щас попробую

Добавлено через 24 минуты и 12 секунд:
Попробовал теперь таблица пустая и даже первоначальных данных нету.
« Последнее редактирование: 21-10-2011 10:58 от Элексир » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 21-10-2011 13:11 » new

код?
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 24-10-2011 05:59 » 

Код:
&НаСервере
Процедура ОбновитьФорму()
-----------
Если Объект.Таблица.Количество()=0 тогда
                ОбновитьТаблицу();
        иначе
                ЭтаФорма.Элементы.Таблица.Обновить();
КонецЕсли;
----------
КонецПроцедуры

&НаСервере
Процедура Обновитьтаблицу()
        НашОбъект = РеквизитФормыВЗначение("Объект");
СтрокаТЧ = НашОбъект.Таблица.Найти(Name, "название");
        Если СтрокаТч = Неопределено Тогда
                                СтрокаТЧ = Объект.таблица.Добавить();
        КонецЕсли;
СтрокаТЧ.Название=ВозвратТекЗнач("N");
СтрокаТЧ.Значение=ВозвратТекЗнач("Z");
ЗначениеВРеквизитФормы(НашОбъект,"Объект") // добавленная строка
КонецПроцедуры



&НаКлиенте
Процедура Ообновить()
Если Объект.Таблица.Количество()=0 тогда
        ОбновитьФорму();
иначе
        ЭтаФорма.ОбновитьОтображениеДанных();
КонецЕсли;

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


&НаКлиенте
Процедура ПриОткрытии(Отказ)
  ПодключитьОбработчикОжидания("Ообновить",1);   
КонецПроцедуры
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 24-10-2011 06:24 » 

На момент после вызова
Код: (ActionScript)
НашОбъект = РеквизитФормыВЗначение("Объект");

у тебя есть 2 копии объекта: НашОбъект и Объект (они разных типов, но содержат одинаковые данные)

а в этом блоке ты работаешь с разными объектами как с одним:
Код: (1C v8)
        СтрокаТЧ = НашОбъект.Таблица.Найти(Name, "название");
        Если СтрокаТч = Неопределено Тогда
                СтрокаТЧ = Объект.таблица.Добавить();
        КонецЕсли;

Должно быть:
Код: (1C v8)
СтрокаТЧ = НашОбъект.таблица.Добавить();
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 24-10-2011 06:31 » 

Kivals, спасибо. все получилось. Хотел бы задать такой вопрос. Помещая объект в переменную НашОбъект, помещаются ли все реквизиты в том числе созданные вручную?
Вопрос задаю потому что на форме есть поле ввода в которое я ничего не могу добавить оно постоянно очищается  Здесь была моя ладья...
« Последнее редактирование: 24-10-2011 06:33 от Элексир » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 24-10-2011 15:21 » 

РеквизитФормыВЗначение() для элемента типа Объект создает переменную с типом СправочникОбъект, ДокументОбъект, ... со всеми вытекающими последствиями, а именно: в нем присутствую только реквизиты, которые заданы в кофигураторе для этого типа объектов. При этом все реквизиты заполняются изменеными значениями на форме.
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 25-10-2011 05:58 » 

Kivals, А если реквизита нет в объекте? должно ли оно очищаться???
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 25-10-2011 07:22 » 

Если оно связано с реквизитом формы (не объекта) - не должно меняться, а если вообще просто так - тогда не знаю, не пробовал.
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 25-10-2011 07:43 » 

оно у меня связано с реквизитом формы. при этом если я заношу с клавиатуры то очищается. а если с кнопок на форме то нет  Меня одолевают смутные сомнения
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 25-10-2011 08:57 » 

Какой тип реквизита формы?
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 26-10-2011 08:49 » 

Тип строка неограниченная
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 27-10-2011 12:38 » 

Где-то что-то намутил. Даже не знаю что предположить - это нужно видить форму целиком.
Сама по себе платформа точно не очищает реквизитов.
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 28-10-2011 07:07 » 

Kivals, спасибо, будем лопатить.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines