- •Основы программирование в среде «1с: предприятие»
- •1. Предметно-ориентированное моделирование информационных систем
- •1.1. Понятие предметно-ориентированного моделирования
- •1.2. Типы моделей
- •2. Система программ «1с: Предприятие 8»
- •2.1. Состав системы программ «1с: Предприятие 8»
- •2.2. Структура конфигурации
- •2.3. Архитектуры системы программ «1с: Предприятие»
- •2.4. Платформенно-зависимая модель «1с: Предприятие»
- •3. Объектная модель платформы «1с: Предприятие»
- •3.1. Объекты для построения платформенно-зависимой модели
- •3.2. Общая структура основного объекта
- •4. Основы работы с информационной базой
- •4.1. Создание информационной базы
- •4.2. Перенос информационной базы
- •4.3. Объекты системы
- •4.4. Классификация объектов
- •4.5. Прикладные объекты
- •4.6. Подчиненные объекты
- •4.7. Встроенный язык системы
- •4.8. Виды модулей
- •4.9. Подсистемы
- •4.10. Отладка конфигурации
- •Лабораторная работа 1
- •5. Справочники
- •5.1. Назначение справочников
- •5.2. Программные объекты справочников
- •5.3. Подчиненные справочники
- •5.4. Иерархические справочники
- •5.5. Модуль объекта Справочник
- •5.6. Свойства справочников
- •5.7. Формы объектов
- •5.8. Представления объектов
- •5.9. Настройка интерфейса
- •5.10 Структура экрана в пользовательском режиме
- •Лабораторная работа 2
- •6. Документы
- •6.1. Назначение документов
- •6.2. Программные объекты документов
- •6.3. Проведение документа
- •6.4. Ввод на основании
- •6.5. Типы данных. Типообразующие объекты конфигурации
- •6.6. Заполнение реквизитов
- •6.7. Расчет суммы в строках документа
- •Лабораторная работа 3
- •7. Регистры
- •7.1. Назначение и свойства
- •7.2. Виды регистров
- •7.3. Виртуальные таблицы
- •7.4. Программные объекты регистров
- •7.5. Регистры накопления
- •7.6. Движения документа
- •7.7. Командный интерфейс регистров
- •Лабораторная работа 4
- •8. Отчеты
- •Лабораторная работа 5
- •9. Макеты и формы
- •9.1. Создание макета печатной формы
- •9.2. Редактирование макета
- •9.3. Редактирование формы
- •Лабораторная работа 6
- •10. Регистры сведений
- •10.1. Создание периодического регистра сведений
- •10.2. Использование периодического регистра сведений в документе
- •Лабораторная работа 7
- •11. Перечисления
- •Лабораторная работа 8
- •12. Оборотные регистры накопления
- •Лабораторная работа 9
- •13. Табличная модель платформы «1с: Предприятие»
- •13.1. Табличная модель данных
- •13.2. Виды таблиц базы данных
- •13.3. Создание запроса и использование его результатов
- •13.4. Структура и описание запроса
- •13.5. Взаимосвязь таблиц
- •13.6. Упорядочивание
- •13.7. Группировка и итоги
- •13.8. Параметры
- •14. Система компоновки данных
- •Лабораторная работа 10.1
- •Лабораторная работа 10.2
- •Лабораторная работа 10.3
- •Лабораторная работа 10.4
10.1. Создание периодического регистра сведений
Создадим механизм, позволяющий отслеживать во времени цены материалов и услуг, оказываемых нашим предприятием. Для этого создадим регистр сведений Цены. Периодичность: В пределах секунды. (Такая «частая» периодичность выбрана чисто в учебных целях, чтобы была возможность несколько раз менять цены во время одного занятия; обычно реальная периодичность изменения цен – В пределах дня). Режим записи: Независимый. Представление записи: Цена. Представление списка: Цены на номенклатуру.
Доступность в подсистемах: Бухгалтерия, УчетМатериалов, ОказаниеУслуг.
Измерение: Номенклатура (тип СправочникСсылка.Номенклатура). Укажем, что это измерение Ведущее (рис. 10.1).
Рис.10.1
Свойство Ведущее имеет смысл только для измерений ссылочного типа. Установка этого свойства будет говорить о том, что запись регистра сведений будет существовать до тех пор, пока существует тот элемент, ссылка на который выбрана в качестве значения этого измерения. (Действительно, никому не нужна цена на несуществующую услугу). Также, при установке этого свойства в форме элемента справочника Номенклатура, в панели навигации в группе Перейти, появится ссылка. По ней возможен переход к записям этого регистра, которые содержат в измерении Номенклатура ссылку на этот элемент справочника (рис. 10.2).
Рис.10.2
Затем создадим ресурс Цена, тип Число, длина 15, точность 2, неотрицательное.
10.2. Использование периодического регистра сведений в документе
Целью использования регистра сведений Цены в документе Оказание услуги является автоматическая подстановка актуальной цены для каждой номенклатуры. Для этого надо написать некоторую функцию, которая возвращает актуальную цену и вызвать эту функцию в момент добавления или изменения номенклатуры. Поскольку такой сервис понадобится нам, скорее всего, не только в этом, но и в других документах, которые содержат в табличной части номенклатуру, мы поместим функцию в некоторое общедоступное место – в общий модуль.
Создайте Общий модуль РаботаСоСправочниками. (рис. 10.3). В палитре этого свойств модуля мы видим, что у модуля по умолчанию установлен флажок Сервер. Это означает, что экземпляры этого модуля будут скомпилированы только на стороне сервера. Кроме этого, установим флажок Вызов сервера для того, чтобы экспортные процедуры и функции этого модуля можно было вызывать с клиента.
Рис.10.3
Поместите в модуль следующий текст (рис. 10.4)
Рис. 10.4
Для получения розничной цены мы будем передавать в функцию два параметра: АД – параметр типа Дата, определяет точку на оси времени, в которой нас интересует значение розничной цены, ЭН – ссылка на элемент справочника Номенклатура, для которого мы хотим получить розничную цену.
В теле функции мы сначала создаем вспомогательный объект ОТ. Это структура, содержащая отбор по измерениям регистра. С эго помощью определяем, что нас будут интересовать записи регистра, в которых измерение регистра Номенклатура равно переданной в функцию ссылке на элемент справочника. Имя ключа структуры ("Номенклатура") должно совпадать с именем измерения регистра, а значение элемента структуры (ЭН) задает отбираемое по данному измерению значение.
Во второй строке мы обращаемся к менеджеру регистра сведений Цены (РегистрыСведений.Цены) и выполняем метод ПолучитьПоследнее(), который возвращает нам значения ресурсов самой поздней записи регистра, соответствующей передаваемой в функцию дате (АД) и значениям измерений регистра (ОТ). Метод ПолучитьПоследнее возвращает структуру, содержащую значения ресурсов, которая сохраняется в переменной ЗР. Вообще говоря, у регистра может быть несколько ресурсов. В нашем регистре ресурс один – Цена.
В следующей строке мы получаем искомую розничную цену, просто указав имя нужного нам ресурса регистра через точку (ЗР.Цена) и возвращаем ее при выполнении функции.
Теперь эту функцию нужно вызвать в некоторый момент работы документа.
Откроем ФормуДокумента ОказаниеУслуги. Откроем палитру свойств элемента формы ПереченьНоменклатурыНоменклатура. Прокрутив список, найдем событие ПриИзменении. Нажмем кнопку открытия со значком лупы в поле ввода. На вопрос конфигуратора о типе обработчика события, создаваемого в форме, оставим без изменения предложенное значениеСоздать на клиенте, так как мы хотим создать клиентский обработчик события, являющегося результатом интерактивных действий пользователя. Система создаст шаблон процедуры обработчика этого события в модуле формы. Внесем в него следующий текст (рис. 10.5).
Рис. 10.5
Сначала получаем текущую строку табличной части документа – СТЧ. Затем вызываем нашу функцию РозничнаяЦена(). Первым параметром передаем в эту функцию дату документа, на которую необходимо получить цену. Дату документа получаем из основного реквизита формы – Объект.Дата. Вторым параметром передаем ссылку на элемент справочника Номенклатура, который содержится в текущей строке табличной части документа (СТЧ.Номенклатура). Функция возвращает последнее значение цены, и это значение присваивается полю Цена в текущей строке табличного документа (СТЧ.Цена).
Затем вызываем процедуру РассчитатьСумму из общего модуля РаботаСДокументами для пересчета суммы в строке документа.