Добавлен: 31.03.2023
Просмотров: 922
Скачиваний: 13
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
Движения.КоличествоТоваров.Записывать = Истина;
Для Каждого ТекСтрокаПереченьТоваров Из ПереченьТоваров Цикл
// регистр КоличествоТоваров Приход
Движение = Движения.КоличествоТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Товар = ТекСтрокаПереченьТоваров.Товар;
Движение.Филиал = Филиал;
Движение.Количество = ТекСтрокаПереченьТоваров.Количество;
КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Таким образом, теперь все четыре необходимых документа для регистрации товаров готовы. Мы можем осуществлять учет поступлений и продаж товаров, а также перемещений между филиалами и выставкой. На рис. 77 показана форма списка регистра КоличествоТоваров, отражающая проводки по разным типам созданных документов.
Рис. 77. Содержание регистра накопления КоличествоТоваров
Оборотный регистр накопления
Регистры накопления могут быть двух видов: регистры остатков и регистры оборотов. Для регистров подобного вида система 1С:Предприятие создает несколько виртуальных таблиц: таблицу остатков, таблицу оборотов и совместную таблицу остатков и оборотов. Регистр оборотов отличается от регистра остатков тем, что для него система создает только одну виртуальную таблицу — оборотов. Кроме того, есть еще один момент, отличающий оборотные регистры от остаточных. У регистра остатков присутствует параметр Вид движения. В этом случае для каждой записи в регистр накопления необходимо установить одно из двух значений данного параметра — Приход или Расход. Подобный параметр у оборотного регистра отсутствует.
Продолжим разработку конфигурации и для учета продаж по филиалам создадим оборотный регистр накопления ПродажиПоФилиалам. Вначале на вкладке Основные в окне редактирования объекта конфигурации необходимо задать начальную информацию, определяющую имя и вид регистра. Здесь укажем вид данного регистра — «Обороты».
Далее на вкладке Данные следует ввести два измерения:
- Филиал (тип данных — СправочникСсылка.Филиалы)
- Менеджер (тип данных — СправочникСсылка.Менеджеры)
В качестве ресурса укажем — «Сумма» (тип данных — число).
Организация движений по регистру «ПродажиПоФилиалам» должна быть организована с помощью документа «ПродажаТоваров». В связи с этим необходимо скорректировать уже имеющуюся процедуру проведения данного документа. Следует обратить внимание на то, что здесь мы встретились с ситуацией, когда один и тот же документ осуществляет движения по нескольким регистрам.
Воспользуемся конструктором движений, где следует указать, что документ будет осуществлять движения сразу по двум регистрам (рис. 78).
Рис. 78. Вкладка «Движения» окна редактирования документа «ПродажаТоваров»
В окне конструктора отображаются ранее сформированные соответствия полей регистра КоличествоТоваров и реквизитов документа ПродажаТоваров. Сейчас в список регистров следует добавить еще один — ПродажиПоФилиалам, а далее в нем необходимо выбрать табличную часть и заполнить выражения для полей данного регистра (рис. 79).
Рис. 79. Окно конструктора движений регистров
После щелчка на кнопке «OK» перед нами откроется текст новой процедуры проведения документа ПродажаТоваров, которую сформировал конструктор (листинг 1.11).
Листинг 1.11. Процедура проведения документа ПродажаТоваров по двум регистрам
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
Движения.КоличествоТоваров.Записывать = Истина;
Для Каждого ТекСтрокаПереченьТоваров Из ПереченьТоваров Цикл
// регистр КоличествоТоваров Расход
Движение = Движения.КоличествоТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Товар = ТекСтрокаПереченьТоваров.Товар;
Движение.Филиал = Филиал;
Движение.Количество = ТекСтрокаПереченьТоваров.Количество;
КонецЦикла;
Движения.ПродажиПоФилиалам.Записывать = Истина;
Для Каждого ТекСтрокаПереченьТоваров Из ПереченьТоваров Цикл
// регистр ПродажиПоФилиалам
Движение = Движения.ПродажиПоФилиалам.Добавить();
Движение.Период = Дата;
Движение.Филиал = Филиал;
Движение.Менеджер = Менеджер;
Движение.Сумма = ТекСтрокаПереченьТоваров.Сумма;
КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Из данного текста видно, что конструктор создал два цикла обхода табличной части документа. При желании можно самостоятельно объединить эти циклы в один (листинг 1.12).
Листинг 1.12. Измененная процедура проведения документа ПродажиПоФилиалам
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
Движения.КоличествоТоваров.Записывать = Истина;
Движения.ПродажиПоФилиалам.Записывать = Истина;
Для Каждого ТекСтрокаПереченьТоваров Из ПереченьТоваров Цикл
// регистр КоличествоТоваров Расход
Движение = Движения.КоличествоТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Товар = ТекСтрокаПереченьТоваров.Товар;
Движение.Филиал = Филиал;
Движение.Количество = ТекСтрокаПереченьТоваров.Количество;
// регистр ПродажиПоФилиалам
Движение = Движения.ПродажиПоФилиалам.Добавить();
Движение.Период = Дата;
Движение.Филиал = Филиал;
Движение.Менеджер = Менеджер;
Движение.Сумма = ТекСтрокаПереченьТоваров.Сумма;
КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Итак, все необходимые действия в режиме конфигуратора выполнены, осталось перейти в режим 1C: Предприятие, сформировать несколько документов и посмотреть результат в созданных нами регистрах накопления. На рис. 80 представлена форма списка оборотного регистра накопления ПродажиПоФилиалам.
Рис. 80. Содержание регистра ПродажиПоФилиала
Организация интерфейса приложения
В версию программы 1С:Предприятие 8.3 заложено множество ресурсов, позволяющих улучшить интерфейс прикладного решения. Если взглянуть на созданное прикладное решение в режиме 1С:Предприятие, то мы увидим на панели разделов три однотипные по внешнему виду подсистемы (рис. 81). Для придания индивидуальности каждой подсистеме можно добавить уникальные значки, расположив их рядом с названиями подсистем.
Рис. 81. Интерфейс прикладного решения
Для реализации такого оформления откроем в конфигураторе окно редактирования сначала одной из подсистем, для определенности пусть это будет подсистема Управление. Для установки оригинального изображения следует в этом окне щелкнуть на значке в виде трех точек в поле «Картинка». После этого требуется найти на компьютере подходящую миниатюру, которая будет отображаться рядом с названием подсистемы «Управление». При этом платформа 1С: Предприятие 8.3 предлагает сделать выбор из набора стандартных миниатюр либо самостоятельно подобрать необходимый рисунок из имеющихся в компьютере. И в том, и в другом случаях мы можем зафиксировать выбранное изображение в качестве значка для рассматриваемой подсистемы. Аналогичным образом следует выбрать картинки для подсистем Поступление и Продажа. После проделанных действий окно нашего прикладного решения в режиме 1С:Предприятие может выглядеть так, как показано на рис. 82.
Рис. 82. Добавление значков подсистем в интерфейс приложения
Для большинства ситуаций лучше всего исключить возможность просмотра содержимого регистров накопления в подсистеме наряду со справочниками и документами, но при этом дать пользователю возможность доступа к их содержимому. Эту возможность можно реализовать с помощью пункта Все функции главного меню программы (рис. 83).
Рис. 83. Главное меню приложения
Откроется окно, показанное на рис. 84.
Рис. 84. Раздел Все функции
Здесь следует открыть узел Регистры накопления, после чего воспользоваться формами списков объектов для просмотра содержимого регистров КоличествоТоваров и ПродажиПоФилиалам.
Важно отметить, что для включения самого пункта «Все функции» в меню требуется в главном меню (см. рис. 84) раскрыть подменю Сервис и выбрать пункт Параметры, а затем в открывшемся окне установить флажок Отображать команду «Все функции» (рис. 85).
Рис. 85. Окно установки основных параметров системы
Итоги
Мы узнали, как выглядит технология разработки конфигураций для системы 1С:Предприятие 8.3. Также познакомились с основными элементами интерфейса этого программного продукта. В плане программирования были сделаны первые шаги — мы увидели, что представляют собой программы на языке 1С. Основным инструментальным средством системы 1С:Предприятие 8.3 являются конструкторы, которые значительно облегчают труд разработчика. На примерах, связанных с использованием конструкторов форм, движений и табличных документов, мы познакомились с приемами, позволяющими существенно ускорить процесс создания программного кода.
Глава 2 Язык запросов в системе 1С: Предприятие
Для руководящего состава любой организации больший интерес представляет информация в существенно обработанном виде (отбор по параметрам, итоговые и сводные данные). В системе 1С: Предприятие для решения подобных задач используется специальный объект, который называется запрос. На практике данный объект наиболее часто используется при построении отчетов и формирования сложной выборки данных, сгруппированную и отсортированную необходимым образом. Запрос представляет собой текст на специальном языке запросов, цель которого заключается в формулировании требований к системе. В системе 1С: Предприятие в качестве источника информации для запроса указываются таблицы информационной базы, а также поля таблиц, которые требуется обрабатывать в запросе.
Таблицы, участвующие в запросе, делятся на два основных класса: реальные и виртуальные. Их отличие заключается в том, что реальные таблицы хранятся в базе данных, а виртуальных таблиц в информационной базе нет. При обращении к информации виртуальных таблиц система самостоятельно автоматически собирает информацию из реальных таблиц базы данных для выполнения запроса. В практических задачах виртуальные таблицы используются существенно чаще, поскольку информация в них уже сгруппирована. Из реальных таблиц также формируются объектные, которые предназначены для хранения состояния объектов системы 1С: Предприятие. Каждая объектная таблица имеет один из типов объектов системы 1С: Предприятие. Каждая отдельная запись объектной таблицы хранит состояние определенного объекта соответствующего типа. Поэтому у каждой объектной таблицы определено поле ссылки на текущую запись.
Организация выборки из таблицы
Для начала рассмотрим запрос, который будет связан с информацией, присутствующей в табличной части справочника «Фирмы». Вполне реальная задача может касаться необходимости составления списка всех лиц, работающих в фирмах-партнерах (точнее лиц, зафиксированных в табличной части КонтактныеЛица). В таком списке напротив фамилии каждого сотрудника должен быть указан номер его телефона. Информацию о сотруднике желательно дополнить еще и названием организации, где он работает. Список следует отсортировать по фамилиям сотрудников (по алфавиту в возрастающем порядке). Текст такого запроса выглядит так, как показано в листинге 2.1.
Листинг 2.1. Простейший запрос выборки
ВЫБРАТЬ Сотрудник,Телефон, // указание списка полей для запроса
Ссылка.Наименование КАК Организация // определяется синоним для сочетания
ИЗ Справочник.Фирмы.КонтактныеЛица // определение таблиц, учавствующих в запросе
УПОРЯДОЧИТЬ ПО Сотрудник //упорядочивание данных запроса
После выполнения указанного запроса мы получим таблицу из набора строк с тремя столбцами. Число строк в таблице соответствует числу имеющихся лиц в табличной части всех элементов справочника «Фирмы».
Стоит заметить, что при запросе к табличной части справочника обращение к обычным (вне таблицы) реквизитам справочника производится через поле «Ссылка». В данном случае информация о фирме заключена в автоматически создаваемом в любом справочнике реквизите «Наименование», который располагается вне табличной части.