Добавлен: 31.03.2023
Просмотров: 927
Скачиваний: 13
Листинг 5.25. Запрос для извлечения информации об оплате
ВЫБРАТЬ
Договоры.Клиент КАК Клиент,
Договоры.Ссылка КАК ДоговорКлиента,
Договоры.СуммаПоДоговору,
ПеречисленныеСуммыОбороты.СуммаОплатыОборот
ИЗ
Справочник.Договоры КАК Договоры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПеречисленныеСуммы.Обороты КАК
ПеречисленныеСуммыОбороты
ПО (ПеречисленныеСуммыОбороты.ДоговорПокупателя = Договоры.Ссылка)
Далее в окне схемы компоновки данных на вкладке «Ресурсы» с помощью соответствующей кнопки включим ресурс СуммаОплатыОборот. На вкладке «Настройки» добавим группировку и включим необходимые поля (рис. 255).
Рис. 255. Вкладка «Настройки» окна схемы компоновки данных
На этом работа по созданию отчета в режиме конфигуратора завершается. Далее можно перейти в режим 1С:Предприятие и получить необходимый отчет (рис. 256).
Рис. 256. Сводный отчет по оплате
Разработка итогового отчёта по оплате
Сформируем «Отчёт5_6». Воспользуемся схемой компоновки данных и в окне конструктора запроса сформируем выборку полей, представленную на рис. 257.
Рис. 257. Окно конструктора запроса
В запросе используем полное соединение таблиц при построении запроса (рис. 258). В этом случае в результат запроса будут включены комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса включаются также те записи из обоих источников, для которых не найдено соответствий.
Рис. 258. Полное соединение таблиц в запросе
Установим псевдоним для поля Договоры Ссылка (выберем короткий вариант — Договор) и укажем упорядочивание по сумме договора в порядке убывания. В листинге 5.26 представлен текст данного запроса, который автоматически формируется конструктором запросов после щелчка на кнопке «OK».
Листинг 5.26. Запрос для извлечения полной информации об оплате
ВЫБРАТЬ
Договоры.Клиент,
Договоры.СуммаПоДоговору КАК СуммаПоДоговору,
Договоры.Ссылка КАК Договор,
ПеречисленныеСуммыОбороты.СуммаОплатыОборот
ИЗ
РегистрНакопления.ПеречисленныеСуммы.Обороты КАК ПеречисленныеСуммыОбороты
ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры
ПО ПеречисленныеСуммыОбороты.ДоговорПокупателя = Договоры.Ссылка
УПОРЯДОЧИТЬ ПО
СуммаПоДоговору УБЫВ
Осталось сделать несложные установки на вкладке Настройки в окне конструктора схемы компоновки данных (рис. 259).
Рис. 259. Вкладка «Настройки» окна конструктора системы компоновки данных
На этом работа по созданию отчета в режиме конфигуратора завершается. Далее можно перейти в режим 1С:Предприятие для получения необходимого отчета (рис. 260).
Рис. 260. Итоговый отчет по оплате
Ввод документа на основании справочника
Механизм ввода на основании может быть использован для создания объектов разного типа. Наиболее часто этот механизм используется при вводе новых документов. Так, для каждого объекта конфигурации документ можно разрешить его ввод на основании других объектов базы данных, а также сделать основанием для других документов.
Рассмотрим ситуацию, когда документ «ЗаявкаНаСклад» будет вводиться на основании справочника «Договоры». При этом нам потребуется небольшая доработка созданного ранее справочника «Договоры». А именно, в этот справочник мы добавим табличную часть «Перечень». Смысл изменений заключается во внесении в табличную часть элементов (и их количества), которые мы должны поставить в соответствие с данным договором. В качестве типа данных реквизита «Название» укажем строку длиной 50 символов, а для данных поля «Количество» выберем численный тип.
После этого необходимо разработать документ «ЗаявкаНаСклад». В окне редактирования этого объекта конфигурации добавим реквизит «Договор» (тип данных — СправочникСсылка.Договоры), а затем создадим табличную часть документа, которую назовем «Перечень». В табличной части документа разместим два реквизита, такие же как и в справочник «Договоры».
Теперь в окне редактирования объекта конфигурации «ЗаявкаНаСклад» перейдем на вкладку «Ввод на основании», где можно указать объекты, на основании которых может вводиться рассматриваемый документ. Определим в качестве основания справочник «Договоры». После этого с помощью соответствующей кнопки вызовем конструктор ввода на основании. В открывшемся окне сформируем значения реквизитов документа, создаваемого на основании справочника «Договоры». Для этого следует воспользоваться кнопкой «Заполнить выражения» (рис. 261).
Рис. 261. Окно конструктора ввода на основании
В результате этих действий автоматически сформируется программная процедура, позволяющая создать новый документ на основании указанного пользователем элемента справочника (листинг 5.27).
Листинг 5.27. Процедура ввода на основании
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Договоры") Тогда
// Заполнение шапки
Договор = ДанныеЗаполнения.Ссылка;
Для Каждого ТекСтрокаПеречень Из ДанныеЗаполнения.Перечень Цикл
НоваяСтрока = Перечень.Добавить();
НоваяСтрока.Количество = ТекСтрокаПеречень.Количество;
НоваяСтрока.Название = ТекСтрокаПеречень.Название;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Теперь следует проверить разработку. Для этого перейдем в режим 1С: Предприятие и для начала сформируем табличную часть справочника «Договоры» (рис. 262).
Рис. 262. Элемент справочника «Договоры»
В форме списка справочника «Договоры» присутствует кнопка «Создать на основании». Если ею воспользоваться, то в вертикальном меню откроется список документов, которые можно создать на основании справочника «Договоры». Используя эту возможность, сформируем новый документ «ЗаявкаНаСклад», который можно при необходимости скорректировать (рис. 263).
Рис. 263. Заполненная форма документа «ЗаявкаНаСклад» на основании справочника
Передача данных в Microsoft Excel
Очень частотребуется интеграция пазличных приложений. Это может быть связано с рядом причин:
- Уровень занимаемой додлжности
- Профессиональные обязанности
- Знание только конкретных программ
Даже при хорошей информатизации требуется передавать данные из одних приложений в другие.
Для большинства фирм характерно использование в офисной работе приложения Microsoft Excel. В то же время статистика говорит о том, что и программный продукт 1С: Предприятие также в той или иной степени используется практически в каждой организации. В этом случае сотрудникам часто приходится каким-то образом организовывать передачу текущей или отчетной документации из одних программ в другие. Организация подобного обмена может возлагаться на системных программистов либо на обыкновенных пользователей, но в обоих случаях она требует заметных усилий.
Приложения, входящие в пакет Microsoft Office, и система 1С: Предприятие 8 открыты для взаимного обмена информацией.
Разработчиками в систему 1С: Предприятие 8 включен набор технологий, ориентированных на решение разнообразных задач интеграции. Одной из них является технология СOM (Component Object Model — компонентная объектная модель), поддерживающая организацию программ из отдельных компонентов, которые, в свою очередь, состоят из объектов. Данные компоненты представляют собой исполняемый двоичный код, и для использования того или иного компонента достаточно просто зарегистрировать его в операционной системе.
Другая не менее известная технология — Automation Client/Server. Еще одно ее название — OLE Automation, где OLE расшифровывается как Object Linking and Embebbing (связывание и внедрение объектов). В этом случае пользователям предоставляется возможность работы с составными объектами, созданными в других приложениях (документы, таблицы, рисунки и др.). Основные понятия, с которыми оперирует данная технология, — это OLE-объект, сервер приложения и контейнер приложения.
OLE-объектом называют объект, созданный в другом приложении, но при этом сохранивший связь с текущим приложением. Для этого он должен быть вставлен в интересующий нас документ соответствующим способом. OLE-контейнером является приложение, в котором создается составной документ, содержащий OLE-объект. В этом случае при необходимости работы с OLE-объектом открывается исходное приложение. Это исходное приложение называется OLE-сервером. Офисные приложения Microsoft Word, Microsoft Excel и система 1С: Предприятие 8 могут выступать и как OLE-сервер, и как OLE-контейнер.
В целом работа системы 1С:Предприятие через COM-соединение похожа на работу в режиме Automation Client/Server. Существенное отличие заключается в том, что при COM-соединении запускается вариант информационной системы 1С: Предприятие без интерфейсной части. Работа в этом случае производится только программными средствами. Для пользователя интерактивные средства отсутствуют. Основное назначение сервера автоматизации системы 1С:Предприятие — это управление системой 1С:Предприятие 8 из других приложений и выполнение действий, аналогичных интерактивной работе.
В целом основной целью использования COM-соединения для системы 1С:Предприятие 8 является обеспечение надежного программного доступа к объектам системы из внешних приложений. Использование COM-соединения в разработках обеспечивает:
- Снижение затрат системных ресурсов
- Быструю установку соединения с базой данных
- более быстрое (по сравнению с технологией OLE-автоматизации) обращение к свойствам и методам объектов
Технология COM не обеспечивает использования визуальных ресурсов приложениясервера, что отличает ее от технологии OLE-автоматизации, которая такую возможность предоставляет.
Здесь мы в качестве примера рассмотрим передачу информации из справочника Клиенты в рабочую книгу Microsoft Excel. При этом воспользуемся технологией OLE-автоматизации. В нашей разработке справочник Клиенты на данный момент является малоинформативным (только обязательные поля, код и наименование), поэтому добавим в него еще два реквизита:
- Адрес (тип данных – строка длинной не более 100 символов)
- Телефоны (тип данных – строка длинной не более 50 символов)
Первое практическое действие заключается в том, что мы должны открыть приложение Microsoft Excel и создать на диске С: в папке 1 новую книгу, в качестве названия которой укажем Клиенты.xls. Содержание книги представляет собой просто первый рабочий лист с определенным оформлением (рис. 264). В дальнейшем на данный лист будет автоматически переноситься информация из нашего справочника «Клиенты».
Рис. 264. Книга Microsoft Excel Клиенты.xls
Следующий практический шаг заключается в размещении на форме списка справочника «Клиенты» кнопки. По щелчку на ней будет выполняться процедура, реализующая передачу данных из данного справочника на упомянутый лист книги Клиенты.xls. Это действие разбивается на несколько этапов, которые мы далее и рассмотрим.
Для программирования нам потребуется пользовательская форма списка справочника «Клиенты», создаваемая с помощью конструктора форм. Следующий шаг заключается в добавлении новой команды в форму, что реализуется на дополнительной вкладке «Команды». Используя пункт «Добавить» пиктографического меню, разместим новую команду ПередачаВExcel (рис. 265).
Рис. 265. Добавление команды в форму списка
Далее в окне свойств новой команды воспользуемся разделом «Действие» и добавим программный код для команды ПередачаВExcel (листинг 5.28).
Листинг 5.28. Код команды ПередачаВExcel
&НаКлиенте
Процедура
ПередачаВExcel(Команда)
Передача();
КонецПроцедуры
Как видно, программный код команды ПередачаВExcel обеспечивает только вызов процедуры Передача, которая выполняется на сервере (листинг 5.29). Ее также следует расположить в закладке «Модуль» рядом с процедурой ПередачаВExcel.
Листинг 5.29. Код серверной процедуры Передача