Имя: Пароль:
1C
 
Вопрос по управляемым формам
0 Мисти
 
05.01.15
19:12
В форме элемента справочника был такой текст -
    ФормаРегистра = РегистрыСведений.Кос_ИсторияКонтрагентов.ПолучитьФорму("ФормаСписка", ЭтаФорма);
    ФормаРегистра.Отбор.Контрагент.Значение =  Объект.Ссылка;
    ФормаРегистра.Отбор.Контрагент.Использование = Истина;
    ФормаРегистра.Отбор.Контрагент.ВидСравнения  = ВидСравнения.Равно;
    ФормаРегистра.Открыть();
Куда его теперь вписать? Не НаКлиенте и не НаСервере...
1 vicof
 
05.01.15
19:14
Впиши НаКонсоли
2 vicof
 
05.01.15
19:16
В условном оформлении.
Когда ты уже вопросы научишься формулировать и книжки читать?
3 Мисти
 
05.01.15
19:16
ФормаРегистра = ПолучитьФорму("РегистрыСведений.Кос_ИсторияКонтрагентовФорма.ФормаСписка");
А так?
4 Euguln
 
05.01.15
19:17
(3) кури СП и типовые конфы.
5 vicof
 
05.01.15
19:20
(3) Пока ты не поймешь, зачем этот так называемый "текст" нужен, не поймешь, куда и вставлять.
6 Мисти
 
05.01.15
19:22
Так я же его там сама и писала! в 2.0
Зачем - понятно.
{Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(1773)}: Ошибка при вызове метода контекста (ПолучитьФорму)
    ФормаРегистра = ПолучитьФорму("РегистрыСведений.Кос_ИсторияКонтрагентов.Форма.ФормаСписка");
по причине:
Неизвестное имя формы. Имя: "РегистрыСведений.Кос_ИсторияКонтрагентов.Форма.ФормаСписка"
Вроде, сделала всё, как было в типовой (подсмотрела кусочек)
7 Rie
 
05.01.15
19:32
(6) Тогда уж "РегистрСведений...", а не "РегистрыСведений...".
8 Мисти
 
05.01.15
19:38
(7) Ага, так скушало, спасибо, так и знала - где-то там собака порылась.
9 Мисти
 
05.01.15
19:45
Теперь еще отбор переделывать надо.
Загнать в параметры, а в регистре при открытии заполнить?
10 iceman2112
 
05.01.15
19:45
(0) попробуй директиву &ИменемБорисаНуралиеваВыполнисьГдеБыНиБыл
11 Rie
 
05.01.15
19:54
Так а почему бы сразу не ОткрытьФорму(...)? Зачем её надо предварительно получать?
12 Мисти
 
05.01.15
19:55
Где-то украла такой вариант. А не всё равно?
13 Ник080808
 
05.01.15
20:09
(12) не все равно. В упр формах лучше через ОткрытьФорму() и отбор в параметры передавать
14 Мисти
 
05.01.15
20:12
(13) А чем лучше?
Ну хорошо, сделаю так!
15 Ник080808
 
05.01.15
20:17
(14) чем получить форму)))
16 Ник080808
 
05.01.15
20:19
(14) получилось?
17 Мисти
 
05.01.15
20:20
Не-а, застряла на установке отбора в списке -
Список.Параметры.УстановитьЗначениеПараметра("
В отладчике там видно только "Элементы" и всё, как мне мой отбор-то вставить?
18 Ник080808
 
05.01.15
20:20
(17) в параметры
19 Ник080808
 
05.01.15
20:22
(17) ОткрытьФорму(<ИмяФормы>, Новый Структура("Отбор",Новый Структура("Контрагент",Объект,Ссылка)), ЭтаФорма,КлючУникальности)
20 Ник080808
 
05.01.15
20:22
(19) писал по памяти, так что звыняйте
21 Мисти
 
05.01.15
20:24
Так туда я их запихнула!
Теперь открывается регистр -

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Отбор.Количество()>0 Тогда
        Отбор =  Параметры.Отбор;
        Список.Параметры.УстановитьЗначениеПараметра("Значение", Отбор.Значение);
        Список.Параметры.УстановитьЗначениеПараметра("Использование", Отбор.Использование);
        Список.Параметры.УстановитьЗначениеПараметра("ВидСравнения", Отбор.ВидСравнения);
    КонецЕсли;
КонецПроцедуры

В отборе всё есть, а как теперь эти данные вставить в отбор в списке?
22 Мисти
 
05.01.15
20:25
А без этого открывается полный регистр.
23 Ник080808
 
05.01.15
20:26
(22) я же написал выше как надо без всяких запихиваний
24 Мисти
 
05.01.15
20:28
У меня в той строке только этого "ЭтаФорма,КлючУникальности"
не хватает. Это принципиально?
25 Мисти
 
05.01.15
20:28
Т.е. приСозданииНаСервере - вообще в регистре такой процедуры не нужно?
26 Ник080808
 
05.01.15
20:29
(25) да
27 Мисти
 
05.01.15
20:38
Сработало!!
Спасибочки.
28 Мисти
 
05.01.15
22:54
Продолжаю перевод! (люди, там еще документы и отчеты!!)

&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
    ВалютаПриИзмененииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ВалютаПриИзмененииНаСервере()
    Набор = РегистрыСведений.АР_НастройкаКурсовВалютПоУмолчанию.СоздатьНаборЗаписей();
    Набор.Отбор.Валюта.Установить(Объект.Валюта);
    Набор.Прочитать();
    Для Каждого Стр Из Набор  Цикл
        Если ЗначениеЗаполнено(Объект.НижняяГраница) ИЛИ ЗначениеЗаполнено(Объект.ВерхняяГраница) Тогда
            ТекстСообщения = "Для данной валюты заданы настройки верхней и нижней границы. Установить из настроек?";
            Если Вопрос(ТекстСообщения, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда
                Возврат;
            КонецЕсли;
        КонецЕсли;
        Объект.НижняяГраница = Стр.НижняяГраница;    
        Объект.ВерхняяГраница = Стр.ВерхняяГраница;
        Объект.РазницаСКурсом = Стр.РазницаСКурсомВалюты;
    КонецЦикла;
КонецПроцедуры

Сама знаю, что так работать не будет, но как вопрос-то задать? Разве можно из наСервере обратно наклиенте вызвать?
29 XLife
 
05.01.15
22:56
(28) з/п поделишься?
30 Мисти
 
05.01.15
23:00
(29) Немножко! За особенно ценные советы.
31 Мисти
 
05.01.15
23:24
Пока приходит в голову только циклическое обращение к процедуре "НаСервере", но это как-то глупо, может, есть другая возможность задать вопрос?
32 Ник080808
 
06.01.15
11:26
(31) зачем Вам цикл, если вы проверяете заполненность реквизитов, причем одних и тех же, но в цикле?
33 Ник080808
 
06.01.15
11:27
(31) опять же. Вы заполняете все равно последним значением.
34 Ник080808
 
06.01.15
11:28
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
   Если ЗначениеЗаполнено(Объект.НижняяГраница) ИЛИ ЗначениеЗаполнено(Объект.ВерхняяГраница) Тогда
            ТекстСообщения = "Для данной валюты заданы настройки верхней и нижней границы. Установить из настроек?";
            Если Вопрос(ТекстСообщения, РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
                   ВалютаПриИзмененииНаСервере();
            КонецЕсли;
        КонецЕсли;

КонецПроцедуры
35 Ник080808
 
06.01.15
11:29
&НаСервере
Процедура ВалютаПриИзмененииНаСервере()
    Набор = РегистрыСведений.АР_НастройкаКурсовВалютПоУмолчанию.СоздатьНаборЗаписей();
    Набор.Отбор.Валюта.Установить(Объект.Валюта);
    Набор.Прочитать();
    Объект.НижняяГраница = Набор[0].НижняяГраница;    
    Объект.ВерхняяГраница = Набор[0].ВерхняяГраница;
    Объект.РазницаСКурсом = Набор[0].РазницаСКурсомВалюты;
КонецПроцедуры
36 Defender aka LINN
 
06.01.15
12:06
(35) Нафига контекстный вызов?
37 Ник080808
 
06.01.15
12:16
(36) по сравнению с остальным, это такая детская шалость)
38 Мисти
 
06.01.15
14:48
(32) Я посмотрела хорошенько - (не я делала) - это и в старой версии не работает, никому не нужно, я просто закомментировала этот кусок.
  Ник08080! Спасибо Вам большое, я прошлый кусок использовала уже в 3 местах разных - "работает как часы"
Этот тоже еще где-нибудь пригодится.
39 Ник второй
 
06.01.15
14:51
новый год, тупни все теже ((((