// "Номенклатура", которой будет принадлежать эта единица измерения
Коэффициент=1;
Код=Строка(Ед);
КонецПроцедуры
В 1С ссылки на реквизиты таблиц имеют такой же вид как и ссылки на атрибуты и методы объектов (через "."), а не как в VBA, где используется "!";
Для закрепления информации о ссылке "Владелец" внесем текстовое поле, которое в форме элемента будет нам выводить код и наименование товара-владельца:
В диалоге вставим из меню Вставить командой "Текст" текстовое поле;
В окошке свойств этого текста очистим поле "Заголовок";
На закладке "Дополнительно" введем формулу "("+СокрЛП(Владелец.Код)+") "+СокрЛП(Владелец.Наименование)
Здесь СокрЛП() - это функция, которая удаляет пробелы в конце и в начале текстовой строки, "(" - текстовое выражение в коде в 1С заключают в кавычки, + в 1С служит и знаком конкатенации текстовых выражений;
На закладке "Шрифт" выберем какой нибудь шрифт и оформление по нашему вкусу;
Нажмем [ОК];
Разместим это текстовое поле где ни будь сверху формы;
Скопируем это текстовое поле в буфер обмена;
Форма элемента готова. Закроем ее;
Создадим форму списка;
Растянем поля пошире, чтоб заголовки полей были видны полностью, и вставим наверх из буфера обмена текстовое поле;
Форму списка можно закрыть;
Сохраняем изменения и входим в 1С:Предприятие;
Войдем в справочник номенклатуры;
Найдем "Кефир" и установим на него курсор;
Из меню Действия командой "Подчиненный справочник" вызовем справочник "Единицы". Если бы у нас было несколько справочников подчиненных справочнику товаров, то нам пришлось бы выбирать из списка;
Введем новый элемент. Это будет элемент с базовой единицей. Ничего изменять не будем и сохраним его;
Теперь введем еще один элемент - с производной единицей измерения;
Единица Ц ящик (ящ.), коэффициент - 15;
В списке единиц у нас две записи;
Переключимся в справочник товаров и установим курсор на яблоках;
Возвращаемся в справочник единиц - он пуст. Две единицы, что мы только что ввели относятся к кефиру, соответственно в списке записей относящихся к яблокам их и не должно быть;
Введем аналогичным образом две записи для яблок: килограмм (кг.) коэффициент - 1, ящик (ящ.) коэффициент - 25;
Для остальных товаров внесем записи, как было сказано в начале главы. Обратите внимание, мы не можем создать подчиненные записи к элементу типа группа;
Разместив на экране рядом справочники товаров и единиц и переходя курсором по записям о товарах, мы можем видеть как в справочнике единиц меняются наборы записей;
Закроем справочник товаров. Установим курсор в справочнике единиц на любой записи;
Через меню Действия выполним команду "Иерархический список";
В справочнике единиц стало видно сразу множество записей;
Переходя по ним курсором, мы видим как меняется содержание текстового поля вверху списка, где мы указали выводить код и наименование владельца;
Остановимся на какой либо из записей;
Через меню Действия выполним команду "Иерархический список";
Снова в списке остались только записи относящиеся к какому-то одному товару;
Через меню Действия выполним команду "Справочник-владелец";
Открылся справочник товаров. Курсор в нем установился на том товаре, который являлся владельцем текущей единицы измерения;
Если мы будем выключать-включать иерархический список в справочнике товаров, то мы будем видеть соответственно либо все товары и группы сразу, либо только относящиеся к текущей группе/подгруппе;
Закроем 1С:Предприятие.
Программное создание группы
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Работающие";
СпрСотр.Записать();
СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Уволенные";
СпрСотр.Записать();
Программное создание элемента справочника
Ниже в справочник Сотрудники программно добавляется новый сотрудник в группу Работающие. В справочнике заполняется поля Наименование, ДатаПриема и пара периодических реквизитов.
Пром. товары
Мебель
Стол на 6 персон СТО-023
2500
3375
шт.
Стул мягкий СТУ-012
780
1050
шт.
Посуда
Супница расписная СУП-004
87.25
118
шт.
Тарелка глубокая ТАР-123
18.75
25
шт.
Простейший кадровый учет
Сейчас мы создадим мини-систему кадрового учета сотрудников предприятия. Она позволит принимать и увольнять сотрудников, а также работать с кадровыми документами.
Каждая конфигурация должна храниться в отдельном каталоге (папке).
1. Создайте новую папку на любом диске, например, "C:\Учебная"
2. Запустите 1С:Предприятие. Откроется список информационных баз.
1С:Предприятие может работать с несколькими базами данных на одном компьютере. Например, в одной базе ведется кадровый учет, в другой базе - учет товаров, в третьей - бухгалтерский учет для Фирмы А, в четвертой - бухгалтерский учет для фирмы Б.
3. Нажмите кнопку Добавить. Укажите имя информационной базы, как оно будет отображаться в списке баз, например "Учебная". Имя базы может быть произвольным, от него ничего не зависит.
4. В следующем поле укажите путь к папке, которую вы создали на 1 шаге. Нажмите кнопку "…", войдите в папку и нажмите Выбрать.
Папка может располагаться на локальном жестком диске компьютера, например "C:\Учебная" или на другом компьютере в сети, например, "\\SERVER\KADR". При этом должны быть предоставлены полные права доступа к этой папке (чтение, запись и т.д.).
5. Нажмите ОК. В списке информационных баз появится новая строка. Для ее редактирования можно нажать кнопку Изменить. Например, информационную базу перенесли в другое место или вы хотите задать другое название для информационной базы. Для удаления информационной базы из списка нужно нажать кнопку Удалить. При этом информационная база удаляется из списка, но не удаляется физически с диска.
6. Укажите режим запуска Конфигуратор.
1С может запускаться в четырех режимах:
Предприятие - режим использования информационной базы. В этом режиме работают обычные пользователи, вводят данные, печатают отчеты и т.д. В этом режиме нельзя редактировать структуру конфигурации.
Конфигуратор - режим конфигурирования (программирования). В этом режиме работают программисты, создают новые справочники, отчеты, пишут программные модули. Вводить данные в информационную базу в этом режиме нельзя.
Монитор - режим наблюдения за пользователями, работающими в данный момент с информационной базой. Все операции с информационной базой регистрируются в Журнале регистраций. В режиме Монитор можно получить протокол всех операций совершенных конкретным пользователем, над конкретным объектом, а также можно задать другие условия фильтра.
Отладчик - режим для программистов, когда у них что-то не ладится с программой. Здесь можно отследить как выполняется программа буквально по шагам. При этом программа выполняется в режиме Предприятие.
7. Нажмите ОК для запуска базы в режиме конфигуратор.
8. Так как в созданной папке пока ничего нет, то 1С спросит в каком формате будет храниться база данных: В файлах DBF или на SQL-Server Укажите формат "Файлы DBF" и нажмите ОК.
9. Запустится конфигуратор. Откройте дерево конфигурации, в котором мы будем работать очень часто. Для этого щелкните меню Конфигурация => Открыть конфигурацию или кнопочку . Появится окно дерева конфигурации. Задайте ему нормальные размеры.
В этом окне представлены все объекты конфигурации, такие как справочники, документы, отчеты и т.д. Для раскрытия какой-то ветки нужно два щелкнуть на плюсике или два раза щелкнуть на ее названии.
Создание объектов конфигурации
10. Установите курсор на строку Справочники и щелкните кнопку (или щелкните правой кнопкой мыши и выберите Новый справочник). При этом откроется окно Конструктора справочников.
Конструктуры предназначены для помощи программисту в выполнении определенных действий. Только что мы увидели конструктор справочников. В 1С есть еще конструктур документов, конструктор отчетов, конструктор запросов и т.д. Все действия, которые делает конструктор, можно выполнить вручную, но возможно, что с конструктором будет быстрее. Если вам конструктор не нужен (или не нравится), тогда снимите флажок "Использовать конструкторы при создании новых объектов". В данном Учебнике мы все будем делать вручную, поскольку только так можно стать настоящим программистом и выжать из 1С все, на что она способна (или он? кстати, какого рода слово "1С". Это он, она или оно?).
11. Снимите флажок " Использовать конструкторы при создании новых объектов" и нажмите кнопку Отмена для закрытия конструктора. Он будет сопротивляться, но вы будьте настойчивы!
Потом вы всегда можете опять запустить конструктор из меню Конструкторы, но мы будем стараться делать все ручками.
12. Опять установите курсор на строку Справочники и щелкните кнопку (или щелкните правой кнопкой мыши и выберите Новый справочник). При этом откроется окно Конструктора справочников уже не откроется, а появится обычное окно для редактирования структуры справочника.
13. Задайте идентификатор справочника (имя), например сейчас мы создадим справочник "Должности".
Идентификатор справочника очень важен, поскольку он будет использоваться при программировании. Его нельзя будет исправить просто так, поскольку придется также исправить все места в программе, где используется этот справочник. Относитесь к идентификатору справочника очень серьезно. Идентификатор должен быть лаконичным, понятным, отражающим содержимое справочника, например: "Страны", "Сотрудники", "Товары" и т.д.
Заметьте, что общепринятым правилом является множественное число в имени справочника, но это не обязательно. Например, вы можете создать справочник "АдреснаяКнига". В идентификаторах объектов, а также в названиях переменных не может быть пробелов, но могут быть цифры и знак подчеркивания. Идентификатор не может начинаться с цифры. Правильное название объектов, переменных - признак хорошего стиля программирования и залог успеха. Будьте профессионалами в этом деле!
14. Задайте длину наименования 30 символов.
У каждого справочника есть уже заранее заданные два поля "Код" и "Наименование". Вы можете редактировать длину наименования, длину кода, а тажке тип кода: Числовой/Текстовый.
15. Закройте окно структуры справочника Должности.
14. На всякий случай сохраните конфигурацию, чтобы ваш труд не пропал даром, если вдруг отключится электричество или прямо сейчас наступит конец света.
1С обнаружит, что конфигурация абсолютно новая и у нее нет даже такой вещи, как словаря данных! Пусть создает этот словарь, если он ей очень нужен.
Нажмите Да.
Так как мы редактировали структуру информационной базы, то 1С попросит разрешение на реорганизацию информационной базы. В больших конфигурациях (программах) это может быть очень длительный и сложный процесс, у нас пока все просто.
Нажимаем Да.
1С проанализирует структуру базы и покажет окно со списком изменений.
Нажмите кнопку "Принять".
После реорганизации базы появится сообщение "Реорганизация информациии закончена ".
15. Создадим справочник Сотрудники. (Установите курсор на Справочники и щелкните кнопку Новый). Задайте имя справочника (идентификатор) "Сотрудники".
16. Задайте длину наименования 100 символов.
В наименовании у нас будет храниться ФИО сотрудника. Иногда бывают довольно длинные имена, например "Александровский-Петровский Александр Александрович".
17. В этом справочнике у нас будет еще одно поле (реквизит, атрибут) Должность. Список реквизитов сейчас пустой. Нажмите кнопку Добавить, откроется окно редактирования свойств реквизита. Кстати, реквизит, атрибут и поле - это в принципе одно и то же. Просто нужно привыкнуть к слову "реквизит".
18. Задайте имя реквизита "Должность". Укажите тип реквизита "Справочник.Должности", который мы создали раньше. Это говорит о том, что значения данного реквизита будут выбираться из справочника Должности. Нажмите ОК.
19. Создайте реквизит Оклад (тип Число, Точность 2 знака после запятой)
20. Создайте реквизиты ДатаПриема и ДатаУвольнения (тип Дата)
21. Сохраните конфигурацию (на всякий случай).
Теперь у нас есть два справочника и можно ввести некоторые данные.
22. Запустите 1С:Предприятие в режиме Предприятие. Это можно сделать прямо из Конфигуратора, нажав кнопку . Появится окно 1С:Предприятие.
23. Откройте справочник Должности. Для этого щеклните меню Операции => Справочники => Должности. Откроется окно справочника.
Для более быстрого доступа к справочнику позже мы создадим меню, а пока только так.
24. Введите несколько должностей, используя кнопку или клавишу INS. Например, Директор, Бухгалтер, Программист.
Заметьте, что коды присваиваются автоматически, хотя их можно редактировать. При этом необходимо соблюдать уникальность кодов. Параметры уникальности можно настраивать в конфигураторе, например можно ее вообще отключить, если она не нужна.
По умолчанию установлена сортировка по Наименованию. Это позволяет набрать первые буквы названия должности и курсор автоматически перейдет на нужную должность. Можно установить и другой тип сортировки: по коду или по реквизиту. Для этого нужно щелкнуть правой кнопкой и выбрать Сортировка. Мы этого делать не будем и оставим все, как есть.
25. Закройте справочник Должности и откройте справочник Сотрудники. (Щеклните меню Операции => Справочники => Сотрудники).
26. Заведите нескольких сотрудников. Например, Иванов - директор, Петров - Бухгалтер, Сидоров - Программист.
Заметьте, что при указании должности открывается справочник Должности. Для выбора должности вам нужно два раза на нее щелкнуть.
В реальной жизни принятие сотрудника на работу производится кадровым документом "Приказ о приеме на работу". Поэтому сейчас мы это организуем.
27. Закройте 1С:Предприятие и запустите базу в режиме Конфигуратор.
28. Теперь создайте новый документ "ПриемНаРаботу". (установите курсор на Документы и щелкните Новый). Задайте имя документа ПриемНаРаботу.
29. Добавьте реквизит шапки "ФИО", укажите ему тип значения Строка и длина 100 символов. Нажмите ОК.
У документа есть шапка и табличная часть. В шапке содержатся реквизиты, которые относятся к документу в целом, например НомерДок, ДатаДок и т.д. В табличной части содержатся строки. Например, один документ Накладная содержит информацию по нескольким товарам. Такая ситуация в 1С предусмотрена. (правда не предусмотрена ситуация, когда в документе есть две или даже несколько табличных частей)
Кстати, у любого документа уже есть два заранее заданных реквизита шапки "НомерДок" и "ДатаДок".
Далее нужно создать таким же образом, как и реквизит "ФИО", остальные реквизиты и укажите для каждого из них правильный тип:
рекв. Должность - тип "Справочник.Должности"
рекв. Оклад - тип Число, длина 10, точность 2
рекв. ДатаПриема - тип Дата
30. У документа должна быть удобная форма для ввода данных. Нажмите кнопку "Форма" в нижней части окна.
31. Так как мы сюда зашли в первый раз, то 1С предлагает автоматически создать форму документа.
Мы договорились все делать вручную, поэтому нажимаем Отмена.
32. Нам нужно создать форму следующего вида:
Установите подходящие размеры формы.
· Разместите на форме текстовую надпись "Прием на работу". Для этого щелкните на кнопку внизу и затем на форме.
Кстати, рядом с этой кнопкой есть и другие элементы управления, которыми мы будем пользоваться в дальнейшем: кнопки, поля, переключатели, флажки и т.д.
Укажите размер шрифта побольше, это же все-таки заголовок. Для этого щелкните правой кнопкой на надписи, выберите Свойства, щелкните вкладку Шрифт, снимите флажок "Шрифт по умолчанию" и укажите размер шрифта 12, Можете еще что-нибудь указать, например Цвет, жирность и т.д. Не бойтесь экспериментировать, мы же пока только учимся. нажмите ОК.
Добавьте поле НомерДок на форму. Для этого щелкните кнопку появится окно. В нем установите флажок у реквизита шапки НомерДок, нажмите ОК и щелкните в каком-нибудь месте формы. Там появится поле НомерДок. Задайте ему размеры и перетащите в нужное место формы.
· Добавьте рядом текстовое поле с надписью "№".
· Аналогичным образом разместите на форме остальные реквизиты: ДатаДок, ФИО, Должность. Не забудьте рядом с ними разместить текстовые надписи.
· Кнопки ОК и Закрыть разместите по центру формы (по горизонтали). Для этого выделите их мышкой (обе одновременно) и щелкните кнопку . Попробуйте там и другие кнопки ради интереса.
Теперь в этот документ можно будет вводить данные о новом сотруднике. Затем пользователь нажмет кнопку ОК и ваша программа должна добавить в справочник Сотрудники новый элемент (новую строку). При нажатии ОК документ сначала будет записан, а потом будет проведен.
Проведение документов - очень важное понятие. Провести документ для пользователя означает пустить его в дело. При проведении документа совершаются изменения в информационной базе: добавлются данные в таблицы, увеличиваются или уменьшаются остатки товаров на складе, создаются новые бухгалтерские проводки и т.д.
Что конкретно произойдет при проведении документа определяется программистом. При проведении выполнится предопределенная процедура ОбработкаПроведения(). Именно в этой процедуре программист пишет программу, которая и совершает все изменения в системе. Сейчас нам нужно до нее добраться. Она хранится в "Модуле документа".
Для открытия модуля документа закройте экранную форму документа. На экране останется окно структуры документа. Внизу есть кнопка "Модуль документа", вот на нее и нажмите. Откроется окно для редактирования текста программы.
Там уже есть процедура ОбработкаПроведения, но внутри нее пока ничего существенного. Напишите там следующий текст, пока не вникая в его смысл.
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.Новый();
СпрСотр.Наименование = ФИО;
СпрСотр.Должность = Должность;
СпрСотр.Оклад = Оклад;
СпрСотр.ДатаПриема = ДатаПриема;
СпрСотр.Записать();
Хотя, если присмотреться, то можно кое-что понять. Первая строка обращается к справочнику Сотрудники. Вторая строка создает новый элемент, пока пустой. Потом заполняются реквизиты справочника, данные берутся из документа и переносятся в справочник. И в конце происходит запись измененного элемента в справочник.
Кстати, часто начинающие программисты забывают вызвать Записать(). Не попадайте в эту ловушку! Если вы не вызовете метод Записать(), то все ваши изменения не сохранятся в базе.
Обратите внимание, что каждый оператор в языке 1С заканчивается символом ";" (точка с запятой). После слова КонецПроцедуры точки с запятой не, потому что это не оператор, а операторная скобка (есть такое понятие в 1С). Точки с запятой нет также после слов Цикл и Тогда, но после слов КонецЦикла и КонецЕсли обязательно ставьте точку с запятой. В данной программе мы не использовали ни циклы, ни условия.
Также обратите внимание как оформляются комментарии.
// это комментарий
Комментарии не учитываются компилятором и предназначены для человека, которому нужно разобраться в программе. Комментариев не должно быть слишком много и слишком мало. Программа сама по себе должна быть понятна, без комментариев. Но в сложных местах в комментариях можно пояснить логику работы программы. Написание комментариев и понятных программ - тоже признак хорошего тона. Будьте в этом деле профессионалами!
· Закройте окно модуля и окно структуры документа. Сохраните конфигурацию.
Теперь можно попробовать принять нового сотрудника по всей форме.
· Запустите 1С в режиме Предприятие.
Все документы хранятся в журналах документов. Может быть вы не обратили внимание, но для документа "ПриемНаРаботу" был задан журнал по умолчанию "Прочие". Потом мы создадим специальный журнал для всех кадровых документов, а пока будем пользоваться тем, что есть.
Для открытия журнала документов Прочие щелкните Операции => Журналы документов => Прочие. Откроется журнал документов.
Щелкните кнопку или нажмите клавишу INS. Откроется форма документа "Прием на работу" для ввода данных. Номер документа присвоится автоматически, дата документа - сегодняшнее число.
Введите все данные: ФИО сотрудника, укажите ему должность и оклад.
· Нажмите кнопку ОК. Сначала документ будет записан, а потом проведен. При проведении сработает процедура ОбработкаПроведения и в справочник Сотрудники добавится новая строка. Проверьте это.
Если вдруг выскочит ошибка, значит вы неправильно написали программу. Опять запускайте Конфигуратор и все перепроверяйте.
Можно сделать так, чтобы 1С проверяла программу на синтаксические ошибки автоматически при сохранении конфигурации. Для этого в Конфигураторе щелкните меню Сервис => Параметры и установите флажок "Проверять ошибки автоматически".
Заметьте, что отсутствие синтаксических ошибок не гарантирует того, что программа правильная. В ней по-прежнему могут быть ошибки. Такие ошибки могут выскочить при выполнении программы, а могут быть очень скрытые. Ошибки - главная беда программистов. Но еще большая беда - неправильное понимание требований заказчика.
Теперь организуем правильное увольнение сотрудников с помощью кадрового приказа.
· Создайте в Конфигураторе новый документ "Увольнение".
· Укажите, что он содержит реквизиты шапки "Сотрудник" тип "Справочник.Сотрудники и "Дата увольнения" тип Дата.
· Создайте для него удобную форму для ввода данных.
Напишите следующий текст в модуле документа в процедуре ОбработкаПроведения():
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НайтиЭлемент(Сотрудник);
СпрСотр.ДатаУвольнения = ДатаУвольнения;
СпрСотр.Записать();
Первая строка создает ссылку на справочник Сотрудники. Вторая строка ищет в справочнике того сотрудника, который будет уволен. Следующая строка устанавливает ему дату увольнения. И последняя строка записывает сделанные изменения в справочнике.
Создадим журнал "КадровыеДокументы". Для этого установите курсор на "Журналы документов" в дереве конфигурации и щелкните Новый. Задайте имя журнала. Здесь больше ничего не трубуется.
Теперь откройте окно для редактирования структуры документа "ПриемНаРаботу". В верхней части окна измените журнал "Прочие" на журнал "КадровыеДокументы"
То же самое проделайте для документа Увольнение.
Сохраните конфигурацию на всякий случай.
Теперь создадим пользовательское меню. В окне конфигурации внизу есть вкладка Интерфейсы.
Для каждой категории пользователей программы может быть заведен свой собственный интерфейс. Интерфейс включает пункты меню и кнопки на панели инструментов. Например, кадровику необязательно залезать в зарплату сотрудников.
Создайте новый Интерфейс и назовите его Администратор. Интерфейс появится в списке интерфейсов.
Щелкните дважды на интерфейсе и выберите "Редактировать меню". Откроется окно редактора меню.
У него есть замечательная кнопка , которая автоматически создает все пункты меню. Сделаем исключение и воспользуемся помощью конструктора меню, потому что нам нужно создать обычное меню для доступа ко всем объектам без всяких заморочек. Если нужно сделать что-нибудь более интересное, например, добавить разделители, перегруппировать пункты меню, то это нужно будет делать вручную.
Нажмите кнопку и затем "Построить". Конструктур автоматически создаст все пункты меню.
Меню можно сразу протестировать, как оно будет выглядеть для пользователя. Для этого нажмите кнопку "Пуск", появится тестовое окно. Посмотрите на меню и закройте тестовое окно.
Кстати, вы можете попробовать научиться редактировать пункты меню. Смелее экспериментируйте. Например, перетащите пункт меню Кадровые документы в пункт Документы, а пункт Журналы документов удалите. Отделите журнал от документов разделителем. Мне кажется, так будет удобнее.
Закройте редактор меню.
Сохраните конфигурацию и запустите ее. Проверьте работу документа Увольнение и пощелкайте меню.
На этом создание простейшей системы для кадрового учета завершено. Она позволяет принимать и увольнять сотрудников. Конечно, все очень неудобно. Уволенные хранятся вместе с работающими в одном списке. Реквизитов для хранения информации очень мало, нет печатных форм документов, нет кнопочек на панели инструментов, нет кадрового перемещения - куча пробелов в нашей системе. Но это же только простейшая кадровая система и она уже работает!
Для сравнения скажу, что написание такой же системы на другом языке программирования Visual Basic или Delphi займет в два-три раза больше времени и сил. Что бы там ни говорили недоброжелатели, но на 1С программы пишутся в несколько раз быстрее.
Простой перебор
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
Режим = 0; //выбирать без учета иерархии, 1 - с учетом (по умолч.)
СпрСотр.ВыбратьЭлементы(Режим);
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.....<действия с очередным элементом/группой>
КонецЦикла;
Простой перебор операций и проводок
Пример, выбрать все операции за период:
Опер = СоздатьОбъект("Операция");
Опер.ВыбратьОперации(НачДата, КонДата); //заданный период
Пока Опер.ПолучитьОперацию()=1 Цикл
Сообщить(Опер.СуммаОперации);
Сообщить(Опер.Содержание);
//организуем перебор проводок текущей операции
//1-й вариант
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку()=1 Цикл
Сообщить(Опер.Дебет.Счет);
Сообщить(Опер.Кредит.Счет);
Сообщить(Опер.Сумма);
КонецЦикла;
//2-й вариант перебора проводок текущей операции
Для Ном = 1 По Опер.КоличествоПроводок() Цикл
Опер.ПолучитьПроводкуПоНомеру(Ном); //проводка стала текущей
Сообщить(Опер.Дебет.Счет);
Сообщить(Опер.Кредит.Счет);
Сообщить(Опер.Сумма);
КонецЦикла;
КонецЦикла;
Проведение документа
Некоторые документы могут проводиться. С точки зрения пользователя, "провести" документ означает "пустить его в дело". С точки зрения программиста, при проведении документа сработает модуль проведения
документа (процедура ОбработкаПроведения). Именно там определяются все действия, выполняемые при проведении документа. Например, при проведении документа "Приказ о приеме на работу" сработает модуль этого документа, который в справочник Сотрудники добавит нового сотрудника.
Проведение документа
Оператор Провести() в приведенном выше примере выполнит проведение документа. При проведении будет вызвана предопределенная процедура ОбработкаПроведения(). Вторым реквизитом передается в обработку проведения значение ("Программно"), по которому процедура ОбработкаПроведения() узнает о программном выполнении проведения. Это может быть простая строка или число, её задача - только обозначить факт программного проведения.
Если вы работаете с уже существующим документом, то метод Провести() перепроведет документ. А с помощью метода Проведен() можно узнать, проведен ли какой-либо документ:
Если Док.Проведен() > 0 Тогда
Сообщить( "Документ № " + Док.НомерДок + " проведен");
…………… // Какие-то действия, которые нужно сделать с проведенным документом
КонецЕсли;
О создании операций и проводок при проведении документов читай раздел Операции и проводки главы Бухгалтерия.
Транзакции
При создании множества документов или для ускорения работы можно заключить цикл в транзакцию. При этом реальная запись документов произойдет только по команде ЗафиксироватьТранзакцию(). На время транзакции блокируется для других пользователей запись и проведение документов.
СписаниеМатериалов = СоздатьОбъект("Документ.ТребованиеНакладаная");
НачатьТранзакцию();
Для Ном = 1 По 100 Цикл
СписаниеМатериалов.Новый();
…………………
// Заполнение реквизитов
СписаниеМатериалов.Записать();
СписаниеМатериалов.Провести();
КонецЦикла;
ЗафиксироватьТранзакцию();
Напомню, что предопределенная процедура ОбработкаПроведения() самостоятельно открывает транзакцию для проведения, однако есть маленькая особенность документа, созданного функцией СоздатьОбъект(). Дело в том, что про программном проведении созданных документов не выполняется автоматическая предварительная запись, и для того, чтобы при любых сбоях и ошибках сохранялась согласованность данных документа и его движений (операций) следует объединять запись и проведение документа в одну транзакцию.
Установка периодического реквизита справочника при проведении документа
Простым примером такого действия является установка нового оклада сотруднику в справочнике Сотрудники при проведении, например, штатного расписания.
Процедура ОбработкаПроведения()
УстановитьРеквизитСправочника (Сотрудник, "Оклад", НовыйОклад, ДатаДок);
КонецПроцедуры
Здесь Сотрудник - значение реквизита документа типа "Справочник", через него в справочнике позиционируется нужный элемент, а "Оклад" - периодический реквизит соответствующего элемента. Этот оператор можно использовать только в предопределенной процедуре ОбработкаПроведения(). Теперь при просмотре истории периодического реквизита вы увидите кроме самого значения, ещё и дату установки (соответствует дате документа), и документ, который установил данное значение.
Проведение документов
При проведении документа часто требуется установить новое значение периодического реквизита на определенную дату. Это называется движение документа. В этом случае следует применять метод УстановитьРеквизитСправочника:
Процедура ОбработкаПроведения()
УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);
КонецПроцедуры
Если документ имеет табличную часть и вы хотите, чтобы движения документа были привязаны к номеру строки документа, тогда следует применять метод ПривязыватьСтроку.
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ПривязыватьСтроку(НомерСтроки);
УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);
КонецЦикла;
КонецПроцедуры
после сборки, поступают на склад.
Изделия, после сборки, поступают на склад. Складов может быть либо один, либо несколько. В этом же справочнике будут указаны и отдельные места хранения для комплектующих. Справочник складов кроме кода и названия склада больше ничего содержать не будет.
Идентификатор: Склады Подчинен: нет Количество уровней: 1 Код: 5 Тип кода: число Серии кодов: подчинение Наименование: 25 Основное представление: наименование Группы сверху: да Автонумерация: да Уникальность: да Одна форма для элемента и группы?: нет Редактировать: в списке "Код" – порядковый номер. "Наименование" – Название склада. |
|||||
Реквизит |
Описание |
ТипЗначения |
Доп. |
Исп. |
Изм. |
Создаем форму списка, самую простую;
Заполняем:
Путевой лист
Данный документ является заданием для курьера, который доставляет товары покупателю. Экранная форма документа выглядит следующим образом:
Сначала пользователь указывает район, при этом автоматически заполняется табличная часть - формируется путевой лист. Программа просматривает все текущие заказы по данному району, дата доставки которых совпадает с датой путевого листа или просрочена. Пользователь может подредактировать доставляемое количество в колонке "Доставить" в связи с отсутствием товара на складе или тяжести груза для одного курьера.
После этого путевой лист распечатывается и проводится. Печатная форма путевого листа выглядит следующим образом:
При проведении документа совершаются движения в регистрах Остатки и Доставка:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
//доставляемые товары
Регистр.Доставка.Товар = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Количество;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеПриходВыполнить();
//уменьшаются остатки по данному товару
Регистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Количество;
Регистр.Остатки.ДвижениеРасходВыполнить();
КонецЦикла;
КонецПроцедуры
Работа с индексами
Для организации упорядочивания содержимого файла БД и поиска в ней по значению одного или нескольких полей применяется механизм индексов. Его применение можно сравнить с сортировкой картотеки по определенному признаку (совокупности признаков). Однако, в отличие от картотеки, файл БД может иметь сразу несколько индексов, и, соответственно, являться упорядоченным одновременно по нескольким признакам. Индексы хранятся в индексном файле. Индексный файл может содержать информацию более чем об одном индексе. Рекомендуется для одного файла DBF иметь один индексный файл, в котором хранятся все индексы для этого файла.
Каждый индекс имеет наименование, признак уникальности, выражение индекса и фильтр. Наименование индекса используется для идентификации индекса. Выражение индекса и фильтр представляют собой написанные на специальном языке выражения, вычисление значения которых для каждой записи позволяет определить ее место при упорядочивании и необходимость помещения ее в упорядоченный список (индекс может содержать упоминание не обо всех записях таблицы, а только об удовлетворяющих выражению фильтра). Уникальный индекс (имеющий установленным признак уникальности) позволяет иметь в индексе ссылки на записи только с различным значением индексного выражения.
Основное правило: индекс нужен, чтобы быстро искать нужную запись.
Работа с программой
Порядок работы с программой:
1. Товар поступает на склад по документам ПриходнаяНакладная (см. описание документа ПН)
При внесении ПН можно проконтролировать и исправит розничную цену.
2. Отпуск товара по точкам выполняется только через ДокументРеализатора (см. описание документа ДР)
Направление движения товара задается СтатусомДокумента.
3. По документам ПКО вносится выручка торговых точек.
4. Периодически выполняется инвентаризация реализатора.
Для этого нужно распечатать остатки реализатора. (Меню\Отчеты\Остатки реализатора)
Отдать на торговую точку для заполнения.
Затем следует создать документ ИнвентаризацияРеализатора,
заполнить его согласно ведомости инвентаризации.
При этом конфигурация рассчитывает количество проданного товара,
так чтобы остатки реализатора совпадали с документом ИнвентаризацияРеализатора.
В отчете ВзаиморасчетыРеализатора можно увидеть баланс торговой точки.
(к-во проданного товара, сумма выручки, сумма недостачи, остаток товара)
Кадровый учет
Работа с сериями диаграммы
//установим количество серий. Каждая при этом получит свой номер.
Диаграмма1.КоличествоСерий(3); // так у нас будет три серии
//однако если в другом методе будет передана серия с большим номером,
//количество серий будет автоматически увеличено.
КолСерий = Диаграмма1.КоличествоСерий();
// а так переменной КолСерий будет передано текущее количество серий
// так мы зададим имя "Рубли" серии № 1
Диаграмма1.УстановитьИмяСерии(1, "Рубли");
// установим цвет серии № 2
// этот метод не обязательный, как впрочем и некоторые другие
Диаграмма1.ЦветСерии(2, 35, 67, 90);
// установили: 35 единиц красной компоненты, 67 - зеленой, 90 - синей
//можно установить имена серий автоматически: Серия1, Серия2, и т.д.
Диаграмма1.АвтоУстановкаИменСерий(1);
//если поставить вместо флага 1 флаг 0, автоустановка имен будет запрещена.
Работа с точками диаграммы
//установим количество точек, скажем, 8 штук
Диаграмма1.КоличествоТочек(8);
//однако если в другом методе будет передана тока с большим номером,
//количество точек будет автоматически увеличено.
// метод может возвратить текущее количество точек
КолТочек = Диаграмма1.КоличествоТочек();
// можно установить имя любой точки
Диаграмма1.УстановитьИмяТочки(7, "7 точка");
//можно установить имена точек автоматически: 1, 2, 3, и т.д.
Диаграмма1. АвтоУстановкаИменТочек(1);
//если поставить вместо флага 1 флаг 0, автоустановка имен будет запрещена.
Работа с удаленными записями
Файлы DBF устроены таким образом, что удаление записи не приводит к физическому удалению записи из файла. Запись просто помечается на удаление и пропускается при переборе. Таким образом размер файла остается прежним. Чтобы физически удалить все помеченные на удаление записи нужно применить метод Сжать. Средства встроенного языка позволяют работать с такими записями, перебирать их и даже отменять пометку на удаление.
Файл.ПоказыватьУдаленные(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
......Если Файл.ЗаписьУдалена()=1 Тогда
............Файл.Восстановить();
......КонецЕсли;
......Файл.Следующая();
КонецЦикла;
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
......Если Файл.PRICE < 1000 Тогда
............Файл.Удалить();
......КонецЕсли;
......Файл.Следующая();
КонецЦикла;
Файл.Сжать(); //удалить записи физически
Можно удалить все записи в файле одним движением. При этом они физически удаляются и не могут быть восстановлены.
Файл.ОчиститьВсе();
Стоит еще отметить про метод Очистить(), что он очищает все поля текущей записи. Атрибуты, соответствующие полям типа "строковый" приобретают значение «пустая строка», числовой — 0, логический — 0, дата — «пустая дата».
Работа со структурой файла DBF
Например, создадим файл, идентичный по структуре исходному.
//При этом применяется метод ОписаниеПоля, который возвращает характеристики поля с указанным номером
//синтаксис: ОписаниеПоля(<НомерПоля>,<НазваниеПоля>,<Тип>,<Длина>,<Точность>)
Файл1 = СоздатьОбъект("XBASE");
Файл2 = СоздатьОбъект("XBASE");
Файл1 = ОткрытьФайл("file1.dbf");
Для н = 1 По Файл1.КоличествоПолей() Цикл
........НазвПоля = "";
........Тип = "";
........Длина = 0;
........Точность = 0;
........Файл1.ОписаниеПоля(н,назвПоля,Тип,Длина,Точность);
........Файл2.ДобавитьПоле(назвПоля,Тип,Длина,Точность);
КонецЦикла;
Для работы с файлом DBF неизвестной структуры часто применяются следующие методы:
ПолучитьЗначениеПоля(<ИмяПоля>);
УстановитьЗначениеПоля(<ИмяПоля>,<значение>);
Расчет зарплаты
Все промежуточные и окончательные результаты расчета зарплаты хранятся в журнале расчетов Зарплата. В журнале Зарплата можно включить закладки отбора сотрудников по категориям, по подразделениям или по группам справочника Сотрудники (Работающие и Уволенные).
Для инициализации расчета сначала необходимо провести документ "Начало месяца", который введет в журнал Зарплата нерассчитанные записи с нулевым результатом (за исключением стандартных вычетов, которые сразу рассчитываются).
Затем необходимо ввести периоды невыходов (прогулов) документом "Ввод невыходов". Этот документ вводит вид расчета "Невыход", который вытесняет виды расчета ПоОкладу и ПоТарифу.
Если некоторым сотрудникам полагаются премии, то нужно провести документ "Ввод премий".
После этого можно произвести расчет зарплаты обработкой "Расчет зарплаты". Существует два режима расчета зарплаты: только начисления и окончательный расчет. При окончательном расчете рассчитываются все виды расчетов, включая подоходный налог и сумму "на руки".
После окончательного расчета можно сформировать отчеты по зарплате.
Для закрытия месяца следует сменить период расчета в журнале Зарплата. Все записи станут архивными и их уже нельзя будет корректировать. Если все-таки это потребуется, то для корректировки результатов расчета предыдущих месяцев следует вводить новые записи-сторно, у которых период действия распространяется на прошлые месяцы. Т.е. запись введена, например, в феврале, а период действия у нее - январь.
Расходная накладная
90.2 (Продажи.Себестоимость продаж)
40 (Выпуск продукции (работ, услуг))
90.3 (Продажи.Налог на добавленную стоимость)
68.1 (Расчеты по налогам и сборам.НДС)
90.9 (Продажи.Прибыль/убыток от продаж)
99 (Прибыли и убытки)
90.1 (Продажи.Выручка)
90.2 (Продажи.Себестоимость продаж)
90.1 (Продажи.Выручка)
90.3 (Продажи.Налог на добавленную стоимость)
90.1 (Продажи.Выручка)
90.9 (Продажи.Прибыль/убыток от продаж)
62 (Расчеты с покупателями и заказчиками)
90.1 (Продажи.Выручка)
Расходный ордер
60 (Расчеты с поставщиками и подрядчиками)
50.1 (Касса.Касса организации)
Различия
Константы
хранит значение, сохраняется в базе данных
Справочник хранит не одно значение, а целый список однородных объектов.
Документы
сохраняется в базе данных, имеет реквизиты, документы могут быть подчиненными друг другу
Справочник хранит нормативно-справочную информацию, а документы отражают события реального мира. Обычно значения реквизитов документов выбираются из справочников. Документ обычно проводится, документ обязательно имеет дату и время, документ может содержать табличную часть, чего нет в справочниках (в версии 8.0 справочники и документы могут иметь по несколько табличных частей). Справочники могут быть многоуровневыми, в справочнике могут быть периодические реквизиты, чего нет в документах (в версии 8.0 периодических реквизитов нет, а есть периодические регистры сведений).
Перечисления
хранится в БД, хранит список значений
Множество значений в справочник вводит пользователь в режиме Предприятие, а для перечислений список значений задается разработчиком в режиме Конфигуратор. Перечисления обычно используются в операторах Если.
ТаблицаЗначений
имеет строки и колонки (не хранится в БД)
ТаблицаЗначений предназначена для хранения промежуточных данных в памяти компьютера, возникающих во время работы программы. Таблица значений может хранить разнородные объекты, а в справочнике все элементы одного типа. Таблицы значений не могут быть многоуровневыми или подчиненными друг другу.
СписокЗначений
хранит список значений (не сохраняется в БД)
Список значений может хранить разнородные объекты, а в справочнике все элементы одного типа
Различия
Константы
хранят значения, сохраняются в базе данных
Документ хранит не одно значение, а событие хозяйственной деятельности предприятия, кроме того событие порождает изменение состояния данных. Документ обязательно имеет дату и время, может содержать табличную часть, хранит множество данных различных типов, которые могут быть связаны с данными других объектов. Константы не имеют печатной формы.
Справочники
сохраняется в базе данных, имеет реквизиты, справочники могут быть подчиненными друг другу Могут иметь печатные формы
Справочник хранит нормативно-справочную информацию, а документы отражают события реального мира. Обычно значения реквизитов документов выбираются из справочников. Документ обычно проводится, имеет дату и время. Справочники, в отличие от документов могут быть многоуровневыми, иметь периодические (привязанные к дате) реквизиты.
Перечисления
хранится в БД, хранит список значений
Перечисление может хранить только список значений, который задается разработчиком в режиме Конфигуратор. Не имеют печатной формы. Не редактируются пользователем.
Таблица значений
имеет строки и колонки (не хранится в БД)
ТаблицаЗначений предназначена для временного хранения промежуточных данных в памяти компьютера, возникающих во время работы программы, и удаляется, когда работа с ней закончена. Документ записывает все данные в БД. Таблицы значений не могут быть подчиненными друг другу. Не имеют печатной формы.
Список значений
хранит список значений (не сохраняется в БД)
Представляет собой временный набор данных, так же как и таблица значений. Не имеют печатной формы.
Отчеты
Имеет печатные формы
Отчет обычно считывает данные, хранящиеся в БД и формируются печатные формы для вывода данных в нужном виде на экран или на принтер.
Развернутое сальдо по субконто
Функции СНДРС, СНКРС, СКДРС, СККРС предназначены для расчета остатков по счетам, у которых ведется аналитический учет по субконто. Каждая функция из этой группы возвращает остаток как сумму соответствующих остатков (дебетовых или кредитовых) по всем объектам аналитического учета.
Если аналитический учет по счету ведется по двум и более субконто, то для развернутого сальдо параметр <ТипФильтра> устанавливает участие данног вида субконто в получении развернутого сальдо. В зависимости от значения этого параметра данное субконто может участвовать в «развороте» остатка, или накладывать дополнительное ограничение (отбирать) на анализируемые остатки, или никак не влиять на результат функции.
Развернутое сальдо по субсчетам
Функции СНДР, СНКР, СКДР, СККР предназначены для расчета остатков по счетам, у которых учет ведется на субсчетах. Каждая функция из этой группы возвращает остаток как сумму соответствующих остатков (дебетовых или кредитовых) всех субсчетов указанного счета. При этом учитываются остатки по субсчетам являющихся собственно счетами, а не группами.
Редактор форм
У многих объектов конфигурации есть экранные формы. В частности экранные формы в версии 7.7 имеют справочники, документы, журналы документов, отчеты, обработки, журналы расчетов, журнал операций, журнал проводок, план счетов и счет. У некоторых объектов может быть несколько экранных форм, например, у справочников есть формы списков, форма элемента и форма группы.
Поясним значение кнопок панели редактора форм:
Эти кнопки становятся доступными, когда выделено несколько элементов управления на форме. Они позволяют выравнивать их по левому, по правому, по верхнему и по нижнему краю. |
|
Эти кнопки центрируют выделенные элементы управления относительно всей формы по вертикали или горизонтали . |
|
Эти кнопки равномерно распределяют выделенные элементы управления по вертикали или горизонтали. |
|
Эти кнопки делают выделенные элементы управления одной ширины, одной высоты или одного размера. Определяющим является элемент управления, выделенный последним. Два элемента управления можно выделить, удерживая кнопку Shift и щелкая поочередно на каждом из них. |
|
Включить/выключить решетку. Запустить тестовое окно (проверить форму в режиме конфигуратора). Вызвать окно редактирования слоев формы (попробуйте обязательно - это очень важно!). |
Разберем кнопки на панели элементов управления:
Эта кнопка вызывает что-то типа мастера элементов диалога. Можно быстро разместить любой элемент управления, назначить ему тип, присвоить вызов процедуры и т.д. |
|
Эта кнопка размещает на форме обычную кнопку. В свойствах кнопки в поле Формула пишется имя процедуры, которая будет запущена при нажатии на кнопку. |
|
Эта кнопка размещает на форме флажок. В свойствах флажка в поле формула пишется имя процедуры, которая будет запущена при установке или снятии флажка. |
|
Эта кнопка размещает на поле переключатель. Переключатели имеют смысл, когда их несколько, в этом случае пользователь производит выбор между несколькими вариантами. Чтобы переключатели заработали, нужно сделать следующее: для первого переключателя установить в свойствах флажок "Первый в группе". Далее проверить, чтобы порядок обхода элементов был точно в том порядке, в котором следуют переключатели (Действия => Настройка порядка обхода). Типичный камешек для новичков. |
|
Эта кнопка размещает на форме список значений. При этом по имени списка можно обращаться к нему из модуля (объект СписокЗначений). Можно добавлять значения в список, удалять значения и делать все другие операции, возможные для объекта СписокЗначений. |
|
Эта кнопка размещает на форме поле со списком значений. При этом также создается объект СписокЗначений. Обратите внимание что лучше задать БОЛЬШУЮ ВЫСОТУ этого элемента управления, чтобы список раскрывался. Типичный камешек для новичков. |
|
Обычная рамка. Можно визуально объединить несколько элементов управления. Служит для удобства пользователя. |
|
Текстовое поле. Если в поле Формула вписать имя функции, то при каждом обновлении формы 1С будет вызывать вашу функцию и ее результат будет отображаться в этом поле. Кстати, если щелкнуть на эту кнопку и затем щелкнуть на табличной части справочника, документа или журнала, тогда мы создадим текстовую колонку. Она не будет сохраняться в базе данных, но у нее есть поле Формула, куда можно написать любое выражение. Очень полезная вещь для всяких информационных колонок. Типичная непонятность для новичков. |
|
Поле для ввода данных. Для поля можно назначить любой тип данных, допустимый в 1С:Предприятие. В поле Формула можно написать имя процедуры, которая будет вызываться при изменении значения данного поля. ВНИМАНИЕ: для размещения на форме реквизитов справочников и документов пользуйтесь кнопкой: . Типичный камешек для новичков. |
|
Эта кнопка размещает на форме таблицу значений. По имени таблицы значений к ней можно обращаться из модуля. Колонки и строки таблицы создаются программным способом (см. объект ТаблицаЗначений). |
|
Для иерархических справочников на форме списка можно разместить дерево групп. |
|
Эта кнопка размещает на форме картинку. Управление картинкой осуществляется программным способом (см. объект Картинка). |
|
Эта кнопка размещает на форме поля для ввода данных, связанные с реквизитами справочников и документов. Только в этом случае, введенные данные будут сохраняться в базе данных. |
Для удобства пользователей обязательно настройте последовательный порядок обхода элементов диалога! При интенсивном вводе информации желательно максимальное использование клавиатуры. Порядок обхода настраивается следующим образом. В меню Диалог снимаете флажок "Автоматический порядок обхода". Затем опять в меню Диалог щелкаете "Порядок обхода" и последовательно щелкаете на номерах элементах диалога в том порядке, в котором они должны быть. Порядок обхода можно также редактировать в меню Диалог => "Настройка порядка обхода".
Редактор печатных форм (макетов)
У отчетов есть печатные формы, это понятно. У документов также есть печатные формы, это тоже понятно. Но печатные формы могут быть и у других объектов: справочников, журналов документов, плана счетов и т.д. Фактически у любого объекта, у которого есть экранная форма, может быть одна или несколько печатных форм.
Печатные формы состоят из ячеек, в которых содержатся текст или формулы, что очень напоминает Microsoft Excel. Печатные формы формируются на встроенном языке 1С при помощи вывода секций. В печатной форме может не быть секций вообще, тогда можно вывести или все, или ничего. Но в большинстве случаев нужно выводить какую-то повторяющуюся часть много раз, например список сотрудников, список товаров и т.д. Секции могут горизонтальными и вертикальными.
Поясним значения кнопок панели редактора печатных форм:
Рисование линий, прямоугольников, размещение на печатной форме текстовых надписей, картинок, диаграмм. Редко используемые кнопки на самом деле. |
|
Кнопка перехода в режим выбора рисунков. |
|
Кнопка объединения нескольких ячеек в одну. |
|
Кнопки создания/уничтожения вертикальных и горизонтальных секций. Если выделить несколько строк, а затем щелкнуть на первую кнопку, то мы создадим горизонтальную секцию. Если выделить столбцы и щелкнуть на первую кнопку, то создадим вертикальную секцию. Для каждой секции нужно задать имя, по которому мы сможем обратиться к ней из модуля. |
|
Остальные кнопки попробуйте сами: Список секций таблицы. Включение / выключение сетки. Включение / выключение заголовков столбцов и строк. Включение / выключение границ секций. Включение / выключение режима "Только просмотр". Фиксация строк или столбцов. При прокрутке таблицы эти строки / столбцы будут оставаться на экране. |
У каждой ячейки есть свойства, которые вызываются правой кнопкой мыши:
Предлагаю вам изучить его методом научного тыка, по справке или по книжке "Администрирование и конфигурирование". Обратите внимание на поле Расшифровка, поскольку это очень важно и часто используется при программировании на 1С.
Редактор программных модулей
У каждой экранной формы есть программный модуль. Кроме того, есть программные модули документов и глобальный модуль. В этих модулях располагается программа на встроенном языке 1С, который похож на Бейсик, но имеет свои особенности.
В программном модуле имеется синтаксическая подсветка. Разными цветами отображаются ключевые слова, переменные, комментарии и значения. Цветовая палитра настраивается в параметрах.
Поясним значения кнопок панели редактора программных модулей:
По тексту программы можно расставить закладки или пометки (marks), и перемещаться по ним. Полезная вещь для больших модулей в сотни и тысячи строк. |
|
Кнопки сдвига блока текста вправо и влево. Становятся активными, когда выделено одна или несколько строчек. |
|
Закомментировать / раскомментировать блок текста. |
|
Кнопка автоформатирования текста программы. Нажимайте ее чаще и ваши программы будут красивыми! К сожалению, это не избавит их от всех ошибок, но их определенно станет меньше! |
|
Открыть модуль в отладчике. Проверить модуль на синтаксические ошибки. Перейти к определенной строке модуля. Открыть окно со списком процедур и функций модуля. (полезная вещь!) |
При редактировании модуля также обратите свое внимание на верхние кнопочки. Там вы найдете кнопки поиска, вызова синтакс помощника и другие интересности, например, конструктуры. Чаще пользуйтесь синтакс-помощником - очень полезная вещь! Помните, что там можно искать слова! Более того, при редактировании модуля можно щелкнуть правой кнопкой на любом слове и выбрать там пункт "Найти в Синтакс-помощнике".
Регистр: Остатки товаров Измерения: Товар, Склад Ресурсы: Кол-во, Стоимость
С помощью методов встроенного языка мы можем легко получить ответы на вопросы:
остаток конкретного товара на конкретном складе
остаток конкретного товара на всех складах
стоимость всех товаров на конкретном складе
Регистры, используемые в примерах:
Оборотный регистр Доходы
Измерения: Клиент, Товар
Ресурсы: Доход
Реквизиты: нет
Периодичность: День
Регистр остатков Товары
Измерения: Товар, Склад
Ресурсы: Количество, Стоимость
Реквизиты: нет
Хранит доходы от продаж за день в разрезе клиентов и товаров.
Хранит остатки товаров на каждом складе в количественном и суммовом выражении.
Реквизиты документа
Каждый вид документа может иметь неограниченное количество реквизитов в шапке и в многострочной части. Для документа создается форма ввода — экранный диалог. При настройке для документа задаются также общие характеристики: длина номера документа, условия поддержки уникальности номеров и другие. Все документы характеризуются номером, датой и временем.
Термин "шапка" — достаточно условный и может относиться не только к реквизитам документа, которые физически находятся в верхней части бумажного бланка документа. Поэтому, в наиболее общем случае, реквизитом заголовочной части будет считаться любой реквизит, который встречается в документе только один раз. Табличная часть документа представляет собой список однотипных строк с информацией. Например, в уже упоминавшемся счете на оплату табличная часть — это перечень товаров или услуг, подлежащих оплате. Помимо наименований, табличная часть документа может содержать также разнообразную дополнительную информацию — стоимость товаров или услуг, количество, объем, вес и многое другое. В большинстве случаев табличная часть используется для формирования общей суммы документа. Структура документа в системе 1С:Предприятие 7.7 может содержать только одну табличную часть.
При разработке документов в Конфигураторе может быть создано необходимое количество общих реквизитов документов. Такие реквизиты, будучи созданными один раз, становятся доступными для всех документов: общие реквизиты можно размещать в формах документов, к значениям общих реквизитов можно обращаться из встроенного языка системы 1С:Предприятие. Работая с системой 1С:Предприятие, пользователь может выполнять отбор документов в журналах по значениям общих реквизитов документов
Ресурсы
Остатки (регистр остатков)
Товар
Количество
Заказы (регистр остатков)
Товар
Клиент
Заказ
Цена
ДатаДоставки
Количество
Сумма
Доставка (регистр остатков)
(хранит доставляемые в данный момент товары)
Товар
Клиент
Заказ
Цена
ДатаДоставки
Количество
Сумма
Доходы (оборотный регистр)
Товар
Клиент
Доход
Отчеты
Товары
Сводная таблица
Родитель
Перебор элементов внутри группы. Группа в терминах 1С -- это "родитель".
Счет и план счетов
Счет в 1С:Предприятие соответствует обычному бухгалтерскому счету. Совокупность счетов образует план счетов. На предприятии может применяться одновременно несколько планов счетов. Счет имеет код и наименование. Длина и структура кода счета задается при конфигурировании, например, ##.## Счета, заданные в режиме Конфигуратора нельзя редактировать в режиме пользователя.
Субсчет
У счета могут быть субсчета. Например, счет 10 "Материалы" может иметь субсчет 10.3 "Топливо". В системе 1С:Предприятие возможно ведение субсчетов с более сложной структурой: у субсчета может, в свою очередь, быть свой "субсубсчет" и так далее.
Тип счета: активный / пассивный / активно-пассивный
Для активного счета сумма по дебету увеличивает сальдо по счету (дебетовое сальдо). Для пассивного счета сумма по дебету уменьшает сальдо по счету (кредитовое сальдо). Для активно-пассивного счета сальдо может быть свернутым или развернутым. Развернутое сальдо означает наличие остатка по дебету и кредиту счета одновременно.
Аналитический учет (субконто и вид субконто).
Для получения информации о наличии и движении средств предприятия не только по счетам, но и в более детальных разрезах, предназначено ведение аналитического учета.
Субконто. Для обозначения объектов аналитического учета в 1С:Предприятии используется термин субконто. Наличие субконто позволяет более детально раскрыть информацию о средствах предприятия, накапливаемых на счетах бухгалтерского учета. В этом субконто похожи на субсчета - они позволяют получать более мелкую градацию итогов внутри одного счета по определенному признаку. Кроме того, субконто позволяет отследить движение средств по одному объекту аналитического учета по всем счетам, на которых ведется аналитический учет в данном разрезе. Например, движение конкретного основного средства.
Вид субконто. Под видом субконто понимается совокупность однотипных объектов аналитического учета. Для одного счета может быть задано ведение аналитического учета по нескольким видам субконто. Так, например, для счета 10 может быть определено ведение аналитического учета по двум видам субконто: "Материалы" и "Склады". Это является примером многомерного учета в 1С:Предприятие. Итоги можно получать как по материалам в разрезе складов, так и по складам в разрезе материалов, а также, разумеется, в целом по всем материалам и по всем складам.
Количественный учет
Для количественного счета в 1С:Предприятие накапливается итоговая информация в количественном (натуральном) выражении. Возможность ведения количественного учета обычно используется в совокупности с аналитическим учетом. В этом случае можно получать более полную отчетную информацию по объектам аналитического учета, например, наличие товаров на складе.
Валютный учет
Система 1С:Предприятие позволяет вести валютный учет по нескольким валютам. Все используемые валюты задаются в справочнике валют. Для всех валютных счетов итоговая информация накапливается на счете для каждой валюты отдельно, а также по счету в целом. По каждой валюте итоговая информация по счету накапливается как в валютном выражении, так и в ее эквиваленте базовой валюты. Если в справочнике валют имеется курс, то при вводе проводок будет автоматически вычисляться сумма проводки по валютной сумме и текущему курсу.
Забалансовые счета
В некоторых случаях на предприятиях требуется использование вспомогательных счетов, которые не должны попадать в баланс. Для забалансовых счетов не действует правило двойной записи.
Разделитель учета
Система 1С:Предприятие позволяет вести бухгалтерский учет нескольких предприятий в одной информационной базе. Для этого используется разделитель учета. Под разделителем учета понимается некоторое значение, например "Фирма", которое заносится в каждую проводку и позволяет получать все бухгалтерские итоги по каждому такому значению отдельно. Это позволяет, фактически, получить несколько независимых балансов.
Счета и субсчета
Счета могут объединяться в группы. Счет, который является группой, называется "синтетический счет". Счет, который входит в группу, называется "субсчет". Для работы с такими счетами применяются следующие методы:
Секции
Фирма 1С предоставила мощный инструмент формирования отчетов -- Секции. Секция -- это область таблицы, предназначенная для многократного вывода. Например, в отчете по сотрудникам будет секция "Сотрудник", которую нужно будет выводить для каждого сотрудника. Секции могут быть горизонтальными или вертикальными. Можно также выводить пересечения горизонтальных и вертикальных секций.
Шаблоны
Шаблоны предназначены для облегчения нелегкого труда программиста. Чтобы не писать длинные конструкции, а заменять их короткими словами. При этом при вводе такого сокращения оно автоматически заменяется на полную конструкцию.
Например, вам надоело постоянно писать "КонецЕсли;". Предлагаю придумать сокращение "ке". При вводе такого сокращения оно автоматически заменится на "КонецЕсли;" (даже с точкой запятой в конце!).
Можно сделать и более сложные вещи. Вы вводите слово "Пока". Понятно, что это начало цикла. При этом 1С запросит условие в диалоговом окне и далее сформирует всю конструкцию и даже поставит курсор, куда нужно, чтобы можно было продолжать писать программу.
Пока <ваше условие> Цикл
КонецЦикла;
Окно для редактирования шаблонов вызывается из Синтакс-помощника правой кнопкой или через Сервис => Настройка шаблонов.
Шапка
Реквизит
Описание
ТипЗначения
Шапка
Реквизит
Описание
ТипЗначения
Шапка
Реквизит
Описание
ТипЗначения
Шапка
Реквизит
Описание
ТипЗначения
Шапка
Реквизит
Описание
ТипЗначения
Шапка
Реквизит
Описание
ТипЗначения
Шапка
Реквизит
Описание
ТипЗначения
Шапка
Реквизит
Описание
ТипЗначения
Шапка
Реквизит
Описание
ТипЗначения
Слои и закладки на форме
Форма может состоять из нескольких слоев. Каждый слой может быть показан или скрыт в любой комбинации с другими слоями.
Синтаксис: Форма.ИспользоватьСлой(<ИмяСлоя>,[<Режим>])
//показать слой Основной
Форма.ИспользоватьСлой("Основной",1);
//скрыть слой Основной
Форма.ИспользоватьСлой("Основной",0);
//показать слой Основной и скрыть все остальные
Форма.ИспользоватьСлой("Основной",2);
//показать слой Основной и Фон и скрыть все остальные
Форма.ИспользоватьСлой("Основной,Фон",2);
//закладки на форме реализуются с помощью слоев
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1, "Закладка 1");
Форма.Закладки.ДобавитьЗначение(2, "Закладка 2");
Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)
....Если НомерЗакладки = 1 Тогда
......Форма.ИспользоватьСлой("Фон,Шаг1");
...Иначе
......Форма.ИспользоватьСлой("Фон,Шаг2");
...КонецЕсли;
КонецПроцедуры
Снятие заказа
Документ предназначен для отмены ранее сделанных заказов. Можно уменьшить количество заказанного ранее товара. Экранная форма документа выглядит следующим образом:
Пользователь указывает клиента, при этом автоматически заполняется табличная часть документа текущими заказами по данному клиенту. Пользователь указывает нужное количество товара в колонке "Снять".
При проведении документа производятся движения в регистре Заказы:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Количество > 0 Тогда
Регистр.Заказы.Товар = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Заказ = Заказ;
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Количество = Количество;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеРасходВыполнить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Сортировка
В форме списка справочника элементы могут быть отсортированы в различном порядке: по коду, по наименованию или по любому реквизиту, у которого в Конфигураторе установлен флажок Сортировка. Задать тип сортировки можно программно методом Сортировка (Способ, ФлагРазрешенияИзменения)