avlag написал:
Вау!
Топикстартер детектед!

Вы, все-таки ответьте не мой вопрос, развейте тьму моего невежества.
Научилась ли система 1С на платформе, отличной от file-based таблиц, не делать операцию select *; fetch all с последующей обработкой всех данных на клиенте?
Все также ли осуществляется блокировка, как спрашивал уважаемый
Пономарев Артем?
Если эти очевидные пробелы до сих пор не устранены, не имеет никакого смысла разговаривать о преимуществе системы, которая не может нормально работать при наличии пары десятков активных пользователей.
В версии 8.0 не только запросы исполняются на стороне сервера но и есть специальная директива препроцессора в коде #Если Сервер Тогда #КонецЕсли, где практически любой неинтерфейсный код можно выполнить на стороне сервера. Язык запросов в отличии от 7.7 основан на механизме виртуальных таблиц, там даже по синтаксису видно что он практически однозначно в SQL перекладывается.
Что касается блокировок табиц (не путать с объектами 1С) там она на уровне строк идет а не как в 7.7 где блокировка целой таблицы даже в MS SQL сервере (найду источник выложу). Что касает блокировок объектов
если не устраивают настройки по умолчанию то можно отдельно задавать режимы для объекта конфигурации или в коде этим управлять
http://www.v8.1c.ru/overview/datalockcontrol.htmЗапросы сейчас пакетные т.е. можно запросы делать в конструкторе, фактически делая из них программный код последовательного исполнения вот пример (все аналоги на английском есть)
Вот например код из экзаменационной задачи
//Запросом сначала получаем таблицу 1 товаров без дублей но количеством и ценой продажи это в дальнейшем ограничитель выборки
//потом таблицу 2 с себестоимостью товара вычисленного по складам
//потом таблицу 3 с количеством остатков товаров выбранному складу
//потом соединяем табл 1-2-3 в итогах вычисляем остаток товара после списания
//После выполнения запроса сначала ищем итоги с отрицательной суммой если их нет идем дальше
Мен=Новый МенеджерВременныхТаблиц;
Запр_Пакет=Новый Запрос;
Запр_Пакет.Текст="ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Номенклатура,
| РасходнаяНакладнаяТовары.Количество,
| РасходнаяНакладнаяТовары.Сумма
|ПОМЕСТИТЬ ТовНеКомплекты
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Номенклатура.Услуга = ЛОЖЬ
| И РасходнаяНакладнаяТовары.Номенклатура.ЭтоГруппа = ЛОЖЬ
| И РасходнаяНакладнаяТовары.Ссылка = &Регистратор
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Номенклатура,
| РасходнаяНакладнаяТовары.Количество,
| РасходнаяНакладнаяТовары.Сумма
|ПОМЕСТИТЬ ТовКомплекты
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Номенклатура.Услуга = ЛОЖЬ
| И РасходнаяНакладнаяТовары.Номенклатура.ЭтоГруппа = ИСТИНА
| И РасходнаяНакладнаяТовары.Ссылка = &Регистратор
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Номенклатура.Родитель,
| Номенклатура.Ссылка,
| Номенклатура.КоличествоВКомплекте,
| Номенклатура.СтоимостьВКомплекте
|ПОМЕСТИТЬ ТовВКомплектах
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Родитель.Ссылка В
| (ВЫБРАТЬ
| ТовКомплекты.Номенклатура.Ссылка
| ИЗ
| ТовКомплекты)
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТовВКомплектах.Ссылка КАК Номенклатура,
| ТовКомплекты.Количество * ТовВКомплектах.КоличествоВКомплекте КАК Количество,
| ТовКомплекты.Количество * ТовВКомплектах.КоличествоВКомплекте * ТовВКомплектах.СтоимостьВКомплекте КАК Сумма
|ПОМЕСТИТЬ ТовПродВКомплектах
|ИЗ
| ТовКомплекты КАК ТовКомплекты
| ПОЛНОЕ СОЕДИНЕНИЕ ТовВКомплектах КАК ТовВКомплектах
| ПО ТовКомплекты.Номенклатура.Ссылка = ТовВКомплектах.Родитель.Ссылка
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеТовары.Номенклатура КАК Номенклатура,
| СУММА(ВсеТовары.Количество) КАК Количество,
| СУММА(ВсеТовары.Сумма) КАК Сумма
|ПОМЕСТИТЬ ТаблТоваров
|ИЗ
| (ВЫБРАТЬ
| ТовНеКомплекты.Номенклатура КАК Номенклатура,
| ТовНеКомплекты.Количество КАК Количество,
| ТовНеКомплекты.Сумма КАК Сумма
| ИЗ
| ТовНеКомплекты КАК ТовНеКомплекты
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТовПродВКомплектах.Номенклатура,
| ТовПродВКомплектах.Количество,
| ТовПродВКомплектах.Сумма
| ИЗ
| ТовПродВКомплектах КАК ТовПродВКомплектах) КАК ВсеТовары
|СГРУППИРОВАТЬ ПО
| ВсеТовары.Номенклатура ;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток,
| ОстаткиНоменклатурыОстатки.СуммаОстаток,
| ОстаткиНоменклатурыОстатки.СуммаОстаток / ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК ЦенаСебестоимости
|ПОМЕСТИТЬ ЦеныСписания
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &Момент,
| Номенклатура.Ссылка В
| (ВЫБРАТЬ
| ТаблТоваров.Номенклатура
| ИЗ
| ТаблТоваров)) КАК ОстаткиНоменклатурыОстатки
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток
|ПОМЕСТИТЬ ОстаткиНаСкладе
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &Момент,
| Склад.Ссылка = &Склад
| И Номенклатура.Ссылка В
| (ВЫБРАТЬ
| ТаблТоваров.Номенклатура
| ИЗ
| ТаблТоваров)) КАК ОстаткиНоменклатурыОстатки
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблТоваров.Номенклатура,
| ТаблТоваров.Количество,
| ТаблТоваров.Сумма,
| ЕСТЬNULL(ОстаткиНаСкладе.КоличествоОстаток, 0) КАК КоличествоНаСкладе,
| ЕСТЬNULL(ЦеныСписания.ЦенаСебестоимости, 0) КАК ЦенаСписания,
| ЕСТЬNULL(ОстаткиНаСкладе.КоличествоОстаток, 0) - ТаблТоваров.Количество КАК КоличествоПосле
|ИЗ
| ТаблТоваров КАК ТаблТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиНаСкладе КАК ОстаткиНаСкладе
| ПО ТаблТоваров.Номенклатура = ОстаткиНаСкладе.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ ЦеныСписания КАК ЦеныСписания
| ПО ТаблТоваров.Номенклатура = ЦеныСписания.Номенклатура
|УПОРЯДОЧИТЬ ПО
| КоличествоПосле";
Запр_Пакет.МенеджерВременныхТаблиц=Мен;
Запр_Пакет.УстановитьПараметр("Регистратор", ЭтотОбъект.Ссылка);
Запр_Пакет.УстановитьПараметр("Момент",ЭтотОбъект.МоментВремени());
Запр_Пакет.УстановитьПараметр("Склад",Склад);
Рез_Пакет=Запр_Пакет.Выполнить();
Если Рез_Пакет.Пустой() Тогда
Отказ=Истина;
Возврат;
КонецЕсли;
Выборка_Пакет=Рез_Пакет.Выбрать();