для поля код сотрудника следует установить тип
Как установить тип для реквизита «произвольного» типа
Надеюсь кому поможет
А как бы назначить тип полю формы произвольного типа для УФ?
Метода Значение там нет.
Вообще не могу толком сделать что то типа отбора в СКД.
Есть ТЧ у справочника, там есть счет, некое поле (реквизит по которому фильтр), условие (это сз типа В списке), а потом поле формы типа произвольный в каждой строке в представлении этой ТЧ. Так вот при выборе «в списке» нужно как то сделать это поле списком значений с ограниченным типом справочников на выбор. Иначе если условие Равно, то просто это поле ТЧ пусть будет типом самого типа реквизита для выбора одного элемента.
Так вот назначить тип не получается. А потом еще как то это хранить в БД нужно.
2(1): только после вот такой вот установики типа реквизита, при нажатии кнопки «Очистить» пользователю прийдется выбирать тип реквизита из специального списка.
Правильно делать надо так, если это реквизит формы:
ОписаниеТипа = Новый ОписаниеТипов(«СправочникСсылка.Организации»);
ЭлементыФормы.Организация.ОграничениеТипа = ОписаниеТипа;
ЭлементыФормы.Организация.Значение = ОписаниеТипа.ПривестиЗначение();
ЭлементыФормы.ВыбиратьТип = Ложь; //это на всякий случай
вот тогда при очистке значения реквизита не будет необходимости заново выбирать тип реквизита
(6): спасибо за подробный пример, но в итоге тип значения остается по прежнему строковым, при том что ОписаниеТипа установилось как надо (((
Плюс ко всему в поле ввода ничего не получается вести кнопка выбора срабатывает впустую, вручную ни одного символа не получается ввести.
приведите еще пример пожалуйста.
(8) сработало частично, установилось значение элемента фирмы, но по прежнему не допускает открыть форму списка справочника для перевыбора.
присваивал как пустую ссылку, так и конкретное значение. Перебрал много вариантов:
1.
Фирма=Справочники.Фирмы.найтипокоду(«00000001»).Ссылка;
ЭлементыФормы.фирма.Значение = Фирма;
2.
Фирма=Справочники.Фирмы.найтипокоду(«00000001»);
ЭлементыФормы.фирма.Значение = Фирма;
.
Реквизиты Доступность и Только Просмотр проверял.
но доступа к списку справочника почему то нет (((
навреное потому, что тип значения поля ввода на самой форме продолжает оставаться строковым.
Как сказал.
Вопросы к экзамену
Для всех групп технического профиля
Список лекций по физике за 1,2 семестр
Урок 33. Практическая работа № 21. Организация баз данных. Заполнение полей баз данных.
Практическая работа № 21
Тема: Организация баз данных. Заполнение полей баз данных.
Цель работы: изучение приемов установки связей между таблицами базы данных.
Оборудование: ПК, Windows XP Professional, MS Access 2007.
1 В соответствие с заданием создать и заполнить таблицы БД «Фирма», установить связи между ними.
2 Продемонстрировать на компьютере заполненные таблицы, схему данных.
3 Ответить на контрольные вопросы.
4 Сделать вывод о проделанной работе.
Порядок выполнения:
1. Запустите Microsoft Access.
Для этого запустите Access, создайте новую базу данных, задайте имя базы данных Фирма, выберите место сохранения Вашей базы данных (диск Х:) и нажмите кнопку Создать. (подробный порядок действий описан в лабораторной работе № 23)
Таблица Сотрудники
Таблица Клиенты
Таблица Заказы
4. Установите ключевые поля.
Отдельные таблицы, содержащие информацию по определенной теме, необходимо связать в единую структуру базы данных. Для связывания таблиц следует задать ключевые поля.
Ключ состоит из одного или нескольких полей, значения которых однозначно определяют каждую запись в таблице. Наиболее подходящим в качестве ключевого поля является Счетчик, так как значения в данном поле являются уникальными (т. е. исключают повторы).
При создании таблиц в режиме конструктора ключевое поле устанавливается автоматически. Откройте созданные Вами таблицы в режиме Конструктор и проверьте установленные ключевые поля:
1) в таблице Сотрудники ключевое поле Код сотрудника
2) в таблице Клиенты ключевое поле Код клиента
3) в таблице Заказы ключевое поле Код заказа
5. Создайте раскрывающиеся списки с помощью Мастера подстановок.
Таблица Заказы содержит поля Код сотрудника и Код клиента. При их заполнении могут возникнуть некоторые трудности, так как не всегда удается запомнить все предприятия, с которыми работает фирма, и всех сотрудников с номером кода. Для удобства можно создать раскрывающиеся списки с помощью Мастера подстановок.
Откройте таблицу Заказы в режиме Конструктора. Для поля Код клиента выберите тип данных Мастер подстановок.
В появившемся окне выберите команду Объект «столбец подстановки» будет использовать значения из таблицы или запроса и щелкните на кнопке Далее.
В списке таблиц выберите таблицу Клиенты и щелкните на кнопке Далее.
В списке Доступные поля выберите поле Код клиента и щелкните на кнопке со стрелкой >>, чтобы ввести поле в список Выбранные поля. Таким же образом добавьте поле Название компании и щелкните на кнопке Далее.
Выберите порядок сортировки списка по полю Название компании и нажмите кнопку Далее.
В следующем диалоговом окне задайте необходимую ширину столбцов раскрывающегося списка, установите флажок Скрыть ключевой столбец и нажмите кнопку Далее.
На последнем шаге Мастера подстановок замените при необходимости надпись для поля подстановок и щелкните на кнопке Готово.
Сохраните полученный результат.
6. Аналогичным образом создайте раскрывающийся список для поля Код сотрудника.
Теперь в списке таблиц выберите таблицу Сотрудники
В списке Доступные поля выберите поля Код сотрудника, Фамилия, Имя.
Порядок сортировки списка выберите по полю Фамилия.
Все остальные действия проводятся аналогично пункту 6.
7. Создайте связей между таблицами.
Существует несколько типов отношений между таблицами:
— при отношении «один-к-одному» каждой записи ключевого поля в первой таблице соответствует только одна запись в связанном поле другой таблицы, и наоборот. Отношения такого типа используются не очень часто. Иногда их можно использовать для разделения таблиц, содержащих много полей, для отделения части таблицы по соображениям безопасности;
— при отношении «один-к-многим» каждой записи в первой таблице соответствует несколько записей во второй, но запись во второй таблице не может иметь более одной связанной записи в первой таблице;
— при отношении «многие-к-многим» одной записи в первой таблице могут соответствовать несколько записей во второй таблице, а одной записи во второй таблице могут соответствовать несколько записей в первой.
Закройте все открытые таблицы, так как создавать или изменять связи между открытыми таблицами нельзя.
Выполните команду вкладки Лента Работа с базами данных кнопка Схема данных
Если ранее никаких связей между таблицами базы не было, то при открытии окна Схема данных одновременно открывается окно Добавление таблицы, в котором выбираются нужные таблицы. Для добавления в схему данных новой таблицы необходимо щелкнуть правой кнопкой мыши на схеме данных и в контекстном меню выбрать пункт Добавить таблицу.
Если связи между таблицами уже были заданы, то откроется окно Схема данных, на котором будут отображены таблицы и связи между ними.
Флажки Каскадное обновление связанных полей и Каскадное удаление связанных записей обеспечивают одновременное обновление или удаление данных во всех подчиненных таблицах при их изменении в главной таблице.Параметры связи можно изменить, нажав на кнопку Объединение. После установления всех необходимых параметров нажмите кнопку ОК.
Аналогично измените связь между таблицами Клиенты и Заказы.
В результате должна получиться схема данных, представленная на рисунке.
На схеме данных связи отображаются в виде соединительных линий со специальными значками около таблиц. Связь «один-к-многим» помечается «1» вблизи главной таблицы (имеющей первичный ключ) и «∞» вблизи подчиненной таблицы (имеющей внешний ключ). Связь «один-к-одному» помечается двумя «1» (оба поля таблиц имеют первичные ключи). Неопределенная связь не имеет никаких знаков. Если установлено объединение, то его направление отмечается стрелкой на конце соединительной линии (ни одно из объединенных полей не является ключевым и не имеет уникального индекса).
7. В таблицу Сотрудники внесите данные о 7 работниках.
8. В таблицу Клиенты внесите данные о 7 предприятиях, с которыми работает данная фирма.
9. В таблице Заказы оформите 5 заявок, поступивших на фирму.
10. Покажите работу преподавателю.
11. Ответьте на контрольные вопросы.
Контрольные вопросы:
1 С помощью чего можно создавать таблицы?
2 Что такое ключевое поле?
3 Как установить несколько ключевых полей?
4 Как установить связи между таблицами?
5 Какие существуют отношения между таблицами?
6 Что означают на схеме данных «1» и «∞»?
7 Зачем нужен Мастер подстановок?
8 Для чего нужен механизм запросов?
Методические указания к лабораторной работе № 24 Создание связей в базе данных
Лабораторная работа №13
Наименование: Организация данных в СУБД Access
1. Цель: Научиться создавать базу данных в СУБД Access. Создавать таблицы, заполнять их, связывать данные в таблицах.
2.1 А.П.Алексеев Информатика 2007. – М.:СОЛОН-ПРЕСС, 2007
3. Содержание отчета:
3.1 Наименование и цель работы
3.2 Выполненное задание
3.3 Перенесите в бланк отчета схему данных.
3.4 Ответы на контрольные вопросы
4.1 Создайте базу данных «Фирма». Сотрудники данной организации работают с клиентами и выполняют их заказы.
4.2 Свяжите данные таблиц с помощью Схемы данных.
4.3 Самостоятельно заполните таблицы данными.
5. Методика выполнения:
5.1. Запустите Microsoft Access.
5.2. Если все сведения поместить в одной таблице, то она станет очень неудобной для работы. В ней начнут повторяться данные. Чтобы уменьшить число ошибок, можно исходную таблицу разбить на несколько таблиц и установить связи между ними. Это будет более рационально. Таким образом, создадим 3 таблицы: Сотрудники, Клиенты и Заказы.
Таблица 1. Сотрудники
Адрес электронной почты
Отметка о выполнении
3. Отдельные таблицы, содержащие информацию по определенной теме, необходимо связать в единую структуру базы данных. Для связывания таблиц следует задать ключевые поля. Ключ состоит из одного или нескольких полей, значения которых однозначно определяют каждую запись в таблице. Наиболее подходящим в качестве ключевого поля является «Счетчик», так как значения в данном поле являются уникальными (т.е. исключают повторы).
4. Откройте таблицу Сотрудники в режиме Конструктора. Нажмите кнопкой мыши на поле Код сотрудника и в появившемся контекстном меню выберите команду Ключевой поле. Если в таблице необходимо установить несколько ключевых полей, то выделить их можно, удерживая клавишу Ctrl.
5. Для таблицы Клиенты установите ключевое поле Код клиента, а для таблицы Заказы – Код заказа.
6. Таблица Заказы содержит поля Код сотрудника и Код клиента. При их заполнении могут возникнуть некоторые трудности, так как не всегда удается запомнить все предприятия, с которыми работает фирма, и всех сотрудников с номером кода. Для удобства можно создать раскрывающиеся списки с помощью Мастера подстановок.
7. Откройте таблицу Заказы в режиме Конструктора. Для поля Код сотрудника выберите тип данных Мастер подстановок. В появившемся окне выберите команду «Объект «столбец подстановки» будет использовать значения из таблицы или запроса» и щелкните на кнопку Далее. В списке доступные поля выберите поле Код сотрудника и щелкните на кнопку со стрелкой, чтобы ввести поле в список Выбранные поля. Таким же образом добавьте поля Фамилия и Имя и щелкните по кнопке Далее.
8. Выберите порядок сортировки списка по полю Фамилия. В следующем диалоговом окне задайте необходимую ширину столбцов раскрывающегося списка. Установите флажок «Скрыть ключевой столбец» и нажмите кнопку Далее.
9. На последнем шаге Мастера подстановок замените при необходимости надпись поля подстановок и щелкните на кнопке Готово.
10. Аналогичным образом создайте раскрывающийся список для поля Код клиента.
11. После создания ключевых полей можно приступить к созданию связей. Существуют несколько типов отношений между таблицами:
— при отношении «один-к-одному» каждой записи ключевого поля в первой таблице соответствует только одна запись в связанном поле другой таблицы, и наоборот. Отношения такого типа используются не очень часто. Иногда их можно использовать для разделения таблиц, содержащих много полей, для отделения части таблицы по соображениям безопасности;
— при отношении «один-ко-многим» каждой записи в первой таблице соответствует несколько записей во второй, но запись во второй таблице не может иметь более одной связанной записи в первой таблице;
— при отношении «многие-ко-многим» одной записи в первой таблице могут соответствовать несколько записей во второй таблице, а одной записи во второй таблице могут соответствовать несколько записей в первой.
12. Закройте все открытые таблицы, так как создавать или изменять связи между открытыми таблицами нельзя. Выполните команду: вкладка ленты Работа с базами данных – кнопка . Если ранее никаких связей между таблицами базы не было, то при открытии окнаСхема данных одновременно откроется окно добавление таблицы, в котором выберите таблицы Сотрудники, Клиенты и Заказы. Если связи между таблицами уже были заданы, то для добавления в схему данных новой таблицы щелкните правой кнопкой мыши на схеме данных и в контекстном меню выберите пункт Добавить таблицу.
13. Установите связь между таблицами Сотрудники и Заказы, для этого выберите поле Код сотрудника в таблице Сотрудники и перенесите его на соответствующее поле в таблице Заказы. После перетаскивания откроется диалоговое окно Изменение связей (рисунок 1), в котором включите флажок Обеспечение условия целостности. Это позволит предотвратить случаи удаления записей из одной таблицы, при которых связанные с ними данные других таблиц останутся без связи.
Рисунок 1. Создание связи между таблицами
14. Флажки Каскадное обновление связанных полей и Каскадное удаление связанных записей обеспечивают одновременное обновление или удаление данных во всех подчиненных таблицах при их изменении в главной таблице. После установления всех необходимых параметров нажмите кнопку ОК.
15. Связь между таблицами Клиенты и Заказы установите самостоятельно. В результате должна появиться схема данных, представленная на рисунке 2.
Рисунок 2. Схема данных
В приведенном примере используются связи «один-ко-многим». На схеме данных они отображаются в виде соединительных линий со специальными значками около таблиц.
16. В таблицу Сотрудники внесите данные о семи работниках
17. В таблицу Клиенты внесите данные о десяти предприятиях, с которыми работает данная фирма.
18. В таблицу Заказы оформите несколько заявок, поступающих на фирму.
Программное приведение типа значения поля ввода и колонки табличного поля формы 1С8
При создании формы возникает вопрос настройки типа значения поля ввода. Не всегда заранее точно известен используемый тип, поскольку это может зависеть от метаданных конфигурации и условий использования.
Если, как минимум, известно, что в поле потребуется вводить и использовать элемент Справочника или Документ, то можно настроить тип на общий вид значения, например СправочникСсылка или ДокументСсылка. Далее решить вопрос программно при открытии формы, для уточнения используемого типа.
Если требуется использовать элемент справочника Номенклатура, но в разных конфигурациях этот объект метаданных может называться по-разному, например Товары или же Номенклатура, то программное определение наименования типа при открытии формы упростит жизнь пользователю.
Следовательно, настроим автоматический выбор и первичное преобразование полей на форме к типу значения Справочник.Номенклатура, если такой есть в метаданных конфигурации. В противном случае, выбираем в качестве начального значения первый в списке имён справочников.
Для примера разработана управляемая форма и форма в обычном режиме (см. скриншоты публикации).
Обычный режим
Ниже приведен алгоритм на языке 1С8 для формы в обычном режиме. На форме есть поле список ВыбранныйТип, для которого настроено событие ПриИзменении. В поле ВыбранныйТип пользователь выбирает тип, который желает использовать для преобразования полей. При открытии формы считываем список справочников из метаданных конфигурации. Ищем справочник Номенклатура в списке, далее инициализируем на форме поле ВыбранныйТип полученным списком имён и найденным значением. Запускаем событие ВыбранныйТипПриИзменении, для преобразования типа полей ввода. В переменную модуля формы СтрокаТипЗнч сохраним полное имя выбранного типа для использования в других процедурах.
Далее необходимо выполнить преобразование типа значения колонки табличного поля. Для этого воспользуемся событием НачалоВыбора.
Код преобразования приведен ниже. В нём используется ранее инициализированная переменная СтрокаТипЗнч для получения имени выбранного типа. Алгоритм можно найти в справке по ключевому слову ПривестиЗначение.
Новый тип назначается полям динамически после каждого выбора значения в списке ВыбранныйТип.
Управляемые формы
Для управляемых форм алгоритм изменяется незначительно. Для преобразования используется свойство ОграничениеТипа. Работа с метаданными только на сервере. Для быстрого доступа к колонке табличного поля при срабатывании события НачалоВыбора сохраним в переменной на клиенте СсылкаЭлементКолонкаТП ссылку с адресом элемента.
Рассмотренный пример алгоритма можно протестировать, скачав обработку по ссылке из публикации. Работа выполнялась на 1С:Предприятие 8.3 (8.3.15.1747), с использованием конфигураций «Управление торговлей», редакция 10.3 (10.3.46.3), Управление торговлей, редакция 11 (11.4.7.150). В составе обработки одновременно присутствует управляемая форма и форма обычного режима.
Спасибо за внимание! Критика приветствуется.
Задания и алгоритм реализации кейс-ситуации
1) Создайте базу данных «Фирма» (кейс-компонент 3).
2) Разработайте информационно-логическую модель реляционной базы данных для условной предметной области «Фирма». Перед разработкой информационно-логической модели реляционной базы данных рассмотрим, из каких информационных объектов должна состоять эта БД. Если все сведения поместить в одном объекте, то будет неудобно для работы. Начнутся повторы данных. Всякий раз, когда сотрудник Иванов будет работать с какой-либо фирмой, придется прописывать данные о сотруднике и клиенте заново, в результате чего можно допустить множество ошибок. Чтобы уменьшить число ошибок, можно исходный объект разбить на несколько объектов и установить связи между ними. Можно выделить три объекта, которые не будут обладать избыточностью.
Таким образом, по описанию предметной области выделяем 3 объекта: Сотрудники, Клиенты и Заказы. Представим состав реквизитов этих объектов в виде «название объекта (перечень реквизитов)»:
Сотрудники (код сотрудника, фамилия, имя, отчество, должность, дата рождения, телефон, адрес, эл_почта, комиссия).
Клиенты (код клиента, название компании, адрес, телефон, факс, эл_ почта, заметки)
Заказы (код заказа, код клиента, код сотрудника, дата размещения, дата исполнения, сумма, отметка о выполнении).
Рассмотрим связь между объектами. Объект Сотрудники связан с объектом Заказы связью один-ко-многим, поскольку один сотрудник может обслуживать несколько заказов.Объект Клиенты связан с объектом Заказы связью один-ко-многим, поскольку один клиент может оформить в данной фирме несколько заказов. В реляционной базе данных в качестве объектов рассматриваются отношения, которые можно представить в виде таблиц. Таблицы между собой связываются посредством общих полей, т.е. одинаковых по форматам и, как правило, по названию, имеющихся в обеих таблицах. Рассмотрим, какие общие поля надо ввести в таблицы для обеспечения связности данных. Для связи таблиц Сотрудники и Заказы используем поле код сотрудника, которое в одной таблице будет первичным ключом, а в другой – внешним (или вторичным). А для связи таблиц Клиенты и Заказы используем поле код клиента, которое в одной таблице будет первичным ключом, а в другой – внешним (или вторичным).
3) Создайте в режиме Конструктора (кейс-компонент 4) 3 таблицы (таблицы 13-15). Задайте свойства полей.
4) Отдельные таблицы, содержащие информацию по определенной теме, необходимо связать в единую структуру БД. Для связывания таблиц следует задать ключевые поля (определение ключевого поля см. п. 1.3).
5) Таблица Заказы содержит поля код сотрудника и код клиента. При их заполнении могут возникнуть некоторые трудности, так как не всегда удается запомнить все предприятия, с которыми работает фирма, и всех сотрудников с номером кода. Для удобства можно создать раскрывающиеся списки с помощью Мастера подстановок.
Таблица 13 – Структура таблицы Сотрудники
Имя поля | Тип данных |
код сотрудника | Числовой |
фамилия | Текстовый |
имя | Текстовый |
отчество | Текстовый |
должность | Текстовый |
телефон | Текстовый |
адрес | Текстовый |
дата рождения | Дата/Время |
эл_почта | Гиперссылка |
комиссия | Числовой |
Таблица 14 – Структура таблицы Клиенты
Имя поля | Тип данных |
код клиента | Числовой |
название компании | Текстовый |
адрес | Текстовый |
телефон | Текстовый |
факс | Числовой |
эл_почта | Гиперссылка |
заметки | Поле МЕМО |
Таблица 15 – Структура таблицы Заказы
Имя поля Тип данных | Тип данных |
код заказа Счетчик | Числовой |
код клиента Числовой | Числовой |
код сотрудника Числовой | Числовой |
дата размещения Дата/Время | Дата/Время |
дата исполнения Дата/Время | Дата/Время |
сумма Денежный | Денежный |
отметка о выполнении Логический | Логический |
a) Откройте таблицу Заказы в режиме Конструктора.
b) Для поля код сотрудника выберите тип данных Мастер подстановок.
c) В списке таблиц выберите таблицу Сотрудники, Click на кнопке Далее.
d) В списке Доступные поля выберите поле код сотрудника и Click на кнопке со стрелкой, чтобы ввести поле в список Выбранные поля. Таким же образом добавьте поля фамилия и имя и щелкните на кнопке Далее.
e) Выберите порядок сортировки списка по полю Фамилия.
f) Сбросьте флажок Скрыть ключевой столбец и нажмите кнопку Далее.
g) На последнем шаге Мастера подстановок замените при необходимости надпись для поля подстановок и Click на кнопке Готово.
6) Аналогичным образом создайте раскрывающийся список для поля код клиента.
7) После создания ключевых полей необходимо создать связи. Создайте схему данных (кейс-компонент 5), не забыв закрыть при этом все открытые таблицы. В результате должна получиться схема данных, представленная на рисунке 28.
Рисунок 28 – Схема данных БД «Фирма»
8) В таблицу Сотрудники внесите данные о семи работниках. В поле адрес введите только город, в котором живет сотрудник (таблица 16).
9) В таблицу Клиенты внесите данные о семи предприятиях, с которыми работает данная фирма. В поле адрес введите только город, в котором находится фирма (таблица 17).
10) В таблице Заказы оформите десять заявок, поступивших на фирму (таблица 18).