Отчет по командировкам формирует расходы согласно документу Авансовый отчет. Итого по месяцам сделано, определены столбцы по виду затрат, нужно в этом отчете формировать: сколько пошло и на какой корреспондирующий счет за месяц.
Сам отчет:
Интересуют может запросом или ещё как-то сформировать такие данные?
Сам отчет:
Перем ДатаДеноминации;
Процедура Сформировать()
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Дата");
ТЗ.НоваяКолонка("КомуЗаЧто");
ТЗ.НоваяКолонка("Сумма");
Если ЦелевоеНазначение.Выбран()=0 Тогда
Предупреждение("ВЫбрать целевое назначение");
Возврат;
СтатусВозврата(0);
КонецЕсли;
//
Док = СоздатьОбъект("Документ.АвансовыйОтчет");
Док.ВыбратьДокументы(ДатаНач,ДатаКон);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Проведен() = 1 Тогда
Если (Док.Цель=ЦелевоеНазначение) Тогда
Если ((Счет=1)и(Док.ТипОтчета = 1))
или ((Счет=2)и(Док.ТипОтчета = 2)) Тогда
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() =1 Цикл
ТЗ.НоваяСтрока();
// ТЗ.Дата =СокрЛП(Формат(Док.ДатаДок ,"ДММММГГГГ"));
ТЗ.Дата =СокрЛП(Формат(Док.ДатаДок ,"ДММММГГГГ"));
ТЗ.КомуЗаЧто = Док.КомуЗаЧто1;
ДатаДеноминации = Дата("01.07.2016");
Если Док.ДатаДок < ДатаДеноминации Тогда
ТЗ.Сумма = Док.Сумма/10000
Иначе
ТЗ.Сумма = Док.Сумма;
КонецЕсли
КонецЦикла;
КонецЕсли;
КонецЕсли;
Иначе
Продолжить;
Конецесли;
КонецЦикла;
Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Шапка");
//
ТЗ_ИтогПоДню = СоздатьОбъект("ТаблицаЗначений");
ТЗ_ИтогПоДню.Загрузить(ТЗ);
ТЗ_ИтогПоДню.Свернуть("Дата", "Сумма");
//
//
ТЗ_ИтогПоКОМУ = СоздатьОбъект("ТаблицаЗначений");
ТЗ_ИтогПоКому.Загрузить(ТЗ);
ТЗ_ИтогПоКому.Свернуть("Комузачто", "Сумма");
//
Таб.ПрисоединитьСекцию("Шапка_г|Шапка_в");
ТЗ_ИтогПоКому.ВыбратьСтроки();
Пока ТЗ_ИтогПоКому.ПолучитьСтроку() = 1 Цикл
Таб.ПрисоединитьСекцию("Шапка_г|КомуЗаЧто");
КонецЦикла;
Таб.ПрисоединитьСекцию("Шапка_г|ИтогПоДню");
ТЗ.Свернуть("Дата,Комузачто", "Сумма");
ТЗ_ИтогПоДню.ВыбратьСтроки();
Пока ТЗ_ИтогПоДню.ПолучитьСтроку() = 1 Цикл
Таб.ВывестиСекцию("Дата|Шапка_в");
ТЗ_ИтогПоКому.ВыбратьСтроки();
Пока ТЗ_ИтогПоКому.ПолучитьСтроку() = 1 Цикл
ПрТТ = 0;
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Если (ТЗ.КомуЗаЧто <> ТЗ_ИтогПоКому.КомуЗаЧто) или
(ТЗ.Дата <> ТЗ_ИтогПоДню.Дата) Тогда
Продолжить;
Иначе
Таб.ПрисоединитьСекцию("Дата|КомуЗаЧто");
ПрТТ = 1;
Прервать;
КонецЕсли;
КонецЦикла;
Если ПрТТ = 0 Тогда
Таб.ПрисоединитьСекцию("Дата|Пусто");
КонецЕсли;
КонецЦикла;
Таб.ПрисоединитьСекцию("Дата|ИтогПоДню");
КонецЦикла;
Всего = 0;
Таб.ВывестиСекцию("Итог|Шапка_в");
ТЗ_ИтогПоКому.ВыбратьСтроки();
Пока ТЗ_ИтогПоКому.ПолучитьСтроку() = 1 Цикл
Таб.ПрисоединитьСекцию("Итог|КомуЗаЧто");
Всего = Всего + ТЗ_ИтогПоКому.Сумма;
КонецЦикла;
Таб.ПрисоединитьСекцию("Итог|ИтогПоДню");
Таб.Опции(0,0);
Таб.Показать("Отчет по кас. аппарату");
КонецПроцедуры
//_______________________
Процедура ПриОткрытии()
ДатаНач = НачМесяца(ТекущаяДата());
ДатаКон = КонМесяца(ТекущаяДата());
Счет=1;
КонецПроцедуры
ПоказатьИнтересуют может запросом или ещё как-то сформировать такие данные?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Хорошо, это я увидел.
Формирует по месяцам затраты, на разные счета, как мне посчитать сумму по счетам?
Там в документе есть только по конкретному человеку за период сумма затрат и на какой счет. А мне надо за весь месяц, скольку куда пошло.
АвансовыйОтчет
Формирует по месяцам затраты, на разные счета, как мне посчитать сумму по счетам?
Там в документе есть только по конкретному человеку за период сумма затрат и на какой счет. А мне надо за весь месяц, скольку куда пошло.
АвансовыйОтчет
Перем ТаблицаПечФорм,НомерТекущейФормы; // список печатных форм документа
Перем НачальнаяДатаДокумента,Новый;
Перем Сч18; // ПС 28.07.09
Перем сФормат,сПропись;
//******************************************************************************
//()
// Параметры:
// Возвращаемое значение:
// Описание:
Функция ОборотЗаголовок()
Если Выбран() = 1 Тогда
стрОборот = "АВАНСОВЫЙ ОТЧЕТ № "+глПреобразоватьНомерДок(НомерДок)
+" от "+Формат(ДатаДок,"ДДДММГГГГ") + ?(Сотрудник.Выбран()=0,"",": " +Сотрудник);
Иначе
стрОборот = "АВАНСОВЫЙ ОТЧЕТ (новый)";
КонецЕсли;
Возврат стрОборот
КонецФункции
//-----------------------------------------------------------------------------
Процедура ПриУстановкеТипаОтчета()
Если ТипОтчета = 2 Тогда // валютный отчет
Форма.Заголовок(", валютный, "+Валюта+" (по К-ту 71.2)",1);
Форма.ИспользоватьСлой("Основной, Шапка, Вал",2);
Форма.ВалСумма.Видимость(1);
Форма.ВалНДС.Видимость(1);
Форма.Сумма.Доступность(0);
Форма.НДС.Доступность(0);
Иначе
Форма.Заголовок(", рублевый (по К-ту 71.1)",1);
Форма.ИспользоватьСлой("Основной, Шапка",2);
Форма.ВалСумма.Видимость(0);
Форма.ВалНДС.Видимость(0);
Форма.Сумма.Доступность(1);
Форма.НДС.Доступность(1);
Пропись(Константа.ОсновнаяВалюта.ИмяФайлаПрописи);
Если (ДатаДок<Константа.ДатаДеноминации) или (Константа.ДатаДеноминации=Дата(0)) Тогда
сФормат = "Ч19 ";
сПропись = "ЧПД";
Иначе
сФормат = "Ч19.2.";
сПропись = "ЧПДС";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//
Процедура ПривыбореПоставщика()
Если Кому.Выбран()=1 тогда
Если (ПустоеЗначение(КомуЗаЧто)=1) ИЛИ (Найти(КомуЗаЧто,СокрЛП(Кому.Наименование))=0) тогда
КомуЗаЧто = СокрЛП(Кому.Наименование)+", "+СокрЛП(КомуЗаЧто);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//-----------------------------------------------------------------------------
Функция ПоказатьКурс()
Перем Стр;
Если Валюта.Выбран() = 1 Тогда
Стр = Валюта.Курс.Получить(ДатаДок);
Иначе
Стр = "";
КонецЕсли;
Возврат Стр;
КонецФункции
//-----------------------------------------------------------------------------
Процедура РасчитатьПредыдущийОстаток()
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Сотрудник,2);
БухИт.ИспользоватьСубконто(ВидыСубконто.ЦелевоеНазначение,Цель,2);
Если ТипОтчета = 1 Тогда
БухИт.ВыполнитьЗапрос(?(Выбран()=1,ТекущийДокумент(),ДатаДок),,"71.1");
ОстатокПоСчету = БухИт.СНД("С") - БухИт.СНК("С");
Иначе
БухИт.ВыполнитьЗапрос(?(Выбран()=1,ТекущийДокумент(),ДатаДок),,"71.2",,Валюта);
ОстатокПоСчету = БухИт.СНД("В") - БухИт.СНК("В");
КонецЕсли;
ОстатокПоСчету = ОстатокПоСчету - Сумма1 - Сумма2 - Сумма3;
Если ОстатокПоСчету < 0 Тогда
ТипОстатка = 2; //Перерасход
ПредОстаток = - ОстатокПоСчету;
Иначе
ТипОстатка = 1; //Остаток
ПредОстаток = ОстатокПоСчету;
КонецЕсли;
КонецПроцедуры //РасчитатьПредыдущийОстаток
//-----------------------------------------------------------------------------
Функция РасчетОстатка()
Ост = Сумма1 + Сумма2 + Сумма3;
Если ТипОтчета = 1 Тогда //рублевый
Ост = Ост - Итог("Сумма");
Иначе //валютный
Ост = Ост - Итог("ВалСумма");
КонецЕсли;
Если ТипОстатка = 1 Тогда //остаток
Ост = Ост + ПредОстаток;
Иначе //перерасход
Ост = Ост - ПредОстаток;
КонецЕсли;
Возврат Ост;
КонецФункции //РасчетОстатка
//-----------------------------------------------------------------------------
Процедура Пересчет(ИмяРеквизита)
Если (ИмяРеквизита = "Субконто1") Тогда
Если Субконто1.Вид() = СокрЛП(ВидыСубконто.Материалы) Тогда
Если ТипОтчета = 2 Тогда // валютный
ВалСумма = ?(Субконто1.Цена=0,Сумма,Субконто1.Цена*Количество);
Иначе
Сумма = ?(Субконто1.Цена=0,Сумма,Субконто1.Цена*Количество);
КонецЕсли;
КонецЕсли;
ИначеЕсли (ИмяРеквизита = "Субконто2") Тогда
Если Субконто2.Вид() = СокрЛП(ВидыСубконто.Материалы) Тогда
Сумма_ = ?(Субконто2.Цена=0,Сумма,Субконто2.Цена*Количество);
Если ТипОтчета = 2 Тогда
ВалСумма = Сумма_;
Иначе
Сумма = Сумма_;
КонецЕсли;
КонецЕсли;
ИначеЕсли (ИмяРеквизита = "Субконто3") Тогда
Если Субконто3.Вид() = СокрЛП(ВидыСубконто.Материалы) Тогда
Сумма_ = ?(Субконто3.Цена=0,Сумма,Субконто3.Цена*Количество);
Если ТипОтчета = 2 Тогда
ВалСумма = Сумма_;
Иначе
Сумма = Сумма_;
КонецЕсли;
КонецЕсли;
ИначеЕсли (ИмяРеквизита = "Количество") Тогда
Если Субконто1.Вид() = СокрЛП(ВидыСубконто.Материалы) Тогда
Цена1 = Субконто1.Цена;
ИначеЕсли Субконто2.Вид() = СокрЛП(ВидыСубконто.Материалы) Тогда
Цена1 = Субконто2.Цена;
ИначеЕсли Субконто3.Вид() = СокрЛП(ВидыСубконто.Материалы) Тогда
Цена1 = Субконто3.Цена;
КонецЕсли;
Сумма_ = ?(Цена1 = 0,Сумма,Цена1*Количество);
Если ТипОтчета = 2 Тогда
ВалСумма = Сумма_;
Иначе
Сумма = Сумма_;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//-----------------------------------------------------------------------------
Процедура ПриВыбореСчета()
Если юСчетВключенВРабочийПлан(КоррСчет, ДатаДок, 1) = 1 Тогда
Иначе
КоррСчет ="";
КонецЕсли;
НазначитьТип("Субконто1", КоррСчет.ВидСубконто(1));
НазначитьТип("Субконто2", КоррСчет.ВидСубконто(2));
НазначитьТип("Субконто3", КоррСчет.ВидСубконто(3));
Форма.Количество.Доступность(КоррСчет.Количественный);
Если КоррСчет.Количественный = 0 Тогда
Количество = 0;
КонецЕсли;
Если (КоррСчет.Валютный = 1) и (ТипОтчета = 1) Тогда
Предупреждение("Корреспондирующий счет не может быть валютным.");
КонецЕсли;
Если (КоррСчет=Счетпокоду(25.1)) или (КоррСчет=Счетпокоду(23.2)) Тогда
На20=Перечисление.ДаНет.Да;
Иначе
На20=Перечисление.ДаНет.НЕТ;
КонецЕсли;
КонецПроцедуры
//-----------------------------------------------------------------------------
Процедура РассчитатьСумму()
Если Валюта.Выбран() = 1 Тогда
КурсВал = Валюта.Курс.Получить(ДатаДок);
КратностьВал = Валюта.Кратность.Получить(ДатаДок);
Иначе
КурсВал = 0;
КратностьВал = 1;
КонецЕсли;
Сумма = ВалСумма*КурсВал/?(КратностьВал=0,1,КратностьВал);
НДС = ВалНДС*КурсВал/?(КратностьВал=0,1,КратностьВал);
КонецПроцедуры //РассчитатьСумму
//-----------------------------------------------------------------------------
Процедура ВводНового(Копирование);
Новый = 1;
Если Копирование = 1 Тогда
Возврат;
КонецЕсли;
ТипОтчета = 1;
Валюта = глЗначениеПоУмолчанию("ОсновнаяВалюта");
ТипОстатка = 1;
КонецПроцедуры
//-----------------------------------------------------------------------------
Процедура ПриОткрытии()
ПриЗаписиПерепроводить(1);
глПроверкаРазрешенияРедактирования(Контекст);
Если Форма.ТолькоПросмотр() = 1 Тогда
Форма.КнопкаОК.Доступность(0);
Форма.КнопкаПоУмолчанию("КнЗакрыть");
КонецЕсли;
НачальнаяДатаДокумента = ДатаДок;
Форма.КоррСчет.ВыборГруппы(0);
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1,"Лицевая сторона");
Форма.Закладки.ДобавитьЗначение(2,"Оборотная сторона");
ПриУстановкеТипаОтчета();
Форма.тОборот.Заголовок(ОборотЗаголовок()); // ПС 14.09.09
// Заполним таблицу для выбора печатной формы
НомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(),ТаблицаПечФорм);
КонецПроцедуры
//-----------------------------------------------------------------------------
Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)
Если ЗначениеЗакладки = 1 Тогда
ПриУстановкеТипаОтчета();
Иначе
Форма.ИспользоватьСлой("Основной, Таблица",2);
Форма.Валюта.Видимость(0);
Форма.Курс.Видимость(0);
Форма.РамкаВалюты.Видимость(0);
Форма.тОборот.Заголовок(ОборотЗаголовок()); // ПС 14.09.09
КонецЕсли;
КонецПроцедуры
//-----------------------------------------------------------------------------
Процедура Печать()
Пропись(Константа.ОсновнаяВалюта.ИмяФайлаПрописи);
Если (ДатаДок<Константа.ДатаДеноминации) или (Константа.ДатаДеноминации=Дата(0)) Тогда
сФормат = "Ч19 ";
сПропись = "ЧПД";
Иначе
сФормат = "Ч19.2.";
сПропись = "ЧПДС";
КонецЕсли;
Если (Выбран() = 1) и (Модифицированность() = 0) Тогда
// записанный документ и без изменений
ИначеЕсли Вопрос("Печатную форму можно получить только для записанного
|авансового отчета. Записать документ?","Да+Нет") = "Да" Тогда
Если глМожноЗаписатьДокумент(Контекст) = 0 тогда
Возврат;
Иначе
Записать();
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
стрНомерДок = глПреобразоватьНомерДок(НомерДок); // ПС 14.09.09
// {Изм., релиз 10.01.2 ПС 13.01.10
пДата = СтрЗаменить(СтрЗаменить(юШаблонДатыДляРучногоЗаполнения(ДатаДок),"__",". "),"_",". ");
// пс}
Таб=СоздатьОбъект("Таблица");
ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\ju_av.mxl";
Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1 Тогда
Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы);
Иначе
Таб.ИсходнаяТаблица("Таблица");
КонецЕсли;
Таб.ВывестиСекцию("Заголовок");
СтрПредОстаток = "" + ?(ТипОтчета=1,Формат(ПредОстаток,сформат),Формат(ПредОстаток,"Ч015.2. "));
Если (ТипОтчета = 2) и (ПустоеЗначение(СтрПредОстаток) = 0) Тогда
СтрПредОстаток = СтрПредОстаток + " " + СокрЛП(Валюта.Наименование);
КонецЕсли;
Если ТипОстатка = 1 Тогда
СтрНачальныйОстаток = СтрПредОстаток;
СтрНачальныйПерерасход = "";
Иначе
СтрНачальныйОстаток = "";
СтрНачальныйПерерасход = СтрПредОстаток;
КонецЕсли;
СтрСумма1 = "" + ?(ТипОтчета=1,Формат(Сумма1,Сформат),Формат(Сумма1,"Ч015.2. "));
Если (ТипОтчета = 2) и (ПустоеЗначение(СтрСумма1) = 0) Тогда
СтрСумма1 = СтрСумма1 + " " + СокрЛП(Валюта.Наименование);
КонецЕсли;
СтрСумма2 = "" + ?(ТипОтчета=1,Формат(Сумма2,Сформат),Формат(Сумма2,"Ч015.2. "));
Если (ТипОтчета = 2) и (ПустоеЗначение(СтрСумма2) = 0) Тогда
СтрСумма2 = СтрСумма2 + " " + СокрЛП(Валюта.Наименование);
КонецЕсли;
СтрСумма3 = "" + ?(ТипОтчета=1,Формат(Сумма3,Сформат),Формат(Сумма3,"Ч015.2. "));
Если (ТипОтчета = 2) и (ПустоеЗначение(СтрСумма3) = 0) Тогда
СтрСумма3 = СтрСумма3 + " " + СокрЛП(Валюта.Наименование);
КонецЕсли;
СтрИтогоПолучено = "" + ?(ТипОтчета=1,Формат(Сумма1 + Сумма2 + Сумма3,Сформат),Формат(Сумма1 + Сумма2 + Сумма3,"Ч015.2. "));
Если (ТипОтчета = 2) и (ПустоеЗначение(СтрИтогоПолучено) = 0) Тогда
СтрИтогоПолучено = СтрИтогоПолучено + " " + СокрЛП(Валюта.Наименование);
КонецЕсли;
Если ТипОтчета = 2 Тогда
СтрИзрасходовано = "" + Формат(Итог("ВалСумма"),"Ч015.2. ");
Пропись(Валюта.ИмяФайлаПрописи);
СтрИзрасходованоПрописью = Формат(Итог("ВалСумма"),"ЧПДС");
Пропись("");
Иначе
СтрИзрасходовано = "" + Формат(Итог("Сумма"),Сформат);
СтрИзрасходованоПрописью = Формат(Итог("Сумма"),спропись);
КонецЕсли;
Если (ТипОтчета = 2) и (ПустоеЗначение(СтрИзрасходовано) = 0) Тогда
СтрИзрасходовано = СтрИзрасходовано + " " + СокрЛП(Валюта.Наименование);
КонецЕсли;
ТекОстаток = РасчетОстатка();
СтрТекОстаток = "" + ?(ТипОтчета=1,Формат(?(ТекОстаток>0,ТекОстаток,-ТекОстаток),сформат),Формат(?(ТекОстаток>0,ТекОстаток,-ТекОстаток),"Ч015.2. "));
Если (ТипОтчета = 2) и (ПустоеЗначение(СтрТекОстаток) = 0) Тогда
СтрТекОстаток = СтрТекОстаток + " " + СокрЛП(Валюта.Наименование);
КонецЕсли;
Если ТекОстаток > 0 Тогда
СтрКонечныйОстаток = СтрТекОстаток;
СтрКонечныйПерерасход = "";
Иначе
СтрКонечныйОстаток = "";
СтрКонечныйПерерасход = СтрТекОстаток;
КонецЕсли;
НомерСтрокиТаблицы = 1;
Если ТипОтчета = 2 Тогда
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Сотрудник,2);
БухИт.ВыполнитьЗапрос(ТекущийДокумент(),,"71.2",,Валюта);
РублевыйОстаток = БухИт.СНД("С") - БухИт.СНК("С");
ВалютныйОстаток = БухИт.СНД("В") - БухИт.СНК("В");
КурсВал = Валюта.Курс.Получить(ДатаДок);
Кратность = Валюта.Кратность.Получить(ДатаДок);
Кратность = ?(Кратность=0,1,Кратность);
НовыйРублевыйОстаток = Окр(ВалютныйОстаток*КурсВал/Кратность,2,1);
КурсоваяРазница = НовыйРублевыйОстаток - РублевыйОстаток;
Если КурсоваяРазница <> 0 Тогда
//Таб.ВывестиСекцию("Секция_"+НомерСтрокиТаблицы+"|ДоТаблицы");
//Таб.ПрисоединитьСекцию("КурсоваяРазница|Таблица");
//НомерСтрокиТаблицы = НомерСтрокиТаблицы + 1;
КонецЕсли;
КонецЕсли;
// Таб.ВывестиСекцию("Секция_"+НомерСтрокиТаблицы+"|ДоТаблицы");
// Таб.ПрисоединитьСекцию("Израсходовано|Таблица");
// НомерСтрокиТаблицы = НомерСтрокиТаблицы + 1;
//Если ТипОтчета = 2 Тогда
// Таб.ВывестиСекцию("Секция_"+НомерСтрокиТаблицы+"|ДоТаблицы");
// Таб.ПрисоединитьСекцию("ВалИзрасходовано|Таблица");
// НомерСтрокиТаблицы = НомерСтрокиТаблицы + 1;
//КонецЕсли;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с (ТекущийДокумент()) по (ТекущийДокумент());
|ОбрабатыватьДокументы все;
|КоррСчет = Документ.АвансовыйОтчет.КоррСчет;
|Субконто1 = Документ.АвансовыйОтчет.Субконто1;
|Субконто2 = Документ.АвансовыйОтчет.Субконто2;
|Субконто3 = Документ.АвансовыйОтчет.Субконто3;
|Сумма = Документ.АвансовыйОтчет.Сумма;
|НДС = Документ.АвансовыйОтчет.НДС;
|Функция ИтогоПоСчету = Сумма(Сумма);
|Функция НДСПоСчету = Сумма(НДС);
|Группировка КоррСчет;
//|Группировка Субконто1; // Закомментировано ПЕ 07.09.09
//|Группировка Субконто2;
//|Группировка Субконто3;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
ТаблЗнСчет = СоздатьОбъект("ТаблицаЗначений");
ТаблЗнСчет.НоваяКолонка("КоррСчет");
ТаблЗнСчет.НоваяКолонка("ПоСчетуБезНДС");
ТаблЗнРодСчет = СоздатьОбъект("ТаблицаЗначений");
ТаблЗнРодСчет.НоваяКолонка("КоррСчетРодитель");
ТаблЗнРодСчет.НоваяКолонка("ПоСчетуБезНДС");
Пока (Запрос.Группировка("КоррСчет") = 1) Цикл
Если ТипОтчета = 1 Тогда
ПоСчетуБезНДС = Запрос.ИтогоПоСчету - Запрос.НДСПоСчету;
Иначе
ПоСчетуБезНДС = Запрос.ИтогоПоСчету - Запрос.НДСПоСчету;
КонецЕсли;
КоррСчет_ = Запрос.КоррСчет;
КоррСчетРодитель_ = КоррСчет_.Родитель(1);
ЭтоГруппа = КоррСчет_.ЭтоГруппа();
Если (КоррСчет_ = КоррСчетРодитель_) Тогда // в таблицу счетов-родителей
ТаблЗнРодСчет.НоваяСтрока();
ТаблЗнРодСчет.КоррСчетРодитель = КоррСчетРодитель_;
ТаблЗнРодСчет.ПоСчетуБезНДС = ПоСчетуБезНДС;
Если ЭтоГруппа = 0 Тогда
ТаблЗнСчет.НоваяСтрока();
ТаблЗнСчет.КоррСчет = КоррСчет_;
ТаблЗнСчет.ПоСчетуБезНДС = ПоСчетуБезНДС;
КонецЕсли;
Иначе // в таблицу счетов
ТаблЗнСчет.НоваяСтрока();
ТаблЗнСчет.КоррСчет = КоррСчет_;
ТаблЗнСчет.ПоСчетуБезНДС = ПоСчетуБезНДС;
КонецЕсли;
КонецЦикла;
КолСчетов = ТаблЗнСчет.КоличествоСтрок();
Если КолСчетов > 7 Тогда // ПЕ 07.09.09 из таблицы с счетами-родителями
ТаблЗнРодСчет.ВыбратьСтроки();
Пока ТаблЗнРодСчет.ПолучитьСтроку()=1 Цикл
Таб.ВывестиСекцию("Секция_"+НомерСтрокиТаблицы+"|ДоТаблицы");
КоррСчетВыв = ТаблЗнРодСчет.КоррСчетРодитель;
ПоСчетуБезНДС = ТаблЗнРодСчет.ПоСчетуБезНДС;
Таб.ПрисоединитьСекцию("НеПустаяСтрока|Таблица");
НомерСтрокиТаблицы = НомерСтрокиТаблицы + 1;
Если НомерСтрокиТаблицы > 7 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Иначе // из таблицы с счетами
ТаблЗнСчет.ВыбратьСтроки();
Пока ТаблЗнСчет.ПолучитьСтроку()=1 Цикл
Таб.ВывестиСекцию("Секция_"+НомерСтрокиТаблицы+"|ДоТаблицы");
КоррСчетВыв = ТаблЗнСчет.КоррСчет;
ПоСчетуБезНДС = ТаблЗнСчет.ПоСчетуБезНДС;
Таб.ПрисоединитьСекцию("НеПустаяСтрока|Таблица");
НомерСтрокиТаблицы = НомерСтрокиТаблицы + 1;
Если НомерСтрокиТаблицы > 7 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если (НомерСтрокиТаблицы <= 12) и (Итог("НДС") > 0) Тогда
Таб.ВывестиСекцию("Секция_"+НомерСтрокиТаблицы+"|ДоТаблицы");
Если ТипОтчета = 1 Тогда
ИтогоНДС = Итог("НДС");
Иначе
ИтогоНДС = Итог("НДС");
КонецЕсли;
Таб.ПрисоединитьСекцию("НДС|Таблица");
НомерСтрокиТаблицы = НомерСтрокиТаблицы + 1;
КонецЕсли;
Пока НомерСтрокиТаблицы <8 Цикл Таб.ВывестиСекцию("Секция_"+НомерСтрокиТаблицы);
НомерСтрокиТаблицы = НомерСтрокиТаблицы+1;
КонецЦикла;
Таб.ВывестиСекцию("Секция_8");
Таб.ВывестиСекцию("Секция_9|ДоТаблицы");
Таб.ПрисоединитьСекцию("Израсходовано|Таблица");
Если ТипОтчета = 1 Тогда Таб.ВывестиСекцию("Секция_10");
Иначе Таб.ВывестиСекцию("Секция_10|ДоТаблицы");Таб.ПрисоединитьСекцию("ВалИзрасходовано|Таблица"); КонецЕсли;
Таб.ВывестиСекцию("Секция_11");
Таб.ВывестиСекцию("Секция_12");
Таб.ВывестиСекцию("ПослеТаблицы");
Если ПереводСтраницы=1 Тогда
Таб.НоваяСтраница();
КонецЕсли;
Таб.ВывестиСекцию("Шапка");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.Опции(0,0,0,0,"ОпцииПечатиАвансовогоОтчета","ПараметрыОкнаАвансовогоОтчета");
Таб.ТолькоПросмотр(1);
Таб.ПараметрыСтраницы(1,,,20,5,5,,,,1);
//ПараметрыСтраницы(,,,20,5,20,,,,);
Таб.Показать("Авансовый отчет","");
КонецПроцедуры
//-----------------------------------------------------------------------------
Процедура ПриЗаписи()
Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда
СтатусВозврата(0);
Возврат;
ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента) = 1 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если ТипОтчета = 1 Тогда
ВалСумма = 0;
КонецЕсли;
КонецЦикла;
Операция.СуммаОперации = Итог("Сумма");
Операция.Содержание = "Авансовый отчет: "+Сотрудник;
КонецПроцедуры
//-----------------------------------------------------------------------------
Процедура ПриЗакрытии()
глОткрытьЖурнал(Контекст, Новый);
КонецПроцедуры // ПриЗакрытии()
Процедура ВводНаОсновании(ДокОснование)
Новый = 1;
ТипОтчета = 1;
Валюта = глЗначениеПоУмолчанию("ОсновнаяВалюта");
ТипОстатка = 1;
Если ДокОснование.Вид() = "КомандировочноеУдостоверение" Тогда
Сотрудник = ДокОснование.Сотрудник;
НаименованиеАванса = "Командировочные";
Спр = СоздатьОбъект("Справочник.ЦелевоеНазначение");
Если Спр.НайтиПоНаименованию(СокрП(НаименованиеАванса),0,1) = 1 Тогда
Цель = Спр.ТекущийЭлемент();
КонецЕсли;
ДокОснование.ВыбратьСтроки();
НоваяСтрока();
ДатаС = ДокОснование.ДатаОтправки;
ДатаПо = ?(ДокОснование.Срок=0, ДокОснование.ДатаОтправки, ДокОснование.ДатаОтправки + ДокОснование.Срок - 1); // ПС 08.02.10 ЮИ-Бобруйск
КомуЗаЧто = ДокОснование.Назначение;
ИначеЕсли ДокОснование.Вид() = "РасходныйОрдер" Тогда
Если ТипЗначенияСтр(ДокОснование.Субконто1) = "Справочник" Тогда
Если (ДокОснование.Субконто1.Вид() = "Сотрудники") И
(ДокОснование.Субконто1.Выбран()=1) Тогда
Сотрудник = ДокОснование.Субконто1;
НаименованиеАванса = ДокОснование.Осн;
Цель = ДокОснование.Назначение;
ТипОтчета = 1;
Получено1 = ""+ДокОснование;
Дата1 = ДокОснование.ДатаДок;
Сумма1 = ДокОснование.Сумма;
КонецЕсли;
КонецЕсли;
ИначеЕсли ДокОснование.Вид() = "ВалРасходныйОрдер" Тогда
Если ТипЗначенияСтр(ДокОснование.Субконто1) = "Справочник" Тогда
Если (ДокОснование.Субконто1.Вид() = "Сотрудники") И
(ДокОснование.Субконто1.Выбран()=1) Тогда
Сотрудник = ДокОснование.Субконто1;
НаименованиеАванса = ДокОснование.Основание;
Цель = ДокОснование.Назначение;
ТипОтчета = 2;
Получено1 = "Вал.РКО "+ДокОснование.НомерДок;
Дата1 = ДокОснование.ДатаДок;
Сумма1 = ДокОснование.Сумма;
Валюта = ДокОснование.Валюта;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//******************************************************************************
// ПоКнопкеПечать()
//
// Вызывается из формул элементов диалога:
// Кнопка "кнПечать".
//
// Описание:
// Определяется соответствующая печатная форма.
//
Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)
Если ПустоеЗначение(НомерТекущейФормы) = 1 Тогда
НомерТекущейФормы = 1;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
КонецЕсли;
Если НомерТекущейФормы = 1 Тогда
Печать();
Иначе
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Контекст, "Контекст");
Параметры.ДобавитьЗначение(СразуНаПринтер, "Устройство");
Параметры.ДобавитьЗначение(КолЭкз, "КоличествоКопий");
ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм+ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));
КонецЕсли;
КонецПроцедуры // ПоКнопкеПечать()
//******************************************************************************
// ПоКнопкеВыборПечатнойФормы()
//
// Вызывается из формул элементов диалога:
// Кнопка "кнВыбПечать".
//
// Описание:
// - открывает список для выбора способа печати.
// - формирует таблицу по выбранному способу.
//
Процедура ПоКнопкеВыборПечатнойФормы()
ВыбНомер = глВыборПечатнойФормы("Документ." + Вид(), ТаблицаПечФорм);
Если ВыбНомер > 0 Тогда
НомерТекущейФормы = ВыбНомер;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
ПоКнопкеПечать();
КонецЕсли;
КонецПроцедуры // ПоКнопкеВыборПечатнойФормы()
//-----------------------------------------------------------------------------
Новый = 0;
ТаблицаПечФорм = СоздатьОбъект("ТаблицаЗначений");
ТаблицаПечФорм.НоваяКолонка("Название","Строка",,,,30);
ТаблицаПечФорм.НоваяКолонка("Файл","Строка",,,"Файл",10);
ТаблицаПечФорм.НоваяКолонка("Кнопка","Строка",,,,10);
ТаблицаПечФорм.НоваяКолонка("ФайлОписания","Строка");
// добавим информацию о встроенной форме
ТаблицаПечФорм.НоваяСтрока();
ТаблицаПечФорм.Название = "Печать АО";
ТаблицаПечФорм.Кнопка = "Печать";
Сч18 = СчетПоКоду("18.3"); // ПС 28.07.09
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот