Имя: Пароль:
1C
1С v8
ПолучитьИзВременногоХранилища
0 Diademal
 
08.04.17
00:44
Здраствуйте!!! Помогите пожалуйста!!!Проблема вот вчем. Есть 8.3 Сам пишу. Начинающий!! В общем модуле Прописал Функцию:С Возврат ПоместитьВоВременноеХранилище(ТабЗнач, Новый УникальныйИдентификатор);
Куда попадает Несколько значений.
На Общей Форме НаКлинте я Получаю Данные с помощью ПолучитьИзВременногоХранилища. Когда я работаю на сервере База прикрасно раьотает и данные которые я передал получает, но на клиенте Выдает ошибку "Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'. Не знаю что делать.Если какой то выход. Спасибо
1 Franchiser
 
гуру
08.04.17
00:54
1. Вызывайте эту функцию из серверной процедуры
2 создайте реквизит формы типа таблица значений - это будет псевдоним таблица значений
3 чтобы записать тз в реквизит формы используйте значениевреквизитформы()
2 МихаилМ
 
08.04.17
00:55
тонкий клиент не умеет работать с ТЗ
3 Franchiser
 
гуру
08.04.17
00:57
На клиенте может быть только псевдотаблицазначений в фигурных скобках {таблицазначений}
4 Diademal
 
08.04.17
17:39
Если я првильно понял, то сначало в Общем Моделе методом "ЗначениеВРеквизитФормы" я создаю таблицу, а потом В общей форме в реквехите со свойством "ТаблцаЗначений" в процедуре на сервере методом "РеквизитФормыВЗначение" Вытаскиваю Таблицу и передаю её уже дальше. Правильно Понял???
5 Diademal
 
08.04.17
20:34
ЗначениеВРеквизитФормы в Общем Моделе не работает.
значит я В Общем Моделе  прописал

НоваяСтрока.Dat = Выборка.Date;
НоваяСтрока.Регистратор = Выборка.Регистратор;
НоваяСтрока.Customer =Выборка.Регистратор.Customer;
Возврат ПоместитьВоВременноеХранилище(ТабЗнач, Новый УникальныйИдентификатор);


а на форме создал НаСервере обработку при открытиии:

АдресДанных = Общиймодуль.ПолучитьСписокNotesDate();
СписокNotesDate =ПолучитьИзВременногоХранилища(АдресДанных);
значениевреквизитформы(СписокNotesDate,???); Вот тут я остоновился. Как дальше эти данные передать на клиента.

Не знаю правильное моё направление или нет?
6 h-sp
 
09.04.17
06:14
(5) вот так сделай

Возврат ТабЗнач;

конечно пока для тебя это невероятное колдунство
7 Diademal
 
10.04.17
18:27
Спасибо за ответы. Значит я не использую метод ПоместитьВоВременноеХранилище а Возвращаю Просто Возврат ТабЗнач; а В общейФорме Получаю методом "ЗначениеВРеквизитФормы" правильно понял?
Спасибо!!!
8 Diademal
 
11.04.17
18:14
Привет!!! Помогите мозг уже плавиться!!! А очень хочу доделать!!!
Общий модуль:
&НаСервере
Функция ПолучитьСписокNotesDate() Экспорт
    ТД_Дата= НачалоДня(ТекущаяДата());
    
    Массив = Новый Массив;
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |            Ссылка Как Регистратор,
    |            Пользователь,
    |            Customer,
    |            ПометкаУдаления
    |        Поместить Notes
    |            ИЗ
    |            Задача.Notes Как  Notes ;
    |            ВЫБРАТЬ
    |            Регистратор,
    |            Пользователь,
    |            Customer,
    |            ПометкаУдаления,
    |            ЗадачаNotes.Done,
    |            ЗадачаNotes.Date
    |            
    |        ИЗ     Notes     
    |                    
    |            Левое Соединение Задача.Notes.Notes Как ЗадачаNotes
    |            По Notes.Регистратор= ЗадачаNotes.Ссылка
    |            Где Done= Ложь и Date <>   ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)и ПометкаУдаления=Ложь";
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    Имя=ПараметрыСеанса.ТекущийПользователь.Наименование;
    
    ТабЗнач = Новый ТаблицаЗначений;
    ТабЗнач.Колонки.Добавить("Dat");
    ТабЗнач.Колонки.Добавить("Регистратор");
    ТабЗнач.Колонки.Добавить("Customer");
    
    Пока Выборка.Следующий() Цикл
        Если Имя ="Leny" Тогда
            
            Массив.Добавить(Выборка.Date);
            //Массив.Добавить(Выборка.Регистратор);
            
            НоваяСтрока = ТабЗнач.Добавить();
            НоваяСтрока.Dat = Выборка.Date;
            НоваяСтрока.Регистратор = Выборка.Регистратор;
            НоваяСтрока.Customer =Выборка.Регистратор.Customer;
            
        Иначе
            Если Строка(Выборка.Пользователь)=Имя  Тогда
                НоваяСтрока.Dat = Дата(Выборка.Date);
                НоваяСтрока.Регистратор = Выборка.Регистратор;
                НоваяСтрока.Customer =Выборка.Регистратор.Customer;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
        Возврат ТабЗнач;
        //    Возврат ПоместитьВоВременноеХранилище(ТабЗнач, Новый УникальныйИдентификатор);
    
КонецФункции
9 Diademal
 
11.04.17
18:16
Общая Форма В ней есть Элемент Date -Поле календаря
и процедура при открытии на Клиенте

&НаКлиенте
Процедура ПриОткрытии(Отказ)
АдресДанных = Общиймодуль.ПолучитьСписокNotesDate();
    СписокNotesDate = ПолучитьИзВременногоХранилища(АдресДанных);
Для Каждого ЭлементМассива Из СписокNotesDate Цикл
Элементы.Date.ОтображатьТекущуюДату = Истина;
Элементы.Date.НачалоПериодаОтображения =НачалоГода(ТекущаяДата());            
Элементы.Date.КонецПериодаОтображения =КонецМесяца(ТекущаяДата());
Элементы.Date.ВыделенныеДаты.Добавить(ТекущаяДата());            
Элементы.Date.Обновить();  
КонецЦикла;
КонецПроцедуры
Как мне в эту процедуру закинуть даные С общего модуля?????
10 Diademal
 
11.04.17
18:18
&НаСервере
Процедура ПриОткрытииНаСервере()
АдресДанных =Общиймодуль.ПолучитьСписокNotesDate();
ЗначениеВРеквизитФормы(АдресДанных,"Test");
КонецПроцедуры
Но что то не идет. Кучу вариантоа перепробывал. Идей больше нет!!! Help!!!Help!!!Help!!!Help!!!Help!!!
11 Diademal
 
11.04.17
18:21
Где тест это
12 Diademal
 
11.04.17
18:21
рек на форме с свойством таблицаЗначений
13 Diademal
 
11.04.17
18:23
Рекв на форме с свойством таблицаЗначений
14 Йохохо
 
11.04.17
18:46
в (8) ошибка
            Если Строка(Выборка.Пользователь)=Имя  Тогда
НоваяСтрока = ТабЗнач.Добавить(); // это надо
                НоваяСтрока.Dat = Дата(Выборка.Date);
                НоваяСтрока.Регистратор = Выборка.Регистратор;
                НоваяСтрока.Customer =Выборка.Регистратор.Customer;
            КонецЕсли;
15 Йохохо
 
11.04.17
18:49
Процедура ПриОткрытии(Отказ)
АдресДанных = Общиймодуль.ПолучитьСписокNotesDate();
// не надо СписокNotesDate = ПолучитьИзВременногоХранилища(АдресДанных);

Элементы.Date.ОтображатьТекущуюДату = Истина;
Элементы.Date.НачалоПериодаОтображения =НачалоГода(ТекущаяДата());            
Элементы.Date.КонецПериодаОтображения =КонецМесяца(ТекущаяДата());

Для Каждого ЭлементМассива Из СписокNotesDate Цикл

Элементы.Date.ВыделенныеДаты.Добавить(АдресДанных.Dat);            
Элементы.Date.Обновить();  
КонецЦикла;
КонецПроцедуры
16 Йохохо
 
11.04.17
18:50
(15) ойойой
Для Каждого СтрокаДанных Из АдресДанных Цикл
Элементы.Date.ВыделенныеДаты.Добавить(СтрокаДанных.Dat);
17 Diademal
 
11.04.17
20:25
Спасибо!!! Попробывал!! Вроде бы получилось!!
18 Diademal
 
11.04.17
20:45
Попробывал по этому принципу пойти дальше по форме и столкнулся с проблемой
&НаКлиенте
Процедура ДатаПриВыводеПериода(Элемент, ОформлениеПериода)

Для Каждого Дат Из ОформлениеПериода.Даты Цикл
Если  Дат.Дата = Дата(СтрокаДанных.Dat)Тогда
Дат.ЦветТекста = WebЦвета.Бирюзовый;
Дат.ЦветФона = WebЦвета.Васильковый;
КонецЕсли;          
КонецЦикла;
ОформлениеПериода работает только на клиенте, а СтрокаДанных я вытягиваю с сервера.
Я так понимаю что я должен серверной процедурой получить СтрокиДанных и как то передать их  на Клиент и уже на клиенте работать с ОформлениеПериода.
Но вот с передачей с Сервера на Клиент Проблема!!!

И DateПриВыводеПериода работает только на клиенте и на сервереБезКонтекста, а ЗначениеВРеквизитФормы не работает не на клиенте и сервереБезКонтекста  
Сделал Вот так:

&НаКлиенте
Процедура DateПриВыводеПериода(Элемент, ОформлениеПериода)
    DateПриВыводеПериодаНаСервере();
    
    Для Каждого СтрокаДанных Из ??????Цикл
    Calendar=ТекущаяДата();    
    Для Каждого Дат Из ОформлениеПериода.Даты Цикл
Если  Дат.Дата = Дата(СтрокаДанных.Dat)Тогда
Дат.ЦветТекста = WebЦвета.Бирюзовый;
Дат.ЦветФона = WebЦвета.Васильковый;
   КонецЕсли;          
КонецЦикла;
   КонецЦикла;
КонецПроцедуры

&НаСервере
Процедура DateПриВыводеПериодаНаСервере()
    АдресДанных =Общиймодуль.ПолучитьСписокNotesDate();
    ЗначениеВРеквизитФормы(АдресДанных,"Test");
    
КонецПроцедуры
19 Diademal
 
11.04.17
23:49
Решил Проблему для этой процедуры другим путем.Я отправил с Общего модуля Массив с датой и обработал её на Клиенской процедуре!! Просто для этой процедуре нужна лишь дата и массив как раз подошел. Всем спасибо большое за помощь!!!!!
Но все равно хотелось бы знать есть ли решение как ДАнные С Рекв Таблицызначений на форме с процедуры Насервере перекенуть на Процедуру Наклиенте на той же форме. Спасибо!!!