Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Связка переменной и атрибута формы.

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №1
 
16.09.2008 15:44

"Платформа 7.7.<br>Хочется проделать что то вроде такого:<br><br>Для i=1 По 10 Цикл<br>Форма.ПолучитьАтрибут("ПолеСоСписком"+i).УдалитьВсе();<br>КонецЦикла;<br><br>Но метод ПолучитьАтрибут() позволяет обращаться к атрибутам формы, связанным с реквизитами Справочника или Документа, остальные же атрибуты недоступны, как обойти этот момент? Есть идеи?"

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №2
 
16.09.2008 18:57

А если извратиться как нибудь на подобии как в/с глВзятьКонтекст(...<br>Час пробовал разные варианты, но не получается...

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №3
 
17.09.2008 08:14

"Вот и я тоже... достал бубен, стучал, стучал в него и никак :)<br>Решение, которое работает:<br>Функция ПолучитьСписокПоНомеру(Арг)<br> Если Арг=1 Тогда<br>      Возврат(ПолеСоСписком1);<br> ИначеЕсли Арг=2 Тогда<br>      Возврат(ПолеСоСписком2);<br> ИначеЕсли Арг=3 Тогда<br>      Возврат(ПолеСоСписком3);<br> КонецЕсли;<br>КонецФункции<br><br>Для i=1 По 3 Цикл<br>ПолучитьСписокПоНомеру(i).УдалитьВсе()<br>КонецЦикла;<br><br>Но когда я вижу такой текст, мне кажется, что это ненормально. Мало того, будучи вынесенной в глобальный модуль, функция ПолучитьСписокПоНомеру() уже не работает, причем никак, не проходят фокусы типа Возврат(Конт.Форма.ПолеСоСписком1);<br><br>"

zak555 (398843952)
читатель
офлайн
Дата регистрации: 27.03.2008
Сообщений: 4656
Пост №4
 
17.09.2008 12:01

"Предлагаю сделать так:<br>//думаю описание функции глВзятьКонтекст(Кон) не нужно давать?<br>//на всякий случай:<br>Функция глВзятьКонтекст(Конт)<br> Возврат Конт;<br>КонецФункции<br><br>//например, для справочника...<br>//В справочнике (можно вынести во внешную обработку) пишем...<br>СЗ_Спр = глВзятьКонтекст(Контекст); //это будет список СЗ...<br><br>//нужно убрать лишнее<br><br>//теперь получим СЗ рекизитов справочника<br>СЗ_Рек = СоздатьОбъект("СписокЗначений");<br>Для н_ = 1 по Метаданные.Спрвочник(Вид()).Реквизит() Цикл<br> СЗ_Рек.ДобавитьЗначение(Метаданные.Спрвочник(Вид()).Реквизит(н_));<br>КонецЦикла;<br><br>//уберем лишнее из СЗ_Спр<br>Для н_ = 1 по СЗ_Рек.РазмерСписка() Цикл<br> поз = СЗ_Спр.НайтиЗначение(СЗ_Рек.ПолучитьЗначение(н_));<br> Если поз>0 Тогда<br>      СЗ_Спр.УдалитьЗначение();<br> КонецЕсли;<br>КонецЦикла;<br><br>//ну а дальше удаляем СтрокуДействияФормы, Закладки (если есть), Параметр<br>//идём по СЗ_Спр и проверяем на ТипЗначенияСтр(...)="СписокЗначений"<br><br>вроде так должно работать!"

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №5
 
17.09.2008 13:33

"Только вот так получилось:<br><br>//ПсЗ1, ПсЗ2, ПсЗ3 - Списки значений на форме<br>Перем СписокЭлементов;<br>Процедура Очистить()<br> //Очищаем списки по списку<br> Для Ном=1 По 3 Цикл<br> Стр="""";<br> ПсС=СписокЭлементов.ПолучитьЗначение(Ном,Стр);<br> ПсС.УдалитьВсе();<br> КонецЦикла;<br>КонецПроцедуры<br>Процедура ПриОткрытии()<br> Для Ном=1 По 5 Цикл//Заполняем списки для примера<br> ПсЗ1.ДобавитьЗначение(Ном);<br> ПсЗ2.ДобавитьЗначение(Ном*10);<br> ПсЗ3.ДобавитьЗначение(Ном*100);<br> КонецЦикла;<br> //Составляем список списков<br> СписокЭлементов.ДобавитьЗначение(ПсЗ1);<br> СписокЭлементов.ДобавитьЗначение(ПсЗ2);<br> СписокЭлементов.ДобавитьЗначение(ПсЗ3);<br>КонецПроцедуры<br>СписокЭлементов=СоздатьОбъект("СписокЗначений");<br><br>Победить ПолучитьАтрибут( конечно не получилось, но ПолучитьСписокПоНомеру(Арг) исключили"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №6
 
17.09.2008 14:23

"СЗ_Спр = глВзятьКонтекст(Контекст); //это будет список СЗ...<br><br>ммм, это будет не список значений. ТипЗначенияСтр(СЗ_Спр)="ГрупповойКонтекст""

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №7
 
17.09.2008 14:25

"Ага, так очевидно работать будет... Но выглядит тоже грустно:<br>СписокЭлементов.ДобавитьЗначение(СписокСПолемВыбора1);<br>СписокЭлементов.ДобавитьЗначение(СписокСПолемВыбора2);<br>СписокЭлементов.ДобавитьЗначение(СписокСПолемВыбора3);<br>...<br>СписокЭлементов.ДобавитьЗначение(СписокСПолемВыбора10);<br><br>В общем, как итог можно сказать... унифицировать тяжело. Учитывая то, что хочется сделать единую процедуру в глобальнике, которая могла бы быть вызвана для разных форм, в каждой из которой различное количество этих списков, то совсем как то не срастается, чего нибудь придумаю, в общем..."

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №8
 
17.09.2008 15:28

Жду решения, очень интересно.

zak555 (398843952)
читатель
офлайн
Дата регистрации: 27.03.2008
Сообщений: 4656
Пост №9
 
23.09.2008 11:35

"да, я ошибся...<br>хотя такое красивое решение! ;-)))<br>у меня такое ощущение, что нельзя получить атрибут не зная его!"

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №10
 
23.09.2008 12:48

"А через FormEx не пробовали?<br>ФормаРасш = СоздатьОбъект("РасширениеФормы"); <br>ФормаРасш.УстановитьФорму(Форма);<br>ФормаРасш.ПолучитьАтрибут(...<br><br>"

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация