Имя: Пароль:
1C
1С v8
Помогите с общим модулем
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, а в том что на управляемых формах сделано, с обычными формами проблем вооще никаких нету, СПАСИБО за помощь, не стал я с вопросом запариватся сделал принудительную перезапись документа.
               Если РезультатРП.Следующий() Тогда
                   Док = РезультатРП.Ссылка.ПолучитьОбъект();
                   Док.Товары.Очистить();
               Иначе
                   Док    = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
               КонецЕсли;
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший