- Четырнадцать.
Эти процедуры и функции часто применяются при программировании на 1С, поэтому знать их обязательно!
Процедура / Функция |
|
Примечание
|
ОкончатЦена = Окр(Цена*0.5, 2);
|
Округление.
|
Рублей = Цел(Цена);
|
Получить целую часть числа.
|
ОблНал = Макс(ОблНал-Льготы,0);
МинЗнач = Мин(значение1,значение2,значение3);
|
Получить минимальное или максимальное из значений. Можно передавать несколько параметров (больше двух)
|
Длина = СтрДлина("Иванов Иван Иванович");
|
Получить длину строки.
|
ФИО = СокрЛ(ФИО); //убрать пробелы слева
ФИО = СокрП(ФИО); //убрать пробелы справа
ФИО = СокрЛП(ФИО); //убрать пробелы слева и справа
Отсечение пробелов. |
|
АБ = Лев("АБВГДЕ",2);
ГДЕ = Прав("АБВГДЕ",3);
БВГ = Сред("АБВГДЕ",2,3);
|
Вырезание подстроки слева, справа и из середины.
|
НомерСимвола = Найти(ФИО, " "); //найти позицию первого пробела
Поиск вхождения подстроки в строку. |
|
НоваяСтрока = СтрЗаменить(ПрежняяСтрока," ", "_");
Замена одной подстроки на другую. |
|
ФИОЗаглавнымиБуквами = ВРЕГ(ФИО)
ФИОстрочнымиБуквами = нрег(ФИО)
Изменение регистра букв. |
СегодняВ1С = РабочаяДата(); //дата в параметрах 1С |
СегодняВСистеме = ТекущаяДата(); //дата в операционной системе
СейчасВСистеме = ТекущееВремя();
Получить текущую дату и время. |
НачалоМесяца = НачМесяца(НекаяДата); |
КонецМесяца = КонМесяца(НекаяДата);
НачалоГода = НачГода(НекаяДата);
КонецГода = КонГода(НекаяДата);
Получение начала/конца месяца/года по некой дате. |
Год = ДатаГод(ДатаРождения); |
Месяц = ДатаМесяц(ДатаРождения);
Число = ДатаЧисло(ДатаРождения);
Выделить из даты год, месяц и число. |
ДатаЧерезДваМесяца = ДобавитьМесяц(НекаяДата,2); |
Прибавление к дате нескольких месяцев. Если число отрицательное, то отсчет ведется назад. |
ПериодСтрокой = ПериодСтр(Дата1, Дата2); |
Строковое представление периода, например "Январь 2002". |
НекаяДата = Дата("01.01.2002"); |
Сообщение = "Месяц " + Строка(НомерМесяца);
НекоеЧисло = Число("5");
Преобразование типов. |
СуммаСКопейками = Формат(Сумма,"Ч10.2-"); |
Форматирование чисел, сумм и дат. Очень много вариантов форматирования! |
СуммаПрописью = Пропись(Сумма); |
Сумма прописью. Часто применяется в денежных документах. |
Если Вопрос("Вы уверены?","Да+Нет")="Да" Тогда |
Вопрос пользователю. Можно спросить "Да+Нет", "Повтор+Отмена" и т.д. |
Предупреждение("Случилась ошибка!"); |
Сообщениию пользователю в виде окошка. Программа приостанавливается, пока пользователь не нажмет ОК. |
Сообщить("Документ проведен!"); |
Сообщение пользователю в окно сообщений. Программа работает дальше. |
Состояние("Выполнено на " + Строка(Проценты) + "%"); |
Сообщение пользователю в строку статуса. |
глТекущийПользователь = ИмяПользователя(); |
Получить имя текущего пользователя. |
Права = НазваниеНабораПрав(); |
Получить название набора прав текущего пользователя. |
ТекКаталогБазы = КаталогИБ(); |
Получить каталог, где находится информационная база. |
|
НачатьТранзакцию();
Если <условие ошибки> Тогда
............ОтменитьТранзакцию();
КонецЕсли;
ЗафиксироватьТранзакцию();
|
Обработка транзакций. Транзакция - это совокупность действий, которая выполняется или вся целиком, или не выполняется ни одно из действий. Т.е. это единый блок действий, который или выполнен целиком, или не выполнен совсем. Транзакции необходимы для сохранения целостности базы данных.
СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); |
Возвращает ссылку на объект. |
Если ТипЗначенияСтр(Параметр)="Справочник" Тогда |
Определяет тип значения. |
<
Слои и закладки на форме
Форма может состоять из нескольких слоев. Каждый слой может быть показан или скрыт в любой комбинации с другими слоями.
Синтаксис: Форма.ИспользоватьСлой(<ИмяСлоя>,[<Режим>])
//показать слой Основной
Форма.ИспользоватьСлой("Основной",1);
//скрыть слой Основной
Форма.ИспользоватьСлой("Основной",0);
//показать слой Основной и скрыть все остальные
Форма.ИспользоватьСлой("Основной",2);
//показать слой Основной и Фон и скрыть все остальные
Форма.ИспользоватьСлой("Основной,Фон",2);
//закладки на форме реализуются с помощью слоев
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1, "Закладка 1");
Форма.Закладки.ДобавитьЗначение(2, "Закладка 2");
Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)
....Если НомерЗакладки = 1 Тогда
......Форма.ИспользоватьСлой("Фон,Шаг1");
...Иначе
......Форма.ИспользоватьСлой("Фон,Шаг2");
...КонецЕсли;
КонецПроцедуры
Снятие заказа
Документ предназначен для отмены ранее сделанных заказов. Можно уменьшить количество заказанного ранее товара. Экранная форма документа выглядит следующим образом:
Пользователь указывает клиента, при этом автоматически заполняется табличная часть документа текущими заказами по данному клиенту. Пользователь указывает нужное количество товара в колонке "Снять".
При проведении документа производятся движения в регистре Заказы:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Количество > 0 Тогда
Регистр.Заказы.Товар = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Заказ = Заказ;
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Количество = Количество;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеРасходВыполнить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Учебник по 1С
|
Введение
Основы 1С
Простейший кадровый учет
Конфигуратор
Синтаксис языка 1С
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Текст
XBASE (файл DBF)
Файловая система
Диаграммы
Формы
Системные процедуры и функции
Предопределенные процедуры
Конструкторы
Сортировка
В форме списка справочника элементы могут быть отсортированы в различном порядке: по коду, по наименованию или по любому реквизиту, у которого в Конфигураторе установлен флажок Сортировка. Задать тип сортировки можно программно методом Сортировка (Способ, ФлагРазрешенияИзменения)
Процедура ПриОткрытии()
...... Сортировка("Код",0); //сортировка по коду, пользователь изменить не может
КонецПроцедуры
Сортировка списка значений
//сортировать по значению
СписокЗнач.Сортировать(); //по возрастанию
СписокЗнач.Сортировать(1); //по убыванию
//сортировать по представлению
СписокЗнач.СортироватьПоПредставлению(); //по возрастанию
СписокЗнач.СортироватьПоПредставлению(1); //по убыванию
Сортировка таблицы значений
//сортировать по должности по возрастанию
ТабЗнач.Сортировать("Должность+");
//сортировать по должности по возрастанию, а внутри должности по убыванию оклада
ТабЗнач.Сортировать("Должность+,Оклад-");
Состав документа
С точки зрения программиста, у документа есть экранная форма -- Диалог. Именно его видит пользователь на экране. Также у документа обычно есть одна или несколько бумажных форм -- Таблиц. С помощью Таблиц документ печатается на бумаге. Поведение документа определяется с помощью встроенного языка1С. На языке записывается, что документ делает в системе, как он формирует бумажный бланк и как он себя ведет на экране.
Документ обычно имеет печатную форму. Печатная форма полностью формируется средствами встроенного языка 1С, что придает большую гибкость программе. Это одна из причин ошеломляющего успеха системы 1С:Предприятие. Печатная форма документа - это фактически отчет, формируемый обычно из формы открытого документа и содержащий сведения из этого документа. Чтобы научиться формировать печатные формы, вам нужно изучить главу Отчеты (объект "Таблица").
У документа может быть несколько шаблонов печатных форм. Средствами встроенного языка (метод ИсходнаяТаблица) задается тот шаблон печатной формы, который будет использоваться.
Шаблоны печатных форм (таблицы) могут быть общие. Это дает возможность использовать один шаблон для печати нескольких видов документов. Т.е. общая таблица является глобальной для конфигурации и может быть использована в любом модуле. Примером из типовой конфигурации может являться шаблон печатной формы "Отчет о движении документа", который используется разными модулями конфигурации
Состав отчета
У любого отчета в системе 1С есть экранная форма -- Диалог, который пользователь видит на экране. В диалоге пользователь обычно задает параметры формирования отчета, например, период времени. Также у отчета обычно есть одна или несколько бумажных форм -- Таблиц. С помощью таблиц отчет печатается на бумаге. Алгоритм формирования отчета записывается в модуле отчета на встроенном языке 1С. Например, для кадрового отчета "Сотрудники, принятые за период" нужна экранная форма с двумя полями Содержание и Окончание. Оба поля будут иметь тип "дата". Модуль отчета должен выбрать из справочника Сотрудники нужных людей и вывести их в таблицу.
Создание диаграммы
Диаграмма вставляется в таблицу печатной формы с помощью пункта Вставить рисунок меню Таблица. Далее необходимо сделать следующие действия: определить тип диаграммы (гистограмма, график, круговая и т.п.), настроить внешний вид составных частей диаграммы, а затем описать процедуру "наполнения" данными при выводе печатной формы. Пройдемся поподробнее по каждому из этих действий.
Задание типа диаграммы
Для отображения разных наборов данных имеются более или менее удачные типы диаграмм. Задача программиста при конфигурировании определить тип будущей диаграммы, и задать его при форматировании области построения (контекстное меню области - закладка Тип диаграммы). Задав тип и закрыв окно форматирования, можно увидеть пример построенной диаграммы.
Настройка внешнего вида диаграммы
Для того чтобы включить режим форматирования областей диаграммы, необходимо выбрать пункт Изменить подменю Объект: 1С. V7. Диаграмма меню Действия (тое же пункт есть в контекстном меню диаграммы). Каждая из составных частей диаграммы в режиме редактирования имеет пункт контекстного меню Формат области … Настройка внешнего вида состоит из выбора заливки, рамки, цвета и шрифта текста и т.п. Там же можно определить, например, сетку для области построения. После завершения форматирования достаточно щелкнуть по любой ячейке таблицы, чтобы выключить режим форматирования.
Создание и запись нового элемента
Добавление в справочник новых элементов (записей).
СпрСотр.Новый();
СпрСотр.Наименование = "Иванов Иван Иванович";
СпрСотр.Оклад = 5000;
СпрСотр.Записать();
Создание объекта СписокЗначений
Список значений - это аналог одномерного массива в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Объект "Список значений" имеет множество полезных возможностей и работает очень быстро. Следует учитывать, что в языке 1С есть и одномерные массивы в том смысле, как это принято в других языках программирования (Перем мас[10]). Список значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
СписокЗнач = СоздатьОбъект("СписокЗначений");
Создание операции и проводок
При проведении документа, имеющего отношение к бухгалтерскому учету, процедура проведения должна заполнить атрибуты операции данного документа и сформировать проводки.
Процедура ОбработкаПроведения()
//заполнение атрибутов операции
Операция.СуммаОперации = Итог("Сумма");
Операция.Содержание = "Поступление материалов";
Операция.Журнал = "МТ"; //доп. реквизит операции
//для каждой строки документа сделаем проводку
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ПривязыватьСтроку(1); //проводки будут содержать номер строки документа
//создание проводки и заполнение атрибутов проводки
Операция.НоваяПроводка();
Операция.Дебет.Счет = СчетПоКоду("10.1");
Операция.Дебет.Склады = Склад; //1-й вариант обращения к субконто
Операция.Дебет.Субконто(ВидыСубконто.Материалы,Материал); //2-й вариант
Операция.Количество = Количество;
Операция.Кредит.Счет = СчетПоКоду("51");
Операция.Кредит.Субконто(1,РасчетныйСчет); //3-й вариант
Операция.Сумма = Сумма;
//у нас счет 10.1 валютный, поэтому
Операция.ВалСумма = Сумма*Курс;
Операция.Валюта = Валюта;
Операция.Филиал = Филиал; //разделитель учета (доп. реквизит проводки)
КонецЦикла;
Операция.Записать();
КонецПроцедуры
Итак, у операции есть следующие атрибуты:
Атрибут операции |
Описание |
ДатаОперации |
Атрибут ДатаОперации содержит дату бухгалтерской операции. Так как каждая бухгалтерская операция принадлежит документу (причем только одному, а операция введенная вручную также принадлежит специальному документу «Операция»), значение атрибута совпадает со значением атрибута ДатаДок документа, которому принедлежит операция. |
Содержание |
Атрибут Содержание служит для обращения к содержанию операции. Содержание операции представляет собой произвольную символьную строку. Например, "Поступление материалов". |
СуммаОперации |
Атрибут СуммаОперации служит для обращения к сумме операции. Сумма операции является положительным или отрицательным числом. Сумма операции предназначена лишь для иллюстрирования денежного выражения операции и не влияет на бухгалтерские итоги. |
Документ |
Атрибут Документ является атрибутом «только для чтения», то есть ему нельзя присваивать никакого значения. Он служит для обращения к документу, котрому принадлежит операция. Так, как любая операция принадлежит документу (операция введенная «вручную» принадлежит документу специального вида «Операция») доступ к некоторым свойствам операции, например, номеру возможен только посредством обращения к атрибуту Документ. |
Атрибут Документ предназначен только для доступа к атрибутам и реквизитам документа, которому принадлежит операция. Для получения значения типа «Документ» используется метод ТекущийДокумент.
Сумма |
Атрибут Сумма служит для обращения к сумме выбранной проводки (корреспонденции) операции. |
Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.
Валюта |
Атрибут Валюта служит для обращения к валюте выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется валютный учет. |
ВалСумма |
Атрибут ВалСумма служит для обращения к сумме в валюте выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется валютный учет. |
Количество |
Атрибут Количество служит для обращению к количеству выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется количественный учет. |
Дебет |
Дебет.Счет
Дебет.Субконто
|
Атрибут Дебет служит для обращения к дебетовой части текущей проводки (корреспонденции) операции. Данный атрибут возвращает агрегатный объект специального типа «Дебет», который используется только для доступа к данным дебетовой части конкретной проводки (корреспонденции) операции и не используется отдельно.
Атрибут Дебет.Счет служит для доступа к счету дебета/кредита проводки или корреспонденции операции.
Атрибут Дебет.Субконто служит для доступа к значению субконто дебета проводки (корреспонденции) операции. В конкретном случае обращение к субконто для дебета определяется счетом дебета, то есть заданными для него видами субконто по которым ведется аналитический учет по этому счету.
Разные варианты обращения к субконто см. выше в примере.
Кредит |
Кредит.Счет
Кредит.Субконто
Доступ к кредитовой части текущей проводки. Работает аналогично атрибуту Дебет. |
<реквизит_операции> |
Помимо реквизитов операции, задаваемых на системном уровне (СуммаОперации, Содержание), в процессе конфигурирования для операции можно создать дополнительные реквизиты для хранения любой необходимой информации. Для обращения к дополнительному реквизиту операции должен быть указан его идентификатор, заданный в конфигураторе. |
<реквизит_проводки> |
Помимо реквизитов проводки, задаваемых на системном уровне (Сумма, Валюта и других), в процессе конфигурирования для проводки можно создать практически неограниченное число дополнительных реквизитов для хранения любой необходимой информации.
Создание, сохранение и проведение документа
ДокПрием.Новый();
ДокПрием.ФИО = "Иванов Иван Иванович";
ДокПрием.Оклад = 5000;
ДокПрием.Записать();
//программное проведение документа
ДокПрием.Провести();
Создание таблицы значений
Таблица значений - это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Таблица значений часто применяется при программировании на 1С, потому что имеет множество полезных возможностей и работает очень быстро. Таблица значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
ТабЗнач = СоздатьОбъект("ТаблицаЗначений");
ТабЗнач.НоваяКолонка("Номер");
ТабЗнач.НоваяКолонка("Сотрудник");
ТабЗнач.НоваяКолонка("Должность");
ТабЗнач.НоваяКолонка("Оклад");
//можно указать тип данных каждой колонки
//если тип данных колонки не указан, то можно хранить данные любого типа
Синтаксис: НоваяКолонка(<Идентификатор>, <Тип>, <Длина>, <Точность>, <Заголовок>, <Ширина>, <Формат>, <Положение>)
ТабЗнач.НоваяКолонка("Номер","Число",10,0);
ТабЗнач.НоваяКолонка("Сотрудник","Справочник.Сотрудники");
ТабЗнач.НоваяКолонка("Должность","Справочник.Должности");
ТабЗнач.НоваяКолонка("Оклад","Число",10,2);
Создание, удаление и корректировка счетов
Обычно счета создаются вручную в режиме Конфигуратор или Предприятие. Но иногда может потребоваться программная корректировка списка счетов.
Счета = СоздатьОбъект("Счет.Основной");
Счета.Новый(1); //у счета будут субсчета
Счета.Код = "10";
Счета.Наименование = "Материалы";
Счета.Активный = 1; //активный
Счета.Записать();
Счета.Новый();
Счета.Код = "10.1";
Счета.Наименование = "Основные материалы";
Счета.ВидСубконто(1,ВидыСубконто.Материалы);
Счета.ВидСубконто(2,ВидыСубконто.Склады);
Счета.Записать();
Пример, изменить наименование счета:
Счета = СоздатьОбъект("Счет.Основной");
Счета.НайтиПоКоду("10");
Счета.Наименование = "Все материалы";
Счета.Записать();
Пример, пометить на удаление все счета, введенные пользователем в режиме "Предприятие". Оставить только счета, заданные разработчиком в Конфигураторе.
Счета = СоздатьОбъект("Счет.Основной");
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл
.....Если Счета.ЗаданВКонфигурации()=0 Тогда
.........Счета.Удалить(0); //пометить на удаление
.....КонецЕсли;
КонецЦикла;
Пример, отменить все пометки на удаление:
Счета = СоздатьОбъект("Счет.Основной");
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл
.....Если Счета.ПометкаУдаления()=1 Тогда
.........Счета.СнятьПометкуУдаления();
.....КонецЕсли;
КонецЦикла;
СПИСОК ЗНАЧЕНИЙ
|
Создание списка значений |
Добавление значений
Перебор
Сортировка
Поиск значения
Удаление значений
Список значений в диалоге
Выгрузка и загрузка
"Программирование" - как и "любовь" - одно слово, за которым скрывается бесконечное множество занятий. |
Список значений как элемент диалога
Список значений может использоваться в экранных формах как элемент диалога с пользователем.
//установить курсор на указанную строку или можно узнать, где находится курсор.
ТекСтрока = СписокЗнач.ТекущаяСтрока(НовСтрока);
//список значений в диалоге может иметь пометки (флажки)
пометка = СписокЗнач.Пометка(Позиция); //прочитать пометку у значения списка
СписокЗнач.Пометка(Позиция,1); //установить пометку у значения списка
СписокЗнач.Пометка(Позиция,0); //снять пометку у значения списка
Справочник "Черный список"
Данный справочник будет хранить список недругов каждого пользователя, от которых он не желает получать письма. При открытии справочника отражается список недругов текущего пользователя, работающего с программой.
Справочник имеет единственное дополнительное поле Недруг, значения которого выбирается из спр.Пользователи
Справочник Контрагенты
|
Работающие
Иванов Иванов Иванов
Петров Петр Петрович
Уволенные
Светлов Михаил Петрович
Цветков Антон Васильевич
|
Партнеры
Партнер 1
Партнер 2
Поставщики
Поставщик 1
Поставщик 2
Справочник "Кошельки"
Данный справочник будет содержать названия мест хранения денежных средств семьи.
Справочник "Пользователи"
Данный справочник будет содержать сведения о пользователях конфигурации. Фактически - это будет список почтовых ящиков. При входе в систему производится поиск логина в этом справочнике и если он не находится, то в справочник автоматически добавляется новый пользователь. Глобальная переменная ТекПользователь при начале работы системы получает значение из этого справочника, т.е. по этой переменной в любом модуле программы всегда можно узнать, какой пользователь работает с конфигурацией.
Данный справочник содержит следующие поля:
Код
Наименование (краткое имя, логин)
ПолноеИмя
Подпись (для подстановки в новые письма)
ЕстьПисьмо (флажок, который показывает, что пришла новая почта)
Справочник "Работодатели"
Данный справочник будет содержать сведения о фирмах и индвидуальных предпринимателях, которые предлагают свои вакансии. При нажатии на кнопку Вакансии показывается список вакансий данного работодателя.
Справочник "Резюме"
Данный справочник будет содержать резюме соискателей. У каждого соискателя может быть несколько резюме. При нажатии на кнопку "Поиск подходящих вакансий" программа просматривает список вакансий и выбирает из них те, которые подходят для данного резюме.
Справочник "Соискатели"
Данный справочник будет хранить сведения о соискателях, которые предлагают свои резюме. При нажатии на кнопку Вакансии показывается список резюме данного соискателя. У каждого соискателя может быть несколько резюме. Например, соискатель знает 1С и знает Photoshop, но указывать их в одном резюме - признак плохого тона. Себя надо позиционировать очень четко, потому что работодателей раздражают люди, которые знают все.
Справочник "Статьи доходов"
Данный справочник будет содержать названия источников дохода семейных средств.
Справочник "Статьи расходов"
Данный справочник будет содержать названия направлений расходования семейных средств. Это многоуровневый справочник.
Справочник "Участники"
Данный справочник будет содержать имена членов семьи и названия сторон, от имени которых производятся доходы и расходы, и кому принадлежат кошельки.
Справочник "Вакансии"
Данный справочник будет содержать сведения о вакансиях работодателей. У каждого работодателя может быть несколько различных вакансий. Некоторые поля можно не заполнять, например График работы, Образование, Пол. Это означает, что работодателя не интересует данная характеристика. При нажатии на кнопку "Поиск подходящих резюме" программа просматривает список резюме и выбирает из них те, которые подходят для данной вакансии.
Справочники
Обслуживаемая магазиномом территория делится на районы. При регистрации клиента указывается его название / ФИО, адрес, телефон и район, в котором он находится. В справочнике Курьеры перечислены фамилии курьеров или названия мобильных отрядов, осуществляющих доставку товаров покупателю. Справочник товары является иерархическим и содержит 3 уровня, т.е. товары могут быть объединены в группы. Для товара указывается цена, по которой он продается клиентам.
|
Назначение справочников
Основы программирования
Экранные формы
Создание и запись элемента
Перебор элементов
Поиск элемента
Удаление элементов
Иерархические справочники
Подчиненные справочники
Периодические реквизиты
Подбор из справочника
Другие полезные методы
Чтение структуры справочников
Психушка. Один придурок другому: |
-Тебе понравился мой рассказ, который я тебе вчера дал почитать?
-Да, но как-то всё размыто и много действующих лиц.
Входит врач:
-Так, придурки, кто спёр мою телефонную книгу?...
|
Сравнение справочников с другими объектами
Объект |
Сходства |
Различия |
Константы |
хранит значение, сохраняется в базе данных |
Справочник хранит не одно значение, а целый список однородных объектов. |
Документы |
сохраняется в базе данных, имеет реквизиты, документы могут быть подчиненными друг другу |
Справочник хранит нормативно-справочную информацию, а документы отражают события реального мира. Обычно значения реквизитов документов выбираются из справочников. Документ обычно проводится, документ обязательно имеет дату и время, документ может содержать табличную часть, чего нет в справочниках. Справочники могут быть многоуровневыми, в справочнике могут быть периодические реквизиты, чего нет в документах. |
Перечисления |
хранится в БД, хранит список значений |
Множество значений в справочник вводит пользователь в режиме Предприятие, а для перечислений список значений задается разработчиком в режиме Конфигуратор. Перечисления обычно используются в операторах Если. |
ТаблицаЗначений |
имеет строки и колонки (не хранится в БД) |
ТаблицаЗначений предназначена для хранения промежуточных данных в памяти компьютера, возникающих во время работы программы. Таблица значений может хранить разнородные объекты, а в справочнике все элементы одного типа. Таблицы значений не могут быть многоуровневыми или подчиненными друг другу. |
СписокЗначений |
хранит список значений (не сохраняется в БД) |
Список значений может хранить разнородные объекты, а в справочнике все элементы одного типа |
|
Ссылка на документ
Для работы с документом из какого-нибудь модуля требуется сначала создать ссылку на этот документ.
ДокПрием = СоздатьОбъект("Документ.ПриемНаРаботу");
ДокУвольн = СоздатьОбъект("Документ.ПриказОбУвольнении");
Ссылка на календарь
1-й вариант:
Календ = СоздатьОбъект("Календарь.Служащие");
2-й вариант:
Календ = Календари.Служащие;
Ссылка на объект Таблица
Для работы с таблицей требуется сначала создать ссылку на объект Таблица. Если таблица не одна, то следует указать нужную таблицу.
Таб = СоздатьОбъект("Таблица");
или
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("НужныйОтчет");
<вывод секций таблицы>
Таб.Показать(); //показать таблицу на экране
Ссылка на справочник
Для работы со справочником из какого-нибудь модуля требуется сначала создать ссылку на этот справочник.
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрДолж = СоздатьОбъект("Справочник.Должности");
Ссылка на вид расчета
1-й вариант:
ВР = ВидРасчета.НаРуки;
ВР = ВидРасчета.Премия;
2-й вариант:
ВР = ВидРасчета.ПолучитьАтрибут("НаРуки");
Пример, определим сумму "по окладу" текущего сотрудника:
ПоОкладу = 0;
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ЖЗ. ВыбратьПериодПоОбъекту(ТекСотр, ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
....Если ЖЗ.ВидРасч = ВидРасчета.ПоОкладу Тогда
.........ПоОкладу = ПоОкладу + ЖЗ.Результат;
....КонецЕсли;
КонецЦикла;
Ссылка на журнал расчетов
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
Статический фильтр
В 1С нельзя установить отбор по периодическому реквизиту или по нескольким реквизитам одновременно (сложный фильтр). В этом случае выходом из положения может быть метод ИспользоватьСписокЭлементов. Этому методу нужно передать список элементов, которые должны быть показаны. Предварительно этот список нужно сформировать.
Процедура ПоказатьРаботающихПлотников()
СписокЭлементов = создатьОбъект("СписокЗначений");
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.....Если (СпрСотр.Родитель = группаРаботающие) И (СпрСотр.Должность=длжПлотник) Тогда
...........СписокЭлементов.ДобавитьЗначение(СпрСотр.ТекущийЭлемент());
.....КонецЕсли;
КонецЦикла;
ИспользоватьСписокЭлементов(СписокЭлементов);
КонецПроцедуры
СтатусВозврата
Если в предопределенной процедуре вызвать команду СтатусВозврата(0), то действие не будет выполнено, например, документ не будет записан или форма не откроется. Следует помнить, что после вызова СтатусВозврата(0), предопределенная процедура продолжает свое выполнение. Чтобы выйти из процедуры, используйте команду Возврат.
|
hotlog_js="1.0";hotlog_d=document; hotlog_n=navigator;hotlog_rn=Math.random(); hotlog_n_n=(hotlog_n.appName.substring(0,3)=="Mic")?0:1 hotlog_r=""+hotlog_rn+"&s=2871&r="+escape(hotlog_d.referrer)+"&pg="+ escape(window.location.href) hotlog_d.cookie="hotlog=1"; hotlog_r+="&c="+(hotlog_d.cookie?"Y":"N"); hotlog_d.cookie="hotlog=1; expires=Thu, 01-Jan-70 00:00:01 GMT"
hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N")
hotlog_js="1.2";hotlog_s=screen; hotlog_r+="&wh="+hotlog_s.width+'x'+hotlog_s.height+"&px="+((hotlog_n_n==0)? hotlog_s.colorDepth:hotlog_s.pixelDepth)
hotlog_js="1.3"
hotlog_r+="&js="+hotlog_js; hotlog_d.write(" ")
ТАБЛИЦА ЗНАЧЕНИЙ
Создание таблицы значений |
Добавление строк
Перебор строк
Сортировка
Поиск значения
Итоги и группировка
Удаление строк и колонок
Таблица значений в диалоге
Специальные методы
Выгрузка таблицы значений
Работа программиста и шамана имеет очень много общего: каждый бормочет непонятные слова и не может объяснить почему это все работает. |
| |