Ошибки/глюки 8.2 ?

70. SSashaS 9 05.05.10 14:03 Сейчас в теме
Душелов пишет:

При попытке развернуть все строки дерева на форме - разворачивает только первую строку...





Развертывание строк во всем дереве можно сделать вот так:
&НаКлиенте
Процедура РаскрытьДерево()
	
	Строки = ДеревоСТрок.ПолучитьЭлементы();
		
	Для каждого ТЕкСтрока из Строки Цикл
		Элементы.ДеревоСтрок.Развернуть(ТекСтрока.ПолучитьИдентификатор());
	КонецЦикла
	
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
71. kuppidon 15.05.10 14:07 Сейчас в теме
Душелов пишет:
Код
&НаКлиенте
Процедура РазвернутьДерево()
Строки = ДеревоДанных.ПолучитьЭлементы();
Для сч = 0 По Строки.Количество() - 1 Цикл
Элементы.ДеревоДанных.Развернуть(сч, Истина);
КонецЦикла;
КонецПроцедуры


Попробуй так:
&НаКлиенте
Процедура РазвернутьДерево()
Строки = ДеревоДанных.ПолучитьЭлементы();
Для каждого Элемент ИЗ Строки Цикл
Элементы.ДеревоДанных.Развернуть(Элемент.ПолучитьИдентификатор(), Истина);
КонецЦикла;
КонецПроцедуры

Думаю, что все строки дерева развернет....... :)
72. Нат 19.05.10 10:33 Сейчас в теме
А как лучше передать СписокЗначений из модуля документа в его форму, но до записи этого документа. Это нужно для реализации нестандартного ввода на основании. Пока документ не записан, ссылка пустая и его переменные - неопределенные.
73. lustin 30.11.10 11:25 Сейчас в теме
Нашел тут случайно следующую информацию.

помните ситуацию с потерей серверных переменных между клиентскими вызовами.

то есть следующий код

Перем гыСервернаяПеременная;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
  гыСервернаяПеременная = "траливалипассатижи";
КонецПроцедуры

&НаСервере
Функция МояСервернаяПеременнаяЖива()
  Если гыСервернаяПеременная = "траливалипассатижи" Тогда 
          Возврат Истина; 
  Иначе 
          Возврат Ложь; 
  КонецЕсли;
КонецФункции

&НаКлиенте
Процедура ВыполнитьНажатие(Команда)
 
   Сообщить("Моя серверная переменная жива ? " + МояСервернаяПеременнаяЖива());

КонецПроцедуры
Показать


ну все мы знаем что в серверной переменной будет Неопределенно в момент вызова сервера с клиента, но вот почему я до сих пор не знал точно/

Но на просторах партнерского форума я обнаружил следующий комментарий:

Перем <какая-то-переменная>;

Это будет каждый раз инициализироваться при вызове серверных процедур. (т.е. при переходе контекста на серверный).


если это так ТО:

1. был прав mini_root что "1С-ники не умеют хранить состояние сервера между клиентскими вызовами"
2. .....

P.S. Ну вот как так можно - блин: если я объявляю переменную внутри модуля - я ожидаю что ее жизненный цикл будет равен жизненному циклу этого модуля, а тут нифига.
74. Душелов 4013 01.12.10 07:21 Сейчас в теме
Поэтому рекомендуется использовать общие модули с повторным возвратом значений или реквизиты формы
75. lex007 23.12.10 09:37 Сейчас в теме
Добрый день. На ту же тему. В модуле формы документа НАКЛИЕНТЕ я не могу перебрать табличную часть справочника Номеклатура(Номенклатура-один из реквизитов документа) и на ее основании заполнить табличную часть уже документа. Насколько я понимаю все это необходимр сделать НАСЕРВЕРЕ. Подскажите как это правильнее сделать. Передать таблицу значений с сервера на клиент не получается.
76. anig99 2841 23.12.10 10:24 Сейчас в теме
(75) через Временное хранилище, если уж так надо обрабатывать именно на клиенте
77. lex007 23.12.10 11:12 Сейчас в теме
пробую так. строки в табл. части документа не добавляются. ничего не происходит.

&НаСервере
Процедура ОпределитьСоставКомплекта(Докум)

Комплект = Докум.ПолучитьОбъект().Комплект;
ТЧасть = Докум.ПолучитьОбъект().НоменклатураКомплекта;

Для Каждого Строка Из Комплект.СоставКомплекта Цикл
НоваяСтрока = ТЧасть.Добавить();
НоваяСтрока.Номенклатура = Строка.НоменклатураКомплекта;
НоваяСтрока.Количество = Строка.Количество;

КонецЦикла;

КонецПроцедуры


&НаКлиенте
Процедура ЗаполнитьНоменклатуруКомплекта(Команда)

Докум = Объект.Ссылка;
ОпределитьСоставКомплекта(Докум);

КонецПроцедуры
78. Душелов 4013 23.12.10 12:07 Сейчас в теме
Зачем туда-сюда объект гонять??
Если все делается в модуле формы, то ничего передавать не нужно.

&НаСервере 
Процедура ОпределитьСоставКомплекта() 

Комплект = Объект.Комплект; 
ТЧасть = Объект.НоменклатураКомплекта; 

Для Каждого Строка Из Комплект.СоставКомплекта Цикл 
НоваяСтрока = ТЧасть.Добавить(); 
НоваяСтрока.Номенклатура = Строка.НоменклатураКомплекта; 
НоваяСтрока.Количество = Строка.Количество; 

КонецЦикла; 

КонецПроцедуры 


&НаКлиенте 
Процедура ЗаполнитьНоменклатуруКомплекта(Команда) 

ОпределитьСоставКомплекта(); 

КонецПроцедуры
Показать
79. lex007 23.12.10 12:10 Сейчас в теме
это 8.2(в управляемой форме документа) и соответсвенно не получиться сделать это все в модуле формы на клиенте, к сожалению. если я ошибаюсь-поправьте
80. lex007 23.12.10 12:15 Сейчас в теме
81. Душелов 4013 28.09.09 00:29 Сейчас в теме
Вплотную занялся 8.2.
Изучил проблему ВК в 8.2 :) Не визуальные актив-иксы работают на ура (тестирую чтение/запись экзелевских файлов напрямую) не серверной части (что очень удобно, не надо устанавливать ВК на клиентских машинах).
Но столкнулся с платформенными "фичами".

Из серверной части в клиентскую не могу передать ТЗ:

Ошибка при вызове серверного метода.
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: Value Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'


Это только у меня? Что-то это не совсем хорошо..
82. mini_root 154 28.09.09 09:54 Сейчас в теме
Аналогично - вчера решил написал простейшую обработку (выполнение запроса и вывод результата в таблицу). Нашел еще один странный момент: если написать функцию выполняющуюся в серверном контексте и возвращающее ТЗ, а потом вызвать ее из клиента (из процедуры помеченной "&НаКлиенте") - получим как раз исключение с ValueTable. А если объявить реквизит типа ТЗ и заполнить его в серверном контексте, то потом эти же данные будут видны и клиенту. Более того, можно замечательно заполнять ТабличныйДокумент в серверном контексе и видеть результат в тонком клиенте. Но тут надо отметить, что я использовать вырожденный случай - реального сервера как такового не было, надо будет поднять апач и еще раз проверить уже с корректным разделением на клиента и сервера.

Либо там внутри сделан какой-то дикий костыль, который позволяет прозрачно работать с реквизитами клиенту и серверу, не имеющий ничего общего с механизмами сериалиазации/десериализации, про которые благополучно забыли - это ОЧЕНЬ плохой вариант, потому что мы возвращаемся к написанию софта с одними "глобальными" переменными + скорее всего, невозможность выцепить чего-нить на клиента именно для автономной работы. Но тут могу ошибаться.

Либо одинэсовцы чего-то не доделали.

Либо я чего-то не понял.

P.S. Меня вообще всегда шокировала невозможность сериализации универсальных коллекций - уже это то надо было сделать в первую очередь, но будем надеяться на лучшее. Идеи у одинэсовцев здравые, но тут главное не обделаться с реализацией, что, к сожалению, весьма вероятно.
83. Душелов 4013 28.09.09 11:36 Сейчас в теме
При попытке развернуть все строки дерева на форме - разворачивает только первую строку...

&НаКлиенте
Процедура РазвернутьДерево()
	Строки = ДеревоДанных.ПолучитьЭлементы();
	Для сч = 0 По Строки.Количество() - 1 Цикл
		Элементы.ДеревоДанных.Развернуть(сч, Истина);
	КонецЦикла;
КонецПроцедуры
84. Душелов 4013 28.09.09 11:37 Сейчас в теме
Нет событий ПриВыводеСтроки и ПриПолученииДанных :((((
85. Душелов 4013 28.09.09 11:38 Сейчас в теме
(2) Мне не хватает глобальной переменной на сервере.
А ком-объекты так же не передаются.
86. mini_root 154 28.09.09 12:55 Сейчас в теме
Одинэсовцам надо сделать всего одну весчь:

&НаСервереАсинхронно

И все, с учетом того, что реквизиты формы разделяются между контекстом клиента и сервера. Обработку ошибок потом можно организовать и своими силами.
87. mini_root 154 28.09.09 17:06 Сейчас в теме
Щас раскопал еще одну граблю - модуль формы у них stateless. Ты конечно можешь объявить там переменную модуля, но значение свое она сохранять не будет, даже между двумя вызовами методов помеченных как "&НаСервере".
88. mini_root 154 28.09.09 17:07 Сейчас в теме
(7) По крайней мере это верно для форм обработок.
89. Душелов 4013 29.09.09 08:49 Сейчас в теме
По поводу (1). На тонком клиенте нет объекта "ТаблицаЗначений".
Так что нашел выход ;)

&НаСервере
Функция ТаблицуЗначенийВМассив(ТЗ) Экспорт
	МассивТЗ = Новый Массив();
	
	Для Каждого Стр Из ТЗ Цикл
		СтрокаТЗ = Новый Структура;
		Для сч = 0 По ТЗ.Колонки.Количество() - 1 Цикл
			СтрокаТЗ.Вставить(ТЗ.Колонки.Получить(сч).Имя, Стр[сч]);
		КонецЦикла;
		
		МассивТЗ.Добавить(СтрокаТЗ);
	КонецЦикла;
	
	Возврат МассивТЗ;
КонецФункции
Показать


Аналогично можно сделать дерево ;) Добавить только структуру "Строки" - с массивом подчиненных строк.
Mogilnikova; +1 Ответить
90. mini_root 154 29.09.09 10:03 Сейчас в теме
Мда, а потом ручками его туда-сюда? В 8.2 принудительно приходится использоваться разделение на клиента и сервера: запрос ты на клиентской стороне не выполнишь, а раз так - должен быть какой-то прозрачный механизм передачи данных. И он таки есть, но только не на основе передачи, а на основе общих реквизитов. Попробуй создать реквизит типа ТабилицаЗначений и заполнить его на серверной стороне, а потом прочитать данные на клиенте.
91. Душелов 4013 29.09.09 10:08 Сейчас в теме
(10) Да никак ты его не прочитаешь (на тонком клиенте). Вот для таких случаев я в (9) и написал.
Работает.
На клиенте потом читаешь:

Для Каждого Стр Из МассивТЗ Цикл 
      Сообщить(Стр.ИмяКолонкиТЗ);
  КонецЦикла;
92. mini_root 154 29.09.09 10:16 Сейчас в теме
(11) Не-не-не, я могу конечно ошибаться, но ты посмотри как там конструкция устроена: объявляется реквизит типа ТЗ, добавляется на форме Таблица и привязывается к ТЗ. Таблица на форме, то есть на клиенте, а ее источник данных на сервере. Заполняешь таблицу ручками на форме, а из метода помеченного "&НаСервере" достаешь данные из ТЗ. Вот и получается, что ТЗ разделяется клиентом и сервером. Как это там внутри сделано - хз.
93. Душелов 4013 29.09.09 10:58 Сейчас в теме
(12) Источник данных - да, но в качестве параметра или возвращаемого значения функции ТЗ из клиента на сервер и обратно не передать.
olegmixeev6638; +1 Ответить
94. mini_root 154 29.09.09 11:00 Сейчас в теме
(13) Так о том и речь - они сделали shared реквизиты и при этом забили на обычную сериализацию/десериализацию
95. mini_root 154 29.09.09 11:06 Сейчас в теме
(14) Прибавь сюда невнятную ситуацию с сохранением состояния глобальных для модуля формы переменных на серверной стороне и получатся крайне симпатичные грабельки, причем детские, которые будут доставлять массу удовольствия всем подряд. Впрочем, может быть к релизу они это исправят.

Сегодня продолжу безумные эксперименты, меня тоже интересует вопрос COM'ов и ActiveX'ов.
96. mini_root 154 29.09.09 12:50 Сейчас в теме
Еще один нюанс: создай обработку, создай в модуле обработки процедуру с экспортом, создай форму... а потом попробуй из модуля формы (из серверной процедуры) вызвать процедуру в модуле обработки.
97. Душелов 4013 29.09.09 13:14 Сейчас в теме
(15) Ну с комами и активиксами работает нормально, если не сериализовать ;)
(16) Я уже с этим столкнулся - когда попытался вызвать методы модуля справочника.
98. mini_root 154 29.09.09 13:30 Сейчас в теме
У меня глобальная переменная модуля формы в обработке упорно не хочет сохранять свое состояние между двумя вызовами серверных процедур. Все помечено НаСервере, но вот переменная свое состояние теряет.
99. Душелов 4013 29.09.09 13:50 Сейчас в теме
(18) Используй параметры формы.
100. mini_root 154 29.09.09 13:59 Сейчас в теме
(19) А туда менеджер временных таблиц влезет? Вряд ли, даже если поставить произвольный тип...
101. Душелов 4013 29.09.09 15:13 Сейчас в теме
(20) А зачем менеджер временных таблиц на клиент тягать?
102. mini_root 154 29.09.09 15:15 Сейчас в теме
(21) А мне он не нужен на клиенте - мне надо чтобы он хранился где-нибудь между двумя вызовами серверных процедур, а не превращался в Неопределено, как в случае с глобальной переменной модуля формы.
103. Душелов 4013 29.09.09 16:35 Сейчас в теме
(22) Ну а, все таки, попробуй запихнуть его в параметр с произвольным типом.
Я сам столкнулся с проблемой хранения на сервере глобальной переменной.
104. mini_root 154 29.09.09 17:04 Сейчас в теме
(23) Че-то у меня совсем гладиолус:

{Обработка.УниверсальнаяКонсоль.Форма.Форма.Форма(11)}: Поле объекта не обнаружено (Менеджер)
Параметры.Менеджер = Новый МенеджерВременныхТаблиц();

Зато с реквизитом произвольного типа вот такая хрень:

{Обработка.УниверсальнаяКонсоль.Форма.Форма.Форма(11)}: Ошибка при установке значения атрибута контекста (Реквизит1): Тип "МенеджерВременныхТаблиц" не может использоваться в данных формы
Реквизит1 = менеджерВременныхТаблиц;
по причине:
Тип "МенеджерВременныхТаблиц" не может использоваться в данных формы
105. mini_root 154 29.09.09 17:42 Сейчас в теме
(23) Че-то у меня совсем гладиолус:

{Обработка.УниверсальнаяКонсоль.Форма.Форма.Форма(11)}: Поле объекта не обнаружено (Менеджер)
Параметры.Менеджер = Новый МенеджерВременныхТаблиц();

при том что в выпадающем списке он таки есть....

Зато с реквизитом произвольного типа вот такая хрень:

{Обработка.УниверсальнаяКонсоль.Форма.Форма.Форма(11)}: Ошибка при установке значения атрибута контекста (Реквизит1): Тип "МенеджерВременныхТаблиц" не может использоваться в данных формы
Реквизит1 = менеджерВременныхТаблиц;
по причине:
Тип "МенеджерВременныхТаблиц" не может использоваться в данных формы
106. lustin 29.09.09 22:14 Сейчас в теме
http://users.v8.1c.ru/Info/Platform/8_2_7_84/V8DocMA.htm#_Toc182902236

вот я же чувствовал что тут слегка не по "дзену"

;-)

Андрей почитай - там прямо сказано, что нехер на клиента тащить данные и еще много всяких интересных вещей

есть у меня предположение что ваша сериализация как раз из этого разряда - её не то что забыли, её и не думали реализовывать

и еще есть у меня предположение что анотация &НаСервере не нужна

копаю со своей стороны дальше (фоновые задания меня сейчас интересуют в режиме Apache + FileIB)
107. lustin 29.09.09 22:16 Сейчас в теме
(22) согласно документации - все хранится на сервере, надо все же самому покопать

сейчас сам попробую без анотаций сохранить данные между двумя клиентскими вызовами...
108. lustin 29.09.09 23:20 Сейчас в теме
1. возврат ТЗ на клиента из сервера не возможен - судя по документации это фича, а не баг (в документации отдельно написано что разработчик должен сам тады позаботиться о сериализации)

2. хранение состояний мне удалось добиться этого с помощью реквизитов формы (ведь их не обязательно отображать на форме)

3. реквизит Объект доступен по умолчанию и хранит ссылку на объект Обработка (в моем отладочном примере) - так что ДанныеУправляемойФормы тоже получаются доступны на сервере

4. менеджер временных таблиц = 1С-нина мне однозначно говорит что нефиг хранить такой объект в данных формы

короче - для меня лично ожидаемое поведение новой платформы
109. Душелов 4013 30.09.09 01:07 Сейчас в теме
(28) Все здорово, но где хранить глобальные переменные сервера? ;)
110. mini_root 154 30.09.09 10:11 Сейчас в теме
(29) Сделал как говорил desty, с реквизитом "Объект" хранящим объект этой обработки, но шо то мне это совсем не нравится...

Модуль обработки:

&НаСервере
Перем менеджерВременныхТаблицы Экспорт;

&НаСервере
Функция ПолучитьМенеджерВременныхТаблиц() Экспорт
Возврат менеджерВременныхТаблицы;
КонецФункции

&НаСервере
Процедура УстановитьМенеджерВременныхТаблиц(_менеджерВременныхТаблиц) Экспорт
менеджерВременныхТаблицы = _менеджерВременныхТаблиц;
КонецПроцедуры

Модуль формы обработки:

&НаСервере
Функция ПолучитьОбъект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции

&НаСервере
Процедура УстановитьОбъект(_об)
ЗначениеВРеквизитФормы(_об, "Объект");
КонецПроцедуры

&НаСервере
Процедура СерверПриОткрытии()
об = ПолучитьОбъект();
об.УстановитьМенеджерВременныхТаблиц(Новый МенеджерВременныхТаблиц());
УстановитьОбъект(об);
//ВызватьИсключение "QQQ " + об.ПолучитьМенеджерВременныхТаблиц();
КонецПроцедуры

&НаСервере
Процедура СерверПриЗакрытии()
об = ПолучитьОбъект();
ВызватьИсключение "WWW " + об.ПолучитьМенеджерВременныхТаблиц();
КонецПроцедуры


Последние процедуры дергаются из соответствующих клиентских методов (ПриОткрытии и ПриЗакрытии)

1. Если откомментировать QQQ - мы увидим что в переменной модуля обработки дейстивтельно сохранился менеджер временных таблиц.
2. А если закомментировать QQQ, и откомментировать WWW - мы видим что там нихрена нету.

Вопрос - иде собственно сохранение состояния экземпляра обработки, при том что именно обработка в 1С всегда существовала именно в виде экземпляра (чем и пользовались 1С++'ники)?


P.S. Я скажу больше, если сделать вот так:

&НаСервере
Процедура СерверПриОткрытии()
об = ПолучитьОбъект();
об.УстановитьМенеджерВременныхТаблиц(Новый МенеджерВременныхТаблиц());
УстановитьОбъект(об);
об = ПолучитьОбъект();
ВызватьИсключение "QQQ " + об.ПолучитьМенеджерВременныхТаблиц();
КонецПроцедуры


то и в "QQQ" тоже будет пусто

Так что вопрос остается открытым...
111. Душелов 4013 30.09.09 14:09 Сейчас в теме
А ИнформацияОбОшибке() выводит строку "ИнформацияОбОшибке" ? ;)
112. mini_root 154 30.09.09 15:20 Сейчас в теме
113. Душелов 4013 30.09.09 15:52 Сейчас в теме
В целом, первую конфигурацию свою набросал (http://infostart.ru/public/57880/ - оттуда).

Буду вводить в промышленную эксплуатацию.
Но глюков и косяков выявил предостаточно, как и многих "фич".

Да... Надо бы литературку купить по 8.2...
114. mini_root 154 30.09.09 16:46 Сейчас в теме
(33) А меня вот глюки с потерей состояния мягко говоря расстраивают (если совсем по честному - это полный П) - продолжу играться дальше, но ИМХО платформа пока мертвая. Надо подождать какой-нибудь 8.2.20...
115. lustin 01.10.09 10:19 Сейчас в теме
(31)

ИнформацияОбОшибке() возвращает не строку, а объект ИнформацияОбОшибки

так что если хотите ошибку тады примерно так Сообщить(ИнформацияОбОшибке().Описание)
116. Душелов 4013 01.10.09 10:32 Сейчас в теме
(35) Аааа... Невнимателен я ;)
117. artbear 1447 03.12.09 17:54 Сейчас в теме
ОФФ. Подписался на тему.

Зы если кто знает, как подписаться на тему, не написав сообщения в нее, прошу подсказать :)
118. Душелов 4013 03.12.09 18:14 Сейчас в теме
Кстати, иногда при запуске конфигурации вылетает ошибка "типа не найден такой-то регистр (в моем случае регистр версирования объектов, что присутствует в подсистемах разработчика)...
А потом нормально все...

Сегодня под администратором вываливался на типовом мониторе активных пользователей, не хватало прав на получение списка активных соединений... А потом прокатило...

Забавно :)

Но в целом работает, только не забыть отрубить касперский на клиентской машине или сильно поковырять, чтобы он не реагировал на тонкого и веб-клиента.
119. Душелов 4013 03.12.09 18:16 Сейчас в теме
И еще так и не понял, как убрать регистр сведений из панели навигации ("Перейти"), у той же номенклатуры, только убрав галочку у регистра "Использовать стандартные команды"...
120. DimaP 63 06.12.09 12:00 Сейчас в теме
Да уж....
Так как решать пробелему невозможности передать ТЗ с сервера на клиент?
121. Душелов 4013 06.12.09 12:42 Сейчас в теме
(40) Проблема решена. Вот только 1 вопрос, зачем на клиенте ТЗ?
122. I_G_O_R 69 06.12.09 16:02 Сейчас в теме
(41) еще бы написал как решена проблема
123. boy13 169 06.12.09 21:51 Сейчас в теме
я нашел еще один глюк платформы 8.2.9.356.

OpenSUSE 11.2 + postgres 8.3.8

В документах (в остальном пока не пробовал особо) не отображаются label-ы (надписи). Только поля ввода без надписей, табличные поля, именованные области, а надписей нет! Выгружаю базу в ДТ, загружаю в файловую на винде - все ОК. Типовая, не типовая, самописная - без разницы.
124. mini_root 154 07.12.09 09:10 Сейчас в теме
(43) Не, это специфичный глюк под конкретную ОС, его рано или поздно пофиксят, и он не так страшен как те же висящие сессии от умершего веб клиента (с учетом транзакций/блокировок) или потеря состояния глобальной переменной на сервере.

P.S. Кстати, кто-нибудь пробовал держать транзакцию между двумя вызовам серверных методов?
125. lustin 07.12.09 13:59 Сейчас в теме
(44) я пробовал когда из семерки данные пробовал переливать
не получилось :(

кстати самое хреновое что OLE соединение с 7.7 доступно только на клиенте

а COM с 8.1 прекрасно работает и на сервере в режиме фонового задания
126. mini_root 154 07.12.09 17:16 Сейчас в теме
(42) Передавай массив структур, каждая структура - строчка в ТЗ
127. mrscylla 08.12.09 10:36 Сейчас в теме
Вот такой код:

	Структ = новый Структура("Ключи", Новый Структура());
	Структ.Ключи.Вставить("Первый", Новый Структура());
	Структ.Ключи.Первый.Вставить("Ключи", Новый Структура());
	Структ.Ключи.Вставить("Второй", Новый Структура());
	Структ.Ключи.Второй.Вставить("Ключи", Структ);


приводит к вылету и дампу памяти :)


Кто знает куда сабмитить баги по 1С ?
128. Batem 08.12.09 15:00 Сейчас в теме
129. Душелов 4013 09.12.09 08:34 Сейчас в теме
(42) В (9) все написано :!:

И еще раз спрошу, зачем нужна ТЗ на клиенте? :)
130. mini_root 154 09.12.09 09:07 Сейчас в теме
(49) Тут принцип важен :)

Хотя по сравнению с другими граблями - это мелочь.
131. lustin 09.12.09 14:18 Сейчас в теме
(50)

Андрей, я же тебе говорил - про ТЗ отдельно говорится в руководстве - "дао" в том что ей нечего делать на клиенте...

кстати я тоже пришел к тому же риторческому вопросу что и Душелов и я не помню задач, когда на тонком клиенте нужна ТЗ

а вот грабли с серверным контекстом между клиентскими вызовами - тут я хотел бы подождать 10 декабря (или когда там обновление платформы выйдет)

пока все что есть - это максимум мышководства и обдумывания ролей и данных, минимум разработки
132. lustin 10.12.09 02:27 Сейчас в теме
ТЗ на клиенте - вести с полей
платформа 1С:Предприятие 8.2 (8.2.10.61)
&НаКлиенте
Процедура ТестПередачиТЗ(Команда)
	тзНаКлиенте = Новый ТаблицаЗначений;
КонецПроцедуры

при попытке Конфигуратором сохранить этот код
имеем

{Обработка.ТестированиеСерверныхКонтекстов.Форма.ФормаОбработки(15,22)}: Тип не определен (ТаблицаЗначений)

Что и требовалось доказать, нету такого типа на клиенте
133. lustin 10.12.09 02:56 Сейчас в теме
по поводу транзакций


{Обработка.ТестированиеСерверныхКонтекстов.Форма.ФормаОбработки(13)}: Ошибка при вызове метода контекста (ЗафиксироватьТранзакцию): Транзакция не активна


* Два клиентских вызова серверного метода
* При первом транзакция открывается
* При втором закрывается

Ошибку вы видите выше

Собственно и это опять по вроде как по дзену, и не совсем понятно реальное применение транзакций между клиентскими вызовами...

Продолжаем эксперименты...
134. lustin 10.12.09 04:00 Сейчас в теме
По поводу состояний - итоговое исследование

переменные "Перем" заставить хранить состояние мне так и не удалось, по дзену получается что необходимо использовать РеквизитОбъектаФормы или РеквизитФормы

однакоже мне удалось найти вот какой метод


УправляемаяФорма (ManagedForm)
ИзменитьРеквизиты (ChangeAttributes)
Синтаксис:
ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>)


то есть собственно динамически можно добавлять необходимые реквизиты для хранения между вызовами

На сегодня все, сегодня к 7 утра в больницу - поэтому пойду немного посплю...

ЗЫ А по поводу зависших сеансов Web клиента, приходит на ум только автоанализ сеансов по параметру

Сеанс.LastActiveAt (ISessionInfo.LastActiveAt)
Сеанс (ISessionInfo)
LastActiveAt (LastActiveAt)

реально видел 4 зависших сессии Веб-клиента в течении суток (хотя люди ушли и компы повыключали)
135. lustin 10.12.09 04:26 Сейчас в теме
и еще маленький момент для тех кто хочет предварительно почитать про "дзен" - Толковый словарь в открытом доступе

вдруг кто не знает что такое есть
136. mini_root 154 10.12.09 09:31 Сейчас в теме
(55) Лёх, понимаешь, есть вещи которые работают неправильно по сути и от дзена это не зависит:

- состояния
- потеря транзакции между двумя серверными вызовами (скорее всего, причины те же, что и при потери состояния) (44)
- висящие сессии и, скорее всего, отсутствие явного управления жизненным циклом сессии на серверной стороне (тогда бы можно было сделать корректное завершение серверного контекста по таймауту для отвалившегося клиента).

Когда кстати выходит 8.2.10?
137. СергейКа 669 10.12.09 09:49 Сейчас в теме
(56) Пока висит метка что сегодня. Но на тестовой это всё уже можно проверить, так как она скорее всего и будет финалом.
138. Душелов 4013 10.12.09 10:00 Сейчас в теме
(52) В синтаксис-помощнике черным по белому написано:

ТаблицаЗначений (ValueTable)

Доступность:
Сервер, толстый клиент, внешнее соединение.

Не доступна на тонком клиенте, чего проверять-то?
139. lustin 10.12.09 10:57 Сейчас в теме
(56) уже вышла тестовая, она же видимо сегодня станет и финальной - я на ней и экспериментировал

по поводу дзена:

давай исходить из того что 1С-овцы не дураки.

если сейчас у финальной (не тестовой) версии платформы такое поведение , то значит что это неспроста

причин может быть две

* 1С-овцы сдеалали это специально, и это для чего то надо
* 1С-овцы не сделали это осознанно, но сделают в будущем.

короче вопрос открытый

ЗЫ кто-нибудь кстати видел в Демонстрационной, Управлении Торговлей и Архиве которые вроде заточены под 8.2 использование ключевого слова Перем в модулях отличных от глобальных.
140. mini_root 154 10.12.09 11:19 Сейчас в теме
(59) Я добавлю третий вариант:

* Сделали НЕ осознано, и теперь будут с той или иной степенью интенсивности исправлять (или уже исправили, или не будут исправлять).

Не надо считать меня ретроградом, 1С рулит (у нас обоих была и есть прекрасная возможность увидеть это своими глазами), но если желто-красные товарищи обоср*лись - я не буду молчать и делать вид, что ничего не произошло и все по Радченко. Тем более, что и раньше такие косяки за ними водились: те же веб-сервисы в 8.1 - жизненный цикл контекста не отрабатывает (ПриНачале.../ПриЗавершении...), методы объявленные в глобальнике не доступны и пр. прелести.

P.S. Давай подождем и посмотрим, что будет в 8.2.10.
141. mini_root 154 10.12.09 11:23 Сейчас в теме
(60) Тем более, я вроде бы нигде не видел громогласных официальных заявлений о том, что пользоваться глобальными переменными нельзя и надо исходить из того, что серверная часть stateless - щас бы тут такой вой стоял, это ж любимый прием одинэсеров :) Да и если честно, какие есть альтернативы в процедурном ЯП одинэса? Особенно, если надо сохранить нечто, что не отображается на БД и не помещается в реквизиты формы....
142. Душелов 4013 10.12.09 11:28 Сейчас в теме
(61) Глобальный переменные на клиенте?
143. Душелов 4013 10.12.09 11:28 Сейчас в теме
На счет глобальных переменных на сервере: http://infostart.ru/public/62410/
144. mini_root 154 10.12.09 11:32 Сейчас в теме
(63) Спасибо, хоть какой-то вариант.
145. mini_root 154 10.12.09 11:33 Сейчас в теме
(62) С клиентом-то все понятно - контекст жив, пока жив клиент.
146. lustin 10.12.09 12:06 Сейчас в теме
про Параметры сеанса я тоже раскопал

(60) про ретроградство, небольшое алаверды - не надо меня считать идеологом тезиса "1С всегда прав"

я тоже копаю, но опять с другой точки зрения - меня больше интересует почему именно так... в нашу бы дискуссию потянуть кого-нибудь кто доступ имеет к партнерскому форуму, или хоть какой то информацией обладает из кулуаров...

ладно этот наш с тобой спор видимо вечен

докладываю коротко: на платформе 8.2.10 поведение исследованных вещей не изменилось. В списке исправлений на сайте 1С ничего про наши проблемы не сказано.

И еще раз советую всем подглядеть уже имеющиеся конфигурации для УправляемогоПриложения. Как там сделано. В том числе и библиотеку стандартных подсистем.

Ушел к доктору на УЗИ - вернусь в 14:00 :)

ЗЫ Сегодня ночью попробовал перелить через стандартный ВебСервис 1С 30.000 проводок (то есть забрать в клиента быстренько на RORе сделанном) через один вызов ;) , 1С отвалилось с превышением по памяти.

ЗЫЫ Даже vandalsvq на 1С++ форуме заметил что под 8.2 стиль программирования и собственно "голову" придется менять, о чем кстати я и говорил
147. Душелов 4013 10.12.09 14:18 Сейчас в теме
(66) >под 8.2 стиль программирования и собственно "голову" придется менять

Полностью согласен.
148. СергейКа 669 10.12.09 16:00 Сейчас в теме
Мда. Обновили тестовую версию, финал перенесли на 15.12.09...
149. vandalsvq 1535 11.12.09 01:28 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Программист 1С:ERP
Москва
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день