- •Учебно-методическое пособие
- •Решение типовых задач Нижний Новгород.
- •Оглавление
- •1.Краткое описание задач пособия.
- •1.1.Школа(многоуровневый справочник).
- •1.2.Себестоимость (подчиненные справочники).
- •1.3.Торговля (регистры).
- •1.4.Кафе (документы,таблицы значений,обработки).
- •2.Роли,Интерфейсы,Пользователи,Пароли.
- •3.Создание Справочников.
- •3.1.Справочник.Материалы.
- •Фрагм. 1 Справочник нормы : Форма элемента (процедура при изменении)
- •4.Регистры
- •4.1.Создание регистров накопления (обычных регистров)
- •4.1.1.Создание регистра «Рбост».
- •4.2.Бухгалтерские регистры.
- •4.2.1..Планы Видов Характеристик(пвс).
- •4.2.2.Планы счетов.
- •4.2.3.Создание бухгалтерских регистров.
- •5.Решение задачи «Школа».
- •5.1.Создание документа Школа.
- •Фрагм. 2 Процедуры ЗаполнитьНажатие и рассчитатьНажатие
- •6.Решение задачи «Себестоимость».
- •Фрагм. 3 Процедура РасчитатьНажатие
- •Фрагм. 4 Формирование отчета Мактз
- •Фрагм. 5 Формирование отчета в разрезе материалов.
- •7.Решение задачи «Торговля».
- •Фрагм. 6 Процедура ОбработкаПроведения
- •Фрагм. 7 Обработка проведения
- •Фрагм. 8 Процедура ТовТоварПриИзменении
- •Фрагм. 9 Процедура товЦенаПриИзменении
- •Фрагм. 10 Процедура Печать
- •8.Решение задачи «Кафе».
- •Фрагм. 11 Документ кблюдо форма ввода (4 процедуры)
- •Фрагм. 12 Документ кблюдо форма ввода (Процедура кблколичствоПриИзменении)
- •Фрагм. 13 Документ кблюдо форма ввода (Процедура кблпродуктПриИзменении)
- •Фрагм. 14 Документ кблюдо форма ввода (Процедура кбл1продуктПриИзменении)
- •Фрагм. 15 Документ кблюдо форма ввода (Процедура кблПослеУдаления)
- •Фрагм. 16 Свойство кбл Количество Поле Ввода
- •Фрагм. 17 Процедуры тзвыбора и заполнить тз
- •Фрагм. 18 Процедура заполнитьТз
- •Фрагм. 19 Процедуры тзвыбора
- •Фрагм. 20 Документ итпрод модуль объекта Обработка проведения
- •Фрагм. 21 Процедура КнопкаСформироватьНажатие
- •9.Создание отчетов.
- •9.1.Создание с помощью отчета-обработки нового документа копированием ранее созданного документа. (Отчет «СозданиеДокументов»).
- •Фрагм. 22 КнопкаСформироватьНажатие
- •9.2.Создание отчетов различных типов на основе документов пт и от.
- •Фрагм. 23 Модуль формы Фсг (9 процедур)
- •9.2.1. Процедура 1 «КнопкаСформироватьНажатие».
- •Фрагм. 24 Процедура 1 «КнопкаСформироватьНажатие».
- •9.2.2.Процедура 2 «ОтчпоМногимДокПтНажатие».
- •Фрагм. 25 ОтчпоМногимДокПтНажатие
- •9.2.3.Процедура 3 ЗапрНажатие.
- •Фрагм. 26 Процедура 3 Запр Нажатие
- •Фрагм. 27 Текст запроса процедуры 3
- •9.2.4.Процедура 4 «ТолькоНаимДокНажатие»
- •Фрагм. 28 Процедура 4 «ТолькоНаимДокНажатие»
- •9.2.5.Процедура 5 «ОтчТзНажатие».
- •Фрагм. 29 Процедура 5 «ОтчТзНажатие» (Создание таблицы тз)
- •Фрагм. 30 Процедура 5 «ОтчТзНажатие» (Печать отчета)
- •9.2.6.Процедура 6 «РегОстНажатие».
- •Фрагм. 31 Процедура 6 «РегОстНажатие».
- •9.2.7.Процедура 7 «РегОстаткиБезРасшифровки»
- •Фрагм. 32 Процедура 7 «РегОстаткиБезРасшифровки»
- •9.2.8.Процедура 8 ЗапрОстНажатие
- •Фрагм. 33 Процедура 8 ЗапрОстНажатие
- •9.2.9.Процедура 9 «РегОстСУсловиемНажатие»
- •Фрагм. 34 Процедура 9 «РегОстСУсловиемНажатие»
- •10.Дополнительная задача.Добыча руды.
- •10.1. ДБзапррегнак
- •10.2. ДбтЗциклдок
- •10.3. Дбрегнакцикл
- •10.4. Дбхсгзапрдок
- •10.5. ДбрегбуХхсгЦикл
- •10.6. Дбхсгрегбухзапрсубк1руда
- •10.7. Дбхсгрегбухзапрсубк2рудАскл
- •10.8.Дбхсгрегбухзапрсубк1скл
- •11.Задача.Справочная ж/д вокзала.
- •Часть1.Формирование состава.
- •Часть2. Клиентская часть.
- •12.Работа с диаграммами.
- •13.Построение любых Диаграмм.
- •14.Пример работы с формами, вложенными формами . Передача параметров между формами.
- •15.Работа со списками на примере задачи «Тариф».
- •16.Построение списков на основе справочника и их использование.
- •17. Регистры Сведений.
- •18.Построитель отчетов
- •19. Изящное решение задачи «Овощи».
- •20.Еще раз про «Себестоимость»
- •21.Учет начислений преподавателям за проведение занятия.Работа со списками, регистами сведений , формами и построителем отчетов.
- •22.Тестовые задачи
- •13. Доставка грузов.
- •14. Оплата труда преподавателей.
- •15. Учет лекарств.
- •16. Расчет арендной платы.
- •17. Ремонт автомобилей.
- •18.Строительство
- •19.Ремонт оборудования.
- •20.Штрафы.
- •21.Отель
- •22.Кинотеатр.
- •23.Библиотека.
- •24. Калькуляция блюда с учетом возможной замены ингредиентов.
- •Список рекомендуемой литературы
10.7. Дбхсгрегбухзапрсубк2рудАскл
Этот запрос аналогичен предыдущему но работаем с двумя субконто – руды и склады.
10.8.Дбхсгрегбухзапрсубк1скл
Этот отчет аналогичен отчету по рудам , но в качестве субконто используется Субконто2-склад.
11.Задача.Справочная ж/д вокзала.
Задача состоит из двух частей .
Часть1.Формирование состава.
Часть2. Клиентская часть.
О перечислениях. В принципе – то же самое , что справочник . Отличие в том ,что значения перечислений задаются в конфигураторе и недоступны пользователю. Основная цель свести к минимуму ручной ввод информации и решать большинство проблем выбором из перечислений.
Введем три перечисления-тип вагона( в качестве значений –купе и плацкарт),полка(в качестве значений-верхняя и нижняя) и статус(в качестве значений –свободно и занято).
Создадим двухуровневый справочник.Вагоны. На первом уровне- будет группа, содержащая одно из двух значений купе или плацкарт. На втором уровне – уровне элемента будет номер места и полка(верхняя или нижняя). В целом в справочнике.Вагоны нужно определить два поля: полка и тип вагона (у меня названо пертв-перечислениеТВ).
В 1с8 можно для каждого реквизита заранее определить в форме группы или в форме элемента будет использоваться тот или иной реквизит. (смотри поле «использование» в свойствах реквизита). В примере «Полка» используется в форме элемента, а «пертв»- в форме группы.
Создадим две формы –форму элемента и форму группы.
Как видно, в форме элемента система поставила только «полку».
В форме группы поставлено только «пертв». Чтобы избежать ручного ввода поля «Наименование» а также возможных ошибок при вводе , создадим процедуру которая копирует в поле «Наименование» то значение перечисления, которое выбирается в поле «пертв».
Сама процедура нуждается в комментарии.
Поле «пертв» - тип «перчисление». Это необычный тип данных (не число или строка)- это особый внутрисистемный тип.Поле «наименование – это принципиально «строка». Необходимо обеспечить соответствие типов.
Метод «строка» любой тип данных преобразует к типу «строка».
Создадим документ «Поезд».
В нем пять полей в табличной части «вагон». (имена , конечно, могут быть любые). «Тип» , «полка» и «статус» - соответствующие перечисления. «место» должно быть строкой так как это поле будем копировать из поля «наименование» справочника.Вагоны. «Номер» -пусть будет число (это номер вагона).
На форму Документа поместим кнопку «Заполнить», многократно нажимая которую сформируем состав поезда.
Рассмотрим Процедуру заполнения. В диалоге необходимо получить два параметра номер вагона(НВ), судьбу которого решаем тип вагона(ТВ). Для общения с внешним миром применяются операторы «Ввести…). Первым необходимым условием для реализации диалога является задание в явном виде переменных с помощью оператора «Перем», в которые система поместит информацию . «Ввестичисло» - во время работы откроет диалог с подсказкой «ввести номер вагона» и после ввода ,например,7- это число будет присвоено переменной НВ. Сложнее дело с полем ТВ. Необходимо сначала создать пустое значение типа нужного перечисления.
ТВ=перечисления.типв.ПустаяСсылка(); Тем самым сообщили какого типа перечисление будет участвовать в диалоге определения типа вагона.
Дальнейшее заполнение из справочника происходит аналогично задаче «Школа». Напомним ,что уровни считаются с 0. Следовательно в документ копируем только те места у которых родитель совпадает с принятым в ТВ типом вагона. Выполняя многократно эту процедуру сформируем состав.
Перейдем к клиентской части.
Создадим отчет «СправБюро» с очевидным из смысла задачи составом реквизитов. Поля «Типваг» (перечисления.типв) и полка(перчисления.полка) заполняем по просьбе клиента и по кнопке «найти» заполняем ТЗ только теми строками из документа «Поезд» , которые соответствуют критериям поиска.
.
В модуле формы построим 4 процедуры. Процедура «НайтиНажатие» связана с кнопкой «найти».
Процедура «ТЗ.выбор» связана с ТЗ и срабатывает принажатии мышью на выбранной строке ТЗ. Результат выбора номер вагона и место копируем в соответствующие поля формы отчета для последующей печатибилета. После выбора места необходимо в документе «Поезд» сменить статус со «свободно» на «занято».
Процедура «Возврат» работает если возвращают билет и она нуждается только в номере вагона месте (это достаточно для однозначной идентификации места. Единственное что делает эта процедура – меняет статус с «Занято» на «свободно».
Прежде чем подробно рассматривать эти процедуры обсудим еще одну проблему общего характера. Если в какой-то процедуре есть создание ТЗ то в ней неизбежно применяются операторы «ТЗ.ДобавитьКолонку(…)» . Далее ,если по смыслу задачи необходимо многократно запускать процедуру , то выдается ошибка «неверное имя колонки…». Смысл в том ,что мы повторно пытаемся определить то что уже определено первым запуском. Чтобы этого избежать, обеспечим огибание операторов ТЗ.Добавить() при повторных запусках. Для этого поместим на форму поле флаг –это число , которое принимает всего два значения 0 или 1.
Процедура «ПриОткрытии()» ставит флаг=0.
В процедуре «найти..» при первом запуске отчета флаг=0 и как следствие определим колонки.В конце процедуры флаг=1 и при повторных нажатиях кнопки «найти» блок определения структуры ТЗ будет огибаться.
После копирования из ТЗ выбранной строки необходимо сменить статус на «Занято», то есть записать новую информацию в ранее записанный документ. Здесь есть проблема. Документ может открываться для чтения (выборки) или для записи. Для того чтобы что-то записать надо применить метод ПолучитьОбъект(). В процедуре это
Аа= поезд.ссылка.получитьОбъект(); и тогда можно применить метод «записать().
Посмотрим все сделанное в работе. При нажатии «Заполнить» идет диалог и
Сначала вводим номер вагона а затем
Тип вагона ,например «купе» и т.д. В результате получим сформированный поезд, в котором все места свободны.
Откроем отчет , зададим критерий поиска «купе» и «низ». По кнопке «Найти» заполняется ТЗ в соответствии с критерием.
Допустим клиент выбрал вагон 1 и место 3. Щелкнув мышью на этой строчке выбор копировался в поля номер и место для последующей печати билета или реализации возврата.ТЗ очистилась для
следующих клиентов.
При этом в документе поезд строка с номером вагона 1 и местом 3 сменила статус на «занято» и
Не будет участвовать при поиске мест с таким же критерием.
Если будет возврат, то статус снова меняем на «свободно».
л
Дальше можно повесить кнопку «билет» и введя ФИО напечатать билет. Можно ввести пункт прибытия (при этом сначала создать справочник пунктов по пути следования с указанием цен билетов). Можно ввести несколько поездов с одним номером но на разные даты. Можно ввести поезда с разными направлениями и на разные даты В общем все ближе и ближе к реалиям. Можно наводить статистику и проводить анализ всего и вся (заполняемость поездов, финансовая эффективность и т.д). Много можно. Основа создана.
Это целый класс задач справочного характера (например, гостиница или кинотеатр).
