|
Тонкий клиент, загрузка большого объёма данных (с просмотром и отбором) | ☑ | ||
---|---|---|---|---|
0
Минона
30.11.16
✎
11:42
|
Подскажите, как правильно написать обработку на тонком клиенте (8.3)
Необходимо брать файл (DBF) загружать большое количество строк (порядка 1000), в которых информация из другой системы по отгрузке товара. Строки надо загрузить (в таблицу значений?), иметь возможность просмотреть, отфильтровать и уже нажав [ОК] - создать документ(ы). Отсюда вопросы - как лучше создать объекты, чтобы по минимуму гонять даные "Клиент<- ->Сервер" ? Загрузка в процедуре "&НаСервереБезКонтекста" ? Файл скопировать физически на сервер в Temp папку или не надо? ТаблицуЗначений как реквизит обработки? Не совсем понятно, как хранятся и передаются данные ТЗ (как реквизита формы) при таком раскладе. Типовая БП3.0, редактировать (создавать регистры сведений) нежелательно. |
|||
1
Альбатрос
30.11.16
✎
11:47
|
"большое количество строк (порядка 1000)" =)
Сделайте все на клиенте, думаю будет быстро. |
|||
2
Минона
30.11.16
✎
11:50
|
"Сделайте все на клиенте" - как дать понять приложению, что данные лежат на клиенте и не передаются на сервер? И наоборот.
(я про конкретно описанный выше случай) |
|||
3
IlyaSR
30.11.16
✎
11:51
|
Создай Табличную часть, в нее на клиенте загони данные и работай с ними как хочешь...1000 - это совсем немного
|
|||
4
Минона
30.11.16
✎
12:06
|
"загони данные" - это что?
какой объект использовать и где создавать? |
|||
5
shpioleg
30.11.16
✎
12:14
|
(4) Файл лучше сохранять в отдельном справочнике Загруженные файлы и использовать ссылку на элемент справочника, как основание для движений документа. ИМХО, нечего редактировать файл обмена. Нужно добиваться автоматической правильной загрузки.
|
|||
6
Минона
30.11.16
✎
12:18
|
(5) худший совет.
|
|||
7
shpioleg
30.11.16
✎
12:20
|
(6) А ну давай, вперед. Посмотрим как будешь,например, биллинг грузить напрямую в документ с редактированием и просмотром в табличной части, а не свои несчастные 1000 строк.
|
|||
8
Минона
30.11.16
✎
12:22
|
(7) где в (0) написано про биллинг?
Вы свою задачу решаете или мою? У меня вопрос "как добиться автоматической загрузки" или совсем другое спрашиваю? |
|||
9
Альбатрос
30.11.16
✎
12:28
|
(2) Приложение понимает, что работать надо на клиенте через &НаКлиенте.
Я вобщем далеко профи в упр. формах, но делаю так: - ТЧ как реквизит обработки. - Заполнить ТЧ можно на сервере, соответственно у вас выбор, где читать данные: если на сервере, то файл должен быть доступен серверу, если на клиенте, то передавать загруженные данные через массив структур на сервер. - На сервере по полченным данным заполняете ТЧ и возвращаете клиенту. - Смотрите, редактируете свои строки. - Жмете кнопку СоздатьДокументы и на сервере их создаете. |
|||
10
Альбатрос
30.11.16
✎
12:28
|
(9) далеко не профи =)
|
|||
11
H A D G E H O G s
30.11.16
✎
12:34
|
Нехер серверу заниматься грязной работой.
На Клиенте читаем dbf в массив структур, передаем на сервер безконтектно по значению (ЗНАЧ), на сервере создает ТЗ, в нее заливаем данные из массива структур и ТЗ помещаем во временные таблицы и одним запросом подбираем ссылки |
|||
12
mistеr
30.11.16
✎
12:40
|
Чего только не придумают вместо того, чтобы просто выполнять эту загрузку в толстом клиенте...
А я бы придумал вот что. Файл кинуть на сервер, там загрузить в ТЧ дока и смотри-фильтруй до посинения. После окончания всех манипуляций ТЧ очистить (если места жалко). |
|||
13
Минона
30.11.16
✎
12:43
|
(12) ага, первое предложение было - создать ярлык для толстого клиента и не париться с переделкой обработки (уже есть под толстый)
Но не прокатило. ТЧ дока - их будет несколько. Т.е. по сути группируем данные и загружаем в виде нескольких док-ов. Я думаю "ТЧ дока" - не самый лучший вариант, и реквизиты в ней не все, какие есть в данных |
|||
14
Минона
30.11.16
✎
12:45
|
(9) ок, это понятно.
Непонятно вот что - "ТЧ как реквизит обработки" это ведь ТаблицаЗначений, так? Где она будет храниться? В памяти сервера или клиента? Какой объём данных будет бегать между сервером и клиентом при просмотре и отборе в ТабПоле обработки? |
|||
15
Минона
30.11.16
✎
12:47
|
(11) Подскажите детали плиз!
"помещаем во временные таблицы" - это что значит? И как потом эти временные таблицы выводить на клиенте в ТабПоле ? |
|||
16
shpioleg
30.11.16
✎
12:52
|
(8) Тогда отвечу буквально на твои вопросы.
1. Можно загрузить в этот реквизит простые данные из ДБФ полностью на Клиенте. 2. &НаКлиенте 3. Файл копировать не нужно. 4. Да. Реквизит формы будет иметь тип (ТаблицаЗначений). 5. Как передаются данные этого реквизита платформа сама знает. |
|||
17
Wit77
30.11.16
✎
12:52
|
(0) А что мешает порыться в формах типовых обработок, найти с табличной частью, понять как это работает в тонком клиенте, сделать по подобию у себя и прикрутить заполнение из ДБФ прямо на клиенте.
Потом на сервер передать получившуюся табличную часть через хранилище значений например и там создать документы. Еще, как вариант, сначала почитать книжку про программирование на УФ. Т.к. отличия принципиальные. Сразу скажу в УФ тоже не силен. Практикуюсь редко. |
|||
18
shpioleg
30.11.16
✎
12:56
|
(17) Я тоже написал , что типа можно все сделать на клиенте, но на практике это вряд ли получится.
|
|||
19
Минона
30.11.16
✎
13:00
|
(16) вот пункт 5 очень важен для понимания.
Заполнив ТЗ с "&НаКлиенте" - мы не будем нагружать канал и данные не пойдут на сервер? Будут крутиться чисто на клиенте? И отборы в ТабПоле будут отрабатывать без использования сервера? |
|||
20
Wit77
30.11.16
✎
13:01
|
(18) да ну! табличную часть на форме спокойно можно на клиенте заполнить, а потом ее передать на сервер или через хранилище или как-нибудь "РеквизитФормыВЗначение", а там уже документы создать элементарно. Делал что-то подобное, но давно, а щас на общих формах в основном сижу.
|
|||
21
mistеr
30.11.16
✎
13:02
|
(13) Я про временный док "Загрузка".
|
|||
22
Wit77
30.11.16
✎
13:04
|
(19) вы так интересуетесь нагрузкой канала, не попытавшись даже элементарно форму с табличной частью нарисовать. Это действительно так критично? Вы попробуйте сначала сделать простой вариант, если действительно будет проблема с каналом - переделать уже проще.
|
|||
23
Минона
30.11.16
✎
13:07
|
(22) Нарисовали на основе обработки "для БП2.0", получили проблему "полчаса грузит данные и отрисовывает". Вот и переделываем.
|
|||
24
shpioleg
30.11.16
✎
13:07
|
(19) Для начала колонки какие планируешь в своей ТЗ на клиенте. Например, будет ли в ней колонки содержащие данные которые можно получить только с сервера или будут только простые типы данных из файла?
|
|||
25
Минона
30.11.16
✎
13:16
|
(24) при загрузке идёт сопоставление по коду, т.е. в ТЗ прописываются данные из справочников базы 1С.
|
|||
26
Остап Сулейманович
30.11.16
✎
13:17
|
(20) "а потом ее передать на сервер или через хранилище или как-нибудь". Не нужно ничего никуда передавать.
1. Табличные части вполне ШТАТНО существуют и на сервере и на клиенте. Одновременно. Посмотрите работу с любым документом с табличной частью. 2. Табличная часть обработки ничем не отличается от табличной части документа. Разве что ее нельзя сохранить. 3. В ДБФ всегда приходят простые типы. И вполне себе возможно заполнить табличную часть на клиенте. А потом обработать на сервере. Без никаких никуда передач. |
|||
27
shpioleg
30.11.16
✎
13:18
|
(25) То то и оно. Наша идилия с полной загрузкой на Клиенте сразу рушится.
|
|||
28
Остап Сулейманович
30.11.16
✎
13:21
|
(27) Да просто не нужно вот это вот : "при загрузке идёт сопоставление по коду" выполнять при чтении данных из ДБФ.
Сначала на клиенте прочитали все коды, затем на сервере сопоставили. Опять же все. Не гоняя программу с клиента на сервер для каждой строки ДБФ. |
|||
29
shpioleg
30.11.16
✎
13:24
|
(28) Пользователь на клиенте должен видеть что нашлось, а что нет. Они же собираются засадить пользователя, чтобы он вычищал все косяки при обмене.
|
|||
30
Минона
30.11.16
✎
13:28
|
(29) ну да, грузятся данные, анализируются и группируются, создаются документы
|
|||
31
Остап Сулейманович
30.11.16
✎
13:32
|
(29) Ну так после "сопоставления" на сервере отдать сразу всю ТЧ на клиента для анализа, синтеза и прочих умных веСЧей.
Короче - не нужно гонять туда сюда построчно и все получится. |
|||
32
mistеr
30.11.16
✎
13:32
|
То есть все равно приходим к (12)
|
|||
33
shpioleg
30.11.16
✎
13:38
|
(31) Судя по (23) похоже, что действительно все построчно делают.
|
|||
34
shpioleg
30.11.16
✎
13:42
|
(32) Приходим, но только ТС не знает как это сделать.
|
|||
35
Минона
30.11.16
✎
14:44
|
прикручивать ТЧ документа не хотелось бы
это разве единственный выход? |
|||
36
mistеr
30.11.16
✎
15:08
|
(35) Нет, не единственный. Но для ТЧ оптимизирован клиент-серверный трафик - передаются только измененные строки.
Можно еще регистр и дин. список для показа. |
|||
37
Минона
30.11.16
✎
15:52
|
(36) регистр - это конфу надо менять, и запись в базу делать. не хотелось бы
|
|||
38
shpioleg
30.11.16
✎
16:07
|
(37) Так в чем сейчас у тебя ступор? Определились же.
1.Делаешь свою обработку с ТЗ. 2.На сервере заполняешь ее данными из файла и доп. данными. ((11) почитай. Только там нужен , все же, контекстный вызов сервера) 3.После проверки пользователь жмет Сформировать и на сервере формируешь доки по данным отредактированной ТЗ. |
|||
39
Минона
30.11.16
✎
16:11
|
ОК, спасибо, в эту сторону и будем двигаться.
Хотелось бы ещё понять, как 1С гоняет данные ТЗ с клиента на сервер при заполнении и просмотре ТабПоля - вот на этот вопрос ответа не видно (( |
|||
40
Вафель
30.11.16
✎
16:20
|
(31) все гонять не нужно, можно безконтекстный вызов делать
|
|||
41
shpioleg
30.11.16
✎
16:21
|
(39) Зачем тебе это знать? Просто на сервере полученную ТЗ нужно конвертнуть в реквизит формы (ЗначениеВРеквизитФормы)
Или серверная функция может возвратить массив структур и его разбирать на клиенте и заполнять твою (ТЗ). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |