Имя: Пароль:
1C
 
Тонкий клиент и толстый клиент: обращение к общим модулям...?
0 Обработка
 
31.05.16
09:34
У менять есть почти во всех справочниках в модуле менеджера такое.


Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    
    Если НЕ ОбщегоНазначенияКлиентСервер.ТекущийЯзыкРусский() Тогда
......
......

Так вот в тонком клиенте все работает норм.
А вот запуск в толстом клиенте ругается на отсутсвие функции ТекущийЯзыкРусский()...

Почему, кто чем посоветует???
1 Обработка
 
31.05.16
09:35
+
В общем модуле функция выглядит так:


&НаСервере
Функция   ТекущийЯзыкРусский() Экспорт
    Возврат НЕ ЗначениеЗаполнено(ПараметрыСеанса.ТекущийЯзыкИнтерфейсаПрограммы) ИЛИ ПараметрыСеанса.ТекущийЯзыкИнтерфейсаПрограммы = ПредопределенноеЗначение("Справочник.Языки.Русский");    
КонецФункции //ТекущийЯзыкРусский
2 Обработка
 
31.05.16
09:37
И на самом общем модуле стоит галочки:
Клиент
Сервер
Врешнеее соединение
3 Mankubus
 
31.05.16
09:37
(1)
&НаСервере -- это не нужно в общих модулях
4 b_ru
 
31.05.16
09:37
Так ведь галочки "толстый клиент" на модуле не стоит, вот он и ругается.
5 Обработка
 
31.05.16
09:39
(4) там нет такой галочки...
Их всего три в свойствах модулей.
6 b_ru
 
31.05.16
09:40
(5) То что она не показывается, не значит что ее нет :) Включи режим совместимости конфы - появится.

Ну или не насилуй тру^W толстого клиента.
7 Nuobu
 
31.05.16
09:42
(4) Там есть галочка "Клиент (Обычное приложение)"
8 Обработка
 
31.05.16
09:42
(6) Режим совместимости стоит 8.3.3.
Сама конфа написаная с нуля на 1с.8.3 в режиме такси и по интерфейсу совместим с 8.2
9 Обработка
 
31.05.16
09:43
Обычно в базу я и все юзеры ходят в тонком клиенте.
Но при отладке иногда запускается в толстом...
10 Обработка
 
31.05.16
09:45
(3) Не прав.
11 b_ru
 
31.05.16
09:47
(8) методом тыка выяснил, что галочка появляется, если основной режим запуска установлен в "обычное приложение".
12 Обработка
 
31.05.16
09:48
(6) Путаешь. Свойство модуля в конфе там всего три пункта.
13 Обработка
 
31.05.16
09:50
(11) Увидел. Но это ничего не изменяет. У меня же УФ
14 ДенисЧ
 
31.05.16
09:53
(13) основной режим запуска влияет только на то, как она из конфигшуратора по Ф5 запускаться будет
15 Pistol
 
31.05.16
09:54
(12) Четыре
16 Обработка
 
31.05.16
10:04
(15) Уже понял и увидел из (11).
в (12) ответил.

Но у меня Управлемое приложение.
17 b_ru
 
31.05.16
10:13
(16) Толстый/тонкий клиент и Управляемые/неуправляемые формы - это ортогональные понятия. (Правда, в 1с нет неуправляемых форм в тонком клиенте, но это нюансы).
18 Обработка
 
31.05.16
10:20
(17) Не стоит тут филосовствоаать.
Мне важно решить свою задачу. Как мне поправить самописку чтоб это у меня не возникало. А то уже почти год меня это тревожит . Я не решал эту проблему потому что особо и не запускаю под толстым клиентом. Но вот задался целю код подпраавить.
19 Shrek_yar
 
31.05.16
10:42
Добавь #Если ТонкийКлиент
20 Nuobu
 
31.05.16
10:44
(19) #Если Клиент // это толстый клиент
21 Shrek_yar
 
31.05.16
10:47
(20) ?? поясни
22 Nuobu
 
31.05.16
10:52
(21) Что пояснять?
https://helpf.pro/suffix/view/24.html
23 Обработка
 
31.05.16
11:14
(19)(22) Спасибо за советы.
Я смогу разделить и сделать разные обработчики от отлстого и тонкого клиента.
Но я так и не пойму в чем моя ошибка использования конечной функции. Как мне переписать обращение?
24 Cyberhawk
 
31.05.16
11:33
Поищи в этом модуле инструкцию препроцессора "ТонкийКлиент"
25 Обработка
 
31.05.16
11:44
(24) В модуле прописал. Условие отрабатывается.
Но мне же в ветку иначе надо опять писать код. И я все равно должен обращатся в общий модуль. Или куда мне эту процедуру разместить.

Задача решается если я эту функцию перетащу в модуль менеджера справочника.
Но тогда мне нужно будет во всех справочника перенести эту фукнкцию в модуля менеджеров каждого справочника. Это не есть решение проблемы.
26 Trucker
 
31.05.16
11:45
(2) Зайди в параметры конфигуратара и выстави на закладке Общие Управляемое приложение и обычное приложение. Появится галка Клиент(обычное приложение) у общего модуля.
27 Обработка
 
31.05.16
11:45
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    
    #Если ТонкийКлиент Тогда
        Если НЕ ОбщегоНазначенияКлиентСервер.ТекущийЯзыкРусский() Тогда

            Если СокрЛП(Данные.ФИОТурецкое) = "" Тогда
                 Представление = Данные.Наименование;
            Иначе
                 Представление = Данные.ФИОТурецкое;

             КонецЕсли;    
             СтандартнаяОбработка = Ложь;
         КонецЕсли;    
    #Иначе
         /// ??????????????????? И что тут мне писать ?????
    #КонецЕсли


КонецПроцедуры
28 Feunoir
 
31.05.16
11:49
Я таки не понял ТС из общего модуля директиву &НаСервере уже убрал или пока нет?
29 Обработка
 
31.05.16
11:50
(28) Пробовал убрать сразу ошибку  кажет.
30 Обработка
 
31.05.16
11:51
+(29)
Потому что в нем есть обращение на сервер.- ПараметрыСеанса


//&НаСервере
Функция   ТекущийЯзыкРусский() Экспорт
    Возврат НЕ ЗначениеЗаполнено(ПараметрыСеанса.ТекущийЯзыкИнтерфейсаПрограммы) ИЛИ ПараметрыСеанса.ТекущийЯзыкИнтерфейсаПрограммы = ПредопределенноеЗначение("Справочник.Языки.Русский");    
КонецФункции //ТекущийЯзыкРусский
31 Обработка
 
31.05.16
11:52
А модуль по умоланию и серверный и клиент и даже внешнее соеднение
32 Feunoir
 
31.05.16
11:58
(30) А параметры сеанса в тонком клиенте недоступны.

Поэтому тебе нужно вынести эту процедуру в модуль, у которого стоят галки Сервер и Вызов сервера. Чтобы не переписывать все места где это встречаются нужно сделать заглушку-прокси.
33 Обработка
 
31.05.16
12:23
(32) У меня как раз ошибка вылетает на толстом клиенте.

И еще я в том модуле пробовал включать Вызов сервера не помогает ни как.
34 Feunoir
 
31.05.16
12:57
(33) У меня стойкое подозрение что толстый клиент криво компилит модуль, который по разному присутствует в разных контекстах. Например если при первом вызове к нему обращаются из клиентского контекста, то он его компилит без функции ТекущийЯзыкРусский, а когда потом вызывают в серверном контексте - забывает перекомпилировать.

Или другое сумасшедшее предположение, что в толстом клиенте модуль менеджера работает в клиентском контексте. И вызывает модуль ОбщегоНазначенияКлиентСервер тоже в клиентском контексте. В результате получается болт.
35 Обработка
 
31.05.16
13:04
(34) Я все ждал такого рода ответ или хотя бы рассуждение.
Спасибо.
Сам думаю, оставить разбирать эту ситуацию и просто в толстом клиенте исключить обращение как я выше это попробовал. При этом в толстом клиенте отображение  представления нужных элементов справочников не на русском языке не будет выполнен.
Это в принципе не критично, поскольку все сидят на тонком клиенте. Даже мне нет особой надобности ходить в толстом клиенте.
Но хотел бы для себя и для кургозора понять в чем глюк? Или я криво реализовал или это глюк платформы.
36 Drac0
 
31.05.16
13:04
(27) В модуле ОбщегоНазначенияКлиентСервер должно быть установлены директивы: "#Если &ТонкийКлиент ИЛИ &Сервер", но нету &ТолстыйКлиентУправляемоеПриложение
37 Обработка
 
31.05.16
13:12
" но нету &ТолстыйКлиентУправляемоеПриложение"

Не переварил...
38 Drac0
 
31.05.16
13:31
Тебе ссылку в (22) давали.
39 Обработка
 
31.05.16
13:40
(38) Читал и не раз. Но там нет решения.
40 Drac0
 
31.05.16
13:41
(39) В кикие директивы препроцессора заключена твоя функция?
41 Обработка
 
31.05.16
13:48
Пока просто так:

&НаСервере
Функция   ТекущийЯзыкРусский() Экспорт
Возврат НЕ ЗначениеЗаполнено(ПараметрыСеанса.ТекущийЯзыкИнтерфейсаПрограммы) ИЛИ ПараметрыСеанса.ТекущийЯзыкИнтерфейсаПрограммы = ПредопределенноеЗначение("Справочник.Языки.Русский");    
    
КонецФункции
42 Стальная Крыса
 
31.05.16
13:48
Что-то мудрите господа.
для "толстого клиента" в общем модуле надо так:

#Если НЕ ТолстыйКлиент Тогда
&НаСервере
#КонецЕсли
Функция ...
КонецФункции
43 Стальная Крыса
 
31.05.16
13:49
при совместном использовании "толстого" и "тонкого" вариантов такого геморроя не избежать  принципе
44 hhhh
 
31.05.16
13:51
(41) поставь галки Толстый клиент, Сервер и Вызов сервера

слово &НаСервере убери
45 Обработка
 
31.05.16
13:52
Уже и сам догадался

#Если ТолстыйКлиентУправляемоеПриложение Тогда
    
#Иначе
    &НаСервере
#КонецЕсли
46 Обработка
 
31.05.16
13:52
)))
47 Стальная Крыса
 
31.05.16
13:55
а почему не так

#Если НЕ ТолстыйКлиентУправляемоеПриложение Тогда
    &НаСервере
#КонецЕсли
48 Обработка
 
31.05.16
13:57
ДА не суть все ясно.

Всем спасибо!
49 Drac0
 
31.05.16
14:05
(42) Чой-та бред. Сколько работал с самопиской на УФ, там так не извращались. Хотя работали на Тонком и Толстом одновременно. Плюс сейчас накидал демку - все работает отлично. Вызов из модуля менеджера функции общего модуля с &НаСервере.
50 Обработка
 
31.05.16
14:20
(49) Не знаю что и как?

Писал самописку на 1с8.3.3
Сейчас стоит 1с8.3.7
Режим совместимости стоит на 8.3.3
51 rozer76
 
31.05.16
14:27
(45) это клево конечно но посмотри в типовых - там нет ОМ с галками одновременно и на клиенте и на сервере
52 rozer76
 
31.05.16
14:27
(51) догадываешься почему? )
53 Обработка
 
31.05.16
14:30
(52) Ошибаешься.
Открыл типовую БП для казахстана
вот даже само название говорит%

АдминистрированиеКластераКлиентСервер

АдресныйКлассификаторКлиентСервер

БухгалтерскиеОтчетыКлиентСервер
54 Обработка
 
31.05.16
14:30
Это первые попавшиеся примеры у меня.
55 Обработка
 
31.05.16
14:32
И таких куча. Не открывайте мне америку. А то я подумал тоже.
56 rozer76
 
31.05.16
14:56
(55) почитайте методики разработки на ИТС про проектирование ОМ...