Имя: Пароль:
1C
1С v8
v8: Специфика кода в УФ
,
0 svchernova
 
09.11.11
10:07
Всем добрый день.
Растолкуйте мне, пожалуйста. Будет ли работать на клиенте процедура, для которой установлена директива предпроцессору "&НаСервере"?

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
   РаботаСДиалогами.ПроверитьНомерДокумента(Объект, Объект.Дата);
КонецПроцедуры

Документ имеет две формы, обя=ычную  и управляемую. Обычная - старая, разработанная ранее в 8.1, сейчас я работаю над управляемой формой
документа.

Поставила точку останова, но могу зайти в процедуру только в том случае, если я ставлю директиву &НаКлиенте. Но тогда РаботаСДиалогами.ПроверитьНомерДокумента не работает, вываливет ошибку
{ОбщийМодуль.РаботаСДиалогами.Модуль(3266,17)}: Тип не определен (Запрос)
   Запрос = Новый <<?>>Запрос;

Если ставлю &НаСервере, а предприятие работает в режиме тонкого клиента, то по точке останова в процедуру зайти не могу.
Процедуа не отрабатывает, РаботаСДиалогами не вызывается - я там тоже точек останова понаставила, но не попадаю на них.

Процедуры общего модуля выполняются на сервере. Тонкий клиент с ними работать не может, так как они не написаны для тонкого (Тип Запрос не определён, например..)
1 Wobland
 
09.11.11
10:13
попробую на пальцах

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
   ПроверьМнеНомерОСервер(Объект, Объект.Дата);
КонецПроцедуры

&НаСервере
Процедура ПроверьМнеНомерОСервер(Объект, Объект.Дата)
   РаботаСДиалогами.ПроверитьНомерДокумента(Объект, Объект.Дата);
КонецПроцедуры
2 lxndr
 
09.11.11
10:13
В процедуре ДатаПриИзменении вызови серверную функцию, а из серверной обратись к общему модулю.
На клиенте нет типа "ЗАпрос"
3 Wobland
 
09.11.11
10:13
(1) параметры у серверной функции, конечно, не такие
4 Stepa86
 
09.11.11
10:14
> Будет ли работать на клиенте процедура, для которой установлена директива предпроцессору "&НаСервере"?
нет, она будет работать только на сервере

(1) скорей всего там диалоги открываются, так что упадет
5 svchernova
 
09.11.11
10:15
Всем - сейчас попробую, о результате доложу
6 Wobland
 
09.11.11
10:16
(4) а,да, скорей всего. тогда наша СВ ваще сейчас утонет ;)
7 Wobland
 
09.11.11
10:19
что-то как-то это всё выглядит как перевод типовой с нормальных форм на управляемые. нужна бутылка
8 svchernova
 
09.11.11
10:20
(7) именно этим и занимаюсь.
9 Wobland
 
09.11.11
10:21
(8) что именно? допиливаний много?
10 svchernova
 
09.11.11
10:23
(1) Повторила то, что на пальцах:

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
   мТекущаяДатаДокумента = Объект.Дата;
   ПроверьМнеНомерОСервер(Объект, мТекущаяДатаДокумента);    
КонецПроцедуры

&НаСервере
Процедура ПроверьМнеНомерОСервер(Объект, мТекущаяДатаДокумента)
   РаботаСДиалогами.ПроверитьНомерДокумента(Объект, мТекущаяДатаДокумента);
КонецПроцедуры

Получила новую радость :

{ОбщийМодуль.РаботаСДиалогами.Модуль(2600,30)}: Конструктор не найден
               ДействиеПоКнопке = Новый <<?>>Действие("КоманднаяПанельВедущиеВидыРасчетаПодМеню");
{ОбщийМодуль.РаботаСДиалогами.Модуль(2611,28)}: Конструктор не найден
       ДействиеПоКнопке = Новый <<?>>Действие("КоманднаяПанельБазовыеВидыРасчетаПодбор");
{ОбщийМодуль.РаботаСДиалогами.Модуль(2617,29)}: Конструктор не найден
           ДействиеПоКнопке = Новый <<?>>Действие("КоманднаяПанельВедущиеВидыРасчетаПодбор");
{ОбщийМодуль.РаботаСДиалогами.Модуль(3326,22)}: Конструктор не найден
       Обработчик = Новый <<?>>Действие("ДействияФормыРедактировать" + КодНомер);
{ОбщийМодуль.РаботаСДиалогами.Модуль(3726,116)}: Конструктор не найден
           КнопкаСоветы = КоманднаяПанель.Кнопки.Вставить(0, ИмяКнопки, ТипКнопкиКоманднойПанели.Действие, "Советы", Новый <<?>>Действие("ДействияФормыОткрытьСоветы"));
{ОбщийМодуль.РаботаСДиалогами.Модуль(3728,134)}: Конструктор не найден
           КнопкаСоветы = КоманднаяПанель.Кнопки.Вставить(ИндексКнопкиСправка, ИмяКнопки, ТипКнопкиКоманднойПанели.Действие, "Советы", Новый <<?>>Действие("ДействияФормыОткрытьСоветы"));
{ОбщийМодуль.РаботаСДиалогами.Модуль(3735,113)}: Конструктор не найден
           КнопкаСоветы = КоманднаяПанель.Кнопки.Добавить(ИмяКнопки, ТипКнопкиКоманднойПанели.Действие, "Советы", Новый <<?>>Действие("ДействияФормыОткрытьСоветы"));
{ОбщийМодуль.РаботаСДиалогами.Модуль(3737,134)}: Конструктор не найден
           КнопкаСоветы = КоманднаяПанель.Кнопки.Вставить(ИндексКнопкиСправка, ИмяКнопки, ТипКнопкиКоманднойПанели.Дейс


Ужас.
11 Wobland
 
09.11.11
10:25
(10) а это (4) и (6) и (7) обязательно. иначе не разобраться ;)
что за конфигурация? может, уже всё придумано до нас
12 svchernova
 
09.11.11
10:26
(9) Очень много. приходится переписывать все формы, организовывать командные интерфейсы, да и много чего ещё. Причем код нужно переписывать не один к одному, а с поправкой на клиент-серверную архитектуру, а вот это как раз самое сложное, на мой взгляд.
13 svchernova
 
09.11.11
10:27
(11) Конфигурация собственная, несколько лет уже эксплуатируется. переводим на 8,2
14 svchernova
 
09.11.11
10:28
(4) там диалогов нет, но есть запросы.
15 Wobland
 
09.11.11
10:29
(13) завидую. будет очень интересно жить ;)
вот что в данном случае придумать, чтобы диалоги на сервере исключить? пускай серверная процедура молча возвращает результат своей работы, а клиент уже по результату ругается, спрашивает что-то и т.п.
16 Stepa86
 
09.11.11
10:30
(10) это все потому, что на упр. форме работа с кнопками не через обработчики, а через команды теперь, да и действие доступно тока в толстом

(14) в модуле РаботаСДиалогами нет диалогов???? ощущение, что меня обманывают где то
17 ilpar
 
09.11.11
10:31
а не надо жаловаться . Тебя предупреждали. Ты повела себя возможно непрофессионально. На каком этапе перевод БП на упр. Формы ?
18 svchernova
 
09.11.11
10:34
(17) Описала командный интерфейс, создала справочники, пару обработок, теперь вот один документ нужно перевести на УФ. В общем, начальный этап.
19 svchernova
 
09.11.11
10:36
(16) Через команды, да. Так как эту проблему решить теперь? Вообще отказаться от общих модулей? Ужас. всё перелопатить в модуль формы документа? ещё один ужас.
20 Stepa86
 
09.11.11
10:39
(19) если б было все так просто, то УПП2.0 уже выкинули б на рынок... Почти все методы, которые работали из обычных форм в управляемых работать не будут, поэтому это все нужно переписывать... нашу конфу на 8.2 я переписывал методом "посмотрел что было раньше, удалил, написал заного под 8.2"
21 svchernova
 
09.11.11
10:39
и ещё такой вопрос.. правильно я понимаю или нет. Клиентская процедура может вызвать серверную, но никак не наоборот. Это так?
22 svchernova
 
09.11.11
10:40
(20) Ты для тонкого клиента делал?
23 Stepa86
 
09.11.11
10:50
(21) да
(22) и для веб-клиента в том числе
24 svchernova
 
09.11.11
10:58
(23) и я тоже.. Ты какой веб-сервер ставил?
25 svchernova
 
09.11.11
10:59
(23) не могу писать сейчас, на обед ухожу. У меня была большая проблема с клиентским сертификатом. я её решила, но как-то коряво всё.. Может быть, и другие решения есть для этого. через час напишу, не теряйся, пожалуйста
26 afk
 
09.11.11
11:00
(0), (23) а отчеты тоже переписывать под УФ приходится?
27 Stepa86
 
09.11.11
11:03
(26) если отчет на СКД, то можно конструктором форму зафигачить, если на построителе - переписывать на СКД
28 Stepa86
 
09.11.11
11:05
(24) я не ставил, а разрабатывал... ставит у нас Одмин. а так апача локально
29 acsent
 
09.11.11
11:09
Большинство типового кода написанного до УФ нельзя использовать в УФ.
Только ручками заного писать
30 afk
 
09.11.11
11:15
(27) это приемлемо :)
31 afk
 
09.11.11
11:15
(29) ппц
32 svchernova
 
09.11.11
12:15
(26) Отчеты ещё не делала.. там нужно будет обычные отчеты под 8.2 переписывать.
(31) Да.. ты прав.
33 svchernova
 
09.11.11
12:15
(28) Там у вас работа с клиентскими сертификатами была?