Глобальный контекст (Global context)
УстановитьБезопасныйРежим (SetSafeMode)
Синтаксис:
УстановитьБезопасныйРежим(<БезопасныйРежим>)
Параметры:
<БезопасныйРежим> (обязательный)
Тип: Булево. Истина включает безопасный режим. Повторный вызов увеличивает счетчик безопасного режима.
Ложь уменьшает счетчик безопасного режима. Если счетчик достиг 0, то безопасный режим выключается.
Описание:
При выполнении на сервере или в файловом варианте информационной базы устанавливает или отменяет безопасный режим.
В других случаях не вызывает никаких действий.
В безопасном режиме:
— игнорируется привилегированный режим;
— запрещены внешние по отношению к платформе 1С:Предприятия действия: COM; загрузка внешних компонент; запуск внешних приложений и команд операционной системы; доступ к файловой системе, кроме временных файлов; доступ к интернет.
Платформа обеспечивает равенство значений счетчика безопасного режима при вызове произвольного метода встроенного языка и после возврата из него.
Доступность:
Сервер, толстый клиент, внешнее соединение.
См. также:
Глобальный контекст, метод БезопасныйРежим
Подскажите в чем проблема… Исходный код: &НаСервере Ошибка: {ВнешняяОбработка.СозданиеФайловВыгрузки.МодульОбъекта}: Ошибка при вызове конструктора (XBase) по причине: Установлен безопасный режим. Выполнение операции запрещено
Проблема в установленном безопасном режиме
документация глава 5.5.4.3 «Безопасный режим работы». Отключено создание XBase
Не получается сделать… хоть убейся… {ВнешняяОбработка.СозданиеФайловВыгрузки.МодульОбъекта}: Ошибка при вызове метода контекста (УстановитьБезопасныйРежим) УстановитьБезопасныйРежим(Ложь); по причине: В данной процедуре/ функции не был установлен безопасный режим
Вопрос снят, при создании внешней обработки ставиться безопасный режим по умолчанию…
Помогите с тем же вопросом. Я что-то не понял как это обойти: {ОбщийМодуль.УправлениеПечатью.Модуль}: Ошибка при вызове метода контекста (УдалитьФайлы) УдалитьФайлы(ИмяВременногоФайла); по причине: Установлен безопасный режим. Выполнение операции запрещено
Сделал дополнительные печатные формы. УТ 11. В файловой версии всё работало, отдал клиенту — там выдаёт ошибку. Поскажите с чем это скормить ихней системе?
Тэги:
Комментарии доступны только авторизированным пользователям
Глобальный контекст (Global context)
УстановитьБезопасныйРежим (SetSafeMode)
Синтаксис:
УстановитьБезопасныйРежим(<БезопасныйРежим>)
Параметры:
<БезопасныйРежим> (обязательный)
Тип: Булево. Истина включает безопасный режим. Повторный вызов увеличивает счетчик безопасного режима.
Ложь уменьшает счетчик безопасного режима. Если счетчик достиг 0, то безопасный режим выключается.
Описание:
При выполнении на сервере или в файловом варианте информационной базы устанавливает или отменяет безопасный режим.
В других случаях не вызывает никаких действий.
В безопасном режиме:
— игнорируется привилегированный режим;
— запрещены внешние по отношению к платформе 1С:Предприятия действия: COM; загрузка внешних компонент; запуск внешних приложений и команд операционной системы; доступ к файловой системе, кроме временных файлов; доступ к интернет.
Платформа обеспечивает равенство значений счетчика безопасного режима при вызове произвольного метода встроенного языка и после возврата из него.
Доступность:
Сервер, толстый клиент, внешнее соединение.
См. также:
Глобальный контекст, метод БезопасныйРежим
Подскажите в чем проблема… Исходный код: &НаСервере Ошибка: {ВнешняяОбработка.СозданиеФайловВыгрузки.МодульОбъекта}: Ошибка при вызове конструктора (XBase) по причине: Установлен безопасный режим. Выполнение операции запрещено
Проблема в установленном безопасном режиме
документация глава 5.5.4.3 «Безопасный режим работы». Отключено создание XBase
Не получается сделать… хоть убейся… {ВнешняяОбработка.СозданиеФайловВыгрузки.МодульОбъекта}: Ошибка при вызове метода контекста (УстановитьБезопасныйРежим) УстановитьБезопасныйРежим(Ложь); по причине: В данной процедуре/ функции не был установлен безопасный режим
Вопрос снят, при создании внешней обработки ставиться безопасный режим по умолчанию…
Помогите с тем же вопросом. Я что-то не понял как это обойти: {ОбщийМодуль.УправлениеПечатью.Модуль}: Ошибка при вызове метода контекста (УдалитьФайлы) УдалитьФайлы(ИмяВременногоФайла); по причине: Установлен безопасный режим. Выполнение операции запрещено
Сделал дополнительные печатные формы. УТ 11. В файловой версии всё работало, отдал клиенту — там выдаёт ошибку. Поскажите с чем это скормить ихней системе?
Тэги:
Комментарии доступны только авторизированным пользователям
0
— 09.02.2015 — 11:41
делаю на 8.3.5 (8.3.5.1383) и ниже
xB = новый XBase;
xB.Поля.Добавить(«COST», «N», 14, 2);
xB.СоздатьФайл(«c:test.dbf»);
Ошибка инициализации модуля: ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта
по причине:
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта( 3)**: Ошибка при вызове метода контекста (СоздатьФайл)
по причине:
Неправильная информация
на 8. 2 работает
кто-нибудь разбирался с такой проблемой?
1
— 09.02.2015 — 11:46
если у кого работает создание дбф файлов на 8.3 напишите плиз.
2
— 09.02.2015 — 12:02
(0) Попробуй без структуры создать и с индексом.
xB = новый XBase;
ИмяФайлаБазы = «C:test.dbf»;
ИмяФайлаИндекса = «C:test.cdx»;
xB.СоздатьФайл(ИмяФайлаБазы, ИмяФайлаИндекса);
3
— 09.02.2015 — 12:12
(0) гы, могу еще предположить )))))
<Имя> (обязательный)
Тип: Строка.
Имя добавляемого поля. Поддерживаются только латинские имена полей длиной до 10 символов.
букофки не мог случаем перепутать?
4
— 09.02.2015 — 12:29
Хм… Кусочек документации (для клиент-сорверного режима):
Для доступа к файловым ресурсам сервера применяются виртуальные каталоги. Это означает, что в рамках профиля безопасности существует некоторая виртуальная файловая система, в которой создаются каталоги. Каждый виртуальный каталог имеет отражение на реальную файловую систему по определенным правилам. В тот момент, когда прикладному решению необходимо выполнить файловую операцию, в параметре соответствующей функции указывается путь к файлу, расположенному в виртуальной файловой системе. «1С:Предприятие» транслирует виртуальный каталог в реальный и формирует реальный путь к файлу, с которым и выполняется реальная работа. Прикладное решение не может получить информацию о том, в какой физический путь будет отражен виртуальный каталог.
Если в профиле безопасности указаны несколько виртуальных каталогов, то прикладное решение может осуществлять доступ только к этим ресурсам. Попытка доступа к любому другому каталогу (как реальному, так и виртуальному) – невозможна.
5
— 09.02.2015 — 12:58
Немного еще повангую: обычно серверы ставятся под разными пользователями.
Пользователю, под которым запускается 8.2, разрешено производить чтение. Пользователю сервера 8.3 — нет.
6
— 09.02.2015 — 13:17
Может, есть смысл попробовать таки РабочийКаталогДанныхПользователя() ?
7
— 09.02.2015 — 13:33
1це 8.хрень — совместимость вперед/назад разработчиками НЕ ГАРАНТИРОВАНА
8
— 09.02.2015 — 14:34
(5) нет, файловая, под одним пользователем.
9
— 09.02.2015 — 14:36
(2) Ошибка инициализации модуля: ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта
по причине:
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта( 9)**: Ошибка при вызове метода контекста (СоздатьФайл)
по причине:
Не определена структура базы
10
— 09.02.2015 — 14:38
на сервере и на клиенте не смотрел ?
11
— 09.02.2015 — 14:38
(3) нет, имя латинское
12
— 09.02.2015 — 14:39
(10) обычные формы
(6) VZ ВЫИГРЫВАЕТ ВЕЧНУЮ БЛАГОДАРНОСТЬ
13
— 09.02.2015 — 14:41
+12 вот как так, запускаются же даже с одного ярлыка…
14
— 09.02.2015 — 14:47
вынужден признать что это я тупой, я сделал поле для выбора файла, и не записывал файл с выбранным путём. то есть 8.2 сохраняет где-то внутри последний выбранный каталог и по умолчанию если не указывать путь пишет туда. 8.3 надо указывать по любому. наверное это хорошо
Содержание:
1. Что такое COM и COM объект 1С
COM – это объектная модель данных, выстроенная на Майкрософт компоненте, которая является независимой от платформы и распределённой объектной системой. Данная объектная модель служит для создания компонентов в двоичном программном обеспечении, при условии взаимодействия компонентов.
Главным, единым, условием языка программирования, который сможет обеспечить объектную модель COM сервера 1С, является возможность писать структуры указателей и ними вызывать различные функции.
Рассмотрим, что такое COM объект 1С – это некий объект, доступ к данным которого можно получить только при помощи функций, которые связаны. Набор из таких функций называют интерфейсом платформы 1С, а функции внутри наборов называются методами.
Помимо этого, в модели COM сервера 1С необходимо, чтобы для получения доступа к интерфейсным методам нужно было обращаться к указателям на интерфейсы платформы 1С.
2. Ошибка вызова конструктора COMОбъекта в 1С
Ошибка возникает в некоторых случаях, когда бывает, что во время установки системы 1С не регистрируется файл с названием «comcntr.dll», из-за чего работать с COM соединением сервера 1С нельзя ни при каких условиях.
В этом случае, при решении ошибки, важно учитывать нюансы при работе с операционной системой Windows (при этом, версия Windows должна быть выше XP, т.е. будем рассматривать выход для новых версий) и с администрированием системы 1С.
3. Устранение ошибки при вызове конструктора COMОбъект
Ошибка при вызове конструктора COMОбъект в 1С имеет следующее отображение: «2147221164 (0х80040154): Класс не зарегистрирован» либо «Ошибка при вызове конструктора COMОбъект: Недопустимая строка с указанием класса 1С»), вид ошибки представлен на скриншоте ниже:
Выполняем такие действия:
· Для начала, переходим в режим администратора и запускаем командную строку. Важно обратить внимание, что в командной строке должно быть написано: «C:windowssystem32» (либо 64 в конце, если это 64-х битная версия операционной системы). Получаем, что корректный путь для корневой строки должен выглядеть таким образом:
· Следующий шаг – это написать команду «regsvr32», она будет выглядеть так: «C:Program Files1cv88.3.ХХ.ХХХХbincomcntr.dll». Стоит отметить, что нужно прописать свой точный номер релиза платформы, а путь к самой библиотеке нужно брать в кавычки, конечный итог продемонстрирован ниже:
После этих действий, ошибка полностью устранена. В скриншотах-примерах была показана версия платформы 1С под номером «8.3.11.2867 х64».
Специалист компании «Кодерлайн»
Лев Туренко
Первая статья в новом 2021 году будет посвящена программе 1С. Это связанна с тем что данное ПО очень распространено. Так как альтернативы пока что нет. К типовым конфигурация претензий практически нет, в них не появляются ошибки, при обновлении, переносе и других манипуляциях. Что нельзя сказать о самопысных конфигурациях или измененных типовых. Как правило занимаются этим программисты не высокого уровня, так как час разработки профессионала стоить достаточно дорого. В результате конечный пользователь получаем огромные проблемы которые возникают после каких либо манипуляций либо с базой или клиентами. Сегодня поговорим об одной интересной ошибки которая появляется при попытке распечатать какой либо документ «Ошибка при вызове конструктора (COMOбъект) класс не зарегистрирован».
Использование COMOбъектов в 1С это прошлый век, сейчас уже ни кто так не пишет. Раньше с его помощью реализовали печать документов. Они выгружались в OpenLibre Office и от туда уже печатались.
Появиться такая ошибка может после
1 Обновления платформы
2 Переустановки ОС и 1С
3 Обновление конфигурации
4 Проблем с офисными пакетами
5 и т.д.
Это самые распространенные.
У меня есть еще несколько статей в которых я рассказывал как можно исправить различные ошибки 1С рекомендую прочитать.
Ошибка при отправке запроса на сервер
При появлении ошибки в 1С нет кнопки подробнее
Как настроить сортировку в отчете
Как сохранить обработку (как внешнюю)
Как указать версию платформы
Как посмотреть изменения в конфигурации
Три способа избавиться от ошибки «Ошибка при вызове конструктора…»
И так после каких либо манипуляций с 1С у вас стала появляться ошибка.
Ошибка при вызове конструктора (COMOбъект): -2147221164(0x80040154) класс не зарегистрирован
Первый способ
Самое простое это переустановить офисные пакеты OpenLibre, так же как вариант если у вас стоял Open поставить Libre и на оборот. Это нужно для того чтобы обновить специальный компонент.
Второй способ
Попробовать зарегистрировать самостоятельно, для этого запускаем командную строку от имени администратора, переходим в каталог введя команду.
cd windowssyswow64
И регистрируем
regsvr32 «C:Program Files (x86)1cv88.3.16.18.14comcntr.dll»
Кстати данную манипуляцию нужно проводить на сервере.
Третий способ
Установить 32 битную версию клиента 1С, можно даже поверх х64. В итоге у вас появиться два ярлычка для запуска, один для х32 второй х64.
Версию можно указать и в ярлыке запуска 1С.
Можно еще попробовать самостоятельно создать COM + , но лично из своего опыта могу сказать это не помогает. Самый действенный вариант это установка х32 клиента. Так как компонента которая необходимо работает только с х32.
Так же проблема может быть непосредственно в самом коде.
Здравствуйте
Альфа-Авто: Автосалон+Автосервис+Автозапчасти ПРОФ. Редакция 5 (5.0.07.04)
Бухгалтерия предприятия, редакция 3.0 (3.0.22.14)
Конфигурации не редактировались и обработка выгрузки тоже!
Использую Загрузка_в_БП_3.0.epf, которая шла вместе с поставкой альфы(но альфа была прежней версси 5.0.07.03)
Проблема:
При загрузке данных из Альфы в Бухгалтерию(таблица соответствия еще пустая(база только начинает заполняться)) происходит ошибка.
В отчете такое сообщение:
ПоступлениеТоваров № 0000000002 (14.05.2013 11:09:46)
«Импортирование не удалось Ошибка при загрузке объекта.
Доп информация: {ВнешняяОбработка.ЗагрузкаДанных.МодульОбъекта(3192)}: Преобразование значения к типу Булево не может быть выполнено»
И так у всех поступлений!!!
Я нашел кусок кода по номеру строки 3192 — оказалось ошибка в том что переменная ПрименениеУСН не является ни ИСТИНА ни ЛОЖЬ.
Но учетную политику наш бухгалтер заполнял и мы используем обычную систему налогообложения.
Я заменил строку
Если ПрименениеУСН Тогда
на
Если ПрименениеУСН = ИСТИНА Тогда
Сделал повторно выгрузку и вылезла другая ошибка:
Недостаточно фактических параметров в табличной части «товары» в документе «поступление товаров» хотя в альфе табличная часть заполнена и документ проведен. В обработке при выгрузке вызывается модуль менеджера документа ПоступлениеТоваровУслуг процедура «ЗаполнитьСчетаУчетаВСтрокеТабличнойЧасти» и пишет что «недостаточно фактических параметров». Я проанализировал и понял что не работает программное заполнение счетов учета по номенклатуре, когда закоментировал процедуры такие как:
ДокМенеджер.ЗаполнитьСчетаУчетаВСтрокеТабличнойЧасти(ТекОбъект, ТекСтрока, «Товары»);
Вот когда закомментировал выгрузка прошла но документы не провелись. Зашел в документы а там счета учета пустые. После чего интерактивно повторно перевыбрал номенклатуру и счета заполнились. Но они заполнились при интерактивном заполнении, а при загрузке счета учета не определяются
Скиньте пожалуйста нормальную обработку!!
В обработке «Выгрузка/загрузка данных через файл» при загрузке в файловую базу с отключенным флагом «Выполнять на сервере»
выдает ошибку:
{ВнешняяОбработка.ирВыгрузкаЗагрузкаДанныхЧерезФайл.МодульОбъекта(105)}: Ошибка при вызове конструктора (ЧтениеZipФайла)
ЧтениеZip = Новый ЧтениеZipФайла(ИмяФайлаИсточника);
по причине:
Файл не найден: e1cibtempstorage109ca3c3-b193-4103-a016-4f25f258d4cd
——
Платформа: 8.2.19.130
Режим БД: файловый
Конфигурация. Название: Комплексная автоматизация, редакция 1.1 (1.1.108.4)
Конфигурация. Основной режим запуска: Обычное приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим совместимости: Версия8_2_13
Конфигурация. Версия БСП: 1.2.4.1
Инструменты разработчика. Версия: Портативные 5.06p
Инструменты разработчика. Объекты на сервере: Нет
Инструменты разработчика. Серверный модуль: Нет
Клиент. ОС: Windows x86 version 6.2 (Build 9200)
Клиент. Приложение: Обычное приложение 32б
Клиент. От имени администратора Windows: Нет
Клиент. Текущий язык системы: ru_RU
Я пользуюсь этим способом, работает везде:
&НаКлиенте
Процедура Загрузка(Команда)Режим = РежимДиалогаВыбораФайла.О� �крытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Фильт� � = НСтр(«ru = »; en = »»)
+ «Excel 97 • 2003 (*.xls)|*.xls|Excel 2010 и выше (*.xlsx)|*.xlsx»;ДиалогОткрытияФайла.Множе� �твенныйВыбор = Ложь;
ДиалогОткрытияФайла.Загол� �вок = «Выберите файлы»;
Если ДиалогОткрытияФайла.Выбра� �ь() ТогдаПолныйПуть = ДиалогОткрытияФайла.Полно� �ИмяФайла;
COMОб = ПолучитьCOMОбъект(ПолныйПут ь);
СтраницаФ = COMОб.WorkSheets(1);Для НомСтроки = 2 По 100 Цикл
МассивЭлементов = Новый Массив;
МассивЭлементов.Вставить(0, СтраницаФ.Cells(НомСтроки,12).va lue);
МассивЭлементов.Вставить(1, СтраницаФ.Cells(НомСтроки,5).val ue);
МассивЭлементов.Вставить(2, СтраницаФ.Cells(НомСтроки,6).val ue);
МассивЭлементов.Вставить(3, СтраницаФ.Cells(НомСтроки,15).va lue);
МассивЭлементов.Вставить(4, СтраницаФ.Cells(НомСтроки,8).val ue);
МассивЭлементов.Вставить(5, СтраницаФ.Cells(НомСтроки,13).va lue);
МассивЭлементов.Вставить(6, СтраницаФ.Cells(НомСтроки,14).va lue);
МассивЭлементов.Вставить(7, НомСтроки);
//МассивЭлементов.Вставить(8, СтраницаФ.Cells(НомСтроки,11).va lue);
//МассивЭлементов.Вставить(9, СтраницаФ.Cells(НомСтроки,12).va lue);
//МассивЭлементов.Вставить(10 , СтраницаФ.Cells(НомСтроки,13).va lue);
//МассивЭлементов.Вставить(11 , СтраницаФ.Cells(НомСтроки,6).val ue);Если НЕ ЗначениеЗаполнено(Страниц� �Ф.Cells(НомСтроки,12).value) И НЕ ЗначениеЗаполнено(Страниц� �Ф.Cells(НомСтроки,5).value) Тогда
Прервать;
КонецЕсли;
ЗагрузкаНаСервере(МассивЭ� �ементов,ПолныйПуть);
КонецЦикла;
Иначе
Режим = РежимДиалогаВопрос.ОК;
Ответ = Вопрос(НСтр(«ru = ‘Загрузка прервана!’;»
+ » en = ‘Do you want to continue?’»), Режим, 0);
Если Ответ = КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;КонецЕсли;
КонецПроцедуры&НаСервере
Процедура ЗагрузкаНаСервере(МассивЭ� �ементов,ПолныйПуть)ВремяОплаты = СокрЛП(МассивЭлементов.Пол учить(0));
КартаКлиента = СокрЛП(МассивЭлементов.Пол учить(1));
СнятаяСумма = СокрЛП(МассивЭлементов.Пол учить(2));
ТелФ = СокрЛП(МассивЭлементов.Пол учить(3));ДатаФ = СокрЛП(МассивЭлементов.Пол учить(4));
НомерФ = СокрЛП(МассивЭлементов.Пол учить(5));
СуммаФ = СокрЛП(МассивЭлементов.Пол учить(6));
НомСтроки = СокрЛП(МассивЭлементов.Пол учить(7));
КонецПроцедуры
TARPV
30.06.15 — 12:03
Создаю на клиенте объект «XBase», затем передаю его в качестве параметра в процедуру выполняемую на сервере, в ответ получаю следующее сообщение о ошибке:
{Форма.Форма.Форма(130)}: Ошибка при вызове метода контекста (СформироватьНаСервере)
СформироватьНаСервере(ЭлементСпискаЗначений.Значение,xB);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘param’:
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘XBase’
Что я делаю не правильно???
itlikbez
1 — 30.06.15 — 12:21
(0) Все логично. Подумай сам — в чем смысл передачи параметра на сервер? По-твоему, база тоже на сервер «поедет»?
Бубка Гоп
2 — 30.06.15 — 12:27
(0) объект не сериализуется, так просто между клиент сервером его не попинаешь. если не критично, лучше создавай сразу на сервере.
KarpovDeniska
3 — 30.06.15 — 12:47
ПоместитьВоВременноеХранилище() ?
TARPV
4 — 30.06.15 — 12:52
(1) (2) Заполнить данными объект «XBase» я могу только на сервере т.к. он заполнятся на основании данных из «Запроса», затем его нужно вернуть на клиент и сохранить в файловой системе клиентского PC.
ДенисЧ
5 — 30.06.15 — 13:05
Прочитай на клиенте, результат передай на сервер.
И наоборот
Славен
6 — 30.06.15 — 13:08
(0) а нафига ты его передаешь на сервер? ты с сервера получай результат запроса, а все заполняй на клиенте
Славен
7 — 30.06.15 — 13:08
(4) заполнить ты его можешь и должен только на клиенте, а вот данные для заполнения получишь на сервере
TARPV
8 — 30.06.15 — 13:21
(6) ВыборкаИзРезультатаЗапроса не доступна на тонком клиенте и соответственно ее нельзя передать на клиент и использовать для заполнения объект «XBase».
Получается замкнутый круг. Передавать объект «XBase» между клиентом и сервером нельзя, а как его тогда заполнить на клиенте по данным запроса не понятно!?
Славен
9 — 30.06.15 — 13:23
(8) рукалицо
EvgeniuXP
10 — 30.06.15 — 13:23
Сначала базу заполняют на сервере, а потом клиент читает из нее и выводит на форму
TARPV
11 — 30.06.15 — 13:37
(10) При чем тут форма?
Вопрос про то, как объект «XBase» заполнить на сервере и вернуть на тонкий клиент, а там сохранить на жесткий диск.
Господин ПЖ
12 — 30.06.15 — 13:39
(1) не. надо. этого. делать
Господин ПЖ
13 — 30.06.15 — 13:39
(12) -> (11)
Провинциальный 1сник
14 — 30.06.15 — 13:46
(11) Заполняй xbase на клиенте, а данные для заполнения доставай с сервера.
Бубка Гоп
15 — 30.06.15 — 13:46
вобщем, имхо проблема в том что товарищ не знает как получить данные с сервера на клиент
Провинциальный 1сник
16 — 30.06.15 — 13:47
(15) Как-то так.
&НаСервере
Функция ПолучитьТЗ()
Запрос=Новый Запрос;
Запрос.Текст=»ВЫБРАТЬ Наименование ИЗ Справочник.ПодразделенияОрганизаций»;
ТабЗапроса=Запрос.Выполнить().Выгрузить();
возврат ТабЗапроса;
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
ТЗ=ПолучитьТЗ();
Для Каждого Строка ИЗ ТЗ цикл
Сообщить(Строка.Наименование);
КонецЦикла;
КонецПроцедуры
Бубка Гоп
17 — 30.06.15 — 13:50
(16) плохой пример
Бубка Гоп
18 — 30.06.15 — 13:50
(16) клиент не знает тз
Господин ПЖ
19 — 30.06.15 — 13:51
давно тз между клиентом и сервером ходить научили?
Провинциальный 1сник
20 — 30.06.15 — 13:57
(19) Там ходит что-то урезанное, указанный пример — рабочий.
Провинциальный 1сник
21 — 30.06.15 — 13:57
(20) Ой, извините, ошибся — проверил в толстом.
Провинциальный 1сник
22 — 30.06.15 — 13:58
Ну тогда лепить список из структур — они поддерживаются в тонком..
banco
23 — 30.06.15 — 14:00
(22) а не проще все сформировать и сохранить в файл на сервере и передать этот файл на клиент?
Господин ПЖ
24 — 30.06.15 — 14:00
Запрос.Выполнить() отдать на клиента и там уже издеваться над ним
Бубка Гоп
25 — 30.06.15 — 14:01
(16) Поправлено
&НаСервере
Функция ПолучитьСтруктурку()
Запрос=Новый Запрос;
Запрос.Текст=»ВЫБРАТЬ Наименование ИЗ Справочник.СтруктураПредприятия»;
Структурка = Новый Структура;
Результатик = Запрос.Выполнить();
Выборочка = Результатик.Выбрать();
Счетчичек = 0;
Пока Выборочка.Следующий() Цикл;
Структурка.Вставить(«Имечко» + Счетчичек, Выборочка.Наименование);
Счетчичек = Счетчичек + 1;
КонецЦикла;
возврат Структурка;
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
Структурка=ПолучитьСтруктурку();
Для Каждого Элементик ИЗ Структурка цикл
Сообщить(Элементик.Ключ + «: » + Элементик.Значение);
КонецЦикла;
КонецПроцедуры
Бубка Гоп
26 — 30.06.15 — 14:03
(24) Какой из методов РезультатаЗапроса доступен на клиенте?
DmitrO
27 — 30.06.15 — 14:04
вы что тут мозг человеку выносите
1.сразу вызываешь серверную функцию
2.на сервере создаешь дбф файл с именем временного файла (ПолучитьИмяВременогоФайла)
3.заполняешь его данными
4.закрываешь файл
5.создаешь объект ДвоичныеДанные, указываешь имя своего врем. файла, помещаешь его во временное хранилище
6.возвращаешь из функции адрес в хранилище
7.на клиенте функцией ПолучитьФайл размещаешь файл в ФС клиента
DmitrO
28 — 30.06.15 — 14:04
(23)правильно
mTema32
29 — 30.06.15 — 14:05
(25) Так это структура…
Может ошибаюсь, но вроде можно ТЗ пульнуть в реквизит формы и оттуда прочитать клиентом. Не?
Бубка Гоп
30 — 30.06.15 — 14:07
(29) Нет
hhhh
31 — 30.06.15 — 14:07
(29) да, просто создать реквизит формы ТЗ типа таблица значений. И он прекрасно виден и на клиенте и на сервере. М не надо никаких структурок.
Бубка Гоп
32 — 30.06.15 — 14:08
(30) Вру, можно
DmitrO
33 — 30.06.15 — 14:11
(31)можно, но только зачем? если проще все сделать на сервере и просто вернуть файл.
структуру дбф еще в реквизит формы закладывать придется.
mTema32
34 — 30.06.15 — 14:14
(33) Да, на счет структуры дбф — согласен. Если там 100500 колонок то через файл может и проще.
Бубка Гоп
35 — 30.06.15 — 14:15
ТС притих чего то
TARPV
36 — 30.06.15 — 14:21
(27) 5.создаешь объект ДвоичныеДанные, указываешь имя своего врем. файла, помещаешь его во временное хранилище
А обязательно создавать объект ДвоичныеДанные? Без него временный файл нельзя поместить во временное хранилище?
EvgeniuXP
37 — 30.06.15 — 14:21
зачем клиенту твой дбф-файл? Че он сним делать будет?
EvgeniuXP
38 — 30.06.15 — 14:23
Смотреть? Редактировать? Или он хочет знать где лежит? Или его трясет что лежиь на сервере — а это секретные данные и только у него? Так сохрани ему на комп, упакуй и пароль поставь
etc
39 — 30.06.15 — 14:25
(38) на дискетку запишет
DmitrO
40 — 30.06.15 — 14:25
(36)нельзя. тебя это пугает? =)
Бубка Гоп
41 — 30.06.15 — 14:26
(27) Кстати адрес в хранилище необязателен, можно тупо вернуть на клиента ДвоичныеДанные
DmitrO
42 — 30.06.15 — 14:30
(41)Швадратные Ктаны (не удержался :))
по документации ДвоичныеДанные не доступны в тонком
Бубка Гоп
43 — 30.06.15 — 14:31
(42) ДвоичныеДанные (BinaryData)
ДвоичныеДанные (BinaryData)
Методы:
Записать (Write)
Размер (Size)
Конструкторы:
На основании файла
Описание:
Значение содержит двоичные данные, которые считываются из файла. Значение может быть сохранено в ХранилищеЗначения.
Хранимые данные могут быть записаны в файл.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://www.w3.org/2001/XMLSchema}. Имя типа XDTO: может быть любым из перечисленных: base64Binary, hexBinary
Бубка Гоп
44 — 30.06.15 — 14:32
чтобы не быть голословным вот рабочий пример
&НаСервере
Функция ПолучитьФайлик()
Запрос=Новый Запрос;
Запрос.Текст=»ВЫБРАТЬ Наименование ИЗ Справочник.СтруктураПредприятия»;
Результатик = Запрос.Выполнить();
ИмяФайла = ПолучитьИмяВременногоФайла();
Файл = Новый ЗаписьТекста (ИмяФайла);
Выборочка = Результатик.Выбрать();
Пока Выборочка.Следующий() Цикл;
Файл.ЗаписатьСтроку(Выборочка.Наименование);
КонецЦикла;
Файл.Закрыть();
ДД = Новый ДвоичныеДанные(ИмяФайла);
Возврат ДД;
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
ДД = ПолучитьФайлик();
ДД.Записать(«Какой_то_там_локальный_путьфайлик.txt»);
КонецПроцедуры
DmitrO
45 — 30.06.15 — 14:33
(44)я знаю
Бубка Гоп
46 — 30.06.15 — 14:33
(45) тогда почему (42) ?
DmitrO
47 — 30.06.15 — 14:34
(43)а вот из 8.3
ДвоичныеДанные (BinaryData)
Методы:
Записать (Write)
Размер (Size)
Конструкторы:
На основании файла
Описание:
Значение содержит двоичные данные, которые считываются из файла. Значение может быть сохранено в ХранилищеЗначения.
Хранимые данные могут быть записаны в файл.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://www.w3.org/2001/XMLSchema}. Имя типа XDTO: может быть любым из перечисленных: base64Binary, hexBinary.
Бубка Гоп
48 — 30.06.15 — 14:35
(47) эва как, тогда мои пардоны, я безнадежно устарел, загнил так сказать на своей 8.2, которая так умеет
Бубка Гоп
49 — 30.06.15 — 14:37
(47) кстати, …Сериализуется.
интересненько
DmitrO
50 — 30.06.15 — 14:40
(48)конечно, иначе бы хрен бы мы его засунули во временное хранилище
но сериализовать его в текст и передавать строкой конечно же менее эффективно чем ПолучитьФайл. Получить файл это простое двоичное копирование с сервера на клиент.
DmitrO
51 — 30.06.15 — 14:41
(36)не забудь еще временный файл зачистить (УдалитьФайлы)
Бубка Гоп
52 — 30.06.15 — 14:43
(50) Интересно, почему в 8.3 у клиента отпилили ДД? Утоньшение тонкого клиента?
DmitrO
53 — 30.06.15 — 14:44
(36)+на шаге 5 помещать во временное хранилище надо без указания идентификатора формы (2 параметр ПоместитьВоВременноеХранилище), это обеспечит удаление объекта из временного хранилища при следующем серверном вызове.
DmitrO
54 — 30.06.15 — 14:47
(52)да херней занимаются, проповедуют идею: чтобы эти 1сники не писали не эффективный код (они ж тупые) мы их ограничим так чтобы написать его было нельзя.
Бубка Гоп
55 — 30.06.15 — 14:48
(54) Годная политика
TARPV
56 — 30.06.15 — 14:58
(27) функция ПолучитьИмяВременногоФайла(«dbf») возвращает что то вроде: C:Usersi907_1c_serviceAppDataLocalTempv8_CE67_f6dd.dbf
А метод СоздатьФайл() объект «XBase» требует имени файла не более 8 символов.
Соответственно эта функция для этой задачи не подходит
Бубка Гоп
57 — 30.06.15 — 15:02
(56) дык переименуй прежде чем создавать xbase
DmitrO
58 — 30.06.15 — 15:07
(56)ну значит получай имя каталога временных файлов, а имя файла придумай сам.
Тут проблема будет только в том что имя может совпасть с другим файлом из другого сеанса. Например другой юзер в тот же момент будет выполнять ту же функцию.
Можно сделать каталоги и менем из идентификатора сеанса например, чтобы гарантированно изолировать их друг от друга.
TARPV
59 — 30.06.15 — 15:08
Всем спасибо за советы!!!
Вообщем -то получилось, как описано (27), но на клиент я передаю объект ДвоичныеДанные и там его сохраняю т.е. временное хранилище не использую.
DmitrO
60 — 30.06.15 — 15:08
добро пожаловать в настоящую клиент-серверную среду =)
Бубка Гоп
61 — 30.06.15 — 15:13
(59) В 8.3 ДД нет на клиенте, но использовать его можно?
TARPV
62 — 30.06.15 — 15:18
(61)
1С:Предприятие 8.3 (8.3.6.1999)
ДвоичныеДанные (BinaryData)
Записать (Write)
Синтаксис:
Записать(<ИмяФайла>)
Параметры:
<ИмяФайла> (обязательный)
Тип: Строка.
Имя файла, в который необходимо записать двоичные данные. Если файл существует, он будет перезаписан, иначе — создан.
Описание:
Записывает двоичные данные в файл.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Бубка Гоп
63 — 30.06.15 — 15:20
(62) Класс. Объект не доступен, его метод — доступен. 1С такая 1С
DmitrO
64 — 30.06.15 — 15:28
(63)не это похоже в документации 8.3.5 ошибка, проверил — работает вроде =)
но смотрите: только в тонком, в веб-клиенте (хз теперь уже, проверять надо)
Ну и чрез ПолучитьФайл, конечно меньше будет информации передаваться т.к. не будет сериализации параметров в текст.
Провинциальный 1сник
65 — 30.06.15 — 15:32
(63) А как тогда поступать, если надо наоборот с клиента передать файл на сервер?
Бубка Гоп
66 — 30.06.15 — 15:33
(65) Также, вроде разобрались что у клиента таки есть ДД
DmitrO
67 — 30.06.15 — 15:38
(65)правильно: это использовать функцию ПоместитьФайл
Это обеспечит работу и в веб-клиенте.
DmitrO
68 — 30.06.15 — 15:40
ДвоичныеДанные (BinaryData)
На основании файла
Синтаксис:
Новый ДвоичныеДанные(<ИмяФайла>)
Параметры:
<ИмяФайла> (обязательный)
Тип: Строка.
Имя файла, из которого будет загружено значение в виде двоичных данных.
Описание:
Создает объект и помещает в него двоичные данные, взятые из файла.
В режиме веб-клиента недоступен.
DmitrO
69 — 30.06.15 — 15:40
но доверять СП надо осторожно
Провинциальный 1сник
70 — 30.06.15 — 15:53
(68) Это от какой версии? У меня в 8.3.6.1977 написано что поддерживается и на тонком клиенте, и на веб-клиенте.
DmitrO
71 — 30.06.15 — 15:59
(70)8.3.5.1517
mTema32
72 — 30.06.15 — 16:05
(70) 8.3.6.2041 — тут тоже доступно.
Провинциальный 1сник
73 — 30.06.15 — 16:26
Странно, да.. Похоже у 1с поменялись планы — хотели сначала отказаться от ДД на клиенте, а передумали)
Создаю на клиенте объект «XBase», затем передаю его в качестве параметра в процедуру выполняемую на сервере, в ответ получаю следующее сообщение о ошибке: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (СформироватьНаСервере) СформироватьНаСервере(ЭлементСпискаЗначений.Значение,xB); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства ‘param’: форма: Элемент имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа ‘XBase’ Что я делаю не правильно???
Все логично. Подумай сам — в чем смысл передачи параметра на сервер? По-твоему, база тоже на сервер «поедет»?
объект не сериализуется, так просто между клиент сервером его не попинаешь. если не критично, лучше создавай сразу на сервере.
ПоместитьВоВременноеХранилище ?
Заполнить данными объект «XBase» я могу только на сервере т.к. он заполнятся на основании данных из «Запроса», затем его нужно вернуть на клиент и сохранить в файловой системе клиентского PC.
Прочитай на клиенте, результат передай на сервер. И наоборот
а нафига ты его передаешь на сервер? ты с сервера получай результат запроса, а все заполняй на клиенте
заполнить ты его можешь и должен только на клиенте, а вот данные для заполнения получишь на сервере
ВыборкаИзРезультатаЗапроса не доступна на тонком клиенте и соответственно ее нельзя передать на клиент и использовать для заполнения объект «XBase». Получается замкнутый круг. Передавать объект «XBase» между клиентом и сервером нельзя, а как его тогда заполнить на клиенте по данным запроса не понятно!?
Сначала базу заполняют на сервере, а потом клиент читает из нее и выводит на форму
При чем тут форма? Вопрос про то, как объект «XBase» заполнить на сервере и вернуть на тонкий клиент, а там сохранить на жесткий диск.
#14
by Провинциальный 1сник
Заполняй xbase на клиенте, а данные для заполнения доставай с сервера.
вобщем, имхо проблема в том что товарищ не знает как получить данные с сервера на клиент
#16
by Провинциальный 1сник
давно тз между клиентом и сервером ходить научили?
#20
by Провинциальный 1сник
Там ходит что-то урезанное, указанный пример — рабочий.
#21
by Провинциальный 1сник
Ой, извините, ошибся — проверил в толстом.
#22
by Провинциальный 1сник
Ну тогда лепить список из структур — они поддерживаются в тонком..
а не проще все сформировать и сохранить в файл на сервере и передать этот файл на клиент?
Запрос.Выполнить отдать на клиента и там уже издеваться над ним
Какой из методов РезультатаЗапроса доступен на клиенте?
вы что тут мозг человеку выносите 1.сразу вызываешь серверную функцию 2.на сервере создаешь дбф файл с именем временного файла (ПолучитьИмяВременогоФайла) 3.заполняешь его данными 4.закрываешь файл 5.создаешь объект ДвоичныеДанные, указываешь имя своего врем. файла, помещаешь его во временное хранилище 6.возвращаешь из функции адрес в хранилище 7.на клиенте функцией ПолучитьФайл размещаешь файл в ФС клиента
Так это структура… Может ошибаюсь, но вроде можно ТЗ пульнуть в реквизит формы и оттуда прочитать клиентом. Не?
да, просто создать реквизит формы ТЗ типа таблица значений. И он прекрасно виден и на клиенте и на сервере. М не надо никаких структурок.
можно, но только зачем? если проще все сделать на сервере и просто вернуть файл. структуру дбф еще в реквизит формы закладывать придется.
Да, на счет структуры дбф — согласен. Если там 100500 колонок то через файл может и проще.
5.создаешь объект ДвоичныеДанные, указываешь имя своего врем. файла, помещаешь его во временное хранилище А обязательно создавать объект ДвоичныеДанные? Без него временный файл нельзя поместить во временное хранилище?
зачем клиенту твой дбф-файл? Че он сним делать будет?
Смотреть? Редактировать? Или он хочет знать где лежит? Или его трясет что лежиь на сервере — а это секретные данные и только у него? Так сохрани ему на комп, упакуй и пароль поставь
нельзя. тебя это пугает? =)
Кстати адрес в хранилище необязателен, можно тупо вернуть на клиента ДвоичныеДанные
Швадратные Ктаны (не удержался :)) по документации ДвоичныеДанные не доступны в тонком
ДвоичныеДанные (BinaryData) Методы: Записать (Write) Конструкторы: На основании файла Описание: Значение содержит двоичные данные, которые считываются из файла. Значение может быть сохранено в ХранилищеЗначения. Хранимые данные могут быть записаны в файл. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {}. Имя типа XDTO: может быть любым из перечисленных: base64Binary, hexBinary
чтобы не быть голословным вот рабочий пример &НаСервере
а вот из 8.3 ДвоичныеДанные (BinaryData) Методы: Конструкторы: На основании файла Описание: Значение содержит двоичные данные, которые считываются из файла. Значение может быть сохранено в ХранилищеЗначения. Хранимые данные могут быть записаны в файл. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {}. Имя типа XDTO: может быть любым из перечисленных: base64Binary, hexBinary.
эва как, тогда мои пардоны, я безнадежно устарел, загнил так сказать на своей 8.2, которая так умеет
кстати, …Сериализуется. интересненько
конечно, иначе бы хрен бы мы его засунули во временное хранилище но сериализовать его в текст и передавать строкой конечно же менее эффективно чем ПолучитьФайл. Получить файл это простое двоичное копирование с сервера на клиент.
не забудь еще временный файл зачистить (УдалитьФайлы)
Интересно, почему в 8.3 у клиента отпилили ДД? Утоньшение тонкого клиента?
+на шаге 5 помещать во временное хранилище надо без указания идентификатора формы (2 параметр ПоместитьВоВременноеХранилище), это обеспечит удаление объекта из временного хранилища при следующем серверном вызове.
да херней занимаются, проповедуют идею: чтобы эти 1сники не писали не эффективный код (они ж тупые) мы их ограничим так чтобы написать его было нельзя.
функция ПолучитьИмяВременногоФайла(«dbf») возвращает что то вроде: C:Usersi907_1c_serviceAppDataLocalTempv8_CE67_f6dd.dbf А метод СоздатьФайл объект «XBase» требует имени файла не более 8 символов. Соответственно эта функция для этой задачи не подходит
дык переименуй прежде чем создавать xbase
ну значит получай имя каталога временных файлов, а имя файла придумай сам. Тут проблема будет только в том что имя может совпасть с другим файлом из другого сеанса. Например другой юзер в тот же момент будет выполнять ту же функцию. Можно сделать каталоги и менем из идентификатора сеанса например, чтобы гарантированно изолировать их друг от друга.
Всем спасибо за советы!!! Вообщем -то получилось, как описано , но на клиент я передаю объект ДвоичныеДанные и там его сохраняю т.е. временное хранилище не использую.
добро пожаловать в настоящую клиент-серверную среду =)
В 8.3 ДД нет на клиенте, но использовать его можно?
1С:Предприятие 8.3 (8.3.6.1999) Синтаксис: Записать(<ИмяФайла>) Параметры: Тип: Строка. Имя файла, в который необходимо записать двоичные данные. Если файл существует, он будет перезаписан, иначе — создан. Описание: Записывает двоичные данные в файл. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Класс. Объект не доступен, его метод — доступен. 1С такая 1С
не это похоже в документации 8.3.5 ошибка, проверил — работает вроде =) но смотрите: только в тонком, в веб-клиенте (хз теперь уже, проверять надо) Ну и чрез ПолучитьФайл, конечно меньше будет информации передаваться т.к. не будет сериализации параметров в текст.
#65
by Провинциальный 1сник
А как тогда поступать, если надо наоборот с клиента передать файл на сервер?
Также, вроде разобрались что у клиента таки есть ДД
правильно: это использовать функцию ПоместитьФайл Это обеспечит работу и в веб-клиенте.
ДвоичныеДанные (BinaryData) На основании файла Синтаксис: Новый ДвоичныеДанные(<ИмяФайла>) Параметры: Тип: Строка. Имя файла, из которого будет загружено значение в виде двоичных данных. Описание: Создает объект и помещает в него двоичные данные, взятые из файла. В режиме веб-клиента недоступен.
но доверять СП надо осторожно
#70
by Провинциальный 1сник
Это от какой версии? У меня в 8.3.6.1977 написано что поддерживается и на тонком клиенте, и на веб-клиенте.
8.3.6.2041 — тут тоже доступно.
#73
by Провинциальный 1сник
Странно, да.. Похоже у 1с поменялись планы — хотели сначала отказаться от ДД на клиенте, а передумали)
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’
Описание ошибки:
Ошибка при программировании, конфигурировании кода в 1С 8:
Ошибка отображения типов:
Отсутствует отображение для типа ‘ЭлементСпискаЗначений’
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘value’:
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value
Найденные решения:
Нажатие на изображении увеличит его
Возникла при написании кода индивидуальной конфигурации. Но, как оказалось, может подстерегать программиста из-за его невнимательности и при конфигурировании в других конфигурациях. Итак, в чем же причина возникновения данной ошибки. В управляемой форме был создан реквизит типа «СписокЗначений». При открытии формы по коду срабатывает обработчик заполнения этого списка значений. Т.е. в коде создается переменная с помощью конструктора «Новый СписокЗначений», значение которой потом и устанавливается реквизиту формы. Но, перед тем как это происходит, в коде список значений изменяется — в частности выполняется его дополнительная сортировка. Конечно, ошибка «Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’» может возникнуть у Вас не только в такой ситуации. Сейчас разберемся в чем ее суть.
Как было отмечено в этой частной задаче выполняется сортировка исходного заполненного списка значений. Но, т.к. в этой частной задаче не подходило использование метода «СортироватьПоЗначению(<Направление>)«, т.к. сортировка более сложная (по текстовым данным с разделителями порядка, содержащих разделитель «.», пример: 1.1, 2.2, 2.2.1, 2.2.2, 3.1, 3.2, 3.3.1, 3.3.2). Поэтому сортировка выполнялась программно с созданием новой переменной типа «СписокЗначений» и ее заполнением по данным исходного списка.
После сохранения кода и попытки проверки появилась ошибка, текст которой приведен в начале страницы. Анализ данных через предмет отладки неявно, но показал ошибку.
Нажатие на изображении увеличит его
Не смотря на то, что в методической информации «Синтакс-помощника» 1С 8 указано, что значение элемента списка значений может быть любым (произвольным), все-таки для случая использования в управляемой форме в качестве реквизита накладывается ограничение по типу. И нельзя в значение такого списка значений поместить «ЭлементСискаЗначений» другого списка значений.
Т.е. для моего случая использования списка значений в управляемой форме в качестве реквизита ошибка была в коде, где происходило заполнение значений нового списка по данным исходного при сортировке.
Нажатие на изображении увеличит его
Было выполнено исправление в коде для обращения к значениям и передачи их в качестве значений нового списка значений.
Нажатие на изображении увеличит его
В данном случае значениями списка были значения примитивного тип «Строка», поэтому дальнейшая работа доработанного кода стала возможной. И это все-таки позволило реализовать задачу. Если у Вас будут другие типы, например ссылки, то продумывайте заранее, как будете упорядочить, возможно придется через другие универсальные объекты, например использование таблицы значений, и потом заполнять конечный список значений. Другие примитивные типы не проверялись, но предполагаю, что они так же подойдут для корректной работы в управляемой форме. в качестве значений списка. Поэтому учитывайте это, если столкнетесь с данной ошибкой при Вашем конфигурировании — подбирайте по возможности простой тип для значений списка.
Нажатие на изображении увеличит его
Таким образом на примере данной частной ситуации возникновения ошибки при конфигурировании в 1С 8 «Отсутствует отображение для типа ЭлементСпискаЗначений, по причине, ошибка передачи данных между клиентом и сервером, значение недопустимого типа» извлекаем вывод о том, что нужно быть внимательным и не заполнять значения объекта «Список значений» элементами другого списка значений. А передавать значения элемента списка значений, если одна переменная типа «СписокЗначений» заполняется за счет другой подобной.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
16-03-2022
Журавлев А.С.
(Сайт azhur-c.ru)
Здравствуйте. В собственной конфигурации есть документ «ОбъектныйГрафик» с Тч «Задания». в которую входят реквизиты: ВыдающийОтдел — СправочникСсылка.Подразделения, Задание — СправочникСсылка.ЗаданияШаблон, ДеньВыдачи -целое число.
Справочник ЗаданияШаблон имеет структуру: Наименование содержит наименование задания, ДеньВыдачи(целое число) — порядковый номер рабочего дня выдачи задания. Хочу сделать, чтобы при добавлении строки в ТЧ при изменении реквизита «Задание» автоматически выводился День выдачи для этого задания. Делаю так:
1C | ||
|
В режиме предприятия я при изменении задания вылетает ошибка:
{Документ.ОбъектныйГрафик.Форма.ФормаДокумента.Фор ма(140)}: Ошибка при вызове метода контекста (ПолучитьДеньВыдачи)
ТекущаяСтрока.ДеньВыдачи=ПолучитьДеньВыдачи(Текуща яСтрока.ВыдающийОтдел,ТекущаяСтрока.Задание);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’
Что делаю не так? помогите пожалуйста.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Данная ошибка возникает в тот момент, когда Вы пытаетесь вызвать серверный метод и передаете ему в качестве параметра управляемую форму.
Рассмотрим следующий модуль управляемой формы:
&НаСервере Функция ТестВызоваСервера(Форма) Форма.ТолькоПросмотр = Истина; КонецФункции // ТестВызоваСервера() &НаКлиенте Процедура ПокупательПриИзменении(Элемент) //попытка передачи переменной локального контекста на сервер ТестВызоваСервера(ЭтаФорма); КонецПроцедуры
Дело в том, что в контексте модуля управляемой формы переменная ЭтаФорма
доступна всегда (как на клиенте, так и на сервере) и дополнительно ее передавать не требуется (если только вы не вызываете процедуру или функцию, перед которой указана директива &НаСервереБезКонтекста
). Правильным будет следующий код:
&НаСервере Функция ТестВызоваСервера() ЭтаФорма.ТолькоПросмотр = Истина; КонецФункции // ТестВызоваСервера() &НаКлиенте Процедура ПокупательПриИзменении(Элемент) //вызов контекстной серверной функции ТестВызоваСервера(); КонецПроцедуры
Аналогичное замечание относится к серверным вызовам. Вы не можете передать содержимое переменной ЭтаФорма
на сервер. Вы можете только запросить необходимую информацию на сервере и изменить форму в контексте клиента, либо реализовать это через серверный метод самой формы. Например, такой код работать не будет:
&НаКлиенте Процедура ПокупательПриИзменении(Элемент) //попытка передачи переменной локального контекста на сервер ОбщийМодульСервер.Тест(ЭтаФорма); КонецПроцедуры
Подумайте сами, чем можно заменить такой вызов
Сергей
Местный
Сообщений: 8
Баллов: 15
Регистрация: 26.06.2022
#10
0
28.06.2022 13:36:40
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = РаботаСоСпискамиДокументовКлиент.ПолучитьДанныеТекущейСтрокиСписка(
Элементы.Список, Элементы.Список.ТекущаяСтрока);
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Поле = Элементы.Файлы Тогда
ОткрыватьЗакладкуФайлы=ПроверкаОткрытияЗаклФайлы(ЭтаФорма)
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуФайлы», ТекущиеДанные.Ссылка, ОткрыватьЗакладкуФайлы);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.ПодписанЭП Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуЭП», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.Задачи Тогда
ОткрытьФорму(«ОбщаяФорма.ПроцессыИЗадачи»,
Новый Структура(«Предмет», ТекущиеДанные.Ссылка),
ЭтаФорма);
Возврат;
КонецЕсли;
Если Поле = Элементы.ЕстьКатегории Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуКатегории», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.СостояниеКонтроля Тогда
КонтрольКлиент.ОбработкаКомандыКонтроль(ТекущиеДанные.Ссылка, ЭтаФорма);
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура(«Ключ», ТекущиеДанные.Ссылка);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
КонецПроцедуры
Обновлено: 21.09.2023
Как правило, ошибка возникает при фоновом обмене данными между базами 1С или запуске синхронизации вручную. Что делать при появлении этой ошибки и куда смотреть.
Текст: «Ошибка при вызове конструктора (COMObject) по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса».
Решение — в регистрации библиотеки comcntr.dll из каталога программы для корректного вызова COMConnector.
Подготовительные действия
- отключите службу Агента сервера 1С:Предприятия и программы, возможно использующие регистрируемую DLL;
- если ранее использовалась библиотека устаревшей версии, удалите регистрацию comcntr.dll, запустив команду вызова regsvr32 с ключом /u.
Подходы к решению
В командной строке с правами Администратора выполните команду:
2. Переустановка платформы с внесением исправлений
- запускаем консоль «Службы компонентов»;
- добавляем новый элемент, переходим «Компьютеры» — «Мой компьютер» — из списка выбираем «Приложения COM+»;
- выбираем «Создать» — «Приложение»;
- в Мастере установки выбираем второй вариант «Создать новое приложение», в поле «Введите имя нового приложения:» вводим «V83COMConnector», «Способ активации» устанавливаем «Серверное приложение», нажимаем «Далее»;
- выбираем учетную запись под которой запускается приложение, по умолчанию — «Текущий (вошедший в систему) пользователь»;
- на этапах «Добавление ролей приложения» и «Добавление пользователей для ролей» нажимаем «Далее», а затем «Готово».
В ветке только что созданного приложения переходим в подветку «Компоненты» и создаем компонент:
- в контекстном меню выбираем «Создать» — «Компонент»;
- кликаем по первому варианту «Установка новых компонентов»;
- в открывшемся диалоге выбираем необходимый файл comcntr.dll и нажимаем «Открыть»;
- нажимаем «Далее» и «Готово».
Обратите внимание: после установки измените свойства объекта. Для этого переходим к ветке V83COMConnector:
- открываем свойства созданного компонента, переходим в ветку V83COMConnector — «Свойства»;
- на вкладке «Безопасность», в «Авторизация» снимаем флаг «Принудительная проверка доступа для приложений»;
- в «Политика программных ограничений» устанавливаем флаг «Применить политику программных ограничений» и выбираем «Уровень ограничений:» — «Неограниченный»;
- нажимаем «Применить» — «ОК».
Полная версия со снимками экранов — в статье на Дзен-канале.
По идее в модуле должны быть строки а-ля:
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить(«Наименование», «ТралиВали 8.2.»);
РегистрационныеДанные.Вставить(«БезопасныйРежим», Истина);
РегистрационныеДанные.Вставить(«Версия», «1.0»);
Попробуй установить («БезопасныйРежим»,ложь)
Alexeytur; user803412; ulterior; GV.; Азверин; adhocprog; S_Morozov; just_Art; fst; Atticus2; Vitaly1C8; IgorXml; Ольга_tmp; PhoenixAOD; mie24; Pavel_08; SotNick; lisa_av; Uncore; kudlach; LiebeMein; Азбука Морзе; natalijnnn; vgy; + 24 – Ответить
По идее в модуле должны быть строки а-ля:
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить(«Наименование», «ТралиВали 8.2.»);
РегистрационныеДанные.Вставить(«БезопасныйРежим», Истина);
РегистрационныеДанные.Вставить(«Версия», «1.0»);
Попробуй установить («БезопасныйРежим»,ложь)
ругается «Установлен безопасный режим. Выполнение операции запрещено»
в модуле объекта написал
(9) ответ на мой вопрос, разработчики в типовоый конфигурации ТУПО поставили УстановитьБезопасныйРежим(Истина) и срать они хотели на параметры обработки.
(6) seakuban, данный метод годится, если обработка запускается как дополнительная внешняя обработка. Если запускать внешнюю обработку через «Файл-Открыть», то такой метод не сработает.
А как решить это же проблему если я не подключаю обработку к конфигурации, а вызываю её из файла?
ВнешняяОбработка = ВнешниеОбработки.Создать(Файл.ПолноеИмя);
ВнешняяОбработка.ВыполнитьКоманду();
Команда начинает работать, но многие методы вызывают ошибку сабж(
У меня была подобная ошибка во внешней обработке: Ошибка при вызове конструктора (WSОпределения): Установлен безопасный режим. Выполнение операции запрещено
Пришлось встроить внешнюю обработку в конфигурацию, тогда всё заработало.
(12) Нет, так не надо было делать. Пишешь вот так: ВнешниеОбработки.Создать(Файл.ПолноеИмя, Ложь ); и все работает
harek78; ALF_RTF; CodeNull; neo-ti; join2us; denisros; D1C; machneff; Sveos; krendel; volex; Jack_off; It-developer; ark.zv; + 14 – Ответить
У меня другая ситуация. Серверный вариант. Есть две тачки. На одной под пользователем нет никаких ошибок при запуске внешней обработки, а на другой тачке по этим же пользователем есть ошибка. Куда копать?
НУжно обработку добавить в Дополнительные отчеты и обработки. Поскольку Система ищет элемент справочника и не находит. Если вы открываете ее как «Файл->Открыть» у вас элемент справочника ДополнительныеОтчетыИОбработки равен Неопределенно. Из-за этого возникает Ошибка.
: Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту)
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодов», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native);
по причине: Установлен безопасный режим. Выполнение операции запрещено
В модуле ВПФ в функции СведенияОВнешнейОбработке() зададим право обработке на использование безопасного режима: ПараметрыРегистрации.Вставить(«БезопасныйРежим», Ложь);
Или
Удалить в макете ВПФ в заголовке рисунок КартинкаШтрихкода.
У меня во внешней обработке для печати штрихкодов ошибка сабж в конфигурации БП 3.0.57.10 появилась после того, как убрал строку:
ПараметрыРегистрации.БезопасныйРежим=Ложь;
— это пришлось делать из-за того, что обработку необходимо было поместить во Фреш, где Не безопасный режим не допускается. По кнопке «Подробно» стало ясно, что возникает в момент подключения компоненты из общего макета КомпонентаПечатиШтрихкодов
Разобравшись с БСП 2.2.5.36 — добавил 2 строки:
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты(
«ОбщийМакет.КомпонентаПечатиШтрихкодов»,
«Вывод в печатную форму штрихкода EAN13 AddOn 5»);
После этого все стало работать в безопасном режиме
Есть еще одна внешняя обработка для перевода во Фреш. В ней в безопасном режиме ошибка сабж возникает при исполнении строки:
XBase = Новый XBase;
Вот никак не могу подобрать соответствующее Разрешение из выпадающего списка, чтобы получилось как наподобие с обработкой по печати штрихкодов
(18) Наконец подобрал нужное разрешение для работы с XBase в безопасном режиме:
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Странно, но помогло именно РазрешениеНаИспользованиеКаталогаВременныхФайлов, а не РазрешениеНаСозданиеCOMКласса при формировании запроса к базе Оракла
В модуле РаботаВБезопасномРежиме полно разрешений:
РазрешениеНаСозданиеCOMКласса;
РазрешениеНаИспользованиеВнешнейКомпоненты;
РазрешениеНаИспользованиеПривилегированногоРежима
и т.п.
Использование COMOбъектов в 1С это прошлый век, сейчас уже ни кто так не пишет. Раньше с его помощью реализовали печать документов. Они выгружались в Open\Libre Office и от туда уже печатались.
Появиться такая ошибка может после
1 Обновления платформы
2 Переустановки ОС и 1С
3 Обновление конфигурации
4 Проблем с офисными пакетами
Это самые распространенные.
Три способа избавиться от ошибки «Ошибка при вызове конструктора…»
И так после каких либо манипуляций с 1С у вас стала появляться ошибка.
Первый способ
Самое простое это переустановить офисные пакеты Open\Libre, так же как вариант если у вас стоял Open поставить Libre и на оборот. Это нужно для того чтобы обновить специальный компонент.
Второй способ
Попробовать зарегистрировать самостоятельно, для этого запускаем командную строку от имени администратора, переходим в каталог введя команду.
regsvr32 «C:\Program Files (x86)\1cv8\8.3.16.18.14\comcntr.dll»
Кстати данную манипуляцию нужно проводить на сервере.
Третий способ
Установить 32 битную версию клиента 1С, можно даже поверх х64. В итоге у вас появиться два ярлычка для запуска, один для х32 второй х64.
Версию можно указать и в ярлыке запуска 1С.
Можно еще попробовать самостоятельно создать COM + , но лично из своего опыта могу сказать это не помогает. Самый действенный вариант это установка х32 клиента. Так как компонента которая необходимо работает только с х32.
Так же проблема может быть непосредственно в самом коде.
Ошибка (COMOбъект) : 1 комментарий
Хотелось бы узнать и утвердиться в том, что ваша информация действительно сможет помочь людям в данной ситуации с переустановкой офисных центров и вызовов мастеров, в принципе информация интересная, информативная, но слишком много заумных слов
Моя организация использует в качестве корпоративной почты почту Яндекс с делегированием домена, а в качестве почтового клиента встроенную почту 1С:Документооборота. Настройка и тестирование почты велось в течение 2018 года на технологических платформах версий 8.3.10.2650 и 8.3.12.1685 и версиях конфигурации 2.1.11.5 и 2.1.12.2.
С настройками «из коробки» почта работала крайне плохо, часть пользователей перешла на web-доступ к Яндекс.Почте и выпали из корпоративной системы документооборота. Первое, что пришло на ум — перенастройка потоков сбора почты. По умолчанию учётные записи почты распределяется на потоки по 50 штук. Потоков всего 10, регламентные задачи «Прием отправка почты (номер потока)» запускаются каждые 30 секунд. Мне кажется это перебор и в настоящее время у хорошо себя зарекомендовали следующие настройки для 80 учётных записей: 2 потока, запуск каждый день с 7:00 по 23:00 каждые 600 секунд, завершать через 900 секунд, повторять через 600 секунд.
Но это не всё. Параметр «завершать через 900 секунд» введён потому, что почта очень глючит и может зависнуть. Почему? Не понятно. Техподдержка Яндекса отправила меня воспроизводить ошибки через «нормальный» почтовый клиент, а техподдержка 1С ткнула пальцем в ошибки TCP-пакетов в дампе WireShark и сказала, что у меня «неправильный» Интернет.
А ошибки очень занимательные.
Сразу скажу, что к ошибкам протокола IMAP версии 4 этот код ошибки (а у меня было ещё 41 и 6) не имеет никакого отношения. Эти коды придуманы в 1С и они их не раскрывают (я просил). Согласно этой статьи для работы с почтовыми протоколами в 2015 году использовалась open source библиотека libetran, она поддерживается до сих пор, так что может и сейчас используется. Это делает ситуацию ещё более непонятной.
Не буду расписывать разнообразие ошибок, потому что их объединяет одно: информация об ошибке ничего не объясняет, а только запутывает, гугление приводит к единичным запросам на форумах, на которые не получены ответы.
Среди законов Мёрфи есть третий закон Финэйгла, который гласит, что в любом наборе исходных данных самая надежная величина, не требующая никакой проверки, является ошибочной. После долгих тестирований и раздумий над результатами я решил усомниться в корректности работы технологической платформы с механизмами шифрования почты. Для проверки этой крамольной мысли обратил взор на программу, которая хорошо известна нам всем. Это Stunnel.
И всё. Ошибки из массовых стали единичными.
Глава 2. Выполнение задач по почте.
Выполнение задач по почте — шикарная возможность 1С:Документооборота, которая не только позволяет сэкономить на лицензиях в ряде случаев, но и организовать удалённую работу руководителей, по согласованию документов. Однако «из коробки» она также не работает при использовании Яндекс.Почты.
Я написал обработку, которая имеет 2 команды:
- автоматическая очистка почты сервера — удаление помеченных на удаление писем, период запуска равен периоду запуска регламентного задания «Выполнение задач по почте».
- автоматическая очистка всей почты сервера — удаление всех писем, запуск ночью один раз в день.
Единственный нюанс при запуске этой обработки, нужно указать пароль к встроенной учётной записи. Мне было лень разбираться где его хранит система.
Вот так вот выглядит более полный текст ошибки:
WSОпределения = Новый(Тип(«WSОпределения»), Параметры);
Ошибка работы с Интернет: Удаленный узел не прошел проверку
10060 — Ошибка соединения с сервером
по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504)
Как решить проблему
В случае клиент-серверной версии необходимо добавить сертификат Digicert как на сервере, так и на всех клиентах. Добавлять стоит способом, описанным в пункту 1 или 3. Перегружать сервер после обновления cacert.pem не нужно.
В итоге у вас будет архив с сертификатом cacert.pem, распакуйте его. Далее, откройте вашего клиента, где вы получаете ошибку при вызове конструктора WSОпределения. И перейдите по пути:
Если вы теряетесь в своих версиях, то попробуйте произвести поиск по cacert.pem в папке C:\Program Files (x86) и посмотрите, где у вас нужно подменить, этот файл. Меняете его на свежий и радуетесь жизни.
- Второй метод, заключается в использовании обработки в 1С. Скачайте файл обработка.epf
ОБЯЗАТЕЛЬНО запустите его от имени администратора, иначе можете получить ошибку:
Ошибка записи сертификата. Возможно:
— Файл cacert.pem занят. Освободите файл от редактирования и запустите обработку заново.
— Закройте 1С: Предприятие и запустите с правами администратора операционной системы
Читайте также:
- Постройки из лего дупло для детей
- Лего сити андерковер на пк 32 бит
- Самая лучшая машина из лего
- Lego 42064 ocean explorer лего исследователь океана
- Название деталей лего эдьюкейшн