- •Лабораторная работа № (продолжение) Построение простейшей конфигурации по учету складских операций
- •2.7 Справочник складов
- •2.8 Справочник контрагентов
- •2.9 Справочник договоров с контрагентами
- •2.10 Работа со справочниками контрагентов и договоров
- •2.11 Справочник сортов
- •2.12 Хранение данных по взаиморасчетам с контрагентами
- •2.13 Первый документ. Приход денег
- •2.14 Работа с документом.
- •2.15 Отчет по долгам.
- •2.16 Документ "Выплата денег".
- •2.17 Документ "Изменение цен".
- •2.18 Регистры по товарам.
- •2.19 Приходная накладная.
- •2.20 Отчет по остаткам на складе.
- •2.21 Fifo/lifo/По-среднему.
- •2.22 Расходная накладная.
- •2.23 Расходная накладная. Продолжение.
- •2.24 Накладная на перемещение
- •2.25 Оборотные ведомости
- •2.26 Отчет по прибыли с товара
- •2.27 Отчет по обороту товара
- •2.28 Новые наборы прав
- •2.29 Новые интерфейсы
2.13 Первый документ. Приход денег
У нас есть контрагенты и договора с ними, у нас есть место (регистр), где мы можем хранить информацию по взаиморасчетам с ними. Теперь нам нужен документ, который позволит вводить эти взаиморасчеты. Первым нашим документом будет документ "Приход денег".
В любом документе в 1С есть два поля, присутствующих всегда. Это "ДатаДок" – дата документа и "НомерДок" – номер документа. 1С позволяет завести еще сколько надо полей, которые будут присутствовать во всех документах. Это "Общие реквизиты" документа. Заведем один такой общий реквизит – "Комментарий" текстового типа длиной не более 100 символов. Назначение его ясно из названия.
Входим в ветвь "Документы" дерева метаданных;
Устанавливаем курсор на раздел "Общие реквизиты";
Вводим новый общий реквизит;
Идентификатор – "Комментарий", тип – Строка, длина – 100; Обговорим теперь структуру нашего документа "Приход денег". Кроме полей с датой, номером и комментарием нам, разумеется, понадобится указание – кто нам эти деньги платит? – "Контрагент", на каком основании он платит нам эти деньги? – "Договор", сколько денег он нам платит? – "Сумма". Типы полей "Контрагент" и "Договор" - соответствующие справочники. Поле "Сумма" будет у нас Число 9.2. Создадим этот документ.
Вводим новый документ;
Идентификатор – "ПриходДенег", Синоним – "Приход денег", Комментарий – "приход денег от контрагента";
Документ будет проводиться – да, при записи документ будет перепроводиться – да; Здесь необходимо дать пояснение, что такое проведение документа. Проведение документа – это внесение соответствующих изменений в механизмы хранения данных (в регистры, планы счетов, журналы расчетов). Документ, у которого стоит указание на возможность проведения, может находиться в трех состояниях – не существует (наиболее частое), записан – данные сохранены, проведен – данные сохранены и учтены в механизме хранения данных (если этот механизм не указан, документ все равно считается проведенным) – т. е. совершил какое-то движение в учете.
Документ будет принадлежать журналу – да, Создать новый журнал – "ДвижениеДенег"; Журнал – список документов определенного/определенных видов. Имеет экранную форму.
И документ и журнал вставим в экранное меню;
Открылось окно свойств документа;
В перечень реквизитов шапки занесем наши реквизиты – "Контрагент", "Договор", "Сумма". Табличной (многострочной) части в этом документе нет;
Нумератор – не назначен, Периодичность – год; Периодичность – это как часто будет появляться документ с номером 1.
Автоматическая нумерация строк – нет (у нас строк не будет);
Оперативный учет – ДА; Этим мы покажем, что движение осуществляется по регистрам.
Создадим форму документа;
Вставим поле с текстом, где мы укажем название документа;
Расставим элементы экранной формы документа поудобнее;
В свойствах поля договор на закладке "Дополнительно" в поле "связан с" пишем "Контрагент"; Справочник "Договора" у нас подчиненный, и мы в форме документа указываем, что договора мы будем брать, принадлежащие ранее указанному контрагенту.
Мы желаем, чтобы при выборе другого контрагента, поле договор очищалось;
В свойствах поля ввода "Контрагент" на закладке "Дополнительно" пишем формулу Контрагент();
В модуле формы пишем следующую процедуру: Перем СтКонтрагент; // Это мы добавили переменную, область действия которой // весь модуль формы документа //----------------------------------------------- Процедура ПриОткрытии() // Это предопределенная процедура, запускается при возникновении // события – открытие формы документа // Она сформировалась автоматически, как мы указали в визарде создания // документов ПриЗаписиПерепроводить(1); // Это означает, что если мы проведенный документ изменили, то при // попытке его сохранения программа попытается его перепровести СтКонтрагент=Контрагент; // Инициализируем переменную СтКонтрагент значением реквизита Контрагент КонецПроцедуры //----------------------------------------------- Процедура Контрагент() Если Контрагент<>СтКонтрагент Тогда // В поле Контрагент содержимое изменилось Договор=""; // Очищаем поле Договор СтКонтрагент=Контрагент; // Инициализируем переменную СтКонтрагент новым значением // реквизита Контрагент КонецЕсли; КонецПроцедуры
Закроем форму;
Откроем Модуль документа;
Мы видим текст: // ******************** Процедура ОбработкаПроведения() //Здесь следует написать алгоритм проведения документа КонецПроцедуры Модуль документа служит для задания правил внесения изменений в механизмы хранения данных.
Перепишем процедуру ОбработкаПроведения: Процедура ОбработкаПроведения() // Предопределенная процедура, запускающая механизмы регистрации движений Если Контрагент.Выбран()=0 Тогда // Выбран() – метод, возвращающий состояние поля ввода = 1, если поле // заполнено и 0 если нет Предупреждение("Контрагент не выбран"); // Вызовем на экран информационное окно с сообщением НеПроводитьДокумент(); // Указываем, что документ заполнен неправильно – он не должен быть проведен КонецЕсли; Если Договор.Выбран()=0 Тогда Предупреждение("Договор не выбран"); НеПроводитьДокумент(); КонецЕсли; Если Договор.ДатаДоговора>ДатаДок Тогда // Договор еще не был заключен на дату документа Предупреждение("Неверная дата договора"); НеПроводитьДокумент(); КонецЕсли; // Теперь будем заполнять поля регистра "Взаиморасчеты" Регистр.Взаиморасчеты.Контрагент = Контрагент; Регистр.Взаиморасчеты.Договор = Договор; Регистр.Взаиморасчеты.Сумма = Сумма; // Движение – поступление денег за продаваемый нами товар // ФлагДвижения = 4 Регистр.Взаиморасчеты.ФлагДвижения = 4; // Наш долг возрос, либо долг контрагента уменьшился – на регистр // пишем сумму приходом Регистр.Взаиморасчеты.ДвижениеПриходВыполнить(); КонецПроцедуры
Закрываем модуль документа;
Закроем окно свойств документа;
Переходим к редактированию журнала. Находим журнал "ДвижениеДенег";
Входим в редактирование журнала;
Добавим новую графу;
Идентификатор – "Сумма";
В возможных значениях отметим Документ.ПриходДенег.Шапка.Сумма;
В выбранных значениях появилось указание на поле документа "Приход денег" "Сумма";
Входим в форму списка журнала;
Разместим графы журнала как будет удобнее, и поменяем им ширину, чтобы все было видно;
Закроем форму списка журнала и окно свойств журнала;
Сохраним конфигурацию;