1с конструктор не обнаружен новый двоичныеданные
Начиная с версии технологической платформы 8.3.9 средства для работы с двоичными данными претерпели существенные изменения. В этой статье я постараюсь рассказать как о старых, так и о новых инструментах для работы с двоичными данными. При написании статьи использовалась версия технологической платформы 8.3.12
Общая информация
Если раньше, до версии технологической платформы 8.3.9, мы располагали только объектом ДвоичныеДанные, то к настоящему времени у нас имеется целый набор объектов, которые серьезно расширяют наши возможности по манипуляциям с двоичными данными. Рассмотрим все эти объекты чуточку подробнее.
Двоичные данные
Экземпляры объекта ДвоичныеДанные содержат двоичные данные, которые считываются из файла. При это объект ДвоичныеДанные является достаточно многофункциональным — мы можем:
- читать двоичные данные из файла и записывать их в файл;
- передавать их между клиентом и сервером при помощи временного хранилища;
- передавать и получать их по сети;
- хранить их базе данных в реквизитах вида ХранилищеЗначения;
- превратить двоичные данные в объект вида Картинка (при определенных условиях конечно);
- хранить двоичные данные в макетах;
- шифровать и расшифровывать, подписывать и проверять подписи;
Наверняка я что-то пропустил, но главное должно быть понятно — несмотря на значительное развитие средств работы с двоичными данными, объект ДвоичныеДанные остается ключевым.
Потоки
Это группа объектов назначение которых заключается в работе с потоками данных.
Поток — этот объект представляет собой поток данных из которого можно читать и/или записывать в него данные. Данный объект не имеет конструктора, а получить экземпляр объекта можно при помощи различных методов других объектов.
ФайловыйПоток — специализированный вариант объекта Поток, предназначенный для работы с данными находящимися в файлах на диске.
ПотокВПамяти — специализированный вариант объекта Поток, предназначенный для работы с данными находящимися в оперативной памяти.
МенеджерФайловыхПотоков — этот объект предоставляет типовые методы для работы с файлами (открытие и создание). Создать экземпляр этого объекта нельзя — имеется объект глобального контекста ФайловыеПотоки который и предоставляет доступ к методам менеджера.
Чтение и запись
ЧтениеДанных — этот объект предназначен для чтения различных типов данных из различных источников (потоки, файлы, двоичные данные).
РезультатЧтенияДанных — этот объект содержит описание результата чтения данных из потока. Объект не имеет конструктора, получить экземпляр объекта можно при помощи методов других объектов.
БуферДвоичныхДанных — этот объект представляет собой коллекцию байтов фиксированного размера, имеется возможность произвольного доступа и изменения по месту.
ЗаписьДанных — этот объект предназначен для записи различных типов данных в приемник.
Практическая часть
Итак, у нас достаточно много различных объектов, которые, в свою очередь, имеют много разных свойств и методов. Разобраться во всем этом более подробно помогут практические примеры, к ним и перейдем.
Многие объекты — ДвоичныеДанные, Поток, ФайловыйПоток, ПотокВПамяти, ЧтениеДанных, ЗаписьДанных, РезультатЧтенияДанных имеют пары синхронных и асинхронных методов, например: Записать — НачатьЗапись, Закрыть — НачатьЗакрытие. Асинхронные методы нужны для обеспечения возможности одинаковой работы и в тонком клиенте, и в веб-клиенте.
Подробнее про синхронные и асинхронные методы можно прочесть в этой статье.
Двоичные данные
Ниже приведены примеры основных операций с объектом ДвоичныеДанные.
Иногда случается, что после обновления 1С пишет «Поле объекта не обнаружено», с указанием на тот или иной объект. Это может случиться при входе в программу, при заполнении какой-либо формы и т.п.
Модуль, к которому идет обращение, перестает работать, но работу программа может не прерывать. Когда ошибка находится в модуле приложения или обработки, то при его запуске программа может и не запуститься.
Обновление платформы
При этом важно посмотреть на описание поставки, которое открывается при установке обновления. Там обязательно указывают рекомендации по использованию версии платформы.
Таким образом, первый и основной вариант решения проблемы – это обновление платформы «1С:Предприятие».
Чтобы посмотреть, какая платформа у нас установлена, необходимо зайти в пункт меню «Сервис» - «О программе», где в верхней строке мы видим версию нашей платформы и сравниваем с рекомендуемой, при установке обновления конфигурации.
Очистка настроек пользователя
В подразделе «Персональные настройки пользователя» переходим по гиперссылке «Очистка настроек», где мы можем выбрать – очистить настройки у всех пользователей или только у выбранного. Также мы можем выбрать – очистить все настройки или какие-то отдельные виды настроек.
При этом пункт «Отдельные виды настроек» доступен только при очистке настроек конкретного пользователя.
Перед нами откроются настройки пользователя, в которых как раз он и мог использовать устаревшие объекты, на которые и ссылается ошибка программы. Мы можем выбрать конкретную настройку (по подсказке ошибки) или очистить все настройки.
Тестирование и исправление информационной базы
В том случае, если возникновение ошибки не связано с платформой и настройками пользователя, то возможно произошел просто сбой в информационной базе, который повредил указанный объект. В таком случае рекомендуется провести «Тестирование и исправление информационной базы», в режиме Конфигуратор, в пункте меню «Администрирование». Обратите внимание, что работа в конфигураторе требует определенных знаний, поэтому, если вы не уверены в своих силах, обращайтесь за консультацией по программе 1С к специалистам.
В тестировании и исправлении необходимо проверить логическую и ссылочную целостность базы. Если произошло необнаружение объекта, мы можем задать настройки программе проверки, что делать с такими объектами – создавать объекты, очищать ссылки или не изменять.
При выборе варианта «Создавать объекты», программа при обнаружении несуществующей ссылки на объект формирует элемент, своего рода заглушку. При выборе варианта – «Очищать ссылки» или «Удалять объект», некорректные ссылки будут просто удалены. Если оставить переключатель в положении – «Не изменять», программа просто укажет нам на этот объект, не предпринимая никаких действий. Этот вариант нам явно не поможет.
Таким образом, любой ошибке в программе 1С есть логическое объяснение. Если у вас остались вопросы, связанные с исправлением ошибок, и вы нуждаетесь в консультации по программе 1С, звоните, а также оставляйте заявки на нашем сайте. Наши специалисты свяжутся с вами в кратчайшие сроки.
Двоичные данные платформы 1С:Предприятие – это универсальный объект встроенного языка программирования для работы с файлами. Благодаря объекту ДвоичныеДанные можно любой файл представить в виде последовательности байт. Объект доступен в тонком клиенте, веб-клиенте, мобильном клиенте, на сервере, толстом клиенте, внешнем соединении, мобильном приложении (клиент/сервер).
Объект сериализуется
Данный объект может быть сериализован в/из XML, может использоваться в реквизитах управляемой формы, а также он может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен . Имя типа XDTO может быть любым из перечисленных: base64Binary, hexBinary.
Благодаря тому, что двоичные данные доступны и на клиенте, и на сервере, мы можем смело передавать файл в виде двоичных данных с клиента на сервер, однако рекомендованный «шаблон» для передачи файла – использовать хранилище значений.
Задачи, для решения которых можно использовать двоичные данные:
Работа с двоичными данными:
Данный пример кода показывает, как прочитать двоичные данные и передать их с клиента на сервер, используя объект ДвоичныеДанные.
Примеры по работе с двоичными данными
Самый очевидный пример, где применяются двоичные данные, – сохранение файла в базе данных. Для хранения файла в виде двоичных данных необходимо в объекте добавить реквизит с типом «ХранилищеЗначений». Далее представлен пример кода по работе с реквизитом (заполнение значения и получение значения).
Заполнение:
Получение (фрагмент кода, выполняемый на сервере):
Рассмотрим еще один пример: скачивание картинки из интернета и отображение ее на управляемой форме. Для этого также добавляем реквизит с типом ХранилищеЗначения, в котором будет помещаться картинка в двоичном формате.
Функция, скачивающая картинку из интернета:
Использование функции:
Теперь у нас в реквизите «Аватар» лежат двоичные данные картинки. Чтобы картинку вывести на управляемую форму, необходимо добавить реквизит формы «Тип строка», перекинуть его на форму (drag-and-drop), либо создать самостоятельно элемент формы, указав в поле «Путь к данным» наш реквизит «Картинка», после чего изменить вид на «Поле картинки».
По событию ПриСозданииНаСервере
Готово, на форме у нас картинка.
Двоичные данные и потоки
Говоря о двоичных данных, стоит упомянуть о возможности работы с потоками. Она появилась относительно недавно, а именно в версии 8.3.9. Чтобы потоком можно было читать из двоичных данных, применяется метод ОткрытьПотокДляЧтения. Допустим, у нас в базе данных лежит заархивированный xml-файл (как хранить файлы в базе данных рассматривалось ранее). Нам нужно вывести пользователю содержимое этого файла, или у вас настроен какой-то обмен, и вы передаете файлы в заархивированном виде (для экономии трафика).
Последовательность действий при работе с двоичными данными без использования потоков:
- Получить двоичные данные из базы;
- Записать их во временный файл;
- Разархивировать;
- Удалить временный файл;
- Прочитать разархивированный файл.
Последовательность действий при работе с потоками:
- Получить двоичные данные из базы;
- Открыть поток для чтения;
- Разархивировать;
- Прочитать разархивированный файл.
Пример кода без использования потоков:
Пример кода по работе с потоком:
Если диск у вас на SSD, рекомендую использовать потоки не только в примере с архивацией, а везде, где это возможно. Да, в данном примере все же происходит запись на диск (разархивация), но будем надеяться, когда-нибудь 1С реализует метод двоичных данных ОткрытьПотокДляЗаписи.
Работа с Base64
Base64 – это стандарт, позволяющий кодировать двоичные данные в виде строки (для кодирования используется 64 символа таблицы ASCII, отсюда и название). Тип ДвоичныеДанные сериализуем, то есть его можно представить в виде XML, для этого применяется объект встроенного языка СериализаторXDTO. После сериализации данные представлены одним узлом base64Binary, содержимое которого есть последовательность байт, закодированная в формате Base64.
строка в Base64
Платформа 1С также позволяет кодировать двоичные данные, не прибегая к сериализации. Для этого есть две функции:
Они преобразуются в Base64 и обратно в двоичные данные.
Если у вас остались вопросы по работе с двоичными данными в среде 1С:Предприятие, обратитесь к нашим специалистам и получите консультацию по 1С 8.3 или воспользуйтесь услугами по сопровождению 1С.
Пользователь думает: «Почему? Ведь вчера еще все работало! Мы только отдавали компьютер специалисту, и нам поменяли операционную систему, но 1С нам перенесли….», - и другие похожие мысли.
Подобная ошибка может появляться при создании или добавлении новой базы, после некорректной установки платформы программы, удалении или изменении системных файлов. В чем же кроется ее причина?
Причина проблемы в настройках файла 1CEStart.cfg. Этот файл используется при запуске платформы 1С через файл 1cestart.exe, который автоматически определяет последнюю установленную платформу и запускает ее. Если возникают проблемы с запуском, значит – там прописано неправильное значение.
Путь к файлу C:\Users\ \AppData\Roaming\1C\1CEStart. Уточнить его можно, открыв кнопку «Настройки» в окне запуска программы 1С.
В окне настройки диалога запуска мы видим путь к каталогу шаблонов конфигурации, и в нем фигурирует папка Roaming. Это та самая, нужная нам папка.
Откроем эту папку через «Проводник». Мы видим нужную папку с файлами.
Откроем файл. При выборе программы укажем – открывать «Блокнотом». В нем указан путь каталогов файлов шаблонов и дополнительные параметры. При выполнении настроек запуска программы файл «1cestart.cfg» в каталоге пользователя изменяется автоматически, а общий файл (для всех пользователей) изменяется только во время установки платформы «1С:Предприятие». Параметр «UseHwLicenses» управляет поиском ключа защиты при запуске «1С:Предприятия». Значение – «1», означает, что выполняется поиск ключа защиты.
Получается следующая ситуация: происходит попытка запустить определенную версию платформы, но файл ее не находит. Поэтому первое, что нам нужно сделать – это посмотреть, какие платформы у нас установлены на компьютере.
Установленные версии платформы 1С:Предприятие
Установка платформы осуществляется в папку «C:\Program Files (x86)\1cv8».
При установке (обновлении) новой платформы старые не удаляются, а также хранятся на диске. Открыв «Программы и компоненты» из раздела «Панель управления», мы можем также увидеть список установленных платформ «1С:Предприятие». При необходимости именно здесь мы можем удалить старые, неиспользуемые версии.
Решение проблемы
Один из вариантов решения проблемы – удалить файл 1CEStart.cfg из папки C:\Users\ \AppData\Roaming\1C\1CEStart. Это временный файл и программа создаст его заново.
Если проблема не решена, проверим, какие параметры запуска платформы установлены. Посмотреть это можно в кнопке «Изменить», в окне запуска программы. Возможно, там установлен конкретный релиз платформы, который отсутствует в нашем списке. Версия запуска «1С:Предприятия» должна быть установлена – 8.3, т.е. программа выберет сама последнюю установленную версию.
При каких-то проблемах с платформой 1С ее может даже не оказаться в списке установленных компонент. При этом сразу обратите внимание, есть ли она в кнопке «Пуск». Если здесь вам что-то не понравилось, то еще один вариант решения проблемы – это просто заново установить нужную платформу «1С:Предприятие».
Бывает, что каким-то образом при переносе данных папку с программой просто скопировали и перенесли, например, на другой компьютер или при смене операционной системы, а установка программы не была произведена и компьютер ее не видит. Т.е. это неверный вариант переноса, установки.
Перед установкой платформы, можно (даже нужно) удалить все временные файлы предыдущих установок, находящиеся в папке C:\Users\ \AppData\Roaming\1C\1cv8.
Обратите внимание, что при установке новой платформы на компьютер пользователя, на всех других компьютерах при работе программы по сети должна быть установлена такая же платформа.
Читайте также: