|
Помогите с общим модулем | ☑ | ||
---|---|---|---|---|
0
Ткачев
14.07.11
✎
11:12
|
В Ут 11, в общем модуле пишу процедуру, она все работала, пока не стало надо задать в ней вопрос, вылазит ошибка Процедура или функция с указанным именем не определена (Вопрос)
Процедура ЗакрытиеСмены() Экспорт ... Вопрос("Документ существует...", , РежимДиалогаВопрос.ДаНетОтмена) ... Если делаю так: &НаСервереБезКонтекста Процедура ЗакрытиеСмены() Экспорт ... То ошибка исчезает, но мою процедуру теперь не видят из списка документов, в свойствах общего модуля стоит Сервер. |
|||
1
Scooter
14.07.11
✎
11:13
|
(0)модуль где исполняется?
и вопрос где хочешь задать? |
|||
2
Alex375
14.07.11
✎
11:13
|
Вообще на сервере команды "Вопрос" и "Предупреждение" нельзя вызывать.
|
|||
3
butterbean
14.07.11
✎
11:14
|
кому можно задавать вопрос на сервере??
|
|||
4
mikecool
14.07.11
✎
11:14
|
(2) зато можно сообщениепользователю
|
|||
5
Ткачев
14.07.11
✎
11:16
|
(2)А как сделать ?, надо именно в общем модуле задать вопрос пользователю.
|
|||
6
mikecool
14.07.11
✎
11:17
|
(5) #Если Клиент Тогда
|
|||
7
Alex375
14.07.11
✎
11:17
|
Тогда этот модуль должен выполняться на клиенте, а не на сервере
|
|||
8
Ткачев
14.07.11
✎
11:30
|
(6)Ошибка на вопрос исчезла, если запускаю на сервере то вопрос обходит, если на клиенте, то не видит процедуру.
&НаСервере Процедура ЗакрытьСмену() //ОбменДаннымиТОoffline.ЗакрытиеСмены(); КонецПроцедуры &НаКлиенте Процедура ЗагрузитьСмену(Команда) //ЗакрытьСмену(); ОбменДаннымиТОoffline.ЗакрытиеСмены(); Элементы.ОтчетыОРозничныхПродажах.Обновить(); КонецПроцедуры |
|||
9
Alex375
14.07.11
✎
11:36
|
ты свойства модуля проверь: может он у тебя на сервере только может выполняться. Процедуру вызывай из процедуры, работающей на клиенте.
|
|||
10
Ткачев
14.07.11
✎
11:38
|
(9)Там стоит сервер, если добавляю Клиент, тогда ругаться начинает на Вопрос, Запрос и ТаблицуЗначение, они все в этом модуле.
|
|||
11
Alex375
14.07.11
✎
11:39
|
поставь клиент, а процедуру ограничь #НаКлиенте
|
|||
12
Ткачев
14.07.11
✎
11:41
|
(11)#НаКлиенте
Процедура ЗакрытиеСмены() Экспорт ... {ОбщийМодуль.ОбменДаннымиТОoffline.Модуль(140,2)}: Ожидается оператор препроцессора #<<?>>НаКлиенте (Проверка: Сервер) |
|||
13
Alex375
14.07.11
✎
11:42
|
Ошибся: &НаКлиенте
|
|||
14
Ткачев
14.07.11
✎
11:45
|
&НаКлиенте
Процедура ЗакрытиеСмены() Экспорт ОтчетыРП = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 ... {ОбщийМодуль.ОбменДаннымиТОoffline.Модуль(142,19)}: Тип не определен (Запрос) ОтчетыРП = Новый <<?>>Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 (Проверка: Тонкий клиент) |
|||
15
Alex375
14.07.11
✎
11:46
|
ну да, все верно говорит: на тонком и web клиенте запросы не делаются. Их надо на сервере выполнять
|
|||
16
Ткачев
14.07.11
✎
11:49
|
(15)Тут такая задача, надо в общем модуле обработать документы (Есть Запросы, ТаблицыЗначений и т.п.) и при условии что если что то не так, задать вопрос Пользователю, Процедура общего модуля вызывается из списка документов, вот как ему задать тут этот гребанный вопрос ?
|
|||
17
Alex375
14.07.11
✎
11:52
|
ну так ты можешь создать ФУНКЦИЮ, которая на сервере выполнить проверки и по результатам работы функции на клиенте задавать вопрос.
|
|||
18
Ткачев
14.07.11
✎
12:00
|
Попытался сделать так, вот там где стоит ВернутьВопрос() вот там и надо его задать, от результата ответа, будет зависеть дальнейшее выполнение процедуры.
&НаКлиенте Функция ВернутьВопрос() Возврат Вопрос("1223", РежимДиалогаВопрос.ДаНетОтмена); КонецФункции &НаСервере Процедура ЗакрытиеСмены() Экспорт ... Если РезультатРП.Следующий() Тогда Ответ = ВернутьВопрос(); ... {ОбщийМодуль.ОбменДаннымиТОoffline.Модуль(185,14)}: Процедура или функция с указанным именем не определена (ВернутьВопрос) Ответ = <<?>>ВернутьВопрос(); (Проверка: Сервер) |
|||
19
Alex375
14.07.11
✎
12:16
|
в 8.2 требуется четко разграничивать клиент и сервер. Изначально ты делаешь код на клиенте и уже из клиента вызываешь серверные процедуры/функции.
Вот и построй код так, что бы вопрос остался на клиенте, а обработка на сервере. Скорее всего тебе не надо делать отдельную функцию "ВернутьВопрос". Но скорее всего тебе потребуется 2!!! функции на сервере: первая вернет количество записей запроса, вторая доделает то что тебе надо. |
|||
20
Ткачев
14.07.11
✎
12:30
|
(19)Не 8.2, а в том что на управляемых формах сделано, с обычными формами проблем вооще никаких нету, СПАСИБО за помощь, не стал я с вопросом запариватся сделал принудительную перезапись документа.
Если РезультатРП.Следующий() Тогда Док = РезультатРП.Ссылка.ПолучитьОбъект(); Док.Товары.Очистить(); Иначе Док = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент(); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |