- •Вопрос 4 Конфигуратор. Структура дерева метаданных.
- •Вопрос 5 Конфигуратор. Администрирование.
- •Вопрос 6
- •Вопрос 7 Редактор печатных форм (макетов)
- •Вопрос 10 Глобальный модуль. Общие таблицы
- •Вопрос 12 Работа с реквизитами справочника
- •Вопрос 9 Синтаксис языка
- •Вопрос 13 Иерархические и подчиненные справочники. Формы элемента, группы, списка. Подбор из справочника.
- •Вопрос 14 Создание документов. Структура документа. Реквизиты шапки и табличной части.
- •Вопрос 18 Регистры остатков
- •Вопрос 26
- •7 Вывод секций
- •Вопрос 20 Виды субконто
- •28 Конструкторы 1с. Использование конструкторов для создания типовых элементов конфигурации
- •29 Журналы документов Типы журналов. Графы журнала
- •30 Отчеты и обработки Внешние отчеты и обработки
- •Вопрос 1 Базовая концепция и основные функциональные компоненты комплекса «1с:Предприятие юПредприятие является универсальной системой автоматизации деятельности предприятия.
- •38 Структура справочника. Свойства реквизитов справочника. Формы справочника. Предопределенные процедуры справочников
- •Работа с реквизитами справочника
- •Создание форм справочника
- •39 Свойства документа Свойства реквизитов. Предопределенные процедуры документов
- •Разработка структуры документа
- •Общие реквизиты
- •29. Журналы документов. Типы журналов. Графы журнала
- •Редактирование графы журнала документов
- •30 Отчеты и обработки. Внешние отчеты и обработки
- •21 Планы счетов Бухгалтерские итоги
- •20 Виды субконто
- •20. Операции и проводки
- •Формирование операции документом
- •17 18 Регистры
- •25 Процедуры работы с транзакциями
- •Контекст работы с запросами
- •Структура запросов и методика их использования
- •27 Работа с базами данных формата dbf Основные понятия
- •Поля и записи
- •Индексы, выражения индекса и фильтра
- •Работа с индексными файлами
- •Удаление записей
- •Создание базы данных, индекса, индексного файла
- •Ограничения
- •Контекст работы с xBase
- •Выражение и фильтр индекса
Вопрос 18 Регистры остатков
Для того чтобы оперативно получать информацию о взаимной задолженности предприятия и покупателя, потребуется регистр «Взаиморасчеты», в котором для каждого покупателя будет храниться сумма задолженности. При совершении хозяйственной операции состояние регистра будет соответствующим образом изменяться, каждый раз отражая текущее состояние взаиморасчетов. Регистр «Взаиморасчеты» — это регистр остатков.
Оборотные регистры
Однако, легко получить информацию об объеме закупок, совершенных данным покупателем за какой-либо период времени, из регистра «Взаиморасчеты» нельзя. Можно проанализировать все движения, имеющие отношение к данному покупателю, и вычислить общую сумму закупок. Но, когда необходимо получать эти сведения оперативно (например, по условиям договора при достижении определенного объема закупок покупателю должна предоставляться скидка), такой способ, конечно же, не подходит.
В этом случае решением проблемы может быть использование регистра оборотов. В таком регистре — назовем его «Объем закупок» — в разрезе покупателей будет храниться информация об объеме закупок (об обороте покупателя). При создании регистра оборотов можно указывать, с какой периодичностью будет накапливаться информация: день, неделя, месяц и так далее.
Теперь, при совершении хозяйственных операций, необходимо будет изменять не только состояние регистра «Взаиморасчеты», но и регистр «Объем закупок». В этот регистр при совершении клиентом каждой покупки будет заноситься информация о сумме покупки. В результате в регистре «Объем закупок» будет постоянно накапливаться информация об общем объеме закупок клиента.
19 Создание запросов. Структура запроса. Источники данных для запросов. Методы запросов.
Запрос -- это обращение к системе 1С с просьбой выбрать определенные данные из базы данных. Например, с помощью запроса можно быстро организовать выбор всех сотрудников с определенной должностью. Для организации запроса необходимо выполнить следующие действия.
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "<текст запроса на особом языке запросов>" Запрос.Выполнить(ТекстЗапроса);
//далее идет обработка результатов запроса
Переменные в запросе С помощью переменных запроса происходит обращение к требуемым данным. Переменные запроса чаще всего ссылаются на справочники и документы. Кроме того можно ссылаться на журналы расчетов, регистры, бухгалтерские счета.
|ФИО = Справочник.Сотрудники.Наименование; |Долж = Справочник.Сотрудники.Должность; |ДатаПриема = Справочник.Сотрудники.ДатаПриема; |ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения; |";
Условие отбора Часто требуется ограничить выборку только нужными значениями. Например, этот запрос выбирает всех сотрудников с определенной должностью.
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Сотр = Справочник.Сотрудники.ТекущийЭлемент; |КодДолж = Справочник.Сотрудники.Должность.Код; |Группировка Сотр упорядочить по Сотр.Наименование; |Условие (КодДолж = 7); |"; Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка("Долж")=1 Цикл ............Сообщить(Запрос.Сотр); КонецЦикла;
23 Список значений. Таблица значений.
Создание таблицы значений Таблица значений - это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Таблица значений часто применяется при программировании на 1С, потому что имеет множество полезных возможностей и работает очень быстро. Таблица значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
ТабЗнач = СоздатьОбъект("ТаблицаЗначений");
ТабЗнач.НоваяКолонка("Номер"); ТабЗнач.НоваяКолонка("Сотрудник"); ТабЗнач.НоваяКолонка("Должность"); ТабЗнач.НоваяКолонка("Оклад");
//можно указать тип данных каждой колонки //если тип данных колонки не указан, то можно хранить данные любого типа Синтаксис: НоваяКолонка(<Идентификатор>, <Тип>, <Длина>, <Точность>, <Заголовок>, <Ширина>, <Формат>, <Положение>) ТабЗнач.НоваяКолонка("Номер","Число",10,0); ТабЗнач.НоваяКолонка("Сотрудник","Справочник.Сотрудники"); ТабЗнач.НоваяКолонка("Должность","Справочник.Должности"); ТабЗнач.НоваяКолонка("Оклад","Число",10,2);
Добавление строк в таблицу значений
ТабЗнач.НоваяСтрока(); ТабЗнач.Номер = 1; ТабЗнач.Сотрудник = "Иванов Иван Иванович"; //следите за типом колонки! ТабЗнач.Должность = "Программист"; ТабЗнач.Оклад = 20000;
ТабЗнач.НоваяСтрока(); ТабЗнач.Номер = 2; ТабЗнач.Сотрудник = "Петров Петр Петрович"; ТабЗнач.Должность = "Бухгалтер"; ТабЗнач.Оклад = 10000;
//обычно строки добавляются в цикле СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ВыбратьЭлементы(); Пока СпрСотр.ПолучитьЭлемент()=1 Цикл .....ТабЗнач.НоваяСтрока(); .....ТабЗнач.Номер = СпрСотр.Код; .....ТабЗнач.Сотрудник = СпрСотр.ТекущийЭлемент(); //следите за типом колонки! .....ТабЗнач.Должность = СпрСотр.Должность; .....ТабЗнач.Оклад = СпрСотр.Оклад; КонецЦикла;
Сортировка таблицы значений
//сортировать по должности по возрастанию ТабЗнач.Сортировать("Должность+");
//сортировать по должности по возрастанию, а внутри должности по убыванию оклада ТабЗнач.Сортировать("Должность+,Оклад-");
Поиск в таблице значений
Синтаксис: НайтиЗначение(<Знач>,<Строка>,<Колонка>) Возвращает число: 0 - значение не найдено; 1 - значение найдено Если указан параметр <Строка>, то поиск производится только по заданной строке Если указан параметр <Колонка>, то поиск производится только по заданной колонке
номстр = 0; Если ТабЗнач.НайтиЗначение (10000, номстр, "Оклад") = 1 Тогда ...ТабЗнач.ПолучитьСтрокуПоНомеру(номстр); ...Сообщить(ТабЗнач.Сотрудник); КонецЕсли;
Итоги и группировка таблицы значений
//получить итог по колонке можно методом Итог ВсеОклады = ТабЗнач.Итог("Оклад")
//часто требуется группировать строки и подсчитывать итоги по группам, //в этом случае применяется метод Свернуть
Синтаксис: Свернуть(<ГруппКолонки>,<СуммКолонки>) //проссумировать оклады по каждой должности ТабЗнач.Свернуть("Должность","Оклад"); //Можно группировать и суммировать сразу по нескольким колонкам ТабЗнач.Свернуть("Категория, Должность","Оклад,Налог");
Удаление строк и колонок из таблицы значений
ТабЗнач.Очистить(); //очистить таблицу значений и удалить колонки
ТабЗнач.УдалитьСтроки(); //удаляет все строки (колонки сохраняются)
ТабЗнач.УдалитьСтроку(); //удаляет текущую строку ТабЗнач.УдалитьСтроку(3); //удаляет 3-ю строку ТабЗнач.УдалитьКолонку("Оклад"); //удаляет колонку Оклад ТабЗнач.УдалитьКолонку(2); //удаляет 2-ю колонку Таблица значений как элемент диалога Таблица значений может использоваться в экранных формах как элемент диалога с пользователем.
//установить курсор на указанную колонку или можно узнать, где находится курсор ТабЗнач.ТекущаяКолонка(НоваяКолонка,ТекКолонка); //установить курсор на указанную строку или можно узнать, где находится курсор. ТекСтрока = ТабЗнач.ТекущаяСтрока(НовСтрока); ТабЗнач.ВидимостьКолонки("Оклад",0); //скрыть колонку Оклад ТабЗнач.ВидимостьКолонки("Должность, Сотрудник",1); //показать колонки Должность и Сотрудник ТабЗнач.ВидимостьКолонки("Оклад",1,1); //показать колонку Оклад в 1-й позиции //можно зафиксировать верхние строки и левые колонки для удобства прокрутки таблицы значений в диалоге ТабЗнач.Фиксировать(КолСтрок,КолКолонок);
Методы УстановитьЗначение и ПолучитьЗначение Эти методы позволяют обращаться к данным в таблице значений для чтения и записи. Они могут пригодиться в особых случаях при написании универсальных программ (мастеры отчетов и т.д.).
Синтаксис: УстановитьЗначение(<Строка>,<Колонка>,<Знач>) Синтаксис: ПолучитьЗначение(<Строка>,<Колонка>)
ТабЗнач.НоваяСтрока(); ТабЗнач.УстановитьЗначение(1,"Номер",100); ТабЗнач.УстановитьЗначение(1,"Сотрудник","Иванов Иван Иванович"); ТабЗнач.УстановитьЗначение(1,3,10000); //обращение к 1-й строке и 3-й колонке ("Оклад")
Номер = ТабЗнач.ПолучитьЗначение(1,"Номер"); ФИО = ТабЗнач.ПолучитьЗначение(1,"Сотрудник"); Оклад = ТабЗнач.ПолучитьЗначение(1,3); //обращение к 1-й строке и 3-й колонке "Оклад"
Выгрузка таблицы значений
Синтаксис: Выгрузить(<Знач>,<НачСтрока>,<КонСтрока>,<Колонки>)
//выгрузить 10 сотрудников с наибольшими окладами в новую таблицу значений ТабЗнач.Сортировать("Оклад-"); ТабЗнач.Выгрузить(НоваяТабЗнач,1,10,"Сотрудник,Оклад");
Создание объекта СписокЗначений
Список значений - это аналог одномерного массива в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Объект "Список значений" имеет множество полезных возможностей и работает очень быстро. Следует учитывать, что в языке 1С есть и одномерные массивы в том смысле, как это принято в других языках программирования (Перем мас[10]). Список значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
СписокЗнач = СоздатьОбъект("СписокЗначений");
Добавление значений в список
Синтаксис: ДобавитьЗначение(<значение>,[<представление>]);
//у каждого значения в СпискеЗначений есть экранное представление //если оно не указано, то используется стандартное строковое представление объекта
СписокЗнач.ДобавитьЗначение("Иванов Иван Иванович"); СписокЗнач.ДобавитьЗначение(Сотрудник); СписокЗнач.ДобавитьЗначение(1,"Значение №1");
СписокЗнач.УстановитьЗначение(3,3,"Значение №3"); //установить новое значение и представление 3-й позиции
Перебор списка значений
стр = ""; Для Номер = 1 По СписокЗнач.РазмерСписка() Цикл ...значение = СписокЗнач.ПолучитьЗначение(Номер, стр); //получить значение и представление ...Сообщить(значение + ", " + стр); КонецЦикла;
Сортировка списка значений
//сортировать по значению СписокЗнач.Сортировать(); //по возрастанию СписокЗнач.Сортировать(1); //по убыванию //сортировать по представлению СписокЗнач.СортироватьПоПредставлению(); //по возрастанию СписокЗнач.СортироватьПоПредставлению(1); //по убыванию
Поиск значения в списке
//поиск по значению Синтаксис: НайтиЗначение(<Знач>) Возвращает номер позиции списка, в которой найдено значение или 0, если не найдено
номстр = СписокЗнач.НайтиЗначение (Сотрудник);
//проверка вхождения значения в список //работает очень быстро, если между проверками список не изменяется. //если передается элемент справочника, а в списке хранятся группы справочника //тогда проверяется вхождение элемента справочника в группу Если СписокЗнач.Принадлежит(Сотрудник)=1 Тогда ....<действия> КонецЕсли;
Удаление значений из списка
СписокЗнач.УдалитьВсе(); //очистить список значений
//удаляет значения из указанной позиции СписокЗнач.УдалитьЗначение(откуда, [сколько]);
Список значений как элемент диалога Список значений может использоваться в экранных формах как элемент диалога с пользователем.
//установить курсор на указанную строку или можно узнать, где находится курсор. ТекСтрока = СписокЗнач.ТекущаяСтрока(НовСтрока);
//список значений в диалоге может иметь пометки (флажки)
пометка = СписокЗнач.Пометка(Позиция); //прочитать пометку у значения списка СписокЗнач.Пометка(Позиция,1); //установить пометку у значения списка СписокЗнач.Пометка(Позиция,0); //снять пометку у значения списка
Выгрузка и загрузка списка значений
//выгрузка в другой список значений или таблицу значений Синтаксис: Выгрузить(<Знач>,<НачПоз>,<Колич>) СписокЗнач.Выгрузить(НовыйСписок,1,10); //выгрузить первые 10 значений //выгрузка списка значений в строку с разделителями стр = СписокЗнач.ВСтрокуСРазделителями(); //возвращает строку: 10,12,"Иванов","Петров"
//загрузка списка значений из строки с разделителями //обратите внимание на двойные кавычки для строковых значений СписокЗнач.ИзСтрокиСРазделителями("10,12,""Иванов"",""Петров""");