главное отличие 8.х от 7.7

Главное, на мой взгляд , отличие - это введение исполнения кода на сервере и на клиенте. Не надо этого пугаться, кто программировал на других языках , например Qt(C++), и кто работал с базами данных вообще в 21 веке - везде применяется модель представление данных - база данных. Они разделены. На экран пользователю выдается картинка , например таблица, и кнопки для манипуляций с ней. Но кнопки не изменяют напрямую данные, а только передают инструкции (на стандартном языке) в базу данных , где и выполняется изменение,удаление,добавление и т.д. данных. Зачем это делается? Для скорости выполнения , для систем с многими пользователями.

На языке 1С8 код написанный :
&На Клиенте - это представление данных (форма, кнопочки на форме, обработка нажатий кнопочек и т.д.).
&На Сервере - тот , где непосредственно идет работа с данными.

Сразу отмечу , что похоже у любого Объекта 1С8 есть "Табличные части" (причем из может быть много). Так вот непосредственная работа с ними - ТОЛЬКО &На Сервере! Сделано это естественно для скорости выполнения. Так вот не путайте "Таблицу Значений (Формы)" и "Табличную часть". Так вот "Таблица Значений" (Формы) изменяется на стороне Клиента (&На Клиенте), а "Табличная часть" &На Сервере.

Таким образом если мы хотим, например , создать обработку для работы со списком Справочника Номенклатура (чтобы массово изменять Наименования, коды, Артикулы) надо создать "Табличную Часть" (во Внешней Обработки) и заполнить ее данными Справочника Номенклатура (это делается естественно &На Сервере). Но важно не забыть:

    &НаСервере
  • Вначале обязательно ! : ОбъектФормыНаСервере = РеквизитФормыВЗначение("Объект");
  • иначе доступ к "Табличное части" не получить
  • тч=ОбъектФормыНаСервере.тч1;
  • потом непосредственно заполнение табличной части
  • стр=тч.Добавить();
  • ....
  • В конце обязательно ! : ЗначениеВРеквизитФормы(ОбъектФормыНаСервере, "Объект"); , иначе данные на форме не отобразятся.