Главное, на мой взгляд , отличие - это введение исполнения кода на сервере и на клиенте. Не надо этого пугаться, кто программировал на других языках , например Qt(C++), и кто работал с базами данных вообще в 21 веке - везде применяется модель представление данных - база данных. Они разделены. На экран пользователю выдается картинка , например таблица, и кнопки для манипуляций с ней. Но кнопки не изменяют напрямую данные, а только передают инструкции (на стандартном языке) в базу данных , где и выполняется изменение,удаление,добавление и т.д. данных. Зачем это делается? Для скорости выполнения , для систем с многими пользователями.
На языке 1С8 код написанный :
&На Клиенте - это представление данных (форма, кнопочки на форме, обработка нажатий кнопочек и т.д.).
&На Сервере - тот , где непосредственно идет работа с данными.
Сразу отмечу , что похоже у любого Объекта 1С8 есть "Табличные части" (причем из может быть много). Так вот непосредственная работа с ними - ТОЛЬКО &На Сервере! Сделано это естественно для скорости выполнения. Так вот не путайте "Таблицу Значений (Формы)" и "Табличную часть". Так вот "Таблица Значений" (Формы) изменяется на стороне Клиента (&На Клиенте), а "Табличная часть" &На Сервере.
Таким образом если мы хотим, например , создать обработку для работы со списком Справочника Номенклатура (чтобы массово изменять Наименования, коды, Артикулы) надо создать "Табличную Часть" (во Внешней Обработки) и заполнить ее данными Справочника Номенклатура (это делается естественно &На Сервере). Но важно не забыть:
- &НаСервере
- Вначале обязательно ! : ОбъектФормыНаСервере = РеквизитФормыВЗначение("Объект"); иначе доступ к "Табличное части" не получить
- тч=ОбъектФормыНаСервере.тч1;
- потом непосредственно заполнение табличной части
- стр=тч.Добавить();
- ....
- В конце обязательно ! : ЗначениеВРеквизитФормы(ОбъектФормыНаСервере, "Объект"); , иначе данные на форме не отобразятся.