Форматированный документ предназначен для оформление текста. Его можно выделить жирным, подчеркнуть, увеличить/уменьшить шрифт, центрировать и т.д. Также можно добавить картинку. Т.е. в 1С теперь можно отформатировать текст, примерно, как в MS Word и др. подобным программам. Это может быть удобно при оформлении различных договоров или, например, при редактировании электронного письма. Таким образом, у нас есть возможность привести текстовый документ в тот вид, который мы пожелаем.
В синтакс-помощнике есть описание. Объект ФорматированныйДокумент (FormattedDocument) имеет одноименный тип данных, который поддерживает функционирование данного объекта и имеет следующие методы: Вставить (I_nsert)
Добавить (Add)
Записать (Write)
ПолучитьHTML (GetHTML)
ПолучитьЗакладкуКонца (GetEndBookmark)
ПолучитьЗакладкуНачала (GetBeginBookmark)
ПолучитьЗакладкуПоПозиции (GetPositionBookmark)
ПолучитьПозициюПоЗакладке (GetBookmarkPosition)
ПолучитьТекст (GetText)
Удалить (Delete)
УстановитьHTML (SetHTML)
Доступен во всех типах приложения: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Нельзя указать новый тип данных в качестве типа реквизита.
Есть одна важная особенность этого типа. Нельзя задавать тип «Форматированный документ» для реквизита объекта (справочника, документа и др.). Но есть возможность указывать его для реквизитов формы.
Возникает вопрос, как же нам сохранить те изменения при форматировании текста, которые сделал пользователь? Для этого применяется специальный объект «ХранилищеЗначения», который может содержать в себе любой тип данных, в том числе и «форматированный документ». Таким образом, в базе данных сам объект будет храниться как «Хранилище значения», далее при открытии формы необходимо будет извлечь объект из хранилища, отобразить его на форме используя тип «ФорматированныйДокумент». Если пользователь решит сохранить изменения, то при записи объекта нужно снова взять объект «форматированный документ» и записать его в хранилище.
Пример работы
Возьмем за основу каркасную конфигурацию, создадим в ней справочники «Контрагенты» и «Договоры». Установим справочник «Договоры» подчиненным справочнику «Контрагенты» и создадим реквизит «Текст» с типом ХранилищеЗначения.
Создадим форму элемента справочника «Договоры» и добавим на нее новый реквизит, который назовем «ТекстДоговора», укажем тип данных «ФорматированныйДокумент». Обратите внимание, что реквизит «Текст» с типом «ХранилищеЗначения» на форму поместить нельзя.
Создадим также командную панель (меню) содержащую необходимые кнопки для управления форматированным документом. Для этого надо добавить в форму «Группа – Командная панель» и указать в свойстве «Источник команд» реквизит формы «ТекстДоговора» с типом ФорматированныйДокумент.
Запускаем отладчик, проверяем, что у нас получилось…
Все бы хорошо, но есть некоторые проблемы:
Во-первых, если ввести текст и отформатировать его должным образом, то признак модифицированности для формы не возникает. Таким образом, случайно нажав на кнопку закрытия формы, система не задавая вопросов закрывает ее без всякого сохранения.
Для того чтобы подобные неприятности не случались, необходимо установить флаг у свойства «Сохраняемые данные» реквизита формы «ТекстДоговора». В результате, при любом изменении данных в реквизите «ТекстДоговора», будет устанавливаться признак модифицированности формы, а при ее закрытии система спросит: «Сохранить изменения?».
Во-вторых. Попытаемся закрыть форму и сохранить введенные данные. Заново открыв сохраненный договор, видим что текст введенный в форму договора отсутствует. Почему так происходит?
Все дело в том, что мы делаем изменения в реквизите формы, который у нас никак не связан с реквизитом объекта. Давайте настроим связь между реквизитом формы «Текст договора» с типом данных «ФорматированныйДокумент» и реквизитом объекта «Текст» с типом «ХранилищеЗначения».
Пропишем эту связь программно в модуле формы. Опишем алгоритм.
1. При открытии формы, необходимо будет обратиться к реквизиту объекта «Текст», чтобы прочитать из него данные и записать их в форматированный документ «Текст договора».
2. При записи объекта, берем содержимое форматированного документа и помещаем его в реквизит объекта «Текст» с типом «ХранилищеЗначения».
Таким образом у нас будет возникать эффект, что все изменения производимые пользователем, будут сохраняться в базе данных.
Нам понадобятся следующие обработчики событий:
- событие ПриЧтенииНаСервере(ТекущийОбъект)
оно удобно тем, что при ошибочном внесении изменений в данные формы, можно нажать кнопку «Перечитать» и вернутся к исходным данным.
Т.к. реквизит Текст у нас имеет тип «ХранилищеЗначений», надо учесть нюансы работы с ним… В случае чтения объекта используем метод Получить(), а в случае записи используем конструктор объекта Новый ХранилищеЗначения(<Значение>, <АлгоритмСжатияДанных>).
На этом пока всё. В следующий раз попробую рассказать про использование шаблонов для вставки параметров в текст форматированного документа, например, вместо %Контрагент% вставлять наименование контрагента. Сергей (SirYozha)
Установить ссылку нового это специальный механизм программиста, который позволяет присваивать новому объекту нужную ссылку. В основном это задача обмена, во многих типовых обменах используется синхронизация по UID объекта.
Рассмотрим этот метод на конкретной задаче: «Если в базе в справочнике «номенклатуры» нет объекта с UID = «1014270d-d794-11df-825c-001517542b79», то необходимо его создать с таким же UIDом и присвоить название – «Служебная номенклатура» »
Подробнее остановимся на строке
В типовых конфигурациях обычно все служебные программные кода в модулях объектов перед записью заключены в условие «не ОбменДанными.Загрузка». Т.е. если Это загрузка то эти программные кода не выполняются. Если процедура присвоения UIDа не работает, то возможно вам нужно еще выполнить глобальный поиск, чтобы найти сторонние программные строки «УстановитьСсылкуНового» – «камни преткновения» Источник Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID
Обычно ошибка возникает когда в процессе сохранения конфигурации, был сбой. В результате Конфигурация сохранилась не корректно.
1. Попробовать проверить через тестирование и исправление или ChDBFl.exe
2. Посмотрите следующие варианты решения проблемы:
В некоторых случаях помогает полная очистка КЭША, В ОС Windows 7 находиться C:\Users\Администратор\AppData\Roaming\1C\1Cv82 и C:\Users\Администратор\AppData\Local\1C\1Cv82 (Win7x64).
или подробнее:
1. Необходима чистая конфигурация той же версии - рабочая.
2. Очиста кеша полная (указано выше).
3. Запускаем чистую базу в режиме конфигуратора и открываем конфигурацию. При этом 1С создает ее кеш в C:\Users\Администратор\AppData\Local\1C\1Cv82 (набор файлов и папок в папке с ID конфигурации.) так же нам нужен кеш C:\Users\Администратор\AppData\Roaming\1C\1Cv82. Можно просто переименовать данные папки после закрытия 1С.
4. Запускаем наш не рабочую базу в режиме конфигуратора и смотрим кеш. И в результате имеем две папки с ID конфигурации (Живой и Мертвой).
5. Закрываем все и подменяем кеш мертвой конфы на живую полностью. Т.е. удаляем текущую и заменяем ранее переименованной папкой.
6. Запускаем не рабочую базу в режиме конфигуратора И ВОТ первый успех - дерево конфигурации открыто, разделы меню управления конфигурацией активны.
7. Идем в управление поддержкой, и снимаем с поддержки полностью. сохраняем, обновляем. Можно обновить через файл конфигурацией рабочей базы.
8. Удалем кеш полностью.
9. Запускаем не рабочую базу в режиме конфигуратора, пытаемся открыть конфигурацию - все открывается, ошибки нет.
10. Запускаем 1С. Все доступно. Данные на месте.
Было такое же сообщение когда динамически обновил конфигурацию центральной базы и сделал обмен на переферийной и на переферийной появилось подобное сообщение.
1. Т.к. в конфигуратор на переферийной вообще не пускался, то пришлось удалить папку C:\Documents and Settings\Admin\Application Data\1C\1Cv81.
2. Зашел в конфигуратор и выбрал Конфигурация - Конфигурация базы данные - Вернуться к конфигурации БД.
3. ГлавныйУзел установил неопределено.
4. Конфигурация - Загрузить конфигурацию из файла (центральная конфигурация).
5. ГлавныйУзел установил необходимый.
У меня возникла похожая ситуация, но на 8.1. При динамическом обновлении конфигурации видимо произошел сбой, после чего попытка выгрузить и как Основную конфу и конфу БД при дальнейшей попытке загрузить файл в локальную базу вываливалось "нарушена целостность структуры конфигурации". Но БД работоспособна. Ни тестирование и исправление ни ChDBFl.exe ничего не дали.
Селал бекап рабочей базы и загрузил его в чистую базу. Добавил план обмена
http://kb.mista.ru/article.php?id=7
и создал Начальный образ. В БД образа конфигурация исправилась.
Если не поможет могу посоветовать вариант к которому хотел прибегнуть сам:
1. найти ближайший релиз конфигурации, загрузить его в чистую БД (восстанавливаемую).
2. создать совершенно чистую БД (промежуточную)
3. открыть конфигуратор испорченной БД.
4. скопипастить модули и объекты, в которых происходили изменения с последнего релиза (в моем случае намного проще, поскольку изменения происходили только в модулях и формах, структура данных осталась прежней а все изменения документируются постерами) из испорченной БД в промежуточную.
5. Выгрузить промежуточную конфигурацию.
6. Объеденить ее с восстанавливаемой БД.
7. Выгрузить восстанавливаемую конфигурацию в файл.
8. Загрузить в испорченную БД конфигурацию из восстанавливаемой.
По идее должно получиться максимальное приближение к рабочей базе, но работка конечно не из легких. Но лучше все-таки чем потерять всю базу.
Еще один вариант решения проблемы, связанной с повреждением конфигурации поставщика. При обновлении конфигурации, находящейся на поддержке с возможностью редактирования и нарушенной целостностью конфигурации поставщика, может вылетать сообщение:
Мой вариант решения - заменить конфигурацию поставщика нашей базы.
Последовательность действий следующая:
1. Удалить конфигурацию поставщика путём снятия с поддержки(Конфигурация->Поддержка->Настройка поддержки->Снять с поддержки)
2. Создаем файл поставки конфигурации(Конфигурация->Поставка конфигурации->Создать файлы поставки и обновления конфигурации). Файл при этом назовем work файл поставки.cf
3. Объединяем нашу конфигурацию с только что созданным файлом поставки(Конфигурация->Сравнить, объединить с конфигурацией из файла). При этом появится предложение вновь поставить конфигурацию на поддержку
В появившемся окне сравнения конфигураций нажимаем "Выполнить",
4. Обновляем конфигурацию базы данных(Конфигурация->Обновить конфигурацию базы данных).
Поидее, выполняя данные действия, мы реструктуризовали конфигурацию поставщика.
Теперь можно попробовать обновить нашу конфигурацию до следующей версии в обычном режиме.
У разработчиков на платформе 1С иногда возникает задача по взаимодействию системы 1С: Предприятие с различными почтовыми программами и протоколами. 1С Предприятие 8.0 имеет довольно удобные средства для отправки сообщений, импорта писем из почтового клиента в справочник или другой объект конфигурации, работы с MAPI, SMTP или POP3.
При работе с почтой разделяют два способа доступа к почтовому ящику, почтовому клиенту:
объект "Почта" и объект "Интернет почта", каждый из объектов имеет свои достоинства.
Почта - предоставляет доступ к почте через встроенный почтовый клиент, работает по технологии MAPI.
Интернет почта - объект открывает возможности по доступу непосредственно к почтовым ящикам и учетным записям находящимися на почтовом сервере, использование и работа данного объекта не зависит от установленных в системе почтовых клиентов, даже если почтовый клиент установлен в системе "ИнтернетПочта" будет работать параллельно с ним, объект использует интернет-протоколы SMTP, POP3.
1.Получение сообщений объектом "Почта".
Для работы с объектом Почта необходимо наличие установленного на компьютере почтового клиента с описанными учетными записями.
Для подключения к почтовому клиенту у объекта есть метод "Подключиться".
Первый параметр - имя профиля, к примеру, если в системе установлен MS Outlook, то как правило его профиль называется Outlook. Следовательно при подключении строка выглядела бы так:
Второй параметр отвечает за пароль к учетной записи.
Далее необходимо произвести выбор необходимых нам писем, для этой цели объект Почта имеет метод "Выбрать". У метода два параметра, первый отвечает за выбор непрочитанных писем - Истина (при Ложь будут выбраны все письма, находящиеся в папке "Входящие" почтового клиента), второй отвечает за выборку вложений, при Ложь, вложения выбираются.
//Выбираем все письма, со всеми вложениями.
(иногда при взаимодействии с Outlook 2003 возникает проблема, при которой 1С 8 просто аварийно завершает работу с ошибкой, именно на данной строке кода, это лечится установкой пакета обновления SP2 для MS Office 2003).
Далее после выборки сообщений необходимо перебрать их в цикле и сохранить, на форме необходимо добавить ТабличноеПоле1 куда будут сохраняться входящие письма.
Все реквизиты входящих писем сохраняются в соответствующие поля табличного поля, вложения сохраняются в каталог временных файлов, а имена вложений в реквизит табличного поля. Для более удобного хранения вложений писем, 1С 8 имеет тип "Хранилище значения", который позволяет хранить двоичные данные, далее при получении сообщений объектом ИнтернетПочта рассмотрим возможность хранения в "Хранилище значения".
2.Отправка сообщений объектом "Почта"
При отправке сообщения, подключение к почтовому клиенту производится точно так же, как и при получении, перед отправкой необходимо подготовить письмо.
В методе Почта.Послать(Сообщение,Истина) два параметра, первый принимает ссылку на почтовое сообщение, второй параметр определяет, требуется ли запрос на подтверждение о получении письма адресатом (Истина - запрос включен). После этих операций письмо попадает в папку "Исходящие" почтового клиента, и в зависимости от настроек клиента отправляется сразу или по команде пользователя.
В MS Outlook встроена защита от несанкционированного доступа к адресной книге и базе почтовых сообщений, и защита от несанкционированной отправки электронных писем через службы Outlook. В Outlook 2003 система безопасности срабатывает не только при попытке получить адрес отправителя письма, но даже при попытке получить его текст. В действительности защита выражается в показываемом пользователю окне системы безопасности при обращении к некоторым объектам и свойствам объектов Outlook и предлагает открыть доступ на определенное время, следует разрешить доступ.
3.Получение сообщений объектом "ИнтернетПочта".
Перед подключением к почтовому серверу, для объекта ИнтернетПочта необходимо заполнить данные Профиля учетной записи, и затем передать эти данные в метод "Подключиться".
Метод Почта.Выбрать(Истина,Заголовки); имеет два параметра, первый отвечает за удаление писем с сервера (при Истина-удалять), второй параметр отвечает за массив сообщений для выборки (т.е. закачки на компьютер клиента с сервера), если параметр пуст, то выбираются все сообщения находящиеся на сервере.
При переборе вложений, данные полученные из письма сохраняются в реквизит типа ХранилищеЗначения, заранее созданного справочника "СправочникВложения" в конфигураторе, т.к. данные первоначально сохраняются на диск, а затем загружаются в справочник, то, после загрузки в соответствующий реквизит справочника данные можно удалить. Не рекомендуется хранить данные типа ХранилищеЗначения в Табличных частях справочников, т.к. при больших объемах данных это затормаживает работу конфигурации.
4.Отправка сообщений объектом "ИнтернетПочта".
При отправке сообщения используется Функция ПолучитьПрофиль().
Удобно подключить автополучение/автоотправку почты командой "ПодключитьОбработчикОжидания(,)". Первый параметр в команде отвечает за наименование вызываемой процедуры, и второй, период ожидания процедуры в секундах, обычно обработчик ожидания вставляется в глобальный модуль системы (например, в процедуру ПриНачалеРаботыСистемы()) и указывает на процедуру с пометкой Экспорт.
Например, можно создать процедуру ПроверитьПочту, в которую вставить загрузку писем из почтового ящика и вставить ее в следующую строку:
ПодключитьОбработчикОжидания("ПроверитьПочту",60)
Также для обработки и просмотра сообщений в формате HTML удобно пользоваться компонентом "Поле HTML документа", для загрузки HTML текста в компонент используется метод ПолеHTMLдокумента.УстановитьТекст(Html), где Html-это документа полученный из текста сообщения. Есть вариант загрузки HTML с диска (если это вложение), ПолеHTMLдокумента.Перейти("file:\\C:\File.html").
После использования нескольких или сразу всех способов работы с электронной почтой, образуется полноценный почтовый клиент с возможностью хранения и обработки писем с вложениями на базе 1С предприятие 8.0.
Функция возвращает список значений содержащий список баз установленных на данном компьютаре. В котором в качестве значения указывается путь до базы, а в представлении название базы, так как она отображается в окне выбора баз при запуске 1С. Если баз не обнаруженно то возвращает строку "Error"
Для 1С 8 в настоящий момент используется 4 типа ключей:
- Однопользовательский. Это HASP HL Basic. Ключ синего цвета, не имеет внутренней памяти и персонального номера.
- Сетевой. HASP HL Net. Ключ красного цвета, имеет персональный номер и внутреннюю память в которой записано количество лицензий.
- Ключ на 32х битный сервер 1С:Предприятие. HASP HL Pro.У ключа есть маркировка ENSR8 Ключ фиолетового цвета, с внутренней памятью (фактически не используется) и уникальным идентификатором.
- Ключ на 64х битный сервер 1С:Предприятие. HASP HL Max. Ключ зеленого цвета. У ключа есть маркировка EN8SA, при этом данный ключи поддерживает 32-битный сервер (если у клиента есть лицензия на 64-битный сервер, он может, не меняя ключа, использовать также и 32-битную версию). C внутренней памятью (фактически не используется) и уникальным идентификатором.
Разобрались с цветами, попытаемся понять буковки:
В первой строчке ключа его тип и максимальное количество лицензий. Hasp4 или Н4 - тип ключа. М1 - локальный с памятью 112 байт NetXX - сетевой, где ХХ - количество лицензий.
Других 1С пока не использует.
Во второй строчке первые пять знаков - код разработчика (заказчика) ключа.
В приложении к 1С - это назначение ключа. ORGL8 - пользовательский от восьмерки. ENSR8 - сервер предприятия восьмерки 32x. EN8SA - сервер предприятия восьмерки 64x.
Остальные знаки никакого интереса не представляют.
Подробнее: Серверные ключи:
1С:Предприятие 8.0 (8.1, 8.2) Лицензия на сервер (х32) маркируется "H4 M1 Pro ENSR8" (фиолетовый цвет ключа)
1С:Предприятие 8.0 (8.1, 8.2) Лицензия на сервер (x64) маркируется "H4 M1 Max EN8SA" (зеленый цвет ключа)
Однопользовательские ключи: (синий цвет ключа)
Ключи для всех версий программ маркируются "H4 M1 ORGL8"
Сетевые (многопользовательские) ключи: (красный цвет ключа)
Ключи маркируются в зависимости от числа клиентских лицензий:
Программы группы "1С:Бухгалтерия 8" маркируются "H4 NET5 ORGL8"
Ключи на 5 пользователей маркируются "H4 NET5 ORGL8"
Ключи на 10 пользователей маркируются "H4 NET10 ORGL8"
Ключи на 20 пользователей маркируются "H4 NET20 ORGL8"
Ключи на 50 пользователей маркируются "H4 NET50 ORGL8"
Ключи на 100 пользователей маркируются "H4 NET100 ORGL8"
Ключи на 300 пользователей маркируются "NET250+ ORG8A"
Ключи на 500 пользователей маркируются "NET250+ ORG8B"
Комплекты ключей:
Комплект из 2 ключей "1С:Предприятие 8 Управление производственным предприятием" на 10 пользователй + сервер, а так же комплект из 2 ключей "1С:Предприятие 8 Комплексная автоматизация" на 10 пользователей + сервер, ключи маркируются "H4 NET10 ORGL8" и "H4 M1 ENSR8"
Комплект из 2 ключей "1С:Предприятие 8 Учебный комлект" на 20 пользователей + сервер, ключи маркируются "H4 NET20 ORGL8" и "H4 M1 ENSR8"
Данная система маркировки была введена для удобства идентификации ключа разработчиками и пользователями программного обеспечения.
Для установки однопользовательского и серверного ключей достаточно установить драйвер ключа защиты и вставить ключ защиты в порт.
Для установки многопользовательского ключа защиты требуется определить, какая из машин в сети будет являться сервером. Далее нужно установить на этот компьютер драйвер ключа защиты (HASP4_driver_setup.zip) и службу ключа защиты (HASP_LM_setup.zip), после чего вставить ключ защиты в порт.
Для 1С 7
Сетевые ключи - Красные
Локальные - Серые
+ на ключе шла расшифровка ACC- Бухгалтерия, TRD- Торговля, SAL - Зарплата
Программы однопользовательской группы:
Программы группы "1С:Бухгалтерия 7.7" маркируются "H4 M1 ACCNT"
Программы группы "1С:Зарплата и кадры 7.7" маркируются "H4 M1 QXDXD"
Программы группы "1С:Торговля и склад 7.7" маркируются "H4 M1 WRBQB"
Программы группы "1С:Предприятие 7.7 Комплексная" маркируются "H4 M1 WRBQB"
Программы сетевой (многопользовательской) группы:
Программы группы "1С:Предприятие 7.7 Бухгалтерский учет" маркируются "H4 Net5 ACCNT"
Программы группы "1С:Предприятие 7.7 Зарплата + Кадры" маркируются "H4 Net5 QXDXD"
Программы группы "1С:Предприятие 7.7 Торговля + Склад" маркируются "H4 Net5 WRBQB"
Программы группы "1С:Предприятие 7.7 Комплексная поставка" маркируются "H4 Net5 WRBQB"
Программы группы "1С:Предприятие 7.7 Налогоплательщик" маркируются "H4 Net5 TAXPR"
Программы группы "1С:Предприятие 7.7 Небольшая фирма" маркируются "ACCNT" / "WRBQB" / "QXDXD"
Программы группы "1С:Предприятие 7.7 Управление распределенными информационными базами" маркируются "H4 Net5 DISTR"
Программы группы "1С:Предприятие 7.7 Web-расширение" маркируются "H4 Net5 W31CK"