У управляемой формы реквизиты заведенные как реквизиты формы, при закрытии и открытии ее заново могут сохраняться и восстанавливаться, достаточно только поставить напротив галочку сохранять и в свойствах формы выбрать "АвтоматическоеСохранениеДанныхВНастройках" - Использовать.
На днях делал несколько однотипных отчетов на СКД.
Общий принцип: формируются все варианты отчета, указанные в настройках схемы и каждый вариант выводится на отдельной вкладке.
Потом возникла мысль попробовать объединить все схемы в один отчет, чтобы не плодить лишних объектов в конфигурации. При этом количество вариантов в этих схемах заранее неизвестно. Ok, challenge accepted.
В тестовой конфигурации создаю для отчета две схемы компоновки, "Склад" и "Заявки".
Запросы наборов данных приводить не буду, для каждой схемы в настройках добавляю несколько вариантов отчетов.
Теперь переходим к созданию формы. Практически все реквизиты формы будут создаваться при выборе необходимого макета отчета.
У одного пользователя 1С-ка начала умирать при печати (и предварительном просмотре) конкретной печатной формы.
Способы решения:
1. Обновить Платформу
2. Проверить доступность принтера по умолчанию
3. Сделать очистку кэша пользователя.
4. Настройки печатных форм хранятся в базе данных в хранилище настроек и их тоже надо почистить. Поможет следующий код, который выполняется один раз из внешней обработки (в файлах):
Пользователи в 1с ведут описание объектов, которые редактируются в объекте ФорматированныйДокумент. Необходимо обеспечить выгрузку форматированного документа на фтп.
Для решения этой задачи воспользуемся методом форматированного документа ПолучитьHTML(). Этот метод вернет нам сам текст html документа и структуру картинок. После выполнения данного метода нам следует выгрузить картинки на наш сайт. Во время выгрузки картинок определяем тип картинки и на основании этого определяем расширение файла. Поэтому нам надо и подкорректировать сам текст html, так как источник картинки в нем по умолчанию прописывается в виде «image001″ (без расширения). Эта корректировка не критична для нас, страница будет отображаться нормально, но отдельно по ссылке открыть рисунок будет проблематично.
Код функции:
Данные, которые определяют логику функционирования системы на базе 1С:Предприятия, относятся к информационной базе. Хранение информационной базы осуществляется в базе данных с виде набора таблиц, для чего 1С:Предприятие 8.1 может использовать одну из четырех систем управления базами данных (СУБД): * Встроенную в 1С:Предприятие 8.1 (файловый вариант информационной базы). В этом случае все данные информационной базы хранятся в файле с именем 1Cv8.1CD. Этот файл имеет двоичный формат и по сути является базой данных для встроенной в 1С:Предприятие 8.1 СУБД. * Microsoft SQL Server (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных Microsoft SQL Server. * PostgreSQL (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных PostgreSQL. * IBM DB2 (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных IBM DB2.
На уровне объектов базы данных (таблиц, полей, индексов и т. п.) как файловый так и клиент-серверный вариант информационной базы имеют сходный формат (отличающийся несущественными деталями). Некоторая информация об этом формате содержится ниже.
Вся информационная база представляется в базе данных в виде набора таблиц. Среди них есть несколько таблиц, которые обязательно присутствуют в представлении любой информационной базы:
* Config - основная конфигурация информационной базы. Эта конфигурация соответствует реальной структуре данных и используется 1С:Предприятием 8.0 в режиме Предприятия. * ConfigSave - конфигурация, редактируемая Конфигуратором. Конфигурация из ConfigSave переписывается в Config при выполнении "Обновления конфигурации базы данных" в Конфигураторе, а наоборот - при выполнении в Конфигураторе операции "Конфигурация - Конфигурация базы данных - Вернуться к конфигурации БД". * Files содержит служебную информацию, например, о работе с хранилищем конфигурации. * Params содержит параметры информационной базы. Среди них: => Список пользователей информационной базы. => Национальные настройки информационной базы. => Таблица соответствия объектов метаданных и объектов базы данных (таблиц, полей, индексов). => Некоторая другая информация. * _YearOffset - смещение дат в базе данных. Эта таблица создается только при использовании Microsoft SQL Server. * DBSchema содержит информацию о структуре базы данных 1С:Предприятия и определяет другие объекты базы данных, используемые данной информационной базой.
При старте 1С:Предприятие проверяет наличие в информационной базе перечисленных таблиц и в случае отсутствия какой-нибудь из них выдается сообщение "информационная база разрушена". Отсутствие всех перечисленных таблиц означает, что информационная база пустая. В последнем случае эти таблицы будут созданы.
Перечень и структура других таблиц базы данных определяется конкретной конфигурацией, а именно, определенными в ней объектами метаданных. Имя каждой таблицы состоит из буквенного префикса и следующего за ним номера. Префикс определяет назначение таблицы, а номер позволяет различать таблицы одинакового назначения, относящиеся к разным объектам метаданных. Если в качестве СУБД используется IBM DB2, то описанную структуру имеют не имена таблиц, а их псевдонимы.
Если в конфигурации определен хотя бы один план обмена с установленным флагом "Распределенная информационная база", то будут созданы следующие таблицы:
* _ConfigChangeRec - таблица регистрации изменений объектов конфигурации. * _ConfigChangeRec_ExtProps - таблица имен файлов измененных внешних свойств объектов конфигурации.
Ниже перечислены различные объекты метаданных, которым могут соответствовать те или иные таблицы.
* Константы => _Consts содержит текущие значения всех констант, определенных в конфигурации. => _ConstsChangeRec - таблица регистрации изменений констант. Создается, если хотя бы одна константа участвует хотя бы в одном плане обмена. * Планы обмена => _Node<n> - таблица плана обмена. => _Node<n>_VT<k> - табличная часть плана обмена, создается для каждой табличной части. * Справочники => _Reference<n> - таблица справочника. => _Reference<n>_VT<k> - табличная часть справочника - для каждой табличной части. => _ReferenceChangeRec<n> - таблица регистрации изменений справочника. Создается, если справочник участвует хотя бы в одном плане обмена. * Документы => _Document<n> - таблица документов для каждого объекта метаданных "документ". => _Document<n>_VT<k> - табличная часть документа - для каждой табличной части каждого документа. => _DocumentChangeRec<n> - таблица регистрации изменений объекта метаданных типа "документ". Создается для каждого объекта метаданных типа "документ", если он участвует хотя бы в одном плане обмена. * Последовательности документов => _Sequence<n> - таблица регистрации документов - для каждой последовательности. => _SequenceBoundary<n> - таблица границ последовательности - для каждой последовательности. => _SequenceChangeRec<n> - таблица регистрации изменений последовательности. Создается для каждой последовательности, которая участвует хотя бы в одном плане обмена. * Журналы документов. => _DocumentJournal<n> - таблица журнала документов, создается для каждого журнала документов. * Перечисления => _Enum<n> - таблица перечисления - по одной для каждого перечисления. * Планы видов характеристик => _Chrc<n> - основная таблица плана видов характеристик. => _Chrc<n>_VT<k> - табличная часть плана видов характеристик - для каждой табличной части. => _ChrcChangeRec<n> - таблица регистрации изменений плана видов характеристик. Создается, если план видов характеристик участвует хотя бы в одном плане обмена. * Планы счетов => _Acc<n> - основная таблица плана счетов. => _Acc<n>_ExtDim<k> - таблица видов субконто плана счетов, создается для плана счетов в том случае, если максимальное количество субконто больше нуля. => _Acc<n>_VT<k> - табличная часть плана счетов, создается для каждой табличной части плана счетов. => _AccChangeRec<n> - таблица регистрации изменений плана счетов. Создается, если план счетов участвует хотя бы в одном плане обмена. * Планы видов расчета => _CalcKind<n> - основная таблица плана видов расчета. => _CalcKind<n>_BaseCK - таблица базовых видов расчета, создается для плана видов расчета в случае, если его свойство "Зависимость от базы" имеет значение, отличное от "Не зависит". => _CalcKind<n>_DisplacedCK - таблица вытесняемых видов расчета, создается для плана видов расчета в случае, если у него установлен флаг "Использует период действия". => _CalcKind<n>_LeadingCK - таблица ведущих видов расчета - для каждого плана видов расчета. => _CalcKindDN<n> - вспомогательная таблица для порядка вытеснения, создается, если у плана видов расчета установлен флаг "Использует период действия". => _CalcKind<n>_VT<k> - табличная часть плана видов расчета, создается для каждой табличной части. => _CalcKindChangeRec<n> - таблица регистрации изменений плана видов расчета. Создается, если план видов расчета участвует хотя бы в одном плане обмена. * Регистры сведений => _InfoReg<n> - таблица движений регистра сведений. => _InfoRegChangeRec<n> - таблица регистрации изменений регистра сведений. Создается, если регистр сведений участвует хотя бы в одном плане обмена. * Регистры накопления => _AccumReg<n> - таблица движений регистра накопления. => _AccumRegTotals<n> - таблица итогов регистра накопления, если регистр поддерживает остатки. => _AccumRegTurnovers<n> - таблица оборотов регистра накопления, если регистр поддерживает обороты. => _AccumRegChangeRec<n> - таблица регистрации изменений регистра накопления. Создается, если регистр накопления участвует хотя бы в одном плане обмена. => _AccumRegOptions - таблица настроек хранения итогов регистров накопления одна на все регистры накопления. * Регистры бухгалтерии => _AccntReg<n> - таблица движений регистра бухгалтерии. => _AccntRegED<n> - таблица значений субконто регистра бухгалтерии, создается в том случае, если он ссылается на план счетов, у которого максимальное количество субконто больше нуля. => _AccTtl0<n> - таблица итогов по счету. => _AccTtl<i><n> - где i от 1 до максимального количества субконто. Таблица итогов по счету с количеством видов субконто равным i. => _AccTtlC<n> - таблица итогов оборотов между счетами, только для регистра бухгалтерии поддерживающего корреспонденцию. => _AccntRegChangeRec<n> - таблица регистрации изменений регистра бухгалтерии. Создается, если регистр бухгалтерии участвует хотя бы в одном плане обмена. => _AccntRegOptions - таблица настроек хранения итогов одна на все регистры бухгалтерии. * Регистры расчета => _CalcReg<n> - таблица движений регистра расчета. => _CalcRegActPer<n> - таблица фактических периодов действия для регистра расчета, создается, если у регистра расчета установлен флаг "Период действия". => _CalcRegChangeRec<n> - таблица регистрации изменений регистра расчета. Создается для каждого регистра расчета, участвующего хотя бы в одном плане обмена. => _CalcRegRecalc<n> - таблица перерасчета регистра расчета, создается для каждого перерасчета. => _CalcRegRecalcChangeRec<n> - таблица регистрации изменений перерасчета. Создается, если перерасчет участвует хотя бы в одном плане обмена. * Бизнес-процессы => _BPRoutePoint<n> - таблица точек маршрута бизнес-процесса для каждого бизнес-процесса. => _BusinessProcess<n> - основная таблица бизнес-процесса. => _BusinessProcess<n>_VT<k> - табличная часть бизнес-процесса для каждой табличной части. => _BusinessProcessChangeRec<n> - таблица регистрации изменений бизнес-процесса. Создается для каждого бизнес-процесса, участвующего хотя бы в одном плане обмена. * Задачи => _Task<n> - основная таблица задачи. => _Task<n>_VT<k> - табличная часть задачи для каждой табличной части. => _TaskChangeRec<n> - таблица регистрации изменений в задачах. Создается для каждого объекта метаданных типа "задача", который участвует хотя бы в одном плане обмена.
При использовании IBM DB2 префиксы псевдонимов таблиц начинаются не с символа подчеркивания, а сразу с буквенной части.
Количество этих таблиц зависит от функциональности конфигурации и может быть достаточно большим. В штатном режиме 1С:Предприятие не выполняет проверку их наличия, а также целостности и непротиворечивости содержащихся в них данных. Поэтому важно, чтобы база данных, в которой размещена информационная база 1С:Предприятия 8.1, была защищена от несанкционированного доступа и ее модификация выполнялась только средствами 1С:Предприятия. Для проверки необходимо использовать функцию "Администрирование - Тестирование и исправление", встроенную в конфигуратор.
Важно также, чтобы резервное копирование и восстановление базы данных, хранящей информационную базу, выполнялось только целиком. С этой целью рекомендуется использование средств резервного копирования баз данных, встроенных в в используемую СУБД. Резервное сохранение файлового варианта информационной базы может быть выполнено копированием файла 1Cv8.1CD.
В конфигураторе есть специальная функция: Администрирование - Выгрузить информационную базу. С ее помощью можно выгрузить в указанный файл (файл выгрузки) все данные, относящиеся к информационной базе, и больше никакие. Обратная ей функция "Загрузить информационную базу" позволяет в текущую информационную базу вместо существующих загрузить все данные из файла выгрузки. Эти функции также можно использовать для резервного копирования данных информационной базы как в файловом так и в клиент-серверном варианте. Как просмотреть структуру таблиц информационной базы?
У разработчиков на платформе 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.