- •Т.А. Меркулова «Разработка управляемого приложения на платформе 1с:Предприятие 8»
- •Олавление
- •10.5. Варианты заданий……………………………………………………………………..203
- •4.10. Варианты заданий…….…………………………………………………………………66
- •5.6. Варианты заданий………………………………………………………………………...93
- •Глава 6. Запросы
- •6.3. Варианты заданий………………………………………………………………………108
- •7.5. Варианты заданий………………………………………………………………………130
- •8.8. Варианты заданий………………………………………………………………………163
- •9.3. Варианты заданий……………………………………………………………………….176
- •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. Справочник контрагентов:
- •3. Справочник филиалов контрагента (подчиненный)
- •1. Константа «Основной поставщик предприятия », тип «СправочникСсылка.Контрагенты”
- •2. Справочник товаров:
- •3. Справочник Цены номенклатуры (подчиненный)
- •1. Константа «Название информационной базы », тип «Строка”
- •2. Справочник пользователей
- •Глава 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. В.А. Ажеронок, а. В. Островерх, м. Г. Радченко, е. Ю. Хрусталева
7.2. Программная работа с документами
С документами в пользовательском режиме можно работать не только интерактивно – так, как мы это делали до сих пор, но и программно. Рассмотрим объекты 1С:Предприятие, которые используются для программной работы с документами.
ДокументыМенеджер – этот объект доступен через свойство глобального контекста Документы. Он позволяет управлять документами, давая доступ к объекту ДокументМенеджер для конкретного документа
ДокументМенеджер – позволяет управлять документом, в частности, создавать новые документы, производить поиск документов, помечать документы на удаление, получать выборки.
ДокументСсылка – идентификатор документа. Используется обычно в реквизитах других объектов для указания ссылки на определенный документ.
ДокументОбъект – позволяет работать с отдельным документом – читать и редактировать его данные.
ДокументВыборка – предназначен для работы с выборкой документов, произведенной по определенным условиям.
ДокументСписок – позволяет управлять списком документов, расположенных в табличном поле.
Для доступа к метаданным документа можно воспользоваться свойством Документы свойства глобального контекста Метаданные.
Создадим новую обработку, назовем ее РаботаСДокументами. Включим в подсистему Администрирование.
Добавим в обработку команду с именем ВывестиСписокВидовДокументов, зададим обработчик для этой команды, выведем ее на форму обработки.
Воспользуемся свойством глобального контекста Метаданные для того, чтобы вывести пользователю список синонимов существующих в конфигурации документов. Для подобных действий нам понадобится серверная процедура, которую мы вызовем из клиентской процедуры обработчика ранее созданной команды. Выполнить запланированное можно с помощью следующего кода:
&НаКлиенте
Процедура ВывестиСписокВидовДокументов(Команда)
ВывестиСинонимыДокументов();
КонецПроцедуры
Процедура ВывестиСинонимыДокументов()
Для каждого Документ из Метаданные.Документы Цикл
Сообщить(Документ.Синоним);
КонецЦикла;
КонецПроцедуры
Результат выполнения показан на рис. 7.13.
Рис. 7.13. Вывод списка синонимов документов
С помощью коллекции Метаданные (тип ОбъектМетаданныхКонфигурация) мы можем получить доступ к структуре конфигурации, в частности, к коллекции Документы (тип КоллекцияОбъектовМетаданных), состоящей из объектов типа ОбъектМетаданных: Документ. Обратившись к документу, как к объекту метаданных, мы можем узнать имя, синоним и другие метаданные.
Теперь рассмотрим следующую задачу. Нужно программно создать новый документ заданного вида, заполнить его некоторыми данными, сохранить в базе данных, приняв решение о том, проводить его или не проводить на основе анализа флага ПроводитьДокумент, который имеется на форме обработки, после чего открыть его форму для проверки пользователем.
Здесь нам понадобится начинать "поиски" нужного объекта от объекта ДокументыМенеджер. С его помощью мы можем получить объект ДокументМенеджер для нужного вида документов, и уже с помощью этого объекта мы сможем создать новый документ.
Добавим в нашу обработку новую команду –
СоздатьДокументПоступлениеМатериалов. Так же добавим новый реквизит – ПроводитьДокумент, поместим его на форму, рис. 7.14.
Мы зададим все данные, в том числе – и тип документа для создания – в коде.
Рис. 7.14. Модификация формы обработки
Решить поставленную задачу можно с помощью следующего кода:
&НаКлиенте
Процедура СоздатьДокументПоступлениеМатериалов(Команда)
//Настраиваем режим записи нового документа
РежимЗаписи=РежимЗаписиДокумента.Запись;
Если ПроводитьДокумент Тогда
РежимЗаписи=РежимЗаписиДокумента.Проведение;
КонецЕсли;
//В функции будет создан новый документ
//Она возвратит ссылку на него
Документ=СоздатьДокумент(РежимЗаписи);
//Открываем форму документа
ОткрытьЗначение(Документ);
КонецПроцедуры
Функция СоздатьДокумент(РежимЗаписи)
//Создаем новый документ
Документ = Документы.ПоступлениеМатериалов.СоздатьДокумент();
//Заполняем его реквизиты
Документ.Дата=ТекущаяДата();
Документ.ОтветственныйСотрудник=Справочники.Сотрудники.НайтиПоКоду("000000003");
Документ.Контрагент=Справочники.Контрагенты.НайтиПоРеквизиту("КонтактныеСведения", "ул. Береговая, д. 2, телефон 3-34-34");
Документ.Комментарий="Документ создан автоматически";
//Заполняем строку табличной части
НоваяСтрокаТЧ=Документ.Материалы.Добавить();
НоваяСтрокаТЧ.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию("Духи");
НоваяСтрокаТЧ.Количество=10;
НоваяСтрокаТЧ.Цена=200;
НоваяСтрокаТЧ.Сумма=10*200;
//Записываем документ
Документ.Записать(РежимЗаписи);
//Возвращаем ссылку на документ
Возврат(Документ.Ссылка);
КонецФункции
Проведение документа, либо его запись, либо – отмена проведения – производятся с помощью метода документа Записать(). Этот метод принимает параметр, который и отвечает за то, что будет произведено при записи документа. В начале клиентской процедуры СоздатьДокументПоступлениеМатериалов мы анализируем флаг ПроводитьДокумент, предварительно установив переменную РежимЗаписи в значение РежимЗаписиДокумента.Запись. Если флаг установлен – то есть мы хотим не только записать, но и провести документ, значение переменной меняется на РежимЗаписиДокумента.Проведение.
При вызове функции СоздатьДокумент(), мы планируем воспользоваться возвращенной ей ссылкой на созданный документ для открытия его формы с помощью метода ОткрытьЗначение().
Функция СоздатьДокумент принимает один параметр – РежимЗаписи, который мы используем после создания документа для задания режима его записи.
В переменной Документ, после работы метода СоздатьДокумент(), мы имеем объект типа ДокументОбъект, новый чистый документ, с которым можем работать. Мы заполняем дату с помощью функции ТекущаяДата(). Заполняя реквизиты мы пользуемся различными методами поиска данных в справочнике. Метод НайтиПоКоду() позволяет найти элемент справочника по заданному коду, НайтиПоРеквизиту() ищет по значению заданного реквизита. Оба эти метода возвращают нам ссылку на элемент справочника.
В реквизит Комментарий мы записываем строку.
Следующим этапом работы с документом становится заполнение его табличной части. Мы выполняем заполнение построчно, добавляя в табличную часть строку – она представлена в коде переменной НоваяСтрокаТЧ с типом Строка табличной части. Когда строка добавлена, мы обращаемся к ее реквизитам, заполняя их данными.
После того, как документ сформирован, мы записываем его (или – и записываем и проводим – в зависимости от значения параметра РежимЗаписи) и возвращаем ссылку на него в точку вызова функции СоздатьДокумент.
Форма документа, созданного программно с помощью нашего кода, рис. 7.15.
Рис. 7.15. Документ, созданный автоматически
Решим теперь следующую задачу. Нужно пометить на удаление все документы типа ПоступлениемМатериалов, которые созданы автоматически – их реквизит Комментарий содержит текст "Документ создан автоматически".
Добавим в форму обработки новую команду, назовем ее ПометитьНаУдаление. Поставленную задачу можно реализовать с помощью следующего кода:
&НаКлиенте
Процедура ПометитьНаУдаление(Команда)
ПометитьДокументыНаУдаление();
Предупреждение("Были помечены на удаление документы поступления материалов");
КонецПроцедуры
Процедура ПометитьДокументыНаУдаление()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеМатериалов.Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов КАК ПоступлениеМатериалов
|ГДЕ
| ПоступлениеМатериалов.Комментарий = &Комментарий";
Запрос.УстановитьПараметр("Комментарий", "Документ создан автоматически");
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Документ=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Документ.УстановитьПометкуУдаления(Истина);
КонецЦикла;
КонецПроцедуры
Здесь мы, в серверной процедуре ПометитьДокументыНаУдаление(), получаем с помощью запроса список ссылок на документы, реквизит Комментарий которых равен нужному нам значению. После этого в цикле обхода выборки запроса переходим от ссылки на объект к объекту (тип ДокументОбъект) и устанавливаем у объектов пометки удаления.
При завершении серверной процедуры, мы, на клиенте, показываем пользователю окно сообщения, рис. 7.16.
Рис. 7.16. Сообщение пользователю о пометке документов на удаление
Нашей следующей задачей будет вывод пользователю списка документов за заданный пользователем период. Добавим в форму обработки команду ВыводСпискаДокументовЗаПериод и два реквизита – ДатаНачала и ДатаОкончания – тип Дата, состав даты – Дата и время. Дата документа содержит сведения о дате и времени создания документа, поэтому для выбора периода, в который должны попасть искомые документы, нам понадобятся значения даты с датой и временем.
Решение задачи может выглядеть так:
&НаКлиенте
Процедура ВыводСпискаДокументовЗаПериод(Команда)
Сообщить("Обнаружены следующие документы за период с "+ДатаНачала+" по "+ДатаОкончания);
ВыводСписка();
КонецПроцедуры
Процедура ВыводСписка()
Выборка=Документы.ПоступлениеМатериалов.Выбрать(ДатаНачала, ДатаОкончания);
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
КонецЦикла
КонецПроцедуры
Здесь мы пользуемся методом Выбрать с параметрами, устанавливающими дату начала и дату окончания для выборки документов. Полученную выборку перебираем в цикле и сообщаем пользователю о найденных документах, рис. 7.17.
Рис. 7.17. Вывод списка документов, принадлежащих периоду, заданному пользователем
