
- •Т.А. Меркулова «Разработка управляемого приложения на платформе 1с:Предприятие 8»
- •Олавление
- •4.10. Варианты заданий…….…………………………………………………………………66
- •5.6. Варианты заданий………………………………………………………………………...93
- •Глава 6. Запросы
- •6.3. Варианты заданий………………………………………………………………………108
- •7.5. Варианты заданий………………………………………………………………………130
- •8.8. Варианты заданий………………………………………………………………………163
- •9.3. Варианты заданий……………………………………………………………………….176
- •10.5. Варианты заданий……………………………………………………………………..203
- •11.7. Варианты заданий…………………………………………………………………….226
- •12.4. Варианты заданий……………………………………………………………………..245
- •13.5. Варианты заданий……………………………………………………………………..267
- •14.2. Пример формирования отчета………………………………………………………….275
- •14.3. Варианты заданий……………………………………………………………………..281
- •15.4. Варианты заданий……………………………………………………………………….
- •Глава 1. Концепция управляемого приложения
- •1.1. Основные сферы использования управляемого приложения
- •1.2. Основные особенности работы управляемого приложения
- •То для извлечения значения коэффициента необходимо обратиться к бд. А раз так, то за коэффициентом теперь уже придется "идти" на сервер.
- •1.3. Новая стратегия разработки прикладного решения
- •Процедура создания новой информационной базы (иб) в режиме уп
- •Глава 2. Подсистемы в режиме управляемого приложения
- •2.1. Подсистемы – основа командного интерфейса управляемого приложения
- •2.2. Пользователи, роли и панель разделов
- •3.1. Константы
- •Форма констант
- •3.2. Основы клиент-серверного программирования
- •3.3. Общие реквизиты
- •Глава 4. Справочники
- •4.1. Окно редактирования справочника
- •4.2. Разработка формы справочника
- •4.3. Клиентские методы в модуле формы
- •4.4. Объект СообщениеПользователю
- •4.5. Настройка командного интерфейса для ускорения доступа к справочнику
- •4.6. Иерархические справочники
- •4.8. Программная работа со справочниками
- •4.9. Модуль менеджера
- •4.9. Варианты заданий
- •1. Константа «Главный бухгалтер», тип СправочникСсылка.Сотрудники
- •2. Справочник основных средств (ос):
- •3. Справочник материально-ответственных лиц (подчиненный):
- •1. Константа «Директор», тип СправочникСсылка.Сотрудники
- •2. Справочник товаров:
- •3. Справочник цен товаров (подчиненный):
- •1. Константа «Главный бухгалтер», тип СправочникСсылка.Сотрудники
- •2 Справочник сотрудников:
- •3 Справочник стандартных вычетов сотрудника (подчиненный):
- •1. Константа «Главный контрагент», тип СправочникСсылка.Контрагенты
- •2. Справочник контрагентов:
- •3. Справочник расчетных счетов контрагента(подчиненный)
- •1. Константа «Основное транспортное средство директора», тип СправочникСсылка.ТранспортныеСредстваПредприятия
- •2. Справочник ТранспортныеСредстваПредприятия
- •3. Справочник товарно-транспортных накладных (подчиненный)
- •1. Константа «Название предприятия », тип «Строка”
- •2. Справочник персональных компьютеров предприятия
- •3. Справочник сотрудников, работающих на данном компьютере (подчиненный)
- •1. Константа «Название библиотеки », тип «Строка”
- •2. Справочник библиографических единиц:
- •3. Справочник сотрудников, бравших данную единицу с абонемента (подчиненный)
- •1. Константа «Название университета », тип «Строка”
- •2. Справочник факультетов университета:
- •3. Справочник сотрудников- заместителей декана факультета (подчиненный)
- •1. Константа «Название университета », тип «Строка”
- •2/ Справочник кафедр вуЗа:
- •3. Справочник лабораторий кафедры (подчиненный)
- •1. Константа «Название предприятия », тип «Строка”
- •3. Справочник детей работника (подчиненный)
- •1. Константа «Форма оплаты труда предприятия », тип «Строка”
- •2. Справочник «Виды оплат и удержаний»
- •3. Справочник работников, которым назначен данный вид расчета (подчиненный)
- •1. Константа «фио главбуха », тип «Строка”
- •2. Справочник «Парк машин»
- •1. Константа «Директор », тип «СправчникСсылка.Сотрудники”
- •2. Справочник сотрудников:
- •3. Трудовая книжка сотрудника (Подчиненный)
- •1. Константа «Основной объект предприятия », тип «СправочникСсылка.Объекты”
- •2. Справочник видов работ
- •3. Справочник сотрудников, выполняемых данный вид работ (подчиненный)
- •1. Константа «Главный склад предприятия », тип «СправочникСсылка.Склады”
- •2. Справочник складов
- •3. Справочник товарно-материальных ценностей склада (подчиненный)
- •1. Константа «Начальник автотранспортного цеха », тип «СправочникСсылка.Сотрудники”
- •2. Справочник норм расхода масел ,смазок и доп. Топлива
- •3. Справочник водителей автомобиля (подсиненный))
- •1. Константа «Название предприятия », тип «Строка”
- •2. Справочник профессий
- •3. Справочник должностных ставок данной профессии(подчиненный)
- •1. Константа «Название университета », тип «Строка”
- •2. Штатное расписание вуЗа
- •3. Справочник сотрудников кафедры (подчиненный)
- •1. Константа «Название предприятия », тип «Строка”
- •2. Справочник характерных видов расчетов подразделений предприятия
- •3. Справочник сотрудников данного подразделения (подчиненный)
- •1. Константа «Наибольший табельный номер (Код) в справочнике сотрудников », тип «Строка”. Означивается автоматически при запуске приложения.
- •2. Справочник сотрудников:
- •3. Справочник кадровых приказов по сотруднику (подчиненный)
- •1. Константа «Название информационной базы », тип «Строка”
- •2. Справочник пользователей
- •Справочник дополнительных свойств пользователя (подчиненный)
- •1. Константа «Основной расчетный счет предприятия », тип «Строка”
- •2. Справочник контрагентов:
- •3. Справочник филиалов контрагента (подчиненный)
- •1. Константа «Основной поставщик предприятия », тип «СправочникСсылка.Контрагенты”
- •2. Справочник товаров:
- •3. Справочник Цены номенклатуры (подчиненный)
- •Глава 5. Отчеты
- •5.1. Макет отчета
- •5.2. Табличный документ
- •5.3. Дополнительные свойства табличного документа
- •5.3.1. Оформление ячеек
- •5.3.2. Группировки
- •5.3.3. Расшифровки
- •5.3.4. Примечания
- •5.4. Сохранение отчетов
- •5.5. Конструктор печати
- •5.6. Варианты заданий
- •Глава 6. Запросы
- •6.1. Табличный способ доступа к данным
- •6.2. Язык запросов
- •6.2.1. Обращение к полям через точку (".")
- •6.2.2. Обращение к вложенным таблицам (табличным частям документов и элементов справочников)
- •6.2.3. Автоматическое упорядочивание
- •6.2.4. Многомерное и многоуровневое формирование итогов
- •6.2.5. Поддержка виртуальных таблиц
- •6.2.6. Стандартные sql операции
- •6.2.10. Пакетные запросы
- •6.2.10А Таблица значений как источник данных для запроса
- •6.2.11. Обработка результатов запроса Получение и проверка результата запроса
- •Выборка из результата запроса
- •6.2.12. Конструкторы запроса
- •Конструктор запроса (Query Builder)
- •Конструктор запроса с обработкой результата
- •6.3. Варианты заданий
- •Глава 7. Документы
- •7.1. Структура документов. Свойства документов
- •7.2. Программная работа с документами
- •7.3. Стандартные реквизиты
- •7.6. Функциональные опции
- •7.5. Варианты заданий
- •Цена товара проставляется автоматически после выбора элемента справочника товаров из соответствующего реквизита данного справочника.
- •Сумма рассчитывается автоматически.
- •Глава 8. Регистры накопления
- •8.1. Назначение регистров накопления
- •8.2. Регистры остатков
- •8.3. Оборотные регистры накопления
- •8.4. Вызов формы регистра накопления из формы документа
- •8.5. Агрегаты
- •8.6. Последовательности
- •8.7. Нумераторы
- •8.8. Варианты заданий
- •Глава 9. Регистры сведений
- •9.1. Назначение. Типы регистров сведений
- •Реквизиты регистра сведений
- •Режим записи
- •9.2. Программная обработка данных из регистра сведений
- •9.3. Варианты заданий
- •Справочник сотрудников:
- •Глава 10. Система компоновки данных
- •Введение
- •Основные составляющие скд
- •10.3. Пример формирования отчета с помощью скд
- •10.4. Расшифровки в скд Стандартная расшифровка
- •Нестандартная расшифровка
- •Разработка ведомости в скд
- •Присоединение ведомости в качестве расшифровки отчета по остаткам
- •10.5. Варианты заданий
- •Глава 11. Разработка средств ведения бухгалтерского учета
- •11.1. Объекты метаданных, относящиеся к бухучету
- •11.2. Планы счетов и регистры бухгалтерии
- •Субсчета
- •Предопределенные счета
- •Корреспонденции
- •11.3. План видов характеристик
- •Предопределенные виды субконто
- •11.4. Приемы программирования
- •11.5. Примеры формирования проводок в модуле документа
- •11.6. Пример решения задачи Разработать документ: «Безвозмездное поступление тмц от организаций»
- •11.7. Варианты заданий
- •Вариант 21 «Выдача спецодежды работникам»
- •Вариант 22 «Списание спецодежды»
- •Предварительно разработать документ «Поступление товаров без ндс» с одной проводкой (по сумме выручки) для каждой строки документа.
- •Предварительно разработать документ «Заявка от покупателя» , не формирующий проводок.
- •Глава 12. Запросы к регистрам бухгалтерии
- •12.1. Регистры- источники данных для запроса
- •12.2. Примеры запросов к регистрам бухгалтерии
- •Структура регистра бухгалтерии
- •Движения без субконто
- •Движения с указанием субконто
- •Остатки по счетам
- •Валютные остатки по счетам
- •Обороты по счетам
- •Обороты между счетами
- •Оборотно-сальдовая ведомость
- •12.3. Пример формирования отчета
- •Проект запроса.
- •12.4. Варианты заданий
- •Ведомость выдачи спецодежды работника за период с____ по_____
- •Ведомость списания спецодежды работника за период с____ по_____
- •Глава 13. Сложные периодические расчеты
- •13.1. Объекты метаданных, используемые в периодических расчетах
- •13.2. Планы видов расчета
- •Предопределенные виды расчета
- •Взаимосвязь видов расчета
- •Предопределенные табличные части плана видов расчета
- •13.3. Регистры расчета
- •Структура регистра расчета
- •Периодичность регистра расчета
- •Связь регистра расчета с планом видов расчета
- •Зависимость записей по базовому периоду
- •График времени
- •Частичное попадание записей регистра расчета в базовый период
- •Перерасчеты
- •13.4. Пример решения задачи расчета заработной платы
- •13.5. Варианты заданий
- •Глава 14. Запросы к регистрам расчета
- •14.1. Таблицы – источники запросов
- •Пример.
- •За период с___по________
- •Ведомость начислений материальной помощи, не облагаемой налогом, с начала года по___________
- •Глава 15. Дополнительные возможности разработки отчетов с использованием системы компоновки данных
- •Внешние макеты
- •Предопределенные макеты
- •15.3. Макеты оформления Работа со стандартными макетами оформления
- •Создание собственного макета оформления
- •15.4. Варианты заданий
- •1. В.А. Ажеронок, а. В. Островерх, м. Г. Радченко, е. Ю. Хрусталева
4.5. Настройка командного интерфейса для ускорения доступа к справочнику
Добавим команду создания нового элемента справочника ФизическиеЛица в панель действий раздела Справочники. Для этого откроем окно Все подсистемы командой контекстного меню ветви Подсистемы дерева конфигурации и установим флаг Видимость напротив команды Физические лица: Создать в области Панель действий.Создать, рис. 4.19.
Рис. 4.19. Настройка панели действий раздела Справочники
Мы можем включить команду добавления нового физического лица в командный интерфейс Рабочего стола.
Для этого выполним команду контекстного меню корневого элемента конфигурации Открыть командный интерфейс рабочего стола.
Выделим в поле Доступные команды команду Физические лица: создать, в поле состава командного интерфейса – команду Панель действий.Создать и нажмем на кнопку со значком ">" (Добавить команду на рабочий стол), которая находится между полями, после чего установим флаг Видимость для добавленной команды, рис 4.20.
Рис. 4.20. Настройка панели действий Рабочего стола
Теперь, рис. 4.21., команда для быстрого создания элементов справочника ФизическиеЛица добавлена в панель действий Рабочего стола, аналогичная команда появилась в разделе Справочники.
Рис. 4.21. Новая команда в панели действий рабочего стола
4.6. Иерархические справочники
Иерархический справочник может содержать компоненты двух видов:
Элементы и группы ;
Только элементы - в этом случае иерархический справочник состоит только из элементов. Любой элемент может выполнять функцию группы, т.е. он может быть родительским элементом для других элементов этого же справочника. Например, по такому принципу можно организовать справочник Подразделения. В любой момент времени какой-нибудь отдел может быть разделен внутри себя на несколько подотделов, и отразить это в справочнике не составит никакого труда .
В V8 появилась возможность неограниченной вложенности групп и элементов друг в друга. Этот вариант устанавливается по умолчанию , рис 4.22.
Рис. 4.22. Настройка иерархического справочника
4.7. Подчиненные справочники
Между справочниками может быть установлено отношение подчиненности .
В V8 у справочника может быть несколько владельцев, то есть справочник может быть подчинен сразу нескольким справочникам или другим объектам. Но каждый элемент подчиненного справочника имеет одного и только одного владельца, который хранится в одном из объектов-владельцев, рис. 4.23.
Рис. 4.23. Настройка подчиненного справочника
4.8. Программная работа со справочниками
Рассмотрим примеры решения нескольких задач.
Задача 1. Создать обработку, которая выводит имена всех справочников, имеющихся в системе. Для этого добавим новую обработку в ветви Обработки дерева конфигурации. Назовем ее РаботаСоСправочниками, рис. 4.24.
Рис. 4.24. Создание обработки
Включим новую обработку в состав подсистемы Администрирование на закладке Подсистемы. Перейдем на закладку Формы и создадим форму обработки. Наша обработка не имеет реквизитов – сразу после запуска конструктора формы обработки, мы можем нажать на кнопку Готово и увидим пустую форму обработки, рис. 4.25.
Рис. 4.25. Форма обработки
Вывод данных по результатам работы обработки выполняем с помощью метода Сообщить().
Перейдем на вкладку Команды в окне редактора форм. После этого нам будут доступны еще несколько вкладок, нас интересует первая из них – Команды формы, рис. 4.26.
Рис. 4.26. Переход к командам формы обработки
Список команд формы пуст – нам нужно создать собственную команду. Нажмем на кнопку Добавить в верхней части панели Команды формы, назовем ее ВывестиСписокСправочников, в окне свойств команды нажмем на кнопку с увеличительным стеклом в поле свойства Действие – в модуле формы будет создана процедура для этой команды, рис. 4.27.
Рис. 4.27. Настройка команды
В модуль формы был добавлен такой код:
&НаКлиенте
Процедура ВывестиСписокСправочников(Команда)
// Вставить содержимое обработчика.
КонецПроцедуры
То, что мы добавили в обработку команду, еще не означает автоматическое добавление на форму команды, например, кнопки, нажатие которой приведет к выполнению команды. Добавить такую кнопку на форму можно несколькими способами. Во-первых, мы можем просто перетащить команду из панели Команды формы на панель Элементы – на форме появится кнопка Вывести список справочников, а напротив команды – серый квадратик, говорящий о присутствии элемента управления, связанного с командой, на форме.
Во-вторых, в список элементов формы можно добавить кнопку (кнопка Добавить в командной панели закладки Элементы) и задать свойства кнопки, в частности, в свойстве ИмяКоманды выбрать нужную команду. После добавления кнопки и настройки ее связи с командой, редактор форм приобрел вид, показанный на рис. 4.28.
Рис. 4.28. Настройка кнопки
Теперь приступим к редактированию кода. Код команды выполняется на клиенте, нам же нужно работать с базой данных, то есть – объявить серверную процедуру или функцию. В итоге у нас получился следующий код:
&НаКлиенте
Процедура ВывестиСписокСправочников(Команда)
ВывестиИменаСправочников();
КонецПроцедуры
Процедура ВывестиИменаСправочников()
Для каждого Справочник из Метаданные.Справочники Цикл
Сообщить (Справочник.Имя);
КонецЦикла;
КонецПроцедуры
Обратите внимание на то, что объявляя процедуру ВывестиИменаСправочников(), мы не указываем директиву компиляции – по умолчанию подставляется директива &НаСервере..
Результат вывода списка справочников изображен на рис 4.29.:
Рис. 4.29. Вывод списка справочников
Задача 2. Программно создать элемент справочника с заданными параметрами. На верхнем уровне типов данных, которые имеют отношение к справочникам, находится объект Справочники, имеющий тип СправочникиМенеджер. С его помощью можно обращаться к отдельным справочникам, через их объекты СправочникМенеджер. При работе с объектом типа СправочникиМенеджер используется свойство глобального контекста Справочники.
Обращение к объектам СправочникМенеджер возможно по имени справочника, заданному в конфигурации. Мы собираемся программно создать элемент с наименованием, которое задаст пользователь в форме обработки. Для этого добавим в список команд формы новую – назовем ее СоздатьЭлементСправочника, создадим ее процедуру, добавим ее на форму.
Добавим новый реквизит в список реквизитов, назовем его НаименованиеЭлемента, зададим тип – Строка, длина 25, так же переместим реквизит в область Элементы – там он будет представлен в виде текстового поля, рис. 4.30.
Добавим еще один реквизит – назовем его ИмяСправочника, тип Строка, длина – 100. Сюда пользователь будет вводить имя справочника, в котором он хочет создать новый элемент.
На нашей форме теперь имеются три логически связанных элемента. Удобно объединить их в одну группу, чтобы пользователь сразу мог понять, что они работают вместе. Для этого можно сгруппировать элементы
Рис. 4.30. Настройка нового реквизита формы
В командной панели вкладки Элементы нажмем на кнопку Добавить, появится окно – Тип элемента (рис. 4.31.), среди списка элементов, представленных в котором, можно найти несколько видов групп.
Рис. 4.31. Добавление новой группы на форму
Обычная группа позволяет визуально разделить элементы, находящиеся на форме. Добавим на форму новую группу, назовем ее СозданиеЭлементаСправочника, перетащим в нее элементы управления, относящиеся к этой группе. Результат реорганизации элементов показан на рис. 4.32.
Рис. 4.32. Добавление новой группы на форму
Теперь займемся кодом. Нам, в дополнение к клиентской процедуре команды СоздатьЭлементСправочника, понадобится серверная процедура или функция, которая и занимается созданием элемента. Обратиться к объекту СправочникМенеджер для конкретного справочника можно различными способами. Предположим, мы заранее знаем, с каким справочником нам нужно работать (например, это – справочник Номенклатура). Для того, чтобы вызвать метод этого справочника СоздатьЭлемент, нам понадобится такая конструкция:
НовыйЭлемент=Справочники.Номенклатура.СоздатьЭлемент();
В данном случае происходит следующее. Посредством объекта СправочникиМенеджер (Справочники) мы получаем доступ к объекту СправочникМенеджер для справочника Номенклатура и выполняем его метод СоздатьЭлемент. Этот метод возвращает нам объект типа СправочникОбъект (доступ к нему возможен через переменную НовыйЭлемент).
В нашем случае имя справочника задает пользователь, оно нам заранее неизвестно. В том случае, если имя справочника для вышеописанной конструкции будет, перед обращением к менеджеру справочника, записано в некую переменную, мы можем использовать такую конструкцию (в нашем случае имя справочника хранится в текстовой переменной ИмяСправочника):
НовыйЭлемент = Справочники[ИмяСправочника].СоздатьЭлемент();
Оператор[…], который используется в данной конструкции, заменяет конструкцию с точкой и жестко заданным именем справочника.
После того, как мы получили переменную типа СправочникОбъект, мы можем настроить необходимые свойства конкретного элемента справочника (в нашем случае – наименование) и записать элемент. Вот, как выглядит результирующий код:
&НаКлиенте
Процедура СоздатьЭлементСправочника(Команда)
КодНовогоЭлемента=СоздатьЭлементСправочникаНаСервере();
Сообщить("В справочнике "+ИмяСправочника+" создан элемент
"+НаименованиеЭлемента + " с автоматически присвоенным кодом:
"+КодНовогоЭлемента);
КонецПроцедуры
Функция СоздатьЭлементСправочникаНаСервере()
НовыйЭлемент = Справочники[ИмяСправочника].СоздатьЭлемент();
НовыйЭлемент.Наименование=НаименованиеЭлемента;
НовыйЭлемент.Записать();
Возврат (НовыйЭлемент.Код);
КонецФункции
Обратите внимание на то, что мы в серверной процедуре обращаемся к реквизитам формы напрямую – они доступны и на сервере и на клиенте, так как функция, в которой они вызываются – это функция, объявленная с используемой по умолчанию директивой &НаСервере. Если бы мы в подобной ситуации попытались воспользоваться серверной внеконтекстной функцией (директива &НаСервереБезКонтекста) – обращаться к контексту формы (к ее реквизитам), мы не смогли бы. Вместо того, чтобы пользоваться стандартными механизмами обмена данными с сервером (а при вызове серверной процедуры на сервер передаются данные от клиента о состоянии формы), нам пришлось бы организовывать передачу этих данных вручную через параметры методов. Серверная внеконтекстная функция позволила бы снизить объем данных, передаваемых с клиента на сервер и обратно. Но она, в то же время, способна выполнять те же действия с базой, что и функция, объявленная с ключевым словом &НаСервере. Результат, рис. 4.33.
Рис. 4.33. Создание нового элемента справочника
Функция СоздатьЭлементСправочникаНаСервере создает новый элемент, заполняет его свойство Наименование, после чего записывает его и возвращает код нового элемента. Код формируется системой автоматически. Если заглянуть в справочник ЕдиницыИзмерения – там, действительно, будет создан новый элемент с заданным нами наименованием.
Задача 3. Нужно реализовать автоматическую пометку всех элементов (но не групп) справочника на удаление. Создадим новую команду ПометитьНаУдалениеВсеЭлементыСправочника. После создания процедуры, связанной с этой командой и серверной процедуры, выполняющей работу с базой, у нас получился такой код:
&НаКлиенте
Процедура ПометитьНаУдалениеВсеЭлементыСправочника(Команда)
ПометитьНаУдаление();
КонецПроцедуры
Процедура ПометитьНаУдаление()
СчетчикПомеченных = 0;
Выборка = Справочники[ИмяСправочника].Выбрать();
Пока Выборка.Следующий() Цикл
Элемент=Выборка.ПолучитьОбъект();
Если НЕ Элемент.ЭтоГруппа Тогда
Элемент.УстановитьПометкуУдаления(Истина);
СчетчикПомеченных=СчетчикПомеченных+1;
КонецЕсли;
КонецЦикла;
Сообщить("В справочнике "+ИмяСправочника+" помечено на удаление"+СчетчикПомеченных+" элементов");
КонецПроцедуры
В качестве имени справочника мы используем уже знакомый по прошлой процедуре реквизит ИмяСправочника. Конструкция Справочники[ИмяСправочника] позволяет нам обратиться к объекту типа СправочникМенеджер для заданного справочника. Этот объект имеет метод Выбрать(). Метод Выбрать() позволяет сформировать выборку элементов справочника по заданным условиям. Мы, в данном случае, условий не задаем, то есть в выборку попадают все элементы и группы справочника – метод возвращает значение типа СправочникВыборка. СправочникВыборка не содержит элементов справочника, объект этого типа можно считать способом доступа к элементам, способом их перебора. При обращении к выборке обход элементов осуществляется динамически, данные считываются из базы порциями, что позволяет эффективно использовать данный механизм даже для работы с большими справочниками, так как все элементы, входящие в выборку (соответствующие условиям выборки) в память не загружаются.
Команда Выборка.Следующий(), во-первых, возвращает значение Истина (в нашем случае это приводит к запуску следующей итерации цикла), если в выборке выбран следующий элемент, во-вторых, получает следующий элемент выборки. Обращение к этому элементу осуществляется через ту же переменную Выборка типа СправочникВыборка. Для получения объекта элемента справочника мы пользуемся методом Выборка.ПолучитьОбъект() – он возвращает объект типа СправочникОбъект, с которым мы можем дальше работать. А именно, мы проверяем, не является ли найденный элемент группой, если не является – используем метод УстановитьПометкуУдаления объекта типа СправочникОбъект. Этот метод принимает один обязательный параметр, которые следует первым в списке параметров, а именно – для установки пометки удаления он должен быть установлен в значение Истина (как в нашем случае), для снятия – в значение Ложь.
Среди объектов, с которыми вы имеете дело, работая со справочниками, вам встретится объект типа СправочникСсылка. Обычно мы задаем подобный тип (СправочникСсылка.Контрагенты и т.д.) при настройке реквизитов других объектов, которые должны хранить некий элемент нужного справочника. На самом деле, элемент хранится в таблице справочника, в базе данных, а реквизит хранит лишь ссылку. При программной работе со справочниками мы получаем объект СправочникСсылка, когда, например, ищем какой-то элемент справочника. Ссылку можно использовать для идентификации элемента, а так же – для перехода к объекту типа СправочникОбъект, если тот элемент, на который у нас есть ссылка, нужно, например, отредактировать. Объект типа СправочникСсылка не предназначен для изменения элемента справочника. В свою очередь, от СправочникОбъект можно перейти к СправочникСсылка – у объекта имеется соответствующее поле – Ссылка.
Задача 4. В заданном справочнике нужно найти элемент с заданным наименованием (или сообщить, что элемента с таким наименованием в справочнике нет), изменить регистр символов в наименовании таким образом, чтобы все буквы были прописными, и сообщить пользователю его код с указанием старого и нового наименования.
Обычным образом добавим в форму обработки новую команду, для указания имени справочника и наименования искомого элемента используем те же реквизиты ИмяСправочника и НаименованиеЭлемента, реорганизуем элементы управления на форме, рис. 4.34.
Рис. 4.34. Переработанная форма
Поиск, редактирование заданного элемента и вывод необходимых сообщений реализуется с помощью следующего кода:
&НаКлиенте
Процедура НайтиЗаданныйЭлемент(Команда)
НайтиЗаданныйЭлементНаСервере();
КонецПроцедуры
Процедура НайтиЗаданныйЭлементНаСервере()
СсылкаНаЭлемент=Справочники[ИмяСправочника].НайтиПоНаименованию(НаименованиеЭлемента);
Если СсылкаНаЭлемент=Справочники[ИмяСправочника].ПустаяСсылка() Тогда
Сообщить ("В справочнике "+ИмяСправочника+" нет элемента "+НаименованиеЭлемента);
Иначе
Элемент=СсылкаНаЭлемент.ПолучитьОбъект();
СтароеНаименование=Элемент.Наименование;
Элемент.Наименование=ВРег(Элемент.Наименование);
Элемент.Записать();
Сообщить("Элемент справочника "+ИмяСправочника+"
с кодом "+Элемент.Код+" найден, наименование изменено
с "+СтароеНаименование+" на "+Элемент.Наименование);
КонецЕсли;
КонецПроцедуры
Результат - рис. 4.35.
Рис. 4.35. Результат работы кода по поиску и редактированию элемента справочника
Задача 5. Обращение к табличным частям справочника. В форму списка справочника Физические лица вставить кнопку «Трудовая история», при нажатии на которую в окно сообщений вывести список организаций, в которых работал тот сотрудник, на котором стоит курсор в этой форме списка.
Создаем кнопку, рис.4.36.
Рис. 4.36. Настройка кнопки в форме списка справочника
Код в модуле формы списка:
&НаКлиенте
Процедура ТрудоваяИстория(Команда)
ФизЛицо1=Элементы.Список.ТекущаяСтрока;
ПолучитьИсторию(ФизЛицо1);
КонецПроцедуры
Процедура ПолучитьИсторию(ФизЛицо)
для каждого стр из ФизЛицо.ТрудоваяИстория Цикл
Сообщить(Стр.Организация);
КонецЦикла;
КонецПроцедуры
Табличная часть справочника – это коллекция и обрабатывается циклом «Для каждого…».
Задача 6. Обращение к данным подчиненного справочника. Вывести список всех подразделений у выбранной в форме списка организации.
Создаем кнопку, рис.4.37.
Рис. 4.37. Настройка кнопки в форме списка справочника
Код в модуле формы списка:
&НаКлиенте
Процедура СписокПодразделенийОрганизации(Команда)
выбОрганизация=Элементы.Список.ТекущаяСтрока;
ПолучитьСписок(выбОрганизация);
КонецПроцедуры
Процедура ПолучитьСписок(Организация)
Спр=Справочники.ПодразделенияОрганизации.Выбрать(,Организация.ссылка);
Пока Спр.Следующий() Цикл
Сообщить(Спр.Наименование);
КонецЦикла;
КонецПроцедуры
Здесь метод Выбрать() в качестве параметра содержит ссылку на элемент справочника-владельца.