1с показатьвводстроки не работает в толстом клиенте
14
Для принудительного запуска предприятия в Обычном или Управляемом приложении используются следующие ключи: /RunModeOrdinaryApplication запуск толстого клиента в обычном режиме, несмотря на настройки конфигурации и. 3
Нужно чтобы пользователи не могли менять настроенный для них интерфейс! Решение: Для отключения нужно в правах доступа у корневого элемента конфигурации убрать право " Сохранение данных пользователя ". . 2
В текущей работе пользователь обычно открывает несколько объектов. Это может быть документ, справочник, отчет и т.д. В предыдущем интерфейсе не было проблем быстро найти открытый объект и актуализировать его для. 2
В прошлой статье: Установка адресного классификатора (KLADR) в 1С я рассказал Вам что такое Кладр и как его загрузить в 1С обычные формы (8.0-8.2). В данной статье я расскажу как загрузить Адресный классификатор (KLADR) в. 2
Часто разрабатывая некую конфигурацию, пользователи хотят прикреплять к элементу справочника фото и чтобы они хранились в базе данных. В этой статье я расскажу как к справочнику объекты строительства подключить.
Внедрение нового интерфейса платформы 1С 8.3 — "такси" — привело к тому, что пользователи и программисты столкнулись с ошибкой следующего содержания: "Использование модальных окон в данном режиме запрещено".
Рис. 1
Разработчики технологической платформы 1С стремятся преуспеть за мировыми тенденциями путем приведения программного обеспечения в соответствие с мировыми стандартами. Последнее же неминуемо приводит к единому интерфейсу, близкому к веб-страницам.
Модальные и всплывающие окна, будучи признаком дурного тона, уже давно были признаны недопустимыми при разработке софта. В сознании пользователей твердо укоренилась потребность работы "в одном окне".
Разработчики платформы 1С предприняли попытку приобщить разработчиков прикладных решений к работе "по-новому". С внедрением нового интерфейса "такси", они дополнили новую платформу новой функцией — "режим использование модальности".
Быстрое исправление проблемы
В условиях отсутствия времени при необходимости быстро разрешить задачу, можно прибегнуть к достаточно простому, но не слишком правильному решению — следует всего лишь изменить режим модальности в свойствах конфигурации.
С этой целью зайдите в систему в режим конфигуратор, откройте конфигурацию:
После этого нажатием на корень конфигурации правой кнопкой мыши откройте контекстное меню, выберите "Свойства":
Рис. 3
В открывшихся свойствах конфигурации во вкладках найдите "Режим использования модальности", в нем выберите "Использовать":
Рис. 4
Сохраните и примените совершенные изменения нажатием клавиши "F7".
Реализовано в версии 8.3.3.641.
1С:Предприятие использует модальные окна в тех ситуациях, когда от пользователя требуется ввод информации, без которой невозможно дальнейшее выполнение алгоритма. При этом полностью блокируется весь остальной интерфейс программы, а исполнение программного кода останавливается до тех пор, пока пользователь не закроет модальное окно.
С появлением веб-клиента и с переходом 1С:Предприятия на мобильные платформы, модальные окна оказались источником большого количества неудобств и проблем, зачастую неразрешимых.
Как правило "десктопные" браузеры лучше или хуже, но поддерживают модальные окна и открывают их в новом окне браузера как "всплывающее окно":
Но из-за того, что технология всплывающих окон массово используется в Интернете для размещения рекламы, практически во всех браузерах стандартно отключен показ всплывающих окон. В подавляющем большинстве случаев без изменения этой настройки браузера работа веб-клиента становится невозможной.
Другая проблема заключается в том, что мобильные браузеры вообще не поддерживают модальные окна. И чтобы 1С:Предприятие могло в них работать, в веб-клиенте был реализован специальный механизм. Это достаточно сложный механизм и он, к сожалению, не покрывает все необходимые ситуации. В результате работа конфигураций на iPad, например, обеспечивается с большим трудом.
В такой ситуации вариант работы интерфейса 1С:Предприятия без использования модальных окон снимает все перечисленные выше проблемы.
При этом не происходит отказа от функциональности, которая обеспечивалась ранее модальными окнами. Но эта функциональность реализуется другими технологиями, которые не препятствуют работе 1С:Предприятия в браузерах.
В новом режиме работы интерфейса окно, которое раньше было бы модальным, рисуется в пределах родительского окна, и точно так же блокирует весь остальной интерфейс веб-клиента:
- не происходит открытия новых окон браузера, что повышает производительность и стабильность веб-клиента;
- во многих случаях дополнительная настройка браузера становится ненужной, так как 1С:Предприятие больше не использует всплывающие окна;
- любая конфигурация, используя веб-клиент, может работать на iPad и других мобильных устройствах.
Естественно, чудес не бывает, и новый режим работы невозможно включить "взмахом волшебной палочки". Требуется изменение логики работы с новыми, блокирующими окнами. Но хорошая новость заключается в том, что эти изменения несложные, и есть возможность проконтролировать все "подозрительные" места программы. В платформе реализован специальный механизм, позволяющий на этапе разработки проверить, что вся конфигурация использует новые механизмы и будет работать без модальных окон.
Необходимость изменения логики работы с такими окнами вызвана тем, что новый режим работы интерфейса обеспечивает модальность лишь для пользователя. Однако для разработчика, в момент отображения блокирующего окна, исполнение программного кода не останавливается.
А значит алгоритм, который раньше являлся одним целым, теперь придётся разделить на две части. Одну, которая заканчивается открытием блокирующего окна, и вторую, которая будет выполнена тогда, когда пользователь закроет это окно. Чтобы система знала, с какого места продолжать исполнение программного кода, блокирующему окну передаётся имя процедуры, которая должна быть выполнена тогда, когда пользователь закроет это окно.
Суть этих изменений проще всего увидеть на примере. Старая процедура, открывавшая модальное окно и обрабатывавшая полученные им данные, могла выглядеть так:
В новом варианте для формы ФормаВводТекста (которая будет открываться в блокирующем окне) нужно установить свойство РежимОткрытияОкна в значение БлокироватьВесьИнтерфейс . Это обеспечит модальность для пользователя:
А программный код вместо одной процедуры, как раньше, будет содержать уже две процедуры:
В первой процедуре открываем форму. При этом в последнем параметре мы передаём ей местонахождение второй процедуры, которая будет выполнена после того, как пользователь закроет окно. В данном случае эта процедура расположена в этом же модуле, но вообще может находиться и в другом.
Когда пользователь введёт данные и закроет форму, они будут обработаны в указанной нами второй процедуре, в которую мы просто перенесли "старый" код, обрабатывающий полученные данные.
Кроме форм, которые разработчик может открыть в модальном режиме (по своему желанию), существуют методы встроенного языка, которые всегда, независимо от желания разработчика, открывали модальные формы для ввода или выбора данных. Например, метод ВвестиЗначение() .
Использовать такие методы в немодальном режиме ещё проще. Для всех таких методов в платформе сделаны методы-дублёры, при вызове которых нужно так же указать местонахождение процедуры, которая будет выполнена после того, как пользователь закроет окно.
Например, ниже показано использование старого метода ВвестиЗначение() и его нового метода-дублёра ПоказатьВводЗначения() :
Нужно сказать что, помимо перечисленных случаев, некоторые механизмы платформы тоже используют модальные окна для взаимодействия с пользователем. И это уже никак не зависит от действий разработчика.
Поэтому все такие системные диалоги платформы также переведены на немодальный вариант работы.
Планируется постепенный отказ от использования модальных окон в прикладных решениях. Поэтому для совместимости с прикладными решениями, написанными ранее, в платформе сохранена возможность работы в старом варианте интерфейса, с использованием модальных окон.
В данной статья показан механизм изменения программного кода, на примере вопроса пользователю, при отключенном модальном режиме.
Периодически, при разработке программного продукта, возникает потребность спросить пользователя о выполняемых дейтсвиях. К примеру, при автоматическом заполнении табличных частей. Когда перед перезаполнением ТЧ необходимо спросить пользователя о необходимости это сделать. И в зависимости от его ответа ТЧ будет очищена и перезаполнена, или нет.
Часть кода с вопросом может выглядеть примерно так:
Если ТЧ. Количество() 0 Тогда Ответ = Вопрос(" // В этой строке произойдет вывод модального окна с вопросом и выполнение кода остановится до ответа пользователя Если Ответ = КодВозвратаДиалога. Нет Тогда Возврат ; КонецЕсли ; // Пользователь согласился продолжить ТЧ. Очистить() ; КонецЕсли ; // Выполнение дальнейших действия // Сюда программа попадет если ТЧ была пустая или пользователь положительно ответил на вопрос о перезаполнении ВыполнениеДальнейшихДействий() ;
При отключенном модальном режиме в строке с вопросом этого кода произойдет ошибка и дальнейшее выполнение прервется. Это произойдет потому, что функция Вопрос использует модальное окно.
В этой ситуации необходимо пользоваться процедура ПоказатьВопрос. При использовании данной процедуры не ожидается завершение ответа пользователя. Но первым параметром данной процедуры является описание оповещения, с помощью которого отслеживается ответ пользователя.
Как изменится раннее написанный код:
// Необходимо заполнить ТЧ данными // Проверка ТЧ на заполненность Если ТЧ. Количество() 0 Тогда // ТЧ не пустая, необходимо спросить пользователя о перезаполнении ПоказатьВопрос(Новый ОписаниеОповещения(" ПерезаполнениеТЧЗавершение " , ЭтотОбъект, ДополнительныеПараметры) , " ТЧ будет перезаполнена. Продолжить ? " , РежимДиалогаВопрос. ДаНет) ; // В этой строке произойдет вывод окна с вопросом, но выполнение кода не остановится Иначе // Сюда программа попадет если ТЧ была пустой ВыполнитьДальнейшиеДействия() ; КонецЕсли ; // Сюда программа попадет в любом случае, была ТЧ пустая или нет // (если, конечно, не произошло ошибки в предыдущем коде) . . . // Экспортная процедура в том же модуле // Вызывается после ответа пользователя на вопрос & НаКлиенте Процедура ПерезаполнениеТЧЗавершение(РезультатОтвета, ДополниетельныеПараметры) Экспорт Если РезультатОтвета = КодВозвратаДиалога. Нет Тогда // Пользователь отказался от продолжения Возврат ; КонецЕсли ; // Выполнение дальнейших дейтсвий // Сюда программа попадет если ТЧ была не пустая и пользователь положительно ответил на вопрос о перезаполнении ТЧ. Очистить() ; ВыполнитьДальнейшиеДействия() ; КонецПроцедуры
Таким образом, так как программа не остановится при выполнении процедуры ПоказатьВопрос, необходимо аккуратно обработать все события
При решении данной задачи выполнение дальнейших действий может произойти при двух событиях:
1. Если ТЧ была пустой
2. Если ТЧ была не пустой и положительном ответе пользователя на вопрос перезаполнении
И, соответственно, так как программа не останавливается в ожидании ответа пользователя, то и вызов этих событий приходится разносить в разные части кода.
Поэтому, как правило, все выполняесые методы, которые необходимо выполнить после проверки ТЧ на заполненность, помещают в отдельную процедуру.
Подобный механизм используется при подобных функциях взаимодействия с пользователем (ВыборЗначения, ВыбратьИзСписка и т.п.)
«Использование модальных окон в данном режиме запрещено» — такая ошибка сейчас начинает беспокоить пользователей и программистов 1С с приходом нового интерфейса платформы 1С 8.3 — « «.
Разработчики технологической платформы 1С идут в ногу со временем, стандартизируя своё решение под мировые стандарты разработки программного обеспечения. Все стандарты так или иначе сводятся к единому интерфейсу, близкому к веб-страницам.
Модальные и всплывающие (pop-up) окна считаются плохим тоном и уже давно перестали быть нормальным при разработке софта. Пользователи привыкли к работе «в одном окне».
Особенно часто мы видим ошибку модальности у следующих методов 1С:
- Вопрос;
- Предупреждение;
- ОткрытьЗначение.
Разработчики платформы 1С 8 с выходом нового интерфейса «такси» приняли верное решение — попытаться переучить разработчиков прикладных решений на новый лад. Они включили в новую платформу возможность — «режим использования модальности».
Быстрое исправление проблемы
Если нет времени разбираться и нужно быстро решить задачу, предлагаем простое, но не совсем правильное решение. Для быстрого исправления ошибки достаточно сменить режим модальности в свойствах конфигурации.
Для этого зайдите в систему в режиме , откройте конфигурацию:
В открытой конфигурации вызовите контекстное меню, нажав на корень конфигурации правой кнопкой, выбрав «Свойства»:
Получите 267 видеоуроков по 1С бесплатно:
Откроются свойства конфигурации, где в подвале есть интересующее нас свойство — «Режим использования модальности», выберите режим «Использовать»:
После этого сохраните и примените изменения, нажав клавишу «F7».
Правильное решение задачи
Правильный способ решения этой проблемы — доработать конфигурацию или внешнюю обработку под новые требования.
Предупреждение, вопрос, диалоговые окна и другие модальные окна — всё это необходимо переписывать на новый лад.
Встроенные операторы, которые вызывали модальные окна, необходимо заменить на дублирующие функции.
- Предупреждение — ПоказатьПредупреждение;
- Вопрос — ПоказатьВопрос (подробно — );
- — ПоказатьВводЧисла.
При этом появился специализированный объект — ОписаниеОпевещения.
Строка = "" ; ВвестиСтроку(Строка, "Введите строковое значение" ) Сообщить("Вы ввели " + Строка) ;
Необходимо заменить на:
Строка = "" ; ОписаниеОповещения = Новый ОписаниеОповещения( "ТестовыйВводСтроки" , ЭтаФорма) ; ПоказатьВводСтроки(ОписаниеОповещения, Строка, "Введите строковое значение" ) ;
При этом добавить подобную процедуру на клиенте, которая отработает, когда значение будет введено пользователем:
Формы, которые разрабатываются внутри конфигурации, открываются точно так же. Достаточно заменить метод «ОткрытьФормуМодально» на «ОткрытьФорму», прописав описание оповещения и нужную для него новую процедуру.
Чтобы открывающейся формой закрыть доступ к вызываемой форме, достаточно в свойстве формы указать в свойстве «РежимОткрытияОкна» значение «Блокировать окно владельца»:
О том, что это за клиенты такие и зачем вообще может понадобиться переключаться между ними написано здесь.
1. Запустите окно выбора баз 1С, выберите нужную базу и нажмите кнопку "Изменить":
3. Ещё раз нажмите кнопку "Далее":
4. И вот теперь в качестве основного режима запуска выберите "Тонкий клиент" или "Толстый клиент". Если этой настройки у вас нет - вам сюда.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Как, наверное, из кода ясно, обработка запрашивает строку, затем разрешение продолжения, открывает модально форму, в которой нужно указать, следует ли далее вводить число, дату и булево значения. Затем рандомно задаётся целое число, в каждом цикле до заданного числа запрашивается (если выбрано, что нужно вводить) число, дата и булево. И, наконец-то, формируется показ предупреждения.
Да, пример притянут за уши. Да, в работе будут другие примеры. Более сложные.
Делаем рефакторинг средствами 1С
Если мы сделаем рефакторинг средствами 1С: ставим курсор на любом модальном вызове, щёлкаем правую кнопку мыши, выбираем Рефакторинг - Модальные вызовы - Преобразовать модальные вызовы модулей.
И наступает пичалька:
А когда мы поймём, где не получилось хорошо - в блоке цикла - становится совсем грустно.
И ещё рефакторинг разбил нашу процедуру на 4 разные процедуры.
А есть ли другая возможность? Если ли возможность эмулировать функции, как у нас было при модальных вызовах? Нет?
Конечно же есть.
Рефакторинг через структуру данных
Идея заключается в том, что все данные последовательно писать, а затем проверять имеющееся значение. Если его нет - вызывать ввод этого значения и завершать процедуру. После ввода проверять есть это значение или нет. Если есть, то идти к следующей проверке.
Алгоритм нашего примера будет таков:
1.Проверяем, есть ли структура для записи данных. Её нет - создаём.
2.Проверяем, есть ли в этой структуре введённая строка. Нет - уходим на вызов ввода (передав туда структуру), а эту процедуру завершаем. После ввода строки вновь вызываем нашу процедуру.
3.Проверяем, что введённая строка в структуре наших данных есть. И если значение строковое, идём далее. (Ну а если Неопределено - пользователь отказался от ввода строки - завершаем).
4.Проверяем, что нет в структуре ответа на вопрос. Вызываем ПоказатьВопрос, передав туда нашу структуру. А нашу процедуру завершаем.
5.По ответу проверяем, что пользователь нажал кнопку Да. Иначе уходим.
6.Открываем форму (передав туда структуру и завершив текущую процедуру).
7.После закрытия формы вновь вызываем процедуру.
8.Если нет в структуре числа строк цикла перебора - генерируем рандом и получаем число строк.
9.И вот теперь самое интересное - приходим на цикл: в нашу структуру пишем массив. Который будет содержать [ЧислоСтрок] структур 'табличных' данных.
10.Добавляем структуру - строку массива.
11.Если нужно вводить число (это мы выбрали в открытой форме п.6) и это число в данную структуру не введено - посылаем структуру (завершив эту процедуру) во ввод числа.
12.Если нужно вводить дату - повторяем как в пункте 11.
13.Если нужно вводить булево, опять повторяем как в п.11.
Не забываем после каждого ввода завершить нашу процедуру! Таким образом вызов вноь идёт с начала процедуры проверяя уже введённые данные.
nn.Для каждого из [ЧислоСтрок] повторяем пп.10-13.
Шаг 1. Создаём структуру:
[варинат кода №1. Есть структура для хранения данных]
Шаг 2.Необходимость ввода чисел, дат и булево пишем в структуру. И выделяем показ предупреждения
Предупреждение ничего не решает. Хотя это наш 1-ый псевдомодальный вызов. Поздравляю.
Шаг 3. Создаём вызовы пока для тех, кто не в цикле
Обратите внимание: здесь мы перевели ВвестиСтроку на ПоказатьВводСтроки, Вопрос на ПоказатьВопрос и ОткрытьФормуМодально на ОткрытьФорму и после каждого этого вызова завершаем нашу процедуру:
а после каждого завершения - запускаем нашу процедуру.
а если строку 'возвращаем' в Неопределено или Ответ в 'Нет', то выходим совсем.
Шаг 4. Теперь для тех кто в цикле
Точно также проверяем, что число / дату / булево требуется вводить и они не введены. Посылаем программу на ввод данных и завершаем процедуру. Она получает ввод и вновь запускает нашу процедуру. Вновь проверяет все введённые данные и приходит к невведённым.
Вот и всё! Работает! Можно смело идти в свойства конфигурации и ставить 'Режим использования модальности' - 'Не использовать'. Если это единственная обработка с модальными вызовами, конечно.
'Русская весна. А что дальше?!'
Процедур всё равно много. И сидят они в одной единственной обработке. А как сделать, чтобы модальные в псевдомодальные м.б.переделать во всей конфигурации?
Но мы не были бы мы, русскими программистами, если бы не сделали отдельный модуль для псевдомодальных вызовов.
Пересяем все эти вызовы в общий клиентский модуль, например, 'АсинхронныеВызовы'. А чтобы узнавать, куда потом 'стучаться', передавайте также в дополнительные параметры текущий модуль и имя процедуры:
в общем модуле для каждого вызова сделаем завершение. По переданному имени процедуры узнаём какую процедуру нужно вызвать. Другого [универсального] способа я не нашёл (оператор выполнить не поддерживается на веб-клиенте):
Метод Сообщить в 1С
Метод Предупреждение в 1С
Этот метод имеет следующий синтаксис:
Текст предупреждения – или непосредственно текст предупреждения, или переменная с типом строка;
Таймаут — число, которое указывает, сколько секунд будет отображаться окно с предупреждением, необязательное поле, по умолчанию 0;
Заголовок окна – текст или переменная с типом строка, это значение будет в заголовке окна с предупреждением.
В качестве примера, на форме обработки я создал команду, в которой вывожу предупреждение:
И результат работы:
А если установить таймаут (второй параметр), то через указанное количество секунд окно закроется.
Замечу, что этот метод работает только тогда, когда у конфигурации включен режим использования модальности. Посмотреть на то, какое значение у этого режима можно в палитре свойств конфигурации:
Если у свойства «Режим использования модальности» установлено значение «Использовать» или «Использовать с предупреждениями», то методом Предупреждение можно пользоваться, иначе, если установлено значении «Не использовать», возникнет ошибка «Использование модальных окон в данном режим запрещено!».
В конфигурациях с таким режимом использования модальности следует применять метод ПоказатьПредупреждение.
Метод ПоказатьПредупреждение в 1С
У этого метода похожий синтаксис:
Описание оповещения о Завершении – описание процедуры, которая будет вызвана после закрытия окна предупреждения.
Просто, первый параметр оставляем пустым.
Замечу, что метод ПоказатьПредупреждение работает как с включенной, так и с выключенной модальностью, поэтому в Ваших разработках я рекомендую применять именно этот метод!
Подробно о том, как работает метод ПоказатьПредупреждение с первым параметром «Описание оповещения о завершении» читайте в статье ниже:
Более подробно и основательно начальные вопросы программирования в 1С вы можете изучить в
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
После того, как Вы установили платформу, создали пустую конфигурацию (или установили какую-нибудь учебную демо-конфигурацию), то при запуске стартера 1С Вы увидите две кнопки: «1С Предприятие» и «Конфигуратор» (для этого необходимо выделить какую-нибудь базу из списка, см. рис. 1.1.1).
Рис. 1.1.1. Стартер 1С
По большому счету это и есть два основных вида клиентских приложений.
Что же вообще такое клиентское приложение? Клиентское приложение — это программа, установленная на компьютере пользователя, которая осуществляет взаимодействие пользователя с системой «1С: Предприятий». По сути, мы имеем два основных вида программ, в которых может работать пользователь: это конфигуратор, где программист ведет разработку прикладного решения, и предприятие, где пользователь работает с данными и по алгоритмам, разработанным программистом. Так было в платформах 8.0 и 8.1. С появлением платформы 8.2, а потом и платформы 8.3, количество клиентских приложений увеличилось.
После выхода платформы 8.2, «1С: Предприятие» в режиме пользовательского приложения может работать в тонком и толстом клиенте, а также появился web-клиент, который позволяет работать с «1С: Предприятием» из web-браузера.
Итого, на данный момент существует четыре вида клиентских приложений:
- «Тонкий клиент»
- «Толстый клиент»
- Web-клиент
Почему появилась необходимость разделения обычного клиентского приложения на три вида: «тонкий», «толстый» и web-клиент? Виной этому развитие технологий вообще и интернета в частности. Очень часто стала появляться необходимость в работе с «1С: Предприятием» через сеть интернет, и это стало накладывать определенные ограничения, поскольку пропускная способность сети интернет гораздо уже, чем обычной локальной сети. Поэтому те технологии платформы, которые существовали при редакциях 8.0 и 8.1, стали неприменимы в новых реалиях. Как следствие, была разработана платформа 8.2, в которой обычное приложение разделилось на три вида: «толстый», «тонкий» и web-клиент.
Разберем все виды клиентов подробнее.
«Тонкий клиент»
Начнем с «тонкого клиента». «Тонкий клиент» — это такой вид клиентского приложения «1С: Предприятия», под которым возможна работа по сети Интернет. По своей сути он только отображает данные на форме или в отчете, из «тонкого клиента» нет доступа к объектным типам, а также нельзя выполнять под ним запросы. Ресурсы устройства, на котором запущен тонкий клиент, используются только для вывода данных на экран дисплея, все вычисления, запросы и алгоритмы должны выполняться на стороне сервера. Под этим видом клиента нельзя работать в конфигураторе.
Этот вид клиентского приложения поставляется в виде отдельного дистрибутива, который так и называется «Тонкий клиент 1С:Предприятия для Windows», скачивается с сайта 1С (при наличии ИТС-подписки) и устанавливается на локальной машине. Исполняемый файл в операционной системе Windows называется 1Cv8с.exe.
Разберем работу «тонкого клиента» по разными протоколами. Первым делом, начнем с привычного нам TCP/IP (кто не знает, это самый распространенный протокол работы локальной сети Ethernet). Возможны два варианта работы с тонким клиентом по сети Ethernet: клиент-серверный вариант и работа с файловой базой.
Рассмотрим оба этих варианта работы «1С: Предприятия»:
Файловый вариант применим, когда работает один или несколько пользователей в рамках небольшой сети, а также в том случае, когда не используются большие объемы данных или громоздкие вычисления. В этом варианте работы все данные расположены в одном файле 1Cv8.1CD, который так и называется – файловая база данных «1С: Предприятия». Схематически работу файлового варианта можно представить так:
Рис. 1.1.2 Схематичное представление работы файлового варианта
Клиент-серверный вариант имеет более сложную структуру. Он предназначен для работы большого числа пользователей и для громоздких вычислений массивных объемов данных. Всего у этого варианта три звена: клиент – это приложение, на котором ведет работу конечный пользователь; кластер серверов «1С: Предприятия» – это программа, которая обеспечивает взаимодействие клиента и системы управления базой данных; SQL — сервер (система управления базами данных) – специальная программа, предназначенная для организации базы данных и её хранения. Схематично можно представить так:
Рис. 1.1.3 Схематичное представление работы клиент-серверного варианта
Вернемся к «тонкому клиенту». Как было выше сказано, это клиентское приложение посредством протокола TCP/IP может работать как c вариантом файловой базы, так и с вариантом клиент-серверной архитектуры.
При файловом варианте работы (рис. 1.1.4) «тонкий клиент» взаимодействует непосредственно с файловой базой данных. При этом на стороне «тонкого клиента» организуется специализированная серверная среда, которая, по сути, эмулирует работу сервера. Эта специализированная серверная среда не выделяется отдельным процессом в операционной системе, а входит в процесс «тонкого клиента». Она берет на себя загрузку прикладной конфигурации и прочие серверные действия, необходимые для нормального функционирования «тонкого клиента».
В случае клиент-серверного варианта (рис 1.1.5) «тонкий клиент» напрямую взаимодействует с кластером серверов «1С:Предприятия» посредством локальной сети Ethernet. В этом варианте принципы работы точно такие же, как и для «толстого клиента».
Почему же нужно применять «тонкий клиент» при работе по локальной сети, когда для этого можно работать под «толстым клиентом»? Не всегда в локальной сети предприятия используются хорошие быстрые машины, способные на себя брать какие-то вычисления. Очень часто это могут быть «убитые в хлам» компьютеры, и в данном случае работа под «тонким клиентом» вполне оправдана. При работе в «тонком клиенте» по локальной сети проходят меньшие объемы данных, все вычисления ведутся на сервере, а не на локальной машине, и поэтому устанавливаются более низкие требования к производительности компьютеров, на которых запущен этот вид клиентского приложения (в том случае, когда используется клиент-серверный вариант работы базы).
Теперь перейдем к работе с «тонким клиентом» через сеть Internet. Работа с этим видом клиентского приложения посредством сети Internet возможна как в файловом варианте, так и в клиент-серверном варианте.
В этой книге мы не будем подробно разбирать механизмы настройки «тонкого клиента» и web-клиента для работы через интернет, а коснемся только общих моментов, для того чтобы Вам был понятен принцип действия.
И последняя важная особенность «тонкого клиента»: под ним у Вас нет возможности работать с конфигуратором. Когда Вы запустите «тонкий клиент», то кнопка «конфигуратор» в стартере 1С будет отсутствовать (см. рис 1.1.8). В принципе, это логично: нет смысла давать доступа к «тяжелому» конфигуратору, когда у Вас ограничены ресурсы сети.
Рис. 1.1.8. Вид окна запуска «тонкого клиента»
Web-клиент
Следующий интересный вид клиента, который мы разберем, это web-клиент. Этот вид клиентского приложения необходим для работы только по сети Internet. Причем, если для работы «тонкого клиента» на локальной машине необходимо было устанавливать программное обеспечение, то для работы под web-клиентом этого делать не нужно. Вся работа с данным клиентом может осуществляться посредством интернет-браузера (Mozilla, Opera, Internet Explorer и др.). Это очень удобный вид «тонкого клиента»: любой пользователь, в любой точке мира с любого устройства может запустить интернет-браузер, ввести адрес web-сервера, где опубликована база, и получить доступ к этой самой базе. Нет необходимости ни в скачивании, ни в установке какого-либо программного обеспечения.
Web-клиент может работать как с обычной файловой базой, так и с клиент-серверной архитектурой. Единственно, что в обоих случаях, как и в случае работы «тонкого клиента» посредством сети Internet, необходимо на стороне сервера установить специальное программное обеспечение – web-сервер (как правило, это Apache или IIS).
Принципы работы web-клиента в случае файловой базы и клиент-серверной архитектуры представлены на рис. 1.1.9 и 1.1.10
![]() | ![]() |
Рис. 1.1.9. Схема работы web-клиента в файловом варианте | Рис. 1.1.10. Схема работы web-клиента в клиент-серверном варианте |
«Толстый клиент»
«Толстый клиент» — это основной вид клиента, под которым можно осуществлять нормальную работу с «1С: Предприятием». Под этим видом клиента доступна практически вся функциональность, предоставляемая встроенным языком программирования 1С. Например, под ним можно работать с запросами и с прикладными типами.
Одна из особенностей «толстого клиента» то, что он поддерживает работу в обычном режиме, т.е. под «толстым клиентом» Вы можете запускать приложения, разработанные под платформами 8.1 и 8.0. – обычные приложения. А также в управляемых приложениях запускать обычные формы, что естественно нельзя сделать в «тонком клиенте».
Про обычные и управляемые приложения мы подробно поговорим в следующей главе.
«Толстый клиент» устанавливается обычным дистрибутивом и в операционной системе Windows запускается исполняемым файлом 1Cv8.exe.
Поскольку для работы с «толстым клиентом» необходимы значительные вычислительные мощности, то связываться с базой данных можно или напрямую, или посредством локальной сети Ethernet. Этот вид клиентского приложения может работать как с файловой базой данных, так и с клиент-серверной архитектурой (по протоколу TCP/IP).
В том случае, когда используется клиент-серверный вариант работы «толстого клиента» (рис. 1.1.13), то «толстый клиент» по локальной сети подключается к кластеру серверов «1С:Предприятия», а кластер серверов взаимодействует с SQL-сервером (СУБД). Причем кластер серверов и СУБД могут находиться на разных компьютерах, администратор имеет возможность их разнести, чтобы оптимизировать производительность серверов.
С файловой базой «толстый клиент» может работать как напрямую: файл базы расположен на том же компьютере, где установлен «толстый клиент», — так и по локальной сети (рис.1.1.12). В том случае, если идет взаимодействие с файловой базой данных по локальной сети, к ней должен быть предоставлен полный доступ через общий сетевой ресурс.
И как уже должно быть понятно, «толстый клиент» — это единственное пользовательское приложение, из которого Вы можете свободно открыть конфигуратор и вести разработку. Никакое другое пользовательское приложение «1С:Предприятия» это сделать не позволяет. Когда Вы запустите «толстый клиент», то в окне запуска увидите кнопку «Конфигуратор» (см. рис. 1.1.11).
Рис. 1.1.11 Окно запуска «толстого клиента»
![]() | ![]() |
Рис. 1.1.12. Схема работы «толстого клиента» в файловом варианте | Рис. 1.1.13. Схема работы «толстого клиента» в клиент-серверном варианте |
И в заключение приведем таблицу, которая наглядно дает понять, чем отличаются эти три вида клиентских приложений: «толстый клиент», «тонкий клиент» и web-клиент.
«Толстый клиент» | «Тонкий клиент» | Web-клиент | |
Работа с конфигуратором | + | — | — |
Работа по локальной сети Ethernet | + | + | + |
Работа по сети Internet | — | + | + |
Требуется установка дистрибутива | + | + | — |
Работа с файловой базой | + | + | + |
Работа с sql-сервером | + | + | + |
Работа с обычными приложениями | + | — | — |
Работа с управляемыми приложениями | + | + | + |
Открытие обычных форм в управляемых приложениях | + | — | — |
Табл. 1.1.1 Отличия различных клиентских приложений.
Легкое и быстрое освоение программирования в 1С с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Уникальная авторская методика!
Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
- Без сложных технических терминов.
- Более 700 страниц практического материала.
- Каждое задание сопровождается рисунком (скриншот).
- Сборник задач для домашней проработки.
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Читайте также: