Доброго времени суток. Пытаюсь перевести обработку с обычных форм на управляемые и столкнулся с проблемой. В не процедур и функций была инициализирована таблица значений
Но на управляемых выдает ошибку:
Тип не определен (ТаблицаЗначений)
ТаблицаВидов=Новый <<?>>ТаблицаЗначений; (Проверка: Тонкий клиент)
Не смог найти ответы в интернете, подскажите пожалуйста как с этим работать и правильно инициализировать ТЗ.
ТаблицаВидов=Новый ТаблицаЗначений;
ТаблицаВидов.Колонки.Добавить("НомерВида");
ТаблицаВидов.Колонки.Добавить("Объект");
ТаблицаВидов.Колонки.Добавить("Документ");
ТаблицаВидов.Колонки.Добавить("Вид");
Но на управляемых выдает ошибку:
Тип не определен (ТаблицаЗначений)
ТаблицаВидов=Новый <<?>>ТаблицаЗначений; (Проверка: Тонкий клиент)
Не смог найти ответы в интернете, подскажите пожалуйста как с этим работать и правильно инициализировать ТЗ.
Найденные решения
Управляемые формы "живут" на клиенте и на сервере. Клиент ничего не знает про ТаблицаЗначений, такой тип объекта существует только на сервере.
Процедуры в модуле формы объявляются с дерективами компиляции (&НаКлиенте, &НаСервере и т.д.), что определяет, где будут выполняться эти процедуры и какой контекст им будет доступен. Таблица значений может существовать только на стороне сервера, а значит и процедура по работе с ней должна быть серверной.
Простой пример:
Для ознакомления можно почитать вот это:
https://chelyabinsk.1cbit.ru/blog/upravlyaemye-formy-1s-8-3/
https://xn----1-bedvffifm4g.xn--p1ai/news/2017-03-09-how-server-call-works/
Процедуры в модуле формы объявляются с дерективами компиляции (&НаКлиенте, &НаСервере и т.д.), что определяет, где будут выполняться эти процедуры и какой контекст им будет доступен. Таблица значений может существовать только на стороне сервера, а значит и процедура по работе с ней должна быть серверной.
Простой пример:
&НаКлиенте
Процедура ПолучитьМассив()
СписокДокументов = ПолучитьМассивИзТЗНаСервере()
КонецПроцедуры
&НаСервере
Функция ФункцияПолучитьДокументыИзТЗНаСервере()
МояТаблица = Новый ТаблицаЗначений;
МояТаблица .Колонки.Добавить("НомерВида");
МояТаблица .Колонки.Добавить("Объект");
МояТаблица .Колонки.Добавить("Документ");
МояТаблица .Колонки.Добавить("Вид");
НоваяСтрока = МояТаблица.Добавить();
Возврат МояТаблица.ВыгрузитьКолонку("Документ");
КонецФункции
ПоказатьДля ознакомления можно почитать вот это:
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ТаблицаВидов=Новый <<?>>ТаблицаЗначений; (Проверка: Тонкий клиент)
Открываем справку про ТаблицаЗначений и видим:
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
(3) если не указать дерективу компиляции перед процедурой, она будет считаться серверной. С переменными, насколько я помню, так же. Т.е. объявить её можно будет, она будет существовать только на сервере и будет очищаться между серверными вызовами, т.е. хранить в ней данные получится только в пределах одной цепочки серверных вызовов.
Если нужно хранить данные дольше, то нужен реквизит формы. Его, кстати, можно добавить программно, если форма на поддержке и хочется по минимуму в неё вмешиваться.
Если нужно хранить данные дольше, то нужен реквизит формы. Его, кстати, можно добавить программно, если форма на поддержке и хочется по минимуму в неё вмешиваться.
Управляемые формы "живут" на клиенте и на сервере. Клиент ничего не знает про ТаблицаЗначений, такой тип объекта существует только на сервере.
Процедуры в модуле формы объявляются с дерективами компиляции (&НаКлиенте, &НаСервере и т.д.), что определяет, где будут выполняться эти процедуры и какой контекст им будет доступен. Таблица значений может существовать только на стороне сервера, а значит и процедура по работе с ней должна быть серверной.
Простой пример:
Для ознакомления можно почитать вот это:
https://chelyabinsk.1cbit.ru/blog/upravlyaemye-formy-1s-8-3/
https://xn----1-bedvffifm4g.xn--p1ai/news/2017-03-09-how-server-call-works/
Процедуры в модуле формы объявляются с дерективами компиляции (&НаКлиенте, &НаСервере и т.д.), что определяет, где будут выполняться эти процедуры и какой контекст им будет доступен. Таблица значений может существовать только на стороне сервера, а значит и процедура по работе с ней должна быть серверной.
Простой пример:
&НаКлиенте
Процедура ПолучитьМассив()
СписокДокументов = ПолучитьМассивИзТЗНаСервере()
КонецПроцедуры
&НаСервере
Функция ФункцияПолучитьДокументыИзТЗНаСервере()
МояТаблица = Новый ТаблицаЗначений;
МояТаблица .Колонки.Добавить("НомерВида");
МояТаблица .Колонки.Добавить("Объект");
МояТаблица .Колонки.Добавить("Документ");
МояТаблица .Колонки.Добавить("Вид");
НоваяСтрока = МояТаблица.Добавить();
Возврат МояТаблица.ВыгрузитьКолонку("Документ");
КонецФункции
ПоказатьДля ознакомления можно почитать вот это:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот