Разработка конфигурации системы 1С: Предприятие осуществляющей складской учёт на предприятии

Автор: Пользователь скрыл имя, 12 Марта 2012 в 16:28, курсовая работа

Описание работы

1С: Предприятие является универсальной системой автоматизации деятельности предприятия. За счет своей универсальности система 1С: Предприятие может быть использована для автоматизации самых разных участков экономической деятельности предприятия: учета товарных и материальных средств, взаиморасчетов с контрагентами, расчета заработной платы, расчета амортизации основных средств, бухгалтерского учета по любым разделам и т. д.

Содержание

Введение 4
1 Справочник контрагентов 5
2 Справочник договоров с контрагентами 8
3 Работа со справочниками контрагентов и договоров 10
3.1 Справочник сортов 10
3.2 Хранение данных по взаиморасчетам с контрагентами 11
4 Документ Приход денег 14
4.1 Работа с документом 20
5 Отчет по долгам 23
6 Документ Выплата денег 28
Заключение 30
Литература

Работа содержит 1 файл

1_Оригинал.doc

— 138.00 Кб (Скачать)

3.2 Хранение данных по взаиморасчетам с контрагентами

Вернемся к нашим контрагентам. С ними мы будем вести разные торговые операции, и, соответственно, будем платить поставщикам за отгруженный товар, а от покупателей получать деньги за проданный.

Для ввода данных по хозяйственным операциям в 1С служит такой объект метаданных как "Документ". Документами мы сможем вводить данные по приходу/перемещению/отгрузу товара, приходу/расходу денег, но хранить текущее состояние остатков на складе и состояние взаимозадолженности с контрагентами в документах нельзя. Можно эту информацию хранить в справочнике, если добавить соответствующие поля, но это крайне неэффективно и не удобно. Для такой цели в 1С есть специальный механизм, использующий объект метаданных "Регистр" – в оперативном учете (для Бухгалтерии – "ПланСчетов", для Расчета – "Журнал расчетов"). Мы будем пользоваться "Регистрами". Регистры бывают двух типов. Регистр остатков и регистр оборотов. Их суть и различия можно проиллюстрировать следующим примером. Представим себе прямую направляющую, по которой движется бегунок. На бегунок установлен спидометр с указателем пройденного пути. Мы измеряем расстояние от конца направляющей до бегунка. Бегунок идет вперед – это расстояние растет, идет назад – уменьшается. Так действует регистр остатков. Он показывает текущее состояние координаты бегунка по отношению к какому-то нулевому значению. Аналог – остатки на складе. Они растут, если был приход товара, и уменьшаются, если был расход. У нас есть еще спидометр со счетчиком пройденного пути. В какую бы сторону бегунок не двигался – цифра на счетчике растет. Так действует регистр оборотов. Аналог – величина товарооборота в магазине. Есть ли приход, или расход – товарооборот растет. Сконструируем сперва регистр взаиморасчетов. У него будет только два измерения: "Контрагент" и "Договор" и один ресурс: "Сумма". Регистр у нас будет типа регистр остатков. Если сумма будет меньше нуля – контрагент должен нам, если больше – мы должны контрагенту. Реквизит заведем один "ФлагДвижения" – типа число и будет принимать следующие значения при изменении состояния регистра:

1 – изменение долга за поставленный нам товар;

2 – изменение долга за проданный нами товар;

3 – изменение долга оплатой за поставленный нам товар;

4 – изменение долга оплатой за проданный нами товар.

Таблица 4 - Представление конструируемого регистра взаиморасчётов.

Идентификатор: Взаиморасчеты
Тип: Остатки
Периодичность: -

Измерения

Идентификатор

Комментарий

Тип значения

Дополнительно

Контрагент

с кем мы ведем дела

С.Контрагенты

Д

Договор

по какому договору

С.Договора

Д, И

Ресурсы

Идентификатор

Комментарий

Тип значения

Дополнительно

Сумма

Сумма долга

Число

 

Реквизиты

Идентификатор

Комментарий

Тип значения

Дополнительно

ФлагДвижения

тип движения

Число

+

Здесь:
Д - отбор движений;
И - отбор итогов;
+ - не отрицательный.

Движения по регистру будут следующие:
Приход – приход к нам товара (общей суммой) либо денег;
Расход – отгруз нами товара (общей суммой) либо выплата денег.

Переходим к конструированию регистра.

1.      Создаем новый регистр;

2.      Идентификатор - "Взаиморасчеты", комментарий – "регистр взаиморасчетов с контрагентами", измерения, ресурсы, реквизиты – по таблице, тип регистра – остатки, быстрая обработка движений – по желанию.

 

 

 

 

 

 

 

 

 

 

4 Документ Приход денег

У нас есть контрагенты и договора с ними, у нас есть место (регистр), где мы можем хранить информацию по взаиморасчетам с ними. Теперь нам нужен документ, который позволит вводить эти взаиморасчеты. Первым нашим документом будет документ "Приход денег".

В любом документе в 1С есть два поля, присутствующих всегда. Это "ДатаДок" – дата документа и "НомерДок" – номер документа. 1С позволяет завести еще, сколько надо полей, которые будут присутствовать во всех документах. Это "Общие реквизиты" документа. Заведем один такой общий реквизит – "Комментарий" текстового типа длиной не более 100 символов. Назначение его ясно из названия.

1.      Входим в ветвь "Документы" дерева метаданных;

2.      Устанавливаем курсор на раздел "Общие реквизиты";

3.      Вводим новый общий реквизит;

4.      Идентификатор – "Комментарий", тип – Строка, длина – 100.

Обговорим теперь структуру нашего документа "Приход денег". Кроме полей с датой, номером и комментарием нам, разумеется, понадобится указание – кто нам эти деньги платит? – "Контрагент", на каком основании он платит нам эти деньги? – "Договор", сколько денег он нам платит? – "Сумма". Типы полей "Контрагент" и "Договор" - соответствующие справочники. Поле "Сумма" будет у нас число. Создадим этот документ.

1.      Вводим новый документ;

2.      Идентификатор – "ПриходДенег", синоним – "Приход денег", комментарий – "приход денег от контрагента";

3.      Документ будет проводиться – да, при записи документ будет перепроводиться – да;

Здесь необходимо дать пояснение, что такое проведение документа. Проведение документа – это внесение соответствующих изменений в механизмы хранения данных (в регистры, планы счетов, журналы расчетов). Документ, у которого стоит указание на возможность проведения, может находиться в трех состояниях – не существует (наиболее частое), записан – данные сохранены, проведен – данные сохранены и учтены в механизме хранения данных (если этот механизм не указан, документ все равно считается проведенным) – т. е. совершил какое-то движение в учете.

4. Документ будет принадлежать журналу – да, Создать новый журнал – "ДвижениеДенег";

Журнал – список документов определенного/определенных видов. Имеет экранную форму.

4.      И документ, и журнал вставим в экранное меню;

5.      Открылось окно свойств документа;

6.      В перечень реквизитов шапки занесем наши реквизиты – "Контрагент", "Договор", "Сумма". Табличной (многострочной) части в этом документе нет, нумератор – не назначен, периодичность – год;

Периодичность – это как часто будет появляться документ с номером 1.

7.      Автоматическая нумерация строк – нет (у нас строк не будет), оперативный учет – ДА;

          Этим мы покажем, что движение осуществляется по регистрам.

8.      Создадим форму документа, вставим поле с текстом, где мы укажем название документа, расставим элементы экранной формы документа поудобнее;

9.      В свойствах поля договор на закладке "Дополнительно" в поле "связан с" пишем "Контрагент" (рисунок 1);
 

Рисунок 1 – Свойства поля ввода «Договор»

Справочник "Договора" у нас подчиненный, и мы в форме документа указываем, что договора мы будем брать, принадлежащие ранее указанному контрагенту.

10. Мы желаем, чтобы при выборе другого контрагента, поле договор очищалось;

11. В свойствах поля ввода "Контрагент" на закладке "Дополнительно" пишем формулу Контрагент();

12. В модуле формы пишем следующую процедуру:
Перем СтКонтрагент;
// Это мы добавили переменную, область действия которой
// весь модуль формы документа
//-----------------------------------------------
Процедура ПриОткрытии()
// Это предопределенная процедура, запускается при возникновении
// события – открытие формы документа
// Она сформировалась автоматически, как мы указали в визарде создания
// документов
  ПриЗаписиПерепроводить(1);
// Это означает, что если мы проведенный документ изменили, то при
// попытке его сохранения программа попытается его перепровести
  СтКонтрагент=Контрагент;
// Инициализируем переменную СтКонтрагент значением реквизита Контрагент
КонецПроцедуры
//-----------------------------------------------
Процедура Контрагент()
  Если Контрагент<>СтКонтрагент Тогда
// В поле Контрагент содержимое изменилось
    Договор="";
// Очищаем поле Договор
    СтКонтрагент=Контрагент;
// Инициализируем переменную СтКонтрагент новым значением
// реквизита Контрагент
  КонецЕсли;
КонецПроцедуры

13. Закроем форму;

14. Откроем Модуль документа;

15. Мы видим текст:
// ********************
Процедура ОбработкаПроведения()
//Здесь следует написать алгоритм проведения документа
КонецПроцедуры

Модуль документа служит для задания правил внесения изменений в механизмы хранения данных.

20. Перепишем процедуру ОбработкаПроведения:
Процедура ОбработкаПроведения()
// Предопределенная процедура, запускающая механизмы регистрации движений
  Если Контрагент.Выбран()=0 Тогда
// Выбран() – метод, возвращающий состояние поля ввода = 1, если поле
// заполнено и 0 если нет
    Предупреждение("Контрагент не выбран");
// Вызовем на экран информационное окно с сообщением
    НеПроводитьДокумент();
// Указываем, что документ заполнен неправильно – он не должен быть проведен
  КонецЕсли;
  Если Договор.Выбран()=0 Тогда
    Предупреждение("Договор не выбран");
    НеПроводитьДокумент();
  КонецЕсли;
  Если Договор.ДатаДоговора>ДатаДок Тогда
// Договор еще не был заключен на дату документа
    Предупреждение("Неверная дата договора");
    НеПроводитьДокумент();
  КонецЕсли;
// Теперь будем заполнять поля регистра "Взаиморасчеты"
  Регистр.Взаиморасчеты.Контрагент = Контрагент;
  Регистр.Взаиморасчеты.Договор = Договор;
  Регистр.Взаиморасчеты.Сумма = Сумма;
// Движение – поступление денег за продаваемый нами товар
// ФлагДвижения = 4
  Регистр.Взаиморасчеты.ФлагДвижения = 4;
// Наш долг возрос, либо долг контрагента уменьшился – на регистр
// пишем сумму приходом
  Регистр.Взаиморасчеты.ДвижениеПриходВыполнить();
КонецПроцедуры

16. Закрываем модуль документа;

17. Закроем окно свойств документа;

18. Переходим к редактированию журнала. Находим журнал "ДвижениеДенег";

19. Входим в редактирование журнала;

20. Добавим новую графу, идентификатор – "Сумма", в возможных значениях отметим Документ.ПриходДенег.Шапка.Сумма, в выбранных значениях появилось указание на поле документа "Приход денег" "Сумма";

21. Входим в форму списка журнала;

22. Разместим графы журнала, как будет удобнее, и поменяем им ширину, чтобы все было видно;

23. Закроем форму списка журнала и окно свойств журнала;

24. Сохраним конфигурацию.

4.1 Работа с документом

Документ готов. Проверим его в работе.

1.      Открываем 1С: Предприятие в монопольном режиме;

2.      Через меню "Операции" команда "Управление оперативными итогами";

3.      Ставим дату актуальности итогов на 30.08.2008;

4.      Нажимаем [Установить];

5.      Появился вопрос "Изменить Точку Актуальности итогов";

6.      Отвечаем [Да];

7.      Нам сообщают, что изменение точки актуальности завершено. Подтверждаем получение сообщения;

8.      Выходим из окна управления итогами;

9.      Из нового раздела меню "Документы" вызываем документ приход денег;

10. [Закрыть];

11. Нас спросят – сохранить ли документ? [Да];

12. Попросят указать время – в начало дня;

13. Входим в меню "Журналы". Выберем журнал "ДвижениеДенег";

14. Если мы в журнале ничего не видим, значит, у нас стоит не тот период просмотра журнала. Входим в меню Действия, команда "Интервал". Устанавливаем диапазон дат от 01.10.2000 до текущей даты;

15. Мы видим наш документ. Пиктограмма слева – голубенький листок бумажки. Это значит, что документ сохранен;

16. Откроем этот документ, дважды щелкнув его мышкой;

17. Теперь нажмем [ОК];

18. Нас спросят про сохранение документа – [Да];

19. Провести документ? – [Да];

20. Точка актуальности будет перенесена на новую дату. Продолжить? – [Да];

Нами точка Актуальности была выставлена на 30.08.2008, а документ от 31.08.2008 – точка актуальности перемещается на последний проведенный документ.

21. В журнале пиктограмма приобрела красную галочку – флаг проведения документа, и красную черточку внизу – признак того, что ТА (Точка Актуальности стоит на текущем документе);

22. Посмотрим, какие движения произвел наш документ;

23. Курсор на документ. Меню "Действия", команда "Движения документа". Появилось окошко. В нем галочка стоит на строке с надписью Взаиморасчеты – это означает, что движение было только по этому регистру;

Тут есть еще строчка – Реквизиты справочников. Документ при проведении может менять значения периодических реквизитов справочников! (Если, конечно, это прописать в процедуре ОбработкаПроведения).

24. Выбираем эту строку;

25. Появилось окно "Движения регистров Взаиморасчеты (Приход денег 1 (31.08.2008))";

26. Видим в списке движений одну строку со знаком плюс (+) - это был приход. Движение было только одно – как мы и написали;

27. Закроем 1С: Предприятие.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 Отчет по долгам

Машина сама должна показывать нам кто, кому, по какому договору и сколько должен. Для таких целей существуют отчеты. Мы создадим отчет, имеющий свою отдельную форму.

1.      В дереве метаданных, в разделе отчеты, создаем новый отчет;

2.      Идентификатор – "Взаиморасчеты";

3.      Конструкторы никакие вызывать не будем – так напишем;

4.      Появилась экранная форма отчета;

5.      Добавим поле ввода. Идентификатор – ВыбДата, тип – дата;

6.      В модуле формы пишем:
Процедура Сформировать()
  Запрос=СоздатьОбъект("Запрос");
// Запрос – специальный объект в 1С, служит для получения структурированной
// выборки данных
  ТЗ="
  |Период с ВыбДата по ВыбДата;
  |Контр = Регистр.Взаиморасчеты.Контрагент;
  |Дог = Регистр.Взаиморасчеты.Договор;
  |Сум = Регистр.Взаиморасчеты.Сумма;
  |Функция СумКонОст = КонОст(Сум);
  |Группировка Контр упорядочить по Контр.Код;
  |";
// Это текст запроса. Подробности в "Описании языка" том 2
  Если Запрос.Выполнить(ТЗ)=0 Тогда
    Сообщить("Запрос не выполнен");
    Возврат;
  КонецЕсли;
// Если запрос будет не выполнен по какой либо причине, метод Выполнить()
// вернет 0. Мы сообщим пользователю о произошедшей ошибке, и
// командой Возврат – прервем выполнение процедуры
  ИтогоМы=0;
  ИтогоНам=0;
// В этих двух переменных мы будем хранить итоговую информацию по долгу
  Таб=СоздатьОбъект("Таблица");
  Таб.ИсходнаяТаблица("");
  Таб.ВывестиСекцию("Шапка");
  Пока Запрос.Группировка("Контр")=1 Цикл
// Получаем очередную запись из запроса
    ТЭ=Запрос.Контр;
// Во временную переменную передаем значение выборки
    Долг=Запрос.СумКонОст;
// Определяем суммарный долг по текущему значению выборки
// Дальше уже все знакомые нам методы
    Если ТЭ.ЭтоГруппа()=1 Тогда
      НазГр=СокрЛП(ТЭ.Наименование);
      Если  Долг=0 Тогда
      ИначеЕсли Долг>0 Тогда
        Мы=Долг;
        Нам=0;
      ИначеЕсли Долг<0 Тогда
        Мы=0;
        Нам=-Долг;
      КонецЕсли;
      Таб.ВывестиСекцию("Группа");
    Иначе
      Наз="("+СокрЛП(Строка(ТЭ.Код))+") "+СокрЛП(ТЭ.Наименование);
      Если  Долг=0 Тогда
        Продолжить;
      ИначеЕсли Долг>0 Тогда
        Мы=Долг;
        Нам=0;
        ИтогоМы=ИтогоМы+Мы;
      ИначеЕсли Долг<0 Тогда
        Мы=0;
        Нам=-Долг;
        ИтогоНам=ИтогоНам+Нам;
      КонецЕсли;
      Таб.ВывестиСекцию("Строка");
    КонецЕсли;
  КонецЦикла;
  Таб.ВывестиСекцию("Итого");
  Таб.ТолькоПросмотр(1);
  Таб.ПараметрыСтраницы(1,100,1);
  Таб.Показать("");
КонецПроцедуры

Информация о работе Разработка конфигурации системы 1С: Предприятие осуществляющей складской учёт на предприятии