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


1С:Предприятие ::

Метки: 

v7: Прикол с Форма.Закладки.ДобавитьЗначение

Я
   КонецЦикла
 
05.01.13 - 19:36
Интересный прикол...

Добавляются три закладки
Процедура ПриОткрытии()
    Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение("Общие","Общие");
    Форма.Закладки.ДобавитьЗначение("Контакты","Контакты");
    Если Выбран() = 1 Тогда
        Форма.Закладки.ДобавитьЗначение("События","События");
    КонецЕсли;    
    Форма.Закладки.ДобавитьЗначение("РасчетныеСчета","Р/счета и договоры");
....

Если новый элемент не хочу показывать контакты, добавляю закладку при записи
Вот так работает:

Процедура ПриЗаписи()
    Если Выбран() = 0 Тогда
        Форма.Закладки.ДобавитьЗначение("События", "События");
        Форма.Закладки.СдвинутьЗначение(-1, 4);
    КонецЕсли;    
КонецПроцедуры// ПриЗаписи()
 

А вот так нет:

Процедура ПриЗаписи()
    Если Выбран() = 0 Тогда
       //Форма.Закладки.ДобавитьЗначение("События", "События");
 
       //Форма.Закладки.СдвинутьЗначение(-1, 4);
 
        Форма.Закладки.ВставитьЗначение(3, "События", "События");
    КонецЕсли;    
КонецПроцедуры// ПриЗаписи()
 


Сообщение: "Индекс не входит в границы списка значений.". Но ведь значений 3 на момент выполнения кода
 
 
   КонецЦикла
 
1 - 05.01.13 - 19:37
*не хочу показывать события, ну вы поняли
   PALESIA
 
2 - 05.01.13 - 19:41
Форма.Закладки.ТекущаяСтрока(НомерЗакладки) вроде бы ..
   PALESIA
 
3 - 05.01.13 - 19:44
+(2) это вместо СдвинутьЗакладки()
   КонецЦикла
 
4 - 05.01.13 - 19:45
(2) Куда предлагаешь пихать чтобы помогло? Все равно же три значения в списке

Форма.Закладки.ВставитьЗначение(2, "События", "События");

Работает кстати
   КонецЦикла
 
5 - 05.01.13 - 19:45
(3) Положение нужно третье событий, а не третью закладку активизировать
   PALESIA
 
6 - 05.01.13 - 19:51
(5) а Закладки в списке не с нуля индексированы? - там вектор вродебы
   bezgudroman
 
7 - 05.01.13 - 19:52
давно уже отказался от такого балования с закладками.
легче залочить разлочить группу атрибутов в "после записи".
   acsent
 
8 - 05.01.13 - 19:53
а если 2 раза запишешь?
   PALESIA
 
9 - 05.01.13 - 19:55
(8) норм - взлетит - у него условие Выбран()
   bezgudroman
 
10 - 05.01.13 - 19:56
да и в конструкции 
Форма.Закладки.ДобавитьЗначение("Общие","Общие");
я пихаю сразу слои:
Форма.Закладки.ДобавитьЗначение("Шапка,Общие,Кнопки","Общие");
это позволяет написать процедуру "ПриВыбореЗакладки" легко и непринужденно
Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки = "")
    глПриВыбореЗакладкиСтандарт(Контекст, НомерЗакладки, ЗначениеЗакладки);
КонецПроцедуры// ПриВыбореЗакладки
 

ну а что написано в глПриВыбореЗакладкиСтандарт - догадайтесь сами ))
 
 Рекламное место пустует
   bezgudroman
 
11 - 05.01.13 - 19:58
(8) это будет полная катастрофа.
   PALESIA
 
12 - 05.01.13 - 20:01
(0) упс. нашел, может быть поможет:

ВставитьЗначение(<Позиция>,<Значение>,<Строка>,<Клв>)
Назначение:
Вставить значение в указанную позицию списка.
Параметры:
<Позиция> - номер позиции в списке, в которую вставляется значение (изменяется от 1 до РазмерСписка+1);

СРАВНИ С ЕНТИМ:

УстановитьЗначение(<?>,,,);
Синтаксис:
УстановитьЗначение(<Позиция>,<Знач>,<Строка>,<Клв>)
Назначение:
Установить значение в указанной позиции списка.
Параметры:
<Позиция> - номер позиции в списке, в которой установливается значение (изменяется от 1 до РазмерСписка);
   КонецЦикла
 
13 - 05.01.13 - 21:36
(12) Та же ошибка
Да и к тому же установить <> вставить :)
   КонецЦикла
 
14 - 05.01.13 - 21:37
А повторите кто-нить мой код в модуле формы элемента спр-ка
Интересно...
   Torquader
 
15 - 05.01.13 - 21:45
Не знаю, что вы там курите, но у меня так работает:
Процедура ПриОткрытии()
    Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение("Один","Это один");
    Форма.Закладки.ДобавитьЗначение("Два","Это два");
    Если Выбран()=1 Тогда
        Форма.Закладки.ДобавитьЗначение("Три","Это три");
    КонецЕсли;
    Форма.Закладки.ДобавитьЗначение("Четыре","Это четыре");
КонецПроцедуры

Процедура ПриЗаписи(лстрПериодическиеРеквизиты)
    Если Выбран()=0 Тогда
        Форма.Закладки.ВставитьЗначение(3,"Три","Это три",1);
    КонецЕсли;
КонецПроцедуры
   Torquader
 
16 - 05.01.13 - 21:45
Причём в базе только один этот несчастный справочник (создал чистую)
   PALESIA
 
17 - 05.01.13 - 21:47
(13) есно, что не равны - я к этому и вел - но раз у тебя оба не работают, тогда как вариант: скопипасти справочник, потом удали исходный и замени имя производного на имя исходного - у тебя по-ходу вектор закладок именно в этом справочнике полетел
   КонецЦикла
 
18 - 05.01.13 - 22:01
(15) Да, создал в той же конфиге справочник - там работает, понимаю что должно работать

Попробовал создать новый справочник копированием один к одному в дереве - та же ошибка :)
Короче оставлю как есть
   PALESIA
 
19 - 05.01.13 - 22:04
(18) а скопировать его в другую конфу, а потом из другой назад вернуть (после удаления исходника) пробовал? )))
   КонецЦикла
 
20 - 05.01.13 - 22:10
(19) Нельзя исходник удалять, потом придется id править
В другой конфигурации заработал справочник, правда снес табличное поле, но думаю что это не влияло
   КонецЦикла
 
21 - 05.01.13 - 22:13
Короче МД кривой какой-то штоле
   Torquader
 
22 - 05.01.13 - 23:04
Возможно, используются какие-то внешние компоненты, которые правят работу вкладок.
Кроме того, нужно смотреть все прочие функции.
Чистый справочник без слоёв, а только с закладками работает в этой базе ?
   КонецЦикла
 
23 - 06.01.13 - 00:21
(22) Если сделать копию спр-ка в этой же конфигурации, но убрать слои - работает
   Torquader
 
24 - 06.01.13 - 01:34
А если в новой базе взять элемент и дорисовать слои, то что происходит ?
Есть подозрение, что падает не на добавлении, а на переключении активного слоя после добавления.
Попробуй отключить переключение слоёв и посмотреть, что происходит.
   Злопчинский
 
Ведущий
25 - 06.01.13 - 03:34
КЦ, сорри, я б посмотрел, но капец - времени совсем мало - кошмарюсь с курсами по En - я в шоке...
   КонецЦикла
 
26 - 06.01.13 - 18:14
(24) Да, похоже что так
Убрал в ПриОткрытии() такой код:
   //Если ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо Тогда
 
   //    Форма.Закладки.ДобавитьЗначение("Документ","Паспортные данные");
 
   //    Форма.ИспользоватьСлой("Общий, ОсновныеСведения, ЧастноеЛицо", 2);
 
   //Иначе
 
   //    Форма.ИспользоватьСлой("Общий, ОсновныеСведения, Организация", 2);
 
   //КонецЕсли;
 

Заработало
Но ведь слои-то нужны... :)
   КонецЦикла
 
27 - 06.01.13 - 18:16
Переключения слоев после записи не было
   КонецЦикла
 
28 - 06.01.13 - 18:18
+(23) На копии справочника в той же конфигурации работает также если тупо добавить один слой пустой, но дажж не использовать его
   КонецЦикла
 
29 - 07.01.13 - 00:08
Ага, вот оно как быват
   Torquader
 
30 - 07.01.13 - 18:57
Что есть 
Форма.Закладки.ДобавитьЗначение("Документ","Паспортные данные");
Как бы это совсем не слои.
Ну и смотри, что у тебя там получается, а то, может быть, количество слоёв действительно не то, которое должно быть.



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует