На одном проекте - клиент попросил отображать в программе данные, которые выдаю специализированные сайта в формате RSS - Что делать !?
Писать парсер rss для 1С
Первым делом, взглянув на ссылки, подумал что - обычный XML, сейчас его разложу и быстренько загружу в базу, но:
Выяснилось что сайты имеют разные форматы ввода RSS и главное они не валидные(
таким образом, написав небольшой код, который получает ссылку, далее XMLФайл.Прочитать() на одном сайте проходил на ура (этот пример я описывал в статье: Чтение данных с сайта в формате XML и загрузка в 1С), а вот второй сайт, и третий тоже, при попытке прочитать() выдавали:
{ОбщийМодуль.РегЗадания.Модуль(79)}: Ошибка при вызове метода контекста (Прочитать)
Пока XMLФайл.Прочитать() Цикл
по причине:
Ошибка разбора XML: - [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId url rss
решил попробовать на rss других известных сайтов - 80% из проверяемых выдавали ошибку
Пришлось написать прямой построчный парсер RSS:
Структура конфигурации
ИсточникиRSS - URL на RSS, ДанныеRSS - сюда записываются загруженные данные новостей
Код получился таким(в принципе код универсальный, но возможно что-то придется подпилить):
Обычный режим форм ТАКСИ не всегда удобен, и иногда нужно переключиться в компактный.Это можно сделать несколькими способами (обработку которая устанавливает тот или иной режим на все формы во внимание не берем).
При подключении к базе, расположенной на сервере 1С:Предприятия, возникает ошибка "…Windows Sockets - 11001 (0x00002AF9). Этот хост неизвестен…". Как вылечить?
Виды ошибок:
или
Ошибка подключения к базе, расположенной на сервере 1С:Предприятия, возникает не всегда!
Подключение из Windows XP обычно проходит без особых проблем, при этом аналогичное подключение из Windows 7 может завершаться аварийно:
Ошибка 11001 - Windows Sockets
Лечится эта ошибка довольно просто! Достаточно внести изменения в файл hosts
Файл hosts представляет собой
Обычный текстовый файл (не имеющий расширения). В hosts-файле по умолчанию прописан всего один IP-адрес (127.0.0.1), зарезервированный для localhost, то есть для локального ПК. Файл hosts представляет собой обычный текстовый файл (не имеющий расширения).
Где находится файл hosts
• Windows 95/98/ME – WINDOWS;
• Windows NT/2000/XP/Vista/7 – Windows/System32/drivers/etc.
И так у нас Win7 открываем C:\WINDOWS\system32\drivers\etc\hosts, и добавляем в него ip-адрес вашего сервера.
Например так: 192.168.1.100 sermac
Сохраните, и попробуйте через пару минут запустить программу.
В данной статье рассматривается способ программного формирования HTML документа, содержащего ссылки на объекты базы данных 1С, такие как справочники, документы и т.д. Показан пример построения обработчика события OnClick ПоляHTMLДокумента, для обработки клика на html-ссылке.
Предисловие
Однажды, дописывая обработку, создающую и модифицирующую, не суть важно какие документы, я подумал, что неплохо было бы вывести для пользователя некое резюме:
“Создан документ такой-то”
“Изменен документ такой-то” и т.д.
От обычного, в таких случаях, вывода информации в окно сообщений я сразу отказался, так как не удобно это, сначала читать в окне сообщений “Создан документ … ” а потом запоминать его номер, открывать соответствующий журнал (или форму списка) и искать там этот документ. А если документов много и пользователь хочет посмотреть все документы?(или выборочно) Насколько это неудобно я убедился при отладке обработки …
То, что в форме есть элемент управления именуемый ПолеHTMLДокумента я конечно знал, но вот представилась возможность познакомиться с ним поближе. Было решено реестр обработанных документов выводить в виде html документа содержащего ссылки на эти самые документы, а по клику на ссылке открывать форму соответствующего документа. Здесь мне многие могут возразить: “А почему бы для этих целей не использовать обычный макет, выводимый в табличный документ, а для открытия документов использовать расшифровку? И чем Ваш способ лучше?” Отвечаю: Конечно можно использовать, и мой способ ничем не лучше. Он просто другой. Ведь у хорошего программиста для решения одной задачи должно быть в арсенале несколько инструментов.
Итак, перейдем от слов к делу, в рамках данной статьи рассмотрим следующую задачу: Сформировать html-документ, содержащий ссылки на элементы справочника номенклатура, по клику требуется открывать форму соответствующего элемента. Создаем новый отчет, его форму, на форме размещаем элемент управления ПолеHTMLДокумента.
Текст модуля формы:
Ну вот html мы сформировали, теперь чтобы ссылки “ожили” надо написать обработчик события OnClick элемента управления ПолеHTMLДокумента.
Всё можно пробовать!
Заключение
Обратите внимание что ссылку я формировал следующим образом:
<ИмяОбъектаМетаданных>-<УникальныйИдентификатор> это сделано для того, чтобы в обработчике onclick можно было определить к какому объекту метаданных относится данный УникальныйИдентификатор, потому что имея ТОЛЬКО УникальныйИдентификатор невозможно определить к какому объекту метаданных он относиться. Точнее возможно, но уж слишком долго и неудобно – путем перебора всех метаданных в цикле, для каждого объекта метаданных выполнять попытку <ОбъектМетаданных>.ПолучитьСсылку(Новый УникальныйИдентификатор(НашУникальныйИдентификатор))
Хотя в нашем примере только один справочник, и указывать его вид было необязательно, и так понятно что это УникальныйИдентификатор элемента справочника Номенклатура, но вдруг Вам потребуется работать с несколькими справочниками, вот тут то мой способ задания ссылки Вам и пригодится. Скачивать файлы может только зарегистрированный пользователь!
P.S. Платформа 8.2 имеет встроенный механизм работы со ссылками на объекты БД и данная задача наверняка упростится, но это уже другая тема.
Источник: obrabotki.com
Почему данная возможность вызывает такой интерес? Любой человек, который программировал в 1С при этом достаточно неплохо знаком с SQL и хотя бы в общих чертах знаком с архитектурой и принципами разработки других технологических платформ для бизнес приложений с твердой уверенностью скажет вам - что ему нравится больше всего в 1С. Конечно конструктор запросов - самый удобный и продуманный механизм написания запросов для получения данных из реляционных структур, который я лично когда-либо встречал. А теперь 1С нам предоставили такую замечательную возможность использовать его не только с 1С, но и с любыми другими таблицами. Вот только в эту "бочку мёда" насыпана куча "ложек дёгтя". Обо всём по порядку:
1) Настройка и использование - без "танцев с бубном" не получится
a) Добавляете внешний источник данных - вроде ничего сложного
б) ставите галочку "Выбрать из списка" - обязательно - это нужно чтобы проверить работоспособность уже в начале и избавит от лишних заморочек
в) - обязательно нажимаем "..." - подключение именно ODBC. Не OLEDB как мы все привыкли, а на уровень ниже
г) А вот здесь будьте ОЧЕНЬ ВНИМАТЕЛЬНЫ.
Это драйвер ODBC - в случае использования клиент-серверной версии он должен обязательно быть на сервере. Если вы ведёте разработку на одной системе, а рабочая версия на другой (как это обычно бывает) убедитесь что вас не ждут сюрпризы. Странная рекоммендация, но выбирайте самый древний или самый общий драйвер в случае если вас не особо заботит скорость и за пределы возможностей стандарта SQL92 вы выходить не намерены. Это обеспечит вам лучшую совместимость. Например для SQL Server 2008 лучшим драйвером будет SQL Server Native Client 11, но рекоммендую выбирать просто SQL Server, иначе этот самый native client придётся устанавливать либо на сервер, либо на все клиентские машины (в случае использования файловой версии), а выигрыша особого для простых задач он не даст.
д) Стандартные диалоги выбора Сервера
и БД
е) На вопрос сохранения пароля рекомендую ответить "да", иначе так и не получится это дело запустить.
ж) Выбираете таблицу и реквизиты... замечательная возможность - её можно сразу же переименовать так как вам нравится (и реквизиты тоже), при этом в свойствах у вас будут отображаться названия полей источника данных
з) А теперь запускаете, открываете конструктор запросов - выбираете тупо все записи из таблицы и ОПА - ошибка. Что делать? Если у вас управляемый интерфейс - заглянуть в меню сервис, а если обычный...
Я лично использовал вот такой код:
Может каких-то кусков и не нужно, но это работает.
Выполнить код нужно ОДИН РАЗ. После чего будет нормально подключаться... мистика конечно - зачем это было нужно не понятно...
2) Источники данных только для чтения - Да, чудес не бывает... но иногда так хочется....
3) НЕЛЬЗЯ ИХ ИСПОЛЬЗОВАТЬ ВМЕСТЕ С ВНУТРЕННИМИ ИСТОЧНИКАМИ ДАННЫХ
Меня лично этот факт убил наповал
Как же так.... то чего так ждали и уже представляли и облизывались как мы сейчас в одном запросе соединим наши данные с 1С-кой свернём - сгруппируем, вставим в отчет, а не тут то было...
Но естественно опытных людей это не останавливает... какая мысль пришла в голову? Правильно - временные таблицы:
4) НЕЛЬЗЯ ИХ ИСПОЛЬЗОВАТЬ ВМЕСТЕ С ВРЕМЕННЫМИ ТАБЛИЦАМИ
А вот это уже не похоже на технологические трудности, а очень смахивает на то что нам хотят "чтобы жизнь раем не казалась" сделать .
5) Можно использовать только в соединениях СКД
Для тех кто не знает - это в СКД на вкладке "Связи наборов данных". Часто вы ими пользуетесь? Удобно? Видимо так нас хотят принудить к использованию их чаще. Вот только там есть колонка "Условие связи" и "Параметр связи". Ни в одной типовой конфигурации не нашел примера их использования, в документации и у Хрусталевой тоже как-то всё не прозрачно. Кто-нибудь сможет мне объяснить как работает "условие связи". Если там написать РеквизитИсточника = РевизитПриемника это не работает. Конечно условие можно записать в поле "Выражение" - в большинстве случаев этого хватает... вот только как-то не очень просто получается.
Итого ранее эта задача решалась где-то так:
Собственно строчек кода не много и они достаточно стандартны... при этом можно пользоваться полным функционалом конструктора запросов, а в СКД отдать только функцию КОМПАНОВКИ ДАННЫХ
Но на вид чуть конечно не так красиво... да и выгрузка в таблицу значений каждый раз нужно код писать и проверять не ошибся ли в названии реквизитов... а то что нам дали в 1С выглядит как-то половинчато. Я ещё не определился чем удобнее пользоваться. Вы решайте, и пишите о ваших решениях, и что вас к ним подтолкнуло.
Автор: Олег Филиппов
Тем, кто не сталкивался с 8.2 и всеми проблемами, особенно ранних версий платформы на системах с большим количеством пользователей меры, описанные в этой статье окажутся избыточными. Но все действия продиктованы только опытом, и проверены практикой.
1) Резервный центральный кластер создавать нужно. Это аксиома. Если у вас более 10 пользователей и в течение дня в 1С ведется хоть какая-то работа - выделите хотя бы обычный компьютер с не серверным "железом" под резервный центральный кластер - это пригодится.
2) Резервный центральный кластер - это не кластер включенный в группу резервирования.
Это полноценный центральный кластер, который является копией существующего. Да, это возможно; более того - это нужно делать. Только нужно отключить фоновые задания на резервном кластере серверов. Я не уверен по поводу лицензионного соглашения с 1С, но если в каждый момент времени будет использоваться только один центральный кластер ничего страшного в этом нет. Но сами понимаете, чтобы "подмена" кластеров была "горячей" кое что придется сделать... как минимум сбегать в серверную и переставить ключик. Кроме того резервный центральный кластер можно запускать с ключем -debug (в реестре: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\1C:Enterprise 8.2 Server Agent параметр "imagePath"). И использовать для отладки серверного кода разработчиками. Резервирование центрального кластера в случае использования штатного механизма 1С - штука наверное хорошая, вот только у меня лично она не сработала. Дело в том, что она не работает в случае "подвисания" процесса центрального кластера "rpmngr" - т.е. процесс есть, определить его отсутствие ещё не удаётся, механизм использования резервного центрального кластера не включается. А пока что с центральным кластером чаще всего случались проблемы "зависания" а не "падения".
3) Про 1cestart.exe забудьте. Моё личное мнение конечно, но по-моему этот блок в 1С отдали писать каким-то студентам (что вполне возможно, т.к. стартер не является частью платформы и не особо критичен). Столько ошибок в его работе находили в релизах, столько "глюков" было обнаружено в это простом инструменте, что пользоваться им решительно не советую, особенно в свете того, что далее будет специальный скрипт запуска 1С.
4) Для запуска 1С разработал специальный скрипт:
В данном скрипте "Сетевая папка" нужно заменить на адрес общедоступной папки, в которую вы поместите файлы настроек. По умолчанию файл может быть один. Но так же существует возможность для разных баз использовать разные сервера центрального кластера и разные файлы настроек. Это нужно, к примеру, чтобы сперва в работе новую версию платформы "протестировала" бухгалтерия, а потом уже перешли на новую версию основные торгующие подразделения.
файл настроек при этом будет иметь вид:
Всего 2 строчки. В первой - версия платформы, во второй - имя центрального кластера серверов
Этот скрипт нужно положить в ту же сетевую папку (если безопасность у вас в сети позволяет запускать скрипты из сетевых папок). Если не позволяет - на локальные компьютеры пользователей, и создать ярлыки для баз 1С со строками вида:
Где Base - имя базы в кластере для запуска. Пример скрипта, самосотятельно определяющего текущий EXE-шник 1С:
После этого изменением одной строчки в файле настроек вы сможете переключить запуск пользователей на другую платформу или на другой центральный кластер 1С. Не один раз этот простой скрипт спасал от долгого простоя.
Если имя сервера используется где-то при установке COM соединений - его тоже нужно поменять.
Соответственно при окончательном и бесповоротном падении основного сервера нужно сделать:
а) Останавливаете службу сервера если она ещё сама не остановилась (обязательно нужно это сделать чтобы на сервере не осталось активных пользователей, а то может сбоить нумерация объектов)
б) Переключаете в файле запуск на новый сервер
в) net send * "Перезайдите в 1С"
г) Запускаете 1С с новго сервера - вызываете на всякий случая "ОбновитьНумерациюОбъектов"
д) Включаете фоновые задания но новом кластере серверов
После этого "чините" основной сервер (починка чаще всего заключается в очистке каталога C:\Program Files\1cv82\srvinfo)
И в конце дня те же самые процедуры (кроме оповещения) проделываете для переключения обратно на основной сервер.
Если падение сервера наблюдается после обновления платформы, то к данным действиям нужно еще добавить восстановления COM соединителя на всех клиентских компьютерах (если вы используете COM или OLE) - нудно через установку и удаление программ выбрать нужную вам версию платформы и нажать "восстановить". т.к. COM соединения обычно не используются в критических процессах - они чаще всего нужны для интеграции, то их восстановление "терпит" и вы можете позволить себе обновлять машины, или сделать это групповой политикой, если разрешения для клиентских рабочих станций позволяют.
5) Резервная копия перед обновлением. Обязательно конечно - были уже релизы где все субконто очищались... так что лучше не рисковать
6) Проверка запуска после обновления. Тоже обязательна. И обратите внмание на время запуска... Оно может вдруг увеличиться до оочень большого.
Собственно эта методика позволяет "почти безболезненно" обновлять платформу, и быстро "откатываться" к "старым" релизам в случае возникновения проблем. Так же позволяет быстро переключиться на резервный центральный кластер в случае отказа основного. Успешно работает и опробована в случае работы в едином домене и преимущественно в терминальном режиме. В случае когда не единый домен и пользователи работают не не терминальных серверах появятся ещё "заморочки" с обновлением платформы на клиентских машинах (для них придётся использовать политики групп) и создании общей папки (если не единый домен), но возможности WSH позволяют считать файл из любого места - с этим проблем не будет.
Автор: Олег Филиппов
Программное формирование HTML-документа, содержащего ссылки на объекты базы данных 1С
В данной статье рассматривается способ программного формирования HTML документа, содержащего ссылки на объекты базы данных 1С, такие как справочники, документы и т.д. Показан пример построения обработчика события OnClick ПоляHTMLДокумента, для обработки клика на html-ссылке.
Предисловие
Однажды, дописывая обработку, создающую и модифицирующую, не суть важно какие документы, я подумал, что неплохо было бы вывести для пользователя некое резюме:
“Создан документ такой-то”
“Изменен документ такой-то” и т.д.
От обычного, в таких случаях, вывода информации в окно сообщений я сразу отказался, так как не удобно это, сначала читать в окне сообщений “Создан документ … ” а потом запоминать его номер, открывать соответствующий журнал (или форму списка) и искать там этот документ. А если документов много и пользователь хочет посмотреть все документы?(или выборочно) Насколько это неудобно я убедился при отладке обработки …
То, что в форме есть элемент управления именуемый ПолеHTMLДокумента я конечно знал, но вот представилась возможность познакомиться с ним поближе. Было решено реестр обработанных документов выводить в виде html документа содержащего ссылки на эти самые документы, а по клику на ссылке открывать форму соответствующего документа. Здесь мне многие могут возразить: “А почему бы для этих целей не использовать обычный макет, выводимый в табличный документ, а для открытия документов использовать расшифровку? И чем Ваш способ лучше?” Отвечаю: Конечно можно использовать, и мой способ ничем не лучше. Он просто другой. Ведь у хорошего программиста для решения одной задачи должно быть в арсенале несколько инструментов.
Итак, перейдем от слов к делу, в рамках данной статьи рассмотрим следующую задачу: Сформировать html-документ, содержащий ссылки на элементы справочника номенклатура, по клику требуется открывать форму соответствующего элемента. Создаем новый отчет, его форму, на форме размещаем элемент управления ПолеHTMLДокумента.
Ну вот html мы сформировали, теперь чтобы ссылки “ожили” надо написать обработчик события OnClick элемента управления ПолеHTMLДокумента.
Заключение
Обратите внимание что ссылку я формировал следующим образом:
<ИмяОбъектаМетаданных>-<УникальныйИдентификатор> это сделано для того, чтобы в обработчике onclick можно было определить к какому объекту метаданных относится данный УникальныйИдентификатор, потому что имея ТОЛЬКО УникальныйИдентификатор невозможно определить к какому объекту метаданных он относиться. Точнее возможно, но уж слишком долго и неудобно – путем перебора всех метаданных в цикле, для каждого объекта метаданных выполнять попытку <ОбъектМетаданных>.ПолучитьСсылку(Новый УникальныйИдентификатор(НашУникальныйИдентификатор))
Хотя в нашем примере только один справочник, и указывать его вид было необязательно, и так понятно что это УникальныйИдентификатор элемента справочника Номенклатура, но вдруг Вам потребуется работать с несколькими справочниками, вот тут то мой способ задания ссылки Вам и пригодится.
P.S. Платформа 8.2 имеет встроенный механизм работы со ссылками на объекты БД и данная задача наверняка упростится, но это уже другая тема. Источник
В качестве примера использования можно указать вот такую ситуацию: в зависимости от типа клиента (договора, документа и т.п) формируются разные тексты договоров с разным количеством таблиц. В реальности, конечно должены использоваться и макет и описанные здесь динамические механизмы.
В моем примере я заранее создал новый пустой документ. Тестировалось на Office 2007.
Часто при создании документа из макета используют метод замены кусков текста. В примере представлен другой вариант выполнения того же действия - с использованием закладок. Также представлен пример построения нумерованного списка, вставки картинки, настройки ее параметров.
Пример использования описанных возможностей прост. При формировании коммерческого предложения бывает необходимо описать список условий, добавить изображение образца продукции.
Для отображения закладок включите эту опцию в настройках вашего Word'а.
В моем примере я заранее создал новый пустой документ, путь к документу и картинке прописан в тексте. Не забудте указать свои пути.
Периодически сталкиваюсь с проблемой обновления платформы на клиентских машинах, + периодически пользователи удаляют, изменяют или добавляют какие-то новые информационные БД.
В случае 8.2 новые релизы платформы стали штамповать чуть ли не каждый месяц, что меня повергло в уныние, разбираясь в этом вопросе понял: у кого есть домен могут легко реализовать с помощью доменных политик..Те же кто лишен домена и работает в рабочих группах, может прибегнуть к помощи кривоватого скрипта от 1С (текст скрипта приведен в руководстве администратора 8.2 стр. 185 Но как быть, если нужно одновременно снести старую платформу и поставить новую + что б еще у всех пользователей был одинаковый список информационных БД, Да и лучше, что б по ссылке вообще автоматом выбиралась нужна ИБ!
Для решения нам нужно какое-нибудь общедоступное сетевое пространство, куда мы кладем дистрибутивы платформ и нужный нам список баз (отредактированный файлик ibases.v8i)
Итак, пишем скрипт от меня с любовью и комментариями
Напоминаю, что создать исполняющий скрипт не сложно, берем обычный текстовый файл, вставляем туда текст скрипта, сохраняем файл, меняем ему расширение с txt на vbs и можно скрипт исполнять Источник
Документ «Корректировка записей регистров» в типовых конфигурациях 1С предназначен для ручной корректировки записей регистров накопления, зависимых регистров сведений и регистров бухгалтерии. Типичные ситуации, в которых может понадобиться документ «Корректировка записей регистров», - ввод начальных остатков, исправление ошибок в учете, отражение в учете операций, для которых в конфигурации нет специальных документов. В документе есть сервис автоматического заполнения движений с предопределенным действием «Сторно движений документа». С его помощь можно автоматически создать движения по регистрам бухгалтерии и регистрам накопления, аналогичные движениям указанного документа, но с отрицательными значениями.
Иногда количество вводимых записей по регистрам может быть велико и тогда целесообразно выполнить корректировку регистров программно. Документ «Корректировка записей регистров», как Вы уже, наверно, догадались, не совсем обычный. А иначе бы о нем не стоило и писать.
В качестве примера, когда может потребоваться программно создать документ «Корректировка записей регистров», предлагаю рассмотреть операцию переоценки основных средств. Переоценка основных средств - ситуация хоть и нечастая, но все же вполне реальная, а специального документа для переоценки в типовых конфигурациях 1С нет. Чтобы пример получился более представительным (включал в себя все виды корректируемых регистров), я сделал обработку для конфигурации «1С:Управление производственным предприятием». Но с другой стороны, чтобы не перегружать пример лишней информацией, мы рассмотрим случай, когда в результате переоценки происходит увеличение стоимости основных средств и накопленной амортизации (дооценка).
В этом случае переоценка основных средств отражается в бухгалтерском учете проводками:
В налоговом учете операция переоценки основных средств не предусмотрена, но для того чтобы соблюдалось равенство БУ = НУ + ПР + ВР, мы должны отразить в учете возникновение постоянных разниц. Также мы должны сделать движения в регистрах накопления «СтоимостьОС», «СтоимостьОСБухгалтерскийУчет» и в регистрах сведений «ПараметрыАмортизацииОС», «ПараметрыАмортизацииОСБухгалтерскийУчет», «СобытияОС» и «СобытияОСОрганизаций».
Исходные данные для переоценки ОС берутся из dbf-таблицы с набором полей:
* OS (строка) - код основного средства;
* SumU (число) - сумма дооценки по управленческому учету в единицах валюты управленческого учета;
* SumB (число) - сумма дооценки по бухгалтерскому учету;
* AmortU (число) - сумма дооценки накопленной амортизации по управленческому учету в единицах валюты управленческого учета;
* AmortB (число) - сумма дооценки накопленной амортизации по бухгалтерскому учету.
Упрощенный фрагмент кода обработки, иллюстрирующий запись проводок в регистр бухгалтерии, представлен в листинге:
Как видно из примера, документ «Корректировка записей регистров» используется в качестве регистратора, движения же записываются непосредственно в регистр. Движения по регистрам накопления и регистрам сведений делаются аналогично.
Заполнение настроек на этой закладке служит для настройки отчета по-умолчанию в пользователь-ском режиме работы отчета.
Окно для настройки отчета доступно в пользовательском режиме отчета, при этом отличие от на-стройки СКД в конфигураторе в том, что можно использовать значения не предопределенных дан-ных из базы данных.
Окно настроек состоит из основного окна, где выводятся списки группировок, таблиц и диаграмм и набора закладок в которых устанавливаются параметры настроек для объектов указанных в секции группировок. Какие именно редактируются настройки в данный момент мы можем указать нажав на кнопку с надписью о том какой объект мы редактируем:
Возможно, редактировать общие настройки для всего отчета, а нажав на соответствующую кнопку можно редактировать настройки исключительно для выбранного объекта: элемента группировки, таблицы, диаграммы.
Закладка «Параметры данных»
На этой закладке устанавливаются значения параметров данных. Список доступных параметров данных определяется на закладке «Параметры» схемы СКД, здесь же устанавливаются только пользовательские значения параметров. Причем доступны только те параметры, для которых в схеме СКД сброшена галочка «Ограничение доступности».
В таблице присутствуют несколько колонок:
1. «Использование» - галочкой пользователь указывает использовать или не использовать данный параметр для формирования отчета.
2. «Параметр» - имя параметра
3. «Значение параметра» - значением параметра или указание, откуда значение параметра можно извлечь. Например, если сбросить текущее значение, нажав на «Х», то нажав на кнопку «Т» откроется выбор типа параметра в диалоге:
Источником может служить, какое либо значение простого типа Строка, Дата, Число, Булево или ссылка на объект в базе данных. А также источником для данного параметра может быть значение другого параметра, для этого нужно выбрать значение «Поле компоновки данных» и выбрать нужное поле из списка параметров.
Для даты можно назначать автоматические значения для подстановки: «Начало этого дня», «Начало этой недели» и т.д.
Закладка «Выбранные поля»
На этой закладке определяются поля, кроме группировок, которые будут выводиться отчет. На за-кладке два списка с доступными полями и выбранными полями. Кроме полей определенных в наборах данных к выводу доступны параметры и системные поля «Номер по порядку», «НомерПоПорядкуВГруппировке», «Уровень», «УровеньВГруппировке», а также пользовательские поля определенные на закладке «Пользовательские поля».
Переносить поля можно двойным нажатием на название в левом окне или воспользовавшись специальной кнопкой в командной панели. Добавлять можно такие элементы «Новое поле», «Новая группа», «Новое автополе». «Новое поле» - добавляет элемент в котором можно выбрать поле из доступного списка полей. «Новая группа» - можно сгруппировать ряд полей под одной шапкой. «Новое автополе» - используется для того чтобы указать, что поля выводимые для группировок будут выбираться из настроек группировки вышестоящего уровня. Например, определив для всего отчета ряд полей-ресурсов, мы, указав новое автополе для группировок. Удалить элементы можно с помощью кнопки Удалить, передвинуть по позиции с помощью кнопок перемещения. Установкой галочек можно регулировать видимость полей в отчете.
После определения набора полей мы можем отредактировать поля в списке, нужно войти в режим редактирования поля, нажать на кнопку выбор и выбрать из списка нужное поле.
Для ресурсов доступны для выбора уточнения для расчетов реквизита: «% в группе» - используется для расчета доли значения ресурса для всей группировки в группе, т.е. в итоге в группе по совокупности значений ресурса будет 100%; «% общий» - общий процент не зависимо от группы по всем значениям ресурса.
Для полей объектного типа справочник, документ и т.д. возможно указать в выбранные поля реквизит объекта.
Закладка «Отбор»
На этой закладке определяются отборы, которые влияют на результат отчета.
Как и на закладке «Выбранные поля» есть два окна, слева все доступные поля СКД для выбора в отбор, в правом элементы и значения которые влияют на отбор. Добавить новый элемент или группу элементов можно также клавишей Добавить. Удалить элементы можно с помощью кнопки Удалить , передвинуть по позиции с помощью стрелок перемещения. Установкой галочек можно регулировать активность того или иного отбора в отчете. После нажатия кнопки «Подобно» в списке элементов отбора добавляются уточняющие реквизиты отбора: «Режим отображения» и «Представление».
После добавления нового элемента в список отборов для редактирования доступны поля:
• «Левое значение» - поле СКД или поле простого типа («Число», «Строка», «Дата», «Булево»), на которое накладывается отбор
• «Вид сравнения» - список возможный условий отбора: «Равно», «Не равно», «В списке», «В группе из списка», «В группе», «Не в списке», «Не в группе из списка», «Не в группе», «Со-держит», «Не содержит», «Заполнено», «Не заполнено»
• «Правое значение» - значение отбора, соответствует значению поля «Левое значение». В случае если «Вид сравнения» равен «В списке», «В группе из списка», «Не в списке», «Не в группе из списка» то для установки доступен список значений
• «Режим отображения» - возможный два варианта «Быстрый доступ» и «Обычный». В случае если установлен «Быстрый доступ» то если это возможно значения для выбора отображаются в виде выпадающего списка, особенно это актуально для небольших редко меняющихся справочников, перечислений или видов характеристик. «Обычный» - способ отображения значений принятый для объектов по-умолчанию в виде формы выбора или списка.
• «Представление» - текстовое представление отбора в сокращенном режиме (если не нажата кнопка «Подробно»), а также представление отбора при выводе отчета.
В отборы можно добавлять группы – которые служат для объединения нескольких отборов, по какому либо критерию «И», «ИЛИ», «НЕ».
Например, нужно объединить несколько условий с помощью оператора «И». Для этого нужно в отбор добавить «Группа И» в этой группе перечислить условия. Допускается вложенность групп, с помощью которых можно создавать сложные условия. Кроме «Группа И» доступны «Группа ИЛИ» и «Группа Не». По-умолчанию просто список условий отбора не принадлежащий, какой либо группе соединен между собой с помощью оператора «И».
Закладка «Сортировка»
На данной закладке указываются поля, по которым производится сортировка.
Добавление полей на данной закладке аналогичное тому, как это делается на закладке «Выбранные поля». Единственный параметр, который указывается в выбранных полях сортировки, это направление сортировки.
Закладка «Условное оформление»
На закладке «Условное оформление» мы указываем, какие поля, условия отборов и условия оформления будут применятся при выводе полей в отчет.
«Область» - список полей, на которые влияет условное оформление.
«Отбор» - условия отбора при которых условное оформление действует
Условия отбора указываются также как и на закладке «Отбор» основного окна настройки компоновки.
«Условное оформление» - при заполнении данного поля выводится окно с выбором возможных опций оформления для указанных полей.
Список возможных опций оформления:
Цвет фона - Определяет цвет фона в ячеках
Цвет текста - Определяет цвет текст в ячейках
Цвет в диаграмме - Определяет цвет линий в диа-грамме
Цвет границы - Цвет линий границы
Стиль границы - Типы линий границы
Стиль границы слева - слева
Стиль границы сверху - сверху
Стиль границы справа - справа
Стиль границы снизу - снизу
Шрифт - Вид шрифта, толщина, наклон и т.д.
Отступ - Количество знаков отступа
Авто отступ - Количество знаков отступа, применяется в группировках
Горизонтальное положение - Положение текста в ячейке по горизонтали
Вертикальное положение - Положение текста в ячейке по вертикале
Размещение - Размещение текста который не помещается в ячейку
Ориентация текста - Ориентация текст в градусах (например, 90-поворот перпендикулярно)
Формат - Форматная строка значения
Выделять отрицательные - Признак того чтобы выделять отрицательные значения
Минимальная ширина - Минимальная ширина ячейки в пунктах
Минимальная высота - Минимальная высота ячеки
Максимальная высота - Максимальная высота
Текст - Текст который выводится вместо значения
Закладка «Пользовательские поля»
На данной закладке можно указать пользовательские поля и формулы, по которым поля будут вычисляться.
При нажатии на добавление поля откроется выбор типа пользовательского поля: «Новое поле вы-бор», «Новое поле выражение».
«Поле выбор» - появляется диалог конструирования нового поля выбора. Данное поле будет принимать заданные значения в зависимости от условия отбора заданного в таблице «Варианты».
«Поле выражение» - используется в случае когда, нужно не меняя схемы компоновки вставить вы-числяемые поля. Например, в схеме указаны ресурсы «Количество» и «Сумма». В пользовательском режиме мы хотим вычислить цену. Для этого мы в поле конструирования выражения вставляем формулу:
В пользовательских полях можно использовать выражения из запросов.
Также для обозначения итоговых записей в выражении нужно использовать агрегатные функции СУММА(..), КОЛИЧЕСТВО(), МИНИМУМ(..), МАКСИМУМ(..)
Закладка «Другие настройки»
На закладке «Другие настройки» определяются настройки, которые влияют на расположение группировок, полей выбора, ресурсов и т.д.
Макет оформления Заданные предопределенные макеты оформления
Расположение итогов Параметр влияет на расположение итогов
Расположение полей группировок
Расположение группировок
Расположение реквизитов
Расположение ресурсов
Расположение общих итогов по горизонтали
Расположение общих итогов по вертикали
Тип заголовка полей
Тип диаграммы
Базовое значение
Пропускать базовое значение
Состав подписей
Режим раздвижения
Отображать таблицу данных
Максимальное значение
Минимальное значение
Окантовка
Градиент
Шрифт
Цвет фона
Стиль линии
Размещение легенды
Полосы измерительной диаграммы
Выводить заголовок
Заголовок
Выводить параметры данных
Выводить отбор
Окно настройки группировок
Настройки схемы компоновки данных могут содержать структуру, включающую в себя доступные элементы настроек.
Такими элементами являются:
• группировка;
• таблица;
• диаграмма;
• вложенный отчет.
Для группировки доступны следующие настройки:
• Флаг использования группировки - если установлен - группировка используется при компоновке;
• Поля группировки - набор полей, по которым осуществляется группировка. Каждое поле группировки системы компоновки данных обладает следующими свойствами:
- Флаг использования поля - если установлен - поле используется;
- Поле группировки - путь к данным поля, по которому осуществляется груп-пировка;
- Тип группировки – тип группировки (Иерархия, Только иерархия, Элемен-ты);
- Тип дополнения – необходимость дополнения дат в периоде;
- Начальная дата - начальная дата периода. Может содержать константное зна-чение, либо значение – поле;
- Конечная дата - конечная дата периода. Может содержать константное значе-ние, либо значение - поле;
Кроме прочего в статье присутствует пример создания таблицы с любым количеством колонок и столбцов. Несколько строк с форматированием текста и таблицы. Создание "объединенных" ячеек.
В качестве примера использования можно указать вот такую ситуацию: в зависимости от типа клиента (договора, документа и т.п) формируются разные тексты договоров с разным количеством таблиц. В реальности, конечно должены использоваться и макет и описанные здесь динамические механизмы.
В моем примере я заранее создал новый пустой документ.
Тестировалось на Office 2007.
Исп. переменные: "ПутьКФайлу" - строка. Полное имя файла в формате MSWord.
"Ссылка" - ДокументСсылка (в моем случае - счет).
Вот текст модуля:
Написал Nikola23 - http://infostart.ru/public/67727/