Автоматизация бизнеса

Установка, настройка, внедрение и сопровождение любых конфигураций на платформе 1С:Предприятие. 

e-mail: info@programmist1c.ru

Минимальный объем работ от 50 000 рублей
  •   Удаленный админ
  •   Карта сайта
  •   Контакты


  • Поиск
     

    v8: Программирование для системы клиент-сервер в 1С 80 для чайников

    Как правильно пользоваться разделением кода на клиентскую и серверную часть.
    Автор статьи: Гений 1С | Редакторы: ZolotarevAA
    Последняя редакция №3 от 18.12.06 |


    Ключевые слова: клиент,сервер,язык,чайник


    В 80 появилась возможность указывать, какая часть кода будет компилироваться для сервера, какая для клиента, какая - для обоих сразу.
    Для общего модуля в свойствах можно указать, где будет копилироваться его код - на клиенте, сервере, или на обоих сразу.
    В модулях объектов можно выделить участки кода, которые будут компилироваться на клиенте или на сервере.
    #Если Клиент Тогда
    
    #КонецЕсли
    
    
    #Если Сервер Тогда
    
    #КонецЕсли
    


    Для модулей форм нет смысла указывать такое разделение - формы выполняются только на клиенте.

    Что означает разделение на клиентскую и серверную часть? Просто из большого куска программы (понимаем совокупность всех модулей) формируется подкусок для клиента и подкусок для сервера.

    Часто начинающие программисты попадают на ошибку, когда они объявляют функцию в участке для клиента и эта функция недоступна на сервере. Таким образом при запуске программы у них выдается ошибка компиляции модуля - функция такая-то не определена.

    На сервере не скомпилируется код, содержащий обращения к интерфейсу (Сообщить, Состояние, Вопрос) и на сервере не определены клиентские интерфейсные типы данных (Макет, Таблица и т.п.).

    На сервере невозможна отладка, отладчик 1С не работает на сервере.

    Для проверки правильности написания кода и разделения его по клиенту и серверу в конфигураторе существует пункт меню "Контроль конфигурации" - указав галки "Клиент" и "Сервер" можно проверить, правильно ли скомпилируется программа для клиента и для сервера.

    Если функция или процедура скомпилирована и на сервере и на клиенте, то место ее выполнения совпадает с расположением выдывающей команды. Т.е. если она вызывается из процедуры, расположеной на сервере, то выполнится код, скомпилированный на сервере, а если вызывающая функция расположена на клиенте (например форма документа), то выполнится код, скомпилированный на клиенте.

    Общие рекомендации такие:

    * Функции общего назначения помещайте в блок для клиента и сервера. Если в такой функции встречаются клиентские вызовы, например Сообщить или Состояние, то берите их в скобки ЕслиКлиент.

    * Обычно в модуле объекта нужно выделить только клиентские участки скобками ЕслиКлиент, например процедура печати документа. Остальные процедуры чаще всего носят общий характер.

    Из опыта Гения 1С - когда у меня начался бардак с клиент-сервером, я поборол его так:

    В основном все модули у меня были клиент-серверные.
    В каждом модуле я сначала выделил скобками ЕслиКлиент явные интерфейсные функции.
    Затем я пробежался по функциям общего назначения и выделил скобками ЕслиКлиент различные вызовы Сообщить, Состояние.
    За несколько итераций вызова "Контроль конфигурации" я добился, чтобы не было ошибок клиент-сервера.
    21.02.18 | 10:31


    30.11.16 | 20:25


    28.11.16 | 09:22


    26.11.16 | 08:19


    22.11.16 | 20:17


    19.11.16 | 10:14


    18.11.16 | 20:09




    Внедрение 1С Автоматизация 1С Доработка 1С Сопровождение 1С Обслуживание 1С Программирование 1С 8 Hастройка 1С Карта сайта Контакты