Базовый курс. МГ сессия от 11.07.2011

Рассматриваем новые вопросы от участников базового курса.

1. Серверная переменная.
Имеется следующий код в модуле формы обработке: &НаСервере Перем ТабЗначений12;
 Если поставить точку останова на процедуре ТабЗн1(Команда) (которая на клиенте), то переменная ТабЗначений12 при выводе в табло вообще неопределена. А Если точка останова стоит в процедуре СерверТест()(которая на сервере), то она видится, но ее значение – “неопределено”, хотя переменная является гобальной. Как тогда в модуле формы создавать глобальную переменную на сервере?

2. Хранение ресурсов в регистре.
На платформе 7.7 сам столкнулся с очень интересным поведением: в версии с MS SQL регистр физически хранился как 2 таблицы, итоги в разрезе периодов и сами движения. При проведении документа, если например в ресурсе была длина 5 и точность 2 ( то есть под целую часть 2 числа) писалось движение приход по этому ресурсу на 10.  При этом до проведения документа в таблице итогов в СУБД уже был накоплен итог в сумме 90. По сути после проведения в таблице должна была оказаться запись 90 +10 =100.00, но длина у ресурса только 5 …..
так вот платформа ничего не говоря пользователю брала и обрезала записываемое в СУБД  значение до 99.99 (то есть 5 знаков) … последствия этого выражались очень не хорошо: по движениям все нормально — то есть движения все 10.00 и пр — меньше 5 знаков, но вот при получении итогов из регистра получались совсем не предсказуемые значения. Больше того в ДБФ версии все работало без ошибок — по началу это было отнесено на “мистику” работы платформы, но в итоге я нашел этот косяк и он был побежден увеличением длины ресурса. (С этого задания начал знакомство с платформой 7.7 и с 1С в целом — о чем не жалею не сколько).

3. Значение заполнено.
В уроке “Ограничения метода ЗначениеЗаполнено( )” Вы говорите, что функция не работает с мутабельными значениями, например, ТаблицаЗначений, но код
ТЗ = Новый ТаблицаЗначений;
// СтрокаТЗ = ТЗ.Добавить();
Сообщить(ЗначениеЗаполнено(ТЗ));
работает корректно, и возвращает либо Нет, либо Да, в зависимости от комментария на строке кода СтрокаТЗ = ТЗ.Добавить();
Что я неправильно понял?

4. Компиляция модулей.
В какой момент времени происходит компиляция различных модулей? Модуль  компилируется каждый раз при обращении к нему или где-то кешируется, где?
Модуль сеанса компилируется при каждом подключении к системе пользователя и  ПараметрыСеанса инициализируются столько раз, сколько подключилось пользователей? Где хранятся параметры сеанса, в БД или кешируются на клиенте?

5. Глобальные переменные.
Как долго живет глобальная переменная инициализированная в модуле приложения. До тех пор пока пользователь не завершит сеанс? 
Возможно ли создать массив, доступный как глобальная переменная для всех сеансов? При решении ДЗ №4 получился только глобальный массив строк для каждого сеанса.

6. Модуль приложения.
Когда идет работа в режиме совместимости нужно ли дублировать код в модуле управляемого приложения (МУП) и модуле обычного приложения (МОП). Например, 
если объявить глобальную переменную глПеременнаяМодуляПриложения в МУП, то 
будет ли она доступна в МОП? А если объявить глПеременнаяМодуляПриложения и в
МУП и в МОП, то будут ли они пересекаться? 

7. Управляемая форма в обычном приложении.
Случайно запустил внешнюю обработку из ДЗ №3 в режиме обычного приложения – ничего не произошло, хотя в режиме управляемого приложения все работает правильно.  Все действия в обработке происходят в процедуре  “ПриСозданииНаСервере”. В отладчике указал точку останова на операторах основной программы и все равно не попал в отладчик. Так и не понял, почему обработка не выполняется в режиме обычного приложения.

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.

комментариев 8 на “Базовый курс. МГ сессия от 11.07.2011”

  1. Может кому-нибудь покажется мнтересным наблюдение, сделанное за период общения с платформой. Я всегда думал, что таблица значений – мутабельный тип данных, но это видимо не совсем так.
    Как оказалось, таблица значений может становится мутабельным типом данных, ежели таковые в ней присутствуют. И, например, при передаче с клиента на сервер и наоборот (речь идет об обычном приложении), таблица значений содержащая ссылки и примитивные типы будет передаваться нормально, но если в любую ячейку установить, допустим, тип “СправочникОбъект”, то тут же платформа упадет с ругательством, на то, что нельзя передавать мутабельные типы значений.

  2. Александр Мастриков 11.07.2011 в 17:47

    Извиняюсь, не в почту написал, Первый вопрос(

  3. Александр Мастриков 11.07.2011 в 17:24

    Здравствуйте!
    Вопрос: если создаю COM(OLE, ADODB и т.д.)  -объект внушительных объёмов  на клиенте, система не ругается, но на сервер не передаёт.  В чём отличие от ТабЗнач, которая, в принципе, на клиенте не создаётся?

    • Александр Мастриков 11.07.2011 в 17:30

      Забыл отметить:  совсем маленькой ТабЗнач, в общем, объёмы передачи несопоставимы)

    • Александр, пока вопрос не ясен.

      Напишите подробнее в ящик мастер-группы.
      Отдельно поясните, что значит
      >система не ругается, но на сервер не передаёт

      Также поясните аналогию с таблицей значений.

  4. Все пункты с описанием вылезли на главную.  :)