8.х Процедура/функция в привилегированном общем модуле

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем nomad_irk, 31 мар 2010.

  1. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Не могу понять, почему не работает следующее:

    Код:
    Функция СписокСоединенийСИБ() Экспорт
    
    МассивСоединений = Новый Массив;    
    МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
    
    Возврат МассивСоединений;
    
    КонецФункции
    
    
    
    При вызове данной функции из внешней обработки проиходит ошибка:

    Судя по синтаксис-помощник, массив имеет возможность "бегать" от сервера к клиенту и наоборот.

    Судя по коду других функций в том же привилегированном модуле, возвращают даже ТЗ и это работает.

    Что я делаю не правильно?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Проверьте, какие значения есть в массиве. То, что сам массив может мигрировать между клиентом и сервером, совершенно не означает, что значения В массиве могут тоже самое.
  3. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Хм.....Внутри массива содержится то, что выдает метод глобального контекста ПолучитьСоединенияИнформационнойБазы(), другими словами, с инициализацией массива в виде переменной можно было не заморачиваться, а написать просто:

    Возврат ПолучитьСоединенияИнформационнойБазы();

    ээээ.....я так понимаю нужно примитизировать содержание массива, потому как само значение типа СоединениеИнформационнойБазы мне неинтересно, меня интересуют его реквизиты.....
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Можно вычленить проблему, оставив сначала 1 элемент в массиве, потом два и т.д, пока не упадет :)
    Навскидку не вспомню, что там мешает...
  5. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    вы уверены что ошибка происходит именно на строке ПолучитьСоединенияИнформационнойБазы(); ?
    сейчас добавил кнопку на форме документа и вызвал процедуру из общего привилегированного модуля - результат положительный
  6. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Ошибка происходит в момент возврата результата.сам метод отрабатывает без ошибок
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Хм, странно... Единственное, что вызывает подозрение - это пользователь, но написано, что можно обмениваться с сервером..
    Все-таки попробуйте предыдущий мой совет - надо понять, на каком типе вываливается...
  8. TopicStarter Overlay
    nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204

    Оказывается, объектом типа СоединениеИнформационнойБазы нельзя обмениваться с сервером.

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

Поделиться этой страницей