Имя: Пароль:
1C
1С v8
Создать глобальную ТЗ в УТ11
, ,
0 Umka2008
 
23.05.12
13:35
Раньше в 8.1 модуле приложения создавал глТаблица = Новый ТаблицаЗначений. А в УФ не катит, ругается, что ТаблицаЗначений на сервере не катит ... Где мне ее иницировать? Чтобы затем из разных мест программы обращаться?
1 Wobland
 
23.05.12
13:36
(0) она ж на клиенте "не катит", не? подход неверный
2 Umka2008
 
23.05.12
13:38
мне она нужна на клиенте
3 1C-band
 
23.05.12
13:40
(0) Инициализировать, разумеется, на сервере.
4 Umka2008
 
23.05.12
13:41
(3) вот в каком модуле?
5 Ranger_83
 
23.05.12
13:42
говорят временное хранилище помогает,но доступно вроде как на сервере
6 Wobland
 
23.05.12
13:43
&НаКлиенте
Процедура СоздатьТЗ(Команда)
    ИнициализироватьТЗ();
КонецПроцедуры

&НаСервере
Процедура ИнициализироватьТЗ()
   ТЗ=РеквизитФормыВЗначение("Объект.ТЗ", Тип("ТаблицаЗначений"));
   ТЗ = Запрос.Выполнить().Выгрузить();
КонецПроцедуры



тут что-то недописано..
7 aristar
 
23.05.12
13:44
(0) а можно поинтересоваться с какой целью нужна глобальная ТЗ?
8 арах
 
23.05.12
13:46
судя по всему тут опять пресловутое не понимание что нельзя предавать тз с клиента на сервер и обратно:)
9 Ranger_83
 
23.05.12
13:48
(8)а ты можешь объяснить почему?
10 арах
 
23.05.12
13:50
нужно глобальную тз на клиент делай в общем модуле используемом на клиенте если надо на сервере соответственно делай серверный общий модуль
ну или попробуй сделать КлиентСерверный общий модуль (может прокатит не тестил:))
11 aristar
 
23.05.12
13:50
(9) Она просто недоступна. Вот тут уже обсуждалось v8: ТаблицаЗначений недоступна на Тонком Клиенте?
12 Buster007
 
23.05.12
13:51
(9) а что тут объяснять? кому надо тот попробует и ему платформа скажет почему нельзя ) и хоть ты через временное хранилище, хоть ещё через любое свое хранилище, но ТЗ на клиенте ты не увидишь.
13 Ranger_83
 
23.05.12
13:58
То,что она не доступна я знаю.Также знаю,что при необходимости можно передать на клиента массив.
Но с точки зрения логики платформы,т.е.чем это обусловлено нигде так и не могу найти.
А обращаться к ТЗ можно и на сервере.Тс так и не объяснил для чего ему глТЗ
14 zak555
 
23.05.12
13:59
(2) параметтры сеанса
15 MadHead
 
23.05.12
14:00
(14) там фиксированная таблица значений.
16 MadHead
 
23.05.12
14:02
(14) вернее и там нет таблица значения
17 zak555
 
23.05.12
14:16
(15) (16) хранилище значений отменили ?
18 zak555
 
23.05.12
14:17
только это всё ерунда, ибо никакх ТЗ автору не нужно

просто нужно переделать алгоритм
19 Ranger_83
 
23.05.12
14:18
(18)нужно в голове сломать стереотипы 8.1
20 Umka2008
 
23.05.12
14:30
19 - а кто против? Таблица является таблицей кодировки. Содержит много строк (100-150), заполнять ее хочу один раз, а затем обращаться. Если можно через хранилище - как сделать?
21 zak555
 
23.05.12
14:30
(20) что за таблиц кодировок - подробнее
и как часто она правится
22 Umka2008
 
23.05.12
14:40
документ в EAN-128 кодирует. Каждую букву номера дока в код. И это соответствие хранится в ТЗ
23 Ranger_83
 
23.05.12
14:43
(22)И часто тебе нужно эту таблицу инициировать?
24 aristar
 
23.05.12
14:57
(20) использоваться она должна на клиенте или на сервере?
25 Umka2008
 
23.05.12
15:00
24 - на сервере, там процедурки будут к ней обращаться (глобальные тоже)
26 zak555
 
23.05.12
15:02
(25) ты будешь отвечать на все вопросы или нет ?
27 Umka2008
 
23.05.12
15:04
21 - она постоянная, инициируется 1 раз при открытии программы
28 программистище
 
23.05.12
15:06
чем список значений не устраивает?
или массив структур
29 kotletka
 
23.05.12
15:08
(28)+1, хотя к 1с аналогичный вопрос, чем их тз неустроило
30 Umka2008
 
23.05.12
15:10
мне нужен поиск по 2 полям в разных случаях. Таблица имеет структуру
глКодировка128 = Новый ТаблицаЗначений;
глКодировка128.Колонки.Добавить("Код");
глКодировка128.Колонки.Добавить("Символ");

НоваяСтрока = глКодировка128.Добавить();НоваяСтрока.Код = 13;НоваяСтрока.Символ = "-";
НоваяСтрока = глКодировка128.Добавить();НоваяСтрока.Код = 16;НоваяСтрока.Символ = "0";
И нужно либо по коду, либо по символу. Список значений никак
31 zak555
 
23.05.12
15:11
засунь всё в РС
32 Umka2008
 
23.05.12
15:13
31 - а может в Справочник? )))))) Править конфу - добавляя объекты - нет возмости
33 Ranger_83
 
23.05.12
15:14
(32)ХранилищеОбщихНастроек попробуй использовать
34 Stepa86
 
23.05.12
15:17
модуль с кешем на сеанс, в нем 4 функции:

ПолучитьСоответствиеКодаПоСимволу() - возвращает наполненное соответствие
ПолучитьСоответствиеСимволПоКоду() - возвращает наполненное соответствие на основе первого

КодСимвола(пСимвол) в котором Возврат ПолучитьСоответствиеКодаПоСимволу()[пСимвол];
СимволКода(пКод) Возврат ПолучитьСоответствиеСимволПоКоду()[пКод];
35 zak555
 
23.05.12
15:22
> нет возмости

почему же ?

а код ты где сейчас пишешь ?
36 Ranger_83
 
23.05.12
15:25
В демо-базе наверное ))
37 Umka2008
 
23.05.12
15:26
(35) ну просто легче наверное модуль править, чем метаданные добавлять? Из за ТЗ создавать РС ...
38 Ахиллес
 
23.05.12
15:35
(37) Сделай две ТЗ одну на сервере, другую на клиенте.
39 zak555
 
23.05.12
15:36
(37) легче ?
ты просто ...

по уму - делай РС и обращайся на сервере к нему
40 Stepa86
 
23.05.12
15:38
(39) нафик запросы к базе, если данные статичны на 146% ?
41 Umka2008
 
23.05.12
15:50
Так никто и не сказал - в каком месте создать один раз эту ТЗ ...
42 rutony
 
23.05.12
15:53
(41) Это утопия, это противоречет клиент-серверному 1с
43 MRAK
 
23.05.12
15:54
(41) чем не нравится (34)?
44 Umka2008
 
23.05.12
15:56
у меня кодировка иная - не равна кодам символов стандартным
45 MRAK
 
23.05.12
15:58
(44) ну и в чем проблема?
46 Goggy
 
23.05.12
16:01
Засунь в макет и не парь себе моСк
47 Goggy
 
23.05.12
16:01
(46)->(41)
48 Ranger_83
 
23.05.12
16:11
самый лучший вариант думаю РС,ибо обращаться ко всяким макетам-шмакетам и временным хранилищам для поиска соответствий будет долго и громоздко
49 vvp91
 
23.05.12
16:17
Сделай константу с типом ХранилищеЗначение, в которое пиши данные типа Соответствие.
Примеры использования констант есть в УТ - ПараметрыАдминистрированияИБ, НастройкиВыполненияРегламентныхЗаданий, НастройкиПроксиСервера.

В метод СтандартныеПодсистемыВызовСервераПереопределяемый.ПараметрыРаботыКлиента вставляешь код получения данных своей константы (там даже место под это определено) и работаешь на клиенте со структурой, возвращаемой методом СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().
На сервере просто обращаешься Константы.МояКонстанта.Получить().Получить()

Для поиска по "2-м полям в разных случаях" лучше использовать тип Соответствие - на порядок быстрее будет искать по коду (ключу). Поиск среди 150 символов (значений) через итерацию <Для каждого … Из … Цикл> вообще плевое дело.
50 Umka2008
 
23.05.12
16:59
Кому интересно - получилось вот так:
Создал ПараметрыСеанса.глХранилище128 с типом ХранилищеЗначений.
Затем при НачалеРаботы туда загоняю ТЗ, а потом в процедурах вытаскиваю ее
глКодировка128 = ПараметрыСеанса.глХранилище128.Получить();
51 Stepa86
 
23.05.12
17:01
еси чо с помощью общего модуля с кешем можно хранить ссылку на тз. Естесственно на клиенте она доступна не будет, так как тз на клиенте и не может существовать... зато соответствие прекрасно работает и на клиенте и на сервере
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший