1C сервисы реализация по-страничного вывода данных
Пишу web проект на .net, который работает с 1С базой(MSSQL) через сервисы. Можно ли в 1С запрашивать не ВСЕ данные в списках, а только 20, причем например так: пропустить 60, вывести 20. Сам не пишу в 1С, но если вы напишите мне примерно, как это реализовать, я покажу 1С программисту, куда ему копать.
На данный момент решение к которому мы пришли: я из программы соединяюсь напрямую с 1С базой и делаю SQL запрос в котором прописываю нужные условия.
ВЫБРАТЬ ПЕРВЫЕ 20
ЗаказКлиента.Ссылка
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
НЕ ЗаказКлиента.Ссылка В ИЕРАРХИИ
(ВЫБРАТЬ ПЕРВЫЕ 60
ЗаказКлиента.Ссылка
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
УПОРЯДОЧИТЬ ПО
ЗаказКлиента.Дата)
УПОРЯДОЧИТЬ ПО
ЗаказКлиента.Дата
Эх… Я только начинаю проект, а уже вижу кучу проблем. Ненравится такой подход. Как я вижу 1С сам генерит динамические запросы и встроенными 1С запросами «даже не нужно» делать что-то типа OFFSET :(
Объем данных-то какой? Может быть сделать обновляемый кэш в виде индексируемой коллекции на стороне 1С(очевидное решение — ТаблицаЗначений), и отдавать данные из него? Тогда по индексам можно делать выборку обычным циклом for. Но это потребует значительного кол-ва памяти на сервере 1С(кэш держать в памяти и обновлять его).
Можно изгольнутся, но тоже ресурсоёмко: kb.mista.ru/article.php?id=703
Списки бухгалтерских операций, а их может быть много..15000 строк с 30 реквизитами, например. Не хочется все это гонять по сети на каждый запрос к листу. Смысл в том, что я не хочу зависеть от общего количества, лишь столько, сколько надо.+ Хочется выбирать данные на стороне 1С.
Лучше всё же какое-то кэширование реализовать, если не в память, то хоть во временную таблицу. Каждый такой запрос с нумерацией будет приличное время выполняться, хоть данные и не будут полностью по сети перекачиваться.
Понимаю, просто с кэшами точно незнаю. За ними ведь все время следить надо, чтоб обновлялись при обновлении данных + часто не только ключ-значение нужны. Может я вас неверно понял и в 1С есть какой-то простой механизм следить за всем этим делом? Спасибо за советы, подумаем и про кэши.
Не думаю, что в 1с есть какой-то механизм для работы с кешем, тем более простой. Можно как у MySQL хранить результат выполненного запроса, скажем минут 10-15, а вообще лучше через настройки.