Имя: Пароль:
1C
1C 7.7
v7: Прикол с Форма.Закладки.ДобавитьЗначение
,
0 КонецЦикла
 
05.01.13
19:36
Интересный прикол...

Добавляются три закладки

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

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

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

А вот так нет:

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


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

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

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

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

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

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

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

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

Попробовал создать новый справочник копированием один к одному в дереве - та же ошибка :)
Короче оставлю как есть
19 PALESIA
 
05.01.13
22:04
(18) а скопировать его в другую конфу, а потом из другой назад вернуть (после удаления исходника) пробовал? )))
20 КонецЦикла
 
05.01.13
22:10
(19) Нельзя исходник удалять, потом придется id править
В другой конфигурации заработал справочник, правда снес табличное поле, но думаю что это не влияло
21 КонецЦикла
 
05.01.13
22:13
Короче МД кривой какой-то штоле
22 Torquader
 
05.01.13
23:04
Возможно, используются какие-то внешние компоненты, которые правят работу вкладок.
Кроме того, нужно смотреть все прочие функции.
Чистый справочник без слоёв, а только с закладками работает в этой базе ?
23 КонецЦикла
 
06.01.13
00:21
(22) Если сделать копию спр-ка в этой же конфигурации, но убрать слои - работает
24 Torquader
 
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
Ага, вот оно как быват
30 Torquader
 
07.01.13
18:57
Что есть
Форма.Закладки.ДобавитьЗначение("Документ","Паспортные данные");
Как бы это совсем не слои.
Ну и смотри, что у тебя там получается, а то, может быть, количество слоёв действительно не то, которое должно быть.