Имя: Пароль:
1C
1С v8
Почему не находит функцию?
,
0 Rizhij_Nikitos
 
14.09.11
11:10
Почему не находит функцию, хотя она определена?

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


Вот ошибка.
{Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента.Форма(1256,20)}: Процедура или функция с указанным именем не определена (ПроверкаПокупателя)
         ОтменаЗаписи = <<?>>ПроверкаПокупателя(); (Проверка: Сервер)
1 zak555
 
14.09.11
11:11
г@вно код ?
2 AleksAnt
 
14.09.11
11:11
Видимо на сервере не знают какие функции определены на клиенте:)
3 mikecool
 
14.09.11
11:12
(0) не, реально такое выравнивание кода?
4 Шапокляк
 
14.09.11
11:13
А вообще прикольненько. Ход успевает дойти до серверной процедуры записи. Раньше задать на клиенте вопрос не судьба, видать.
5 zak555
 
14.09.11
11:14
(0) кому должен быть обращён вопрос, если проводишь программно ?
6 zak555
 
14.09.11
11:15
ОтменаЗаписи = ПроверкаПокупателя();
         ОтменаЗаписи = Истина;
       Если ОтменаЗаписи Тогда
           Возврат;
       Иначе



так маня пишет
7 unregistered
 
14.09.11
11:16
(5) Программно он вряд ли будет выполнять вообще этот код. Код то на форме. Если только не станет программно создавать форму и из неё записывать.
8 mikecool
 
14.09.11
11:16
(6) да ладно.. )))
9 Шапокляк
 
14.09.11
11:16
А так кто пишет?
         ОтменаЗаписи = ПроверкаПокупателя();
         ОтменаЗаписи = Истина;
10 IamAlexy
 
14.09.11
11:18
(9) да ладно.. нормальная логика.. человек что думает то и пишет в коде...

типа

.. а теперь проверим покупателеля....
.. а хотя.. и х.й сней, с проверкой..

:)

нормально все.. что думаю то и программирую...
11 zahar140382
 
14.09.11
11:21
(10) лучше так: 1:Тебя как зовут Вася?
               2:нет сережа!
12 zahar140382
 
14.09.11
11:21
(11)   продолжение 1:Будешь Светой
13 Rizhij_Nikitos
 
14.09.11
11:21
(9) последнее это уже не то ) суть была такова, при записи, должна быть проверка пустое ли поле покупатель, и должно ли оно быть розничным, если есть скидки, то не по сути не должно, поэтому должен выйти диалог в ответе на который, и должны быть действия.
//ОтменаЗаписи = ПроверкаПокупателя();
 //       //    Если ОтменаЗаписи Тогда
     //      Возврат;
      // Иначе
Короче все это в коментах должно быть. а В оригинале все было так
ОтменаЗаписи = ПроверкаПокупателя();
           Если ОтменаЗаписи Тогда
           Возврат;
       Иначе
14 Defender aka LINN
 
14.09.11
11:22
(0) Если кто не заметил, она клиентская.
15 Rizhij_Nikitos
 
14.09.11
11:22
Я конечно понимаю, но почему не определяет функцию или процедуру вот мой вопрос.
16 Ненавижу 1С
 
гуру
14.09.11
11:24
(15) сервер не видит клиента
17 Шапокляк
 
14.09.11
11:25
(10) Скорее, так:
.. а теперь проверим покупателеля....
.. а хотя.. и х.й сней, с проверкой..все равно не буду записывать.
(15) Счас тебе еще 100 раз объяснят, что в серверных процедурах не видят клиентских, а ты опять спросишь.
18 AleksAnt
 
14.09.11
11:26
(15) или как было на форуме: сервер вопрос будет задавать стенке в серверной?
19 Rizhij_Nikitos
 
14.09.11
11:26
Сорри но я не особо понимаю сарказма в сообщения выше, (16) пасибо за ответ.
20 zahar140382
 
14.09.11
11:27
(18) 5 балов ))))
21 Rizhij_Nikitos
 
14.09.11
11:28
Не просто в идеале я думал будет так, на сервере данные обработаются, потом сервер пошлет клиенту вопрос, и примет от него ответ, и получится такая схема: Сервер(обработка)-Клиент(Ответ)-Сервер(действия). НО видимо я до сих пор не понимаю &НаКлиенте, &НаСервере, что они точно значат.
22 zahar140382
 
14.09.11
11:28
Rizhij_Nikitos  а чем тебе был это не ответ? (2)
23 Rizhij_Nikitos
 
14.09.11
11:30
(22) я же вроде написал, я сарказм особо не понимаю.
24 Ненавижу 1С
 
гуру
14.09.11
11:30
(21) ты про клиент-сервер читал когда-нибудь? или про MVC (аналогия)?
Модель данных (сервер у тебя) понятия не имеет о представлении  данных (клиенте)
25 Allexe
 
14.09.11
11:36
(21) На клиенте создаешь функцию и обращаешься к процедуре на сервере. Она обрабатывается и возвращает в переменную на клиенте значение, т.к. была вызвана с клиента. А так с чего сам по себе сервер будет что-то клиенту возвращать?
26 Allexe
 
14.09.11
11:37
+25 В первом предложении поменять местами функцию и продедуру
27 Rizhij_Nikitos
 
14.09.11
11:38
(26) пасибо за помощь, сделал примерно как ты описал, просто сам вопрос стал интересным.
28 jenny_tea
 
14.09.11
11:38
Вызовите эту функцию В процедуре ПередЗаписью Клиентской
Независимо от того, куда вы едете — это в гору и против ветра!