ТаблицаЗначений в тонком клиенте.
Написал вот такую функцию.
&НаСервере
Функция ПолучитьКонтрагентов()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование,
| Контрагенты.НаименованиеПолное,
| Контрагенты.ИНН,
| Контрагенты.КПП,
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
ТЗ = Запрос.Выполнить().Выгрузить();
Возврат ТЗ
КонецФункции
Но в тонком клиенте не работает ТаблицаЗначений.
Так как получить список всех контрагентов??? Для последующей обработки.
УТ 11.1
&НаСервере
Функция ПолучитьКонтрагентов()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование,
| Контрагенты.НаименованиеПолное,
| Контрагенты.ИНН,
| Контрагенты.КПП,
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
ТЗ = Запрос.Выполнить().Выгрузить();
Возврат ТЗ
КонецФункции
Но в тонком клиенте не работает ТаблицаЗначений.
Так как получить список всех контрагентов??? Для последующей обработки.
УТ 11.1
По теме из базы знаний
- Добавление дополнительных отчетов и обработок в тонком клиенте.
- Универсальная обработка для просмотра движений любого документа по всем регистрам в тонком клиенте для любых конфигураций 1С 8.2-8.3
- Конструктор результата системы компоновки данных для работы с деревом значений в тонком клиенте.
- Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы
- Простой способ программно открыть заполненную форму нового (незаписанного) документа в тонком клиенте
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) furman2000, Привожу свой кусок кода как я такие ситуации обходил
&НаСервере
Процедура ОбновитьДокументыПоКонтрагенту()
ОбъектСправочник = РеквизитФормыВЗначение("Объект", Тип("СправочникОбъект.Котрагенты"));
ТекущийКонтрагент = ОбъектСправочник.Ссылка;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РеализацияТоваровРаботУслуг.Ссылка,
| РеализацияТоваровРаботУслуг.Контрагент,
| РеализацияТоваровРаботУслуг.Примечание
//| РеализацияТоваровРаботУслуг.Товары.(
//| Сумма(Сумма) как СуммаТовары
//| ),
//| РеализацияТоваровРаботУслуг.Услуги.(
//| Сумма(Сумма) как СуммаУслуги
//| )
|ИЗ
| Документ.РеализацияТоваровРаботУслуг КАК РеализацияТоваровРаботУслуг
|ГДЕ
| РеализацияТоваровРаботУслуг.Контрагент = &Контрагент";
Запрос.УстановитьПараметр("Контрагент", ТекущийКонтрагент);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество()> 0 тогда
Пока Выборка.Следующий() цикл
НовСтрока = ОбъектСправочник.ОказаниеУслуг.Добавить();
НовСтрока.Документ = Выборка.Ссылка;
//НовСтрока.СуммаДокумента = Выборка.СуммаТовары + Выборка.СуммаУслуги;
КонецЦикла;
КонецЕсли;
ЗначениеВРеквизитФормы(ОбъектСправочник, "Объект");
КонецПроцедуры
Показать
(8) dusha0020, а Вы господь бог и точно знаете, что будет обрабатываться и как? Я вот не знаю.
И как вариант, когда оправдано хранение ТЗ на клиенте, для последующей обработки в другом сеансе &НаСервере.
Или еще вариант, как показать данные, получаемые сложным запросом? Динамический список тут бессилен. Или ТЗ, или дерево.
И как вариант, когда оправдано хранение ТЗ на клиенте, для последующей обработки в другом сеансе &НаСервере.
Или еще вариант, как показать данные, получаемые сложным запросом? Динамический список тут бессилен. Или ТЗ, или дерево.
(10) spacecraft, "Вы" можно было бы написать с маленькой, а вот "господь бог" нужно обязательно с заглавных. А то обижусь:(
А если по сути вопроса...
ТЗ на клиенте хранить не нужно никогда. Для этого есть хранилище значений. Передавайте адрес в серверную процедуру с клиента и помещайте туда на сервере, а потом передаете адрес в новый вызов сервера. Носить ТЗ с сервера на клиент, а потом обратно на сервер вместо идентификатора - это из пушки по воробьям.
По отображению сложных запросов. Я их отображаю на сервере, передав контекст формы вывода. Этот велосипед называется "ЗначениеВРеквизитФормы()"
А если по сути вопроса...
ТЗ на клиенте хранить не нужно никогда. Для этого есть хранилище значений. Передавайте адрес в серверную процедуру с клиента и помещайте туда на сервере, а потом передаете адрес в новый вызов сервера. Носить ТЗ с сервера на клиент, а потом обратно на сервер вместо идентификатора - это из пушки по воробьям.
По отображению сложных запросов. Я их отображаю на сервере, передав контекст формы вывода. Этот велосипед называется "ЗначениеВРеквизитФормы()"
(12) А если мне необходимо из текстовых файлов, которые находятся на клиенте, взять информацию в ТаблицуЗначений, обработать, предоставить выбор юзеру из результатов организованных в список значений, тогда как быть?
Т.е. база данных вообще не при делах, обработка данных идёт тех которые локально у клиента лежат - гнать файлы на сервер и обрабатывать там чтоли..
Т.е. база данных вообще не при делах, обработка данных идёт тех которые локально у клиента лежат - гнать файлы на сервер и обрабатывать там чтоли..
(13)
Вот здесь и кроется ответ:)
В идеологии клиент-серверной работы ввод-вывод данных - это задача клиента, обработка - сервера.
Передавайте данные для обработки на сервер и возвращайте результат обработки на клиент.
Впрочем, в (14) Вам так и подсказали.
Предвижу возражение, что текста в файлах может быть очень много и не разумно его пересылать на сервер. Но еще менее разумно обрабатывать большие объемы данных на клиенте, который может практически не иметь вычислительной мощности.
взять информацию в ТаблицуЗначений, обработать
Вот здесь и кроется ответ:)
В идеологии клиент-серверной работы ввод-вывод данных - это задача клиента, обработка - сервера.
Передавайте данные для обработки на сервер и возвращайте результат обработки на клиент.
Впрочем, в (14) Вам так и подсказали.
Предвижу возражение, что текста в файлах может быть очень много и не разумно его пересылать на сервер. Но еще менее разумно обрабатывать большие объемы данных на клиенте, который может практически не иметь вычислительной мощности.
(15)
имхо, неразумно было не давать в 7.7 обрабатывать данные на сервере, только на клиенте.
но не менее не разумно в 8.3 не давать обрабатывать данные на клиенте, только на сервере.
разрабы 1с, на мой взгляд бросаются из крайности в крайность )
куда правильнее было бы давать возможность делать выбор разработчику конфигурации где обрабатывать данные.
который может практически не иметь вычислительной мощности.
но ведь может же и иметь ))
имхо, неразумно было не давать в 7.7 обрабатывать данные на сервере, только на клиенте.
но не менее не разумно в 8.3 не давать обрабатывать данные на клиенте, только на сервере.
разрабы 1с, на мой взгляд бросаются из крайности в крайность )
куда правильнее было бы давать возможность делать выбор разработчику конфигурации где обрабатывать данные.
(16)Да обрабатывайте где хотите, хоть на клиенте, хоть на сервере.
Только учитывайте ограничения тонкого клиента.
Что касается таблицы значений, то вы можете создать в форме обработки, в которой выполняете задачу, реквизит формы - ТаблицуЗначений и использовать ее.
Только учитывайте ограничения тонкого клиента.
Что касается таблицы значений, то вы можете создать в форме обработки, в которой выполняете задачу, реквизит формы - ТаблицуЗначений и использовать ее.
(17) так на клиенте же нельзя, хоть хоти хоть нет??
Если я правильно понял то реквизит формы тоже будет находиться на сервере, на клиенте лишь отображение этого реквизита - ТЗ в данном случае - ДанныеФормыКоллекция или что-то подобное, точно не помню как оно там называется )
Если я правильно понял то реквизит формы тоже будет находиться на сервере, на клиенте лишь отображение этого реквизита - ТЗ в данном случае - ДанныеФормыКоллекция или что-то подобное, точно не помню как оно там называется )
(18)
Да, реквизит формы с типом ТаблицаЗначений по сути имеет тип ДанныеФормыКоллекция. Он имеет большинство возможностей таблицы значений и с ним можно работать на клиенте.
В том числе на клиенте можно добавлять строки в такую таблицу и заполнять их значениями.
(18)
Нет, реквизиты есть на клиенте.
ТЗ в данном случае - ДанныеФормыКоллекция
Да, реквизит формы с типом ТаблицаЗначений по сути имеет тип ДанныеФормыКоллекция. Он имеет большинство возможностей таблицы значений и с ним можно работать на клиенте.
В том числе на клиенте можно добавлять строки в такую таблицу и заполнять их значениями.
(18)
Если я правильно понял то реквизит формы тоже будет находиться на сервере, на клиенте лишь отображение этого реквизита
Нет, реквизиты есть на клиенте.
(19)
физически область памяти в которой находится реквизит расположен на сервере или на клиенте?
если мы возьмём на клиенте с локального диска и в реквизит запишем двоичные данные какой-нибудь фильм например гигов на 10 - он будет копироваться на сервер или так и останется на клиенте?
я так всегда думал что только локальные переменные существуют на клиенте, всё остальное только на сервере..
Нет, реквизиты есть на клиенте.
физически область памяти в которой находится реквизит расположен на сервере или на клиенте?
если мы возьмём на клиенте с локального диска и в реквизит запишем двоичные данные какой-нибудь фильм например гигов на 10 - он будет копироваться на сервер или так и останется на клиенте?
я так всегда думал что только локальные переменные существуют на клиенте, всё остальное только на сервере..
(20) все зависит от того, какой это реквизит.
Если рассматривать ДанныеФормыКоллекция, то она не будет целиком передана на клиент, если там много данных.
Далее, еще будет зависеть от того, будет колонка выводится на форму для показа или установлен для нее флаг "ИспользоватьВсегда".
Если выводится или установлен флаг, то данные на клиент будут передаваться партиями. Своего рода паджинация.
Но в любом случае, если с клиент будет обращение к этим самым 10Гб, то они получатся на клиенте (если памяти и времени получения хватит), так и передадутся на сервер, при первом же контекстном вызове сервера.
Если рассматривать ДанныеФормыКоллекция, то она не будет целиком передана на клиент, если там много данных.
Далее, еще будет зависеть от того, будет колонка выводится на форму для показа или установлен для нее флаг "ИспользоватьВсегда".
Если выводится или установлен флаг, то данные на клиент будут передаваться партиями. Своего рода паджинация.
Но в любом случае, если с клиент будет обращение к этим самым 10Гб, то они получатся на клиенте (если памяти и времени получения хватит), так и передадутся на сервер, при первом же контекстном вызове сервера.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)