Дополнение
Сотрудник
С.Сотрудники
Сумма
Число 10.2
+, И
Документ в отдельном журнале.
Приведем форму журнала в вид, нравящийся нам.
Отредактируем форму документа.
Поля АвторДокумента и Курс делаем недоступными. В поля Валюта, ДатаКурса добавляем формулу Валюта(). Вставляем кнопку [Заполнить] с формулой Заполнить(). Вставляем поле текст с формулой Итог("Сумма") – для итога по колонке.
В модуле формы документа пишем:
Перем СтВалюта;
Перем СтДатаКурса;
Перем СтКурс;
//==========================================================
Процедура ВводНового()
АвторДокумента=СокрЛП(ИмяПользователя());
ФирмаДокумента=Константа.ОснФирма;
Валюта=Константа.ОснВалюта;
ДатаКурса=ДатаДок;
Курс=1;
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
КонецПроцедуры
//==========================================================
Процедура ПриОткрытии()
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
ПриЗаписиПерепроводить(1);
КонецПроцедуры
//==========================================================
Процедура Валюта()
КурсС=СтКурс;
КратС=СтВалюта.Кратность;
КурсН=Валюта.Курс.Получить(ДатаКурса);
КратН=Валюта.Кратность;
Коэфф=Окр((КурсС*КратН)/(КурсН*КратС),6,1);
// переводим в валюту документа
Курс=КурсН;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Сумма=Окр(Сумма*Коэфф,2,1);
КонецЦикла;
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
КонецПроцедуры
//==========================================================
Процедура Заполнить()
КурсД=Курс;
КратД=Валюта.Кратность;
КурсУ=Константа.ОснВалюта.Курс.Получить(ДатаДок);
КратУ=Константа.ОснВалюта.Кратность;
Коэфф=Окр((КурсД*КратУ)/(КурсУ*КратД),6,1); // переводим в валюту документа
УдалитьСтроки();
// Очищаем табличную часть документа
БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги.ИспользоватьПланСчетов(ПланыСчетов.Наш);
БухИтоги.ИспользоватьРазделительУчета(ФирмаДокумента);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Сотрудник,,1);
БухИтоги.ВыполнитьЗапрос(,ТекущаяДата(),"70");
БухИтоги.ВыбратьСубконто(1);
Пока БухИтоги.ПолучитьСубконто(1)=1 Цикл
Сотр=БухИтоги.Субконто(1);
ИОст=БухИтоги.СКК(1);
НоваяСтрока();
// Заполняем новыми строками
Сотрудник=Сотр;
Сумма=Окр(ИОст*Коэфф,2,1);
КонецЦикла;
КонецПроцедуры
Напишем модуль проведения документа. Он очень простой.
Процедура ОбработкаПроведения()
КурсД=Курс;
КратД=Валюта.Кратность;
КурсУ=Константа.ОснВалюта.Курс.Получить(ДатаДок);
КратУ=Константа.ОснВалюта.Кратность;
Коэфф=Окр((КурсД*КратУ)/(КурсУ*КратД),6,1);
// переводим в валюту документа
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Операция.НоваяПроводка();
Операция.Дебет.Счет = СчетПоКоду("70",ПланыСчетов.Наш);
Операция.Кредит.Счет = СчетПоКоду("50.1",ПланыСчетов.Наш);
Операция.Дебет.Сотрудник = Сотрудник;
Операция.Сумма = Окр(Сумма*Коэфф,2,1);
Операция.Фирма = ФирмаДокумента;
Операция.Комментарий = "Выплата зарплаты из кассы";
Операция.НомерЖурнала = "1";
КонецЦикла;
Операция.Содержание = "Выплата зарплаты";
Операция.СуммаОперации = Окр(Итог("Сумма")*Коэфф,2,1);
Операция.Автор = АвторДокумента;
Операция.Записать();
КонецПроцедуры
Как видите, все просто и коротко. Проверьте работоспособность документа в 1С:Предприятии. И попробуйте поредактировать операцию, создаваемую документом.
Глава 8
2.42 Отчет по остаткам на складе готовой продукции.
В принципе, конфигурация создана. Осталось только добавить пару отчетиков. Один отчет – Счет60 у нас уже есть. Создадим теперь отчет по остаткам на складе.
Вводим новый отчет "ОстаткиГотовойПродукции".
В модуль формы пишем:
Процедура ПриОткрытии()
ДатО = РабочаяДата();
КонецПроцедуры
//==========================================================
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьПланСчетов(ПланыСчетов.Наш);
Ит.ИспользоватьРазделительУчета(Константа.ОснФирма);
Скл="По всем складам";
Суб=1;
Если ВСклад.Выбран()=1 Тогда
Ит.ИспользоватьСубконто(ВидыСубконто.МестоХранения,ВСклад,2);
Скл="По складу: "+СокрЛП(Строка(ВСклад));
Суб=2;
КонецЕсли;
Ит.ИспользоватьСубконто(ВидыСубконто.Изделие,,1);
Ит.ВыполнитьЗапрос(,ДатО,"40");
Таб.ВывестиСекцию("Шапка");
ИтКол=0;
ИтСумС=0;
ИтСумР=0;
ИтСумН=0;
Ит.ВыбратьСубконто(Суб);
Пока Ит.ПолучитьСубконто(Суб)=1 Цикл
Изд=Ит.Субконто(Суб);
Цен=Изд.Цена.Получить(ДатО);
Кол=Ит.СКД(3);
СумС=Ит.СКД(1);
СумР=Окр(Кол*Цен,2,1);
СумН=Окр(СумР*(1+Изд.НДС.Значение/100),2,1);
ИтКол=ИтКол+Кол;
ИтСумС=ИтСумС+СумС;
ИтСумР=ИтСумР+СумР;
ИтСумН=ИтСумН+СумН;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.ПараметрыСтраницы(2);
Таб.Показать("Сформировать","");
КонецПроцедуры
Делаем шаблон печатной формы
2.43 Отчет по покупателям.
Создадим теперь отчет по 62-ому счету - "Покупатели". В поле ДатН пишем формулу Дат("Н"), а в поле ДатК – Дат("К"). В модуль формы:
Процедура Сформировать()
Запрос=СоздатьОбъект("Запрос");
// Создаем запрос по базе данных
ТекстЗапроса="
|Период с ДатН по ДатК;
|Пок = Операция.Субконто.Контрагент;
|Сум = Операция.Сумма;
|Сч = Операция.Счет;
|Функция СумСНК = СНК(Сум) когда (Сч=СчетПоКоду(""62""));
|Функция СумСНД = СНД(Сум) когда (Сч=СчетПоКоду(""62""));
|Функция СумКО = КО(Сум) когда (Сч=СчетПоКоду(""62""));
// Нас интересуют кредитовые
|Функция СумДО = ДО(Сум) когда (Сч=СчетПоКоду(""62""));
// и дебетовые обороты
|Функция СумСКК = СКК(Сум) когда (Сч=СчетПоКоду(""62""));
|Функция СумСКД = СКД(Сум) когда (Сч=СчетПоКоду(""62""));
|Условие (Сч=СчетПоКоду(""62""));
// Другие чтоб не лезли... Если не поставить - в отчет
// Поставщики попадут с нулями
|Группировка Пок упорядочить по Пок.Наименование без Групп;";
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Запрос не выполнен");
Возврат;
КонецЕсли;
ИтНачК=0;
ИтНачД=0;
ИтИзмК=0;
ИтИзмД=0;
ИтКонК=0;
ИтКонД=0;
// Это переменные для итога
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("");
Таб.ВывестиСекцию("Шапка");
Пока Запрос.Группировка(1)=1 Цикл
Клн=Запрос.Пок;
НачК=Запрос.СумСНК;
НачД=Запрос.СумСНД;
ИзмК=Запрос.СумКО;
ИзмД=Запрос.СумДО;
КонК=Запрос.СумСКК;
КонД=Запрос.СумСКД;
// Получаем разные сальдо и обороты...
ИтНачК=ИтНачК+НачК;
ИтНачД=ИтНачД+НачД;
ИтИзмК=ИтИзмК+ИзмК;
ИтКонД=ИтКонД+КонД;
ИтКонК=ИтКонК+КонК;
ИтИзмД=ИтИзмД+ИзмД;
// Складываем для окончательного итога
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.ПараметрыСтраницы(1,100,1);
Таб.Показать("");
КонецПроцедуры
//==========================================================
Процедура Дат(Тип)
// Процедура с переменной
Если Тип="Н" Тогда
Если ДатН > ДатК Тогда
ДатН=ДатК;
КонецЕсли;
ИначеЕсли Тип="К" Тогда
Если ДатК < ДатН Тогда
ДатК=ДатН;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//==========================================================
ДатК=ТекущаяДата();
ДатН=НачМесяца(ДатК);
В этом отчете мы воспользовались не привычным нам уже объектом БухгалтерскиеИтоги, а объектом Запрос. С ним мы активно работали в первой методичке.
Создаем шаблон печатной формы
Проверяем работу отчета.
2.44 Новые счета в плане счетов.
Ну, вроде и все, фирма "Magic Inc" автоматизирована. И тут некий клиент узнает, что Бегемот умеет еще и починять примусы. Этот клиент приносит пару примусов и просит их отремонтировать. Что должен сделать бухгалтер. Ну, во-первых завести счет 002 – "Товарно-материальные ценности, принятые на ответственное хранение", счет 23 – "Вспомогательные производства" и счет 71 – "Расчеты с подотчетными лицами". Заведем их в нашу конфигурацию. Эти счета субсчетов иметь не будут.
Если мы приглядимся к списку счетов, то увидим – счета введенные в Конфигураторе имеют в пиктограмме красную галочку, а введенные в режиме Предприятия – нет.
А тем временем Бегемот, посланный в магазин за запчастями, приносит на обрывке бумаги: Необходимо провести это все через бухгалтерию.
Операция №1
Д 002 – 200 руб. Приняты в ремонт 2 примуса.
Операция №2
Д 71 К 50 – 100 руб. Выдано Бегемоту под отчет.
Операция №3
Д 10 К 71 – 71.67 руб. Приобретены Бегемотом запчасти
Д 19.3 К 71 – 14.33 руб. НДС за приобретенные запчасти.
Д 50 К 71 – 14.00 руб. Возвращен Бегемотом остаток из подотчетных сумм.
Операция №4
Д 23 К 10 – 71.67 руб. Запчасти переданы в производство
Операция №5
Д 23 К 70 – 3 руб. Бегемоту за работу
Операция №6
Д 90 К 23 – 74.67 руб. Реализованы услуги по себестоимости
Д 90 К 99 - 25.33 руб. Прибыль
Д 90 К 68 – 20 руб. НДС за оказанные услуги
Д 62 К 90 – 120 руб. На заказчика зачислен долг
Операция №7
Д 50 К 62 – 120 руб. Получены деньги
К 002 – 200 руб. Возвращены примусы
Операция №8
Д 68.1 К 19.3 – 14.37 руб. Зачтен НДС за запчасти.
Операция №9
Д 70 К 50 – 3 руб. Выплата Бегемоту зарплаты за починку примуса.
Все вроде замечательно. Но бухгалтер Коровьев отбывает в долгую творческую командировку, руководить хором песни и пляски народов крайнего Юго-Запада. А примусов на починку обещали еще поднести. Бухгалтер может создать кучу корректных проводок и установить в свойствах флаг всегда проверять по ним новые проводки операций и сделать ряд типовых операций, чтобы легче и проще было вводить однотипные операции, но это совсем другая история...
2.45 Совсем другая история.
Эта глава напрямую не относится к программированию, но для полноты картины, думается, будет не вредной.
Корректные проводки – это особый системный списочек проводок, которые главбух фирмы считает правильными (корректными). И ежели мы в настройках параметров системы (меню "Сервис", команда "Параметры"), на закладке "Операция" поставим галочку на настройке "Проверять проводки при записи операции", то при записи операции вводимой вручную будет выполняться контроль проводок с использованием списка корректных проводок (это я содрал из хелпа в 1С).
Теперь, поставив этот флажек, зайдем в журнал операций и посохраняем наши ручные операции еще раз. При наличии проводок по незабалансовым счетам программа нас будет спрашивать, а не добавить ли текущую корреспонденцию к списочку корректных проводок? Давайте согласимся, и после пересохранения последней ручной операции посмотрим на список корректных проводок (меню "Операции" комманда "Корректные проводки"). Этот список можно использовать в программе через объект "КорректныеПроводки". Но мы здесь этим заниматься не будем.
Вместе с господином Коровьевым переходим к типовым операциям. Входим в меню "Операции", комманда "Типовые операции". Появился пустой еще пока список. Добавим в него первую запись "Выдача денег под отчет" (эта операция простая и поэтому на ее примере будет проще разобраться). Входим в режим редактирования типовой операции (меню "Действия", комманда "Редактировать"). Появилось окно конструктора типовой операции.
Если у нас много проводок, мы можем распределить между ними сумму операции по каким либо правилам. Таким же способом можно рассчитывать поле Валютной суммы.
Ну и заполним поле комментария к проводке.
Осталось сохранить внесенные настройки – Меню "Действия" команда "Сохранить".
Теперь можно проверить, как это все будет работать. Установив курсор в списке типовых операций на нашей операции и через меню "Действия" командой "Ввести операцию" создадим операцию на основе типовой. При заполнении поля суммы операции поле суммы проводки заполнилось автоматически, что нам и требовал
Зарплата
Введение
Компонента Расчет в системе 1С:Предприятие предназначена для реализации сложных периодических расчетов. Обычно она используется для расчета зарплаты.