Помогите плиз!!!
04.06.2009
13:08
#1
"Я не программистка. Мне нужна ваша помощь.
Нашла в инете отчет по реализации по услугам а он не робит. помогите надо оч срочно(((
Вот исходник
Заранее спс!!!!!
НДС и себестоимость не надо и разницу тоже надо чтоб прост формировал по субконту за период и валюту тоже надо чтоб просто показывало сколько было и всего за месяц
//*******************************************
Процедура Сформировать()
строкаФильтра=ПериодСтр(НачДата,КонДата);
строкаФильтра=строкаФильтра+РазделительСтрок;
Запрос=создатьОбъект("Запрос");
ТекстЗапроса="
|Период с НачДата по КонДата;
|ОбрабатыватьДокументы Проведенные;
|Док=Документ.РасходнаяНакладная.ТекущийДокумент,Документ.СуммовыеРазницы.Документ;
|ДокСР=Документ.СуммовыеРазницы.ТекущийДокумент;
|Кол=Документ.РасходнаяНакладная.Количество;
|Товар=Документ.РасходнаяНакладная.Товар;
|НДС=Документ.РасходнаяНакладная.НДС;
|НомерСтроки=Документ.РасходнаяНакладная.НомерСтроки;
|НомерСтрокиСР=Документ.СуммовыеРазницы.НомерСтроки;
|СуммаВсего=Документ.РасходнаяНакладная.Сумма;
|СуммаСНДС=Документ.РасходнаяНакладная.Всего;
|СумРазница=Документ.СуммовыеРазницы.Сумма;
|Группировка Док;
|Группировка Товар без Групп;
|Функция итНДС=сумма(НДС);
|Функция итКол=сумма(Кол);
|Функция итСумРазница=сумма(СумРазница);
|Функция итСуммаВсегоСНДС=сумма(СуммаСНДС);
|Функция итСуммаВсего=сумма(СуммаВсего);";
Если ВыбТовар.Выбран()=1 Тогда
ТекстЗапроса=ТекстЗапроса+"
|Условие (Товар в ВыбТовар);";
строкаФильтра=строкаФильтра+РазделительСтрок+
"По товару: "+строка(ВыбТовар);
иначе
строкаФильтра=строкаФильтра+РазделительСтрок+
"По товару: ВСЕ";
КонецЕсли;
Если ВыбКонтрагент.Выбран()=1 Тогда
ТекстЗапроса=ТекстЗапроса+"
|Условие (Док.Контрагент в ВыбКонтрагент);";
строкаФильтра=строкаФильтра+РазделительСтрок+
"По контрагенту: "+строка(ВыбКонтрагент);
иначе
строкаФильтра=строкаФильтра+РазделительСтрок+
"По контрагенту: ВСЕ";
КонецЕсли;
Если СуммыСНДС=1 Тогда
строкаФильтра=строкаФильтра+РазделительСтрок+
"Суммы включают НДС";
КонецЕсли;
Запрос.Выполнить(ТекстЗапроса);
ит=создатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ит,1,1);
//чч=0;
//ит.ВыбратьСтроку(чч);
Таб=СоздатьОбъект("Таблица");
Опер=создатьОбъект("Операция");
Таб.ВывестиСекцию("Шапка|Общая");
Если ФормироватьСебестоимость=1 Тогда
Таб.ПрисоединитьСекцию("Шапка|Себестоимость");
КонецЕсли;
Ном=0;
итСуммаЗакупки=0;
итНДС=0;
итСуммаВсего=0;
итНаценка=0;
Пока Запрос.Группировка(1)=1 Цикл
ЦеныВДоговоре = 1; // в рублях
Договор=Запрос.Док.Договор;
Если Договор.Выбран() = 1 Тогда
Если ПустоеЗначение(Договор.ВалютаДоговора) = 0 Тогда
ЦеныВДоговоре = 2; // в валюте
КонецЕсли;
КонецЕсли;
Если ЦеныВДоговоре=2 Тогда
Валюта = Договор.ВалютаДоговора;
Кратность = Валюта.Кратность.Получить(Запрос.Док.ДатаДок);
Кратность = ?(Кратность=0, 1, Кратность);
КонецЕсли;
КурсВОтчет=ВыбВалюта.Курс.Получить(Запрос.Док.ДатаДок);
//сообщить(Запрос.ДокСР);
//------------
//считаем суммовые разницы по документу
//
СумРазница=0;
Если НЕ(ПустоеЗначение(Запрос.ДокСР)=1) Тогда
Если Опер.НайтиОперацию(Запрос.ДокСР)=1 Тогда
Опер.ПолучитьПроводкуПоНомеру(Запрос.НомерСтрокиСР);
СумРазница=Опер.Сумма;
Если ЦеныВДоговоре=2 Тогда
Если КурсВОтчет<>0 Тогда
КратностьВОтчет = ВыбВалюта.Кратность.Получить(Запрос.Док.ДатаДок);
КратностьВОтчет = ?(КратностьВОтчет=0, 1, КратностьВОтчет);
СумРазница=СумРазница/КурсВОтчет*КратностьВОтчет;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//конец расчета СР
//----------------
Если НЕ(Опер.НайтиОперацию(Запрос.Док)=1) Тогда
сообщить("Нет операции по документу: "+строка(Запрос.Док));
продолжить;
КонецЕсли;
Пока Запрос.Группировка(2)=1 Цикл
Если ПустоеЗначение(Запрос.Товар)=1 Тогда
Продолжить;
КонецЕсли;
Ном=Ном+1;
Опер.ПолучитьПроводкуПоНомеру(Запрос.НомерСтроки);
Если Опер.Кредит.Субконто(1)=Запрос.Товар Тогда
СуммаЗакупки=Опер.Сумма;
иначе
сообщить(строка(Запрос.Док)+". Проводки не соответсвуют документу. Необходимо перепровести документ");
КонецЕсли;
Если СуммыСНДС=1 Тогда
СуммаВсего=Запрос.итСуммаВсегоСНДС;
текСтавкаНДС=Запрос.Товар.СтавкаНДС.Получить(Запрос.Док.ДатаДок);
СуммаЗакупки=СуммаЗакупки*(1+текСтавкаНДС.Ставка/100);
иначе
СуммаВсего=Запрос.итСуммаВсего;
КонецЕсли;
Если ЦеныВДоговоре=2 Тогда
НДС=Запрос.итНДС*Запрос.Док.Курс/Кратность;
СуммаВсего=СуммаВсего*Запрос.Док.Курс/Кратность;
иначе
НДС=Запрос.итНДС;
СуммаВсего=СуммаВсего;
КонецЕсли;
Если КурсВОтчет<>0 Тогда
КратностьВОтчет = ВыбВалюта.Кратность.Получить(Запрос.Док.ДатаДок);
КратностьВОтчет = ?(КратностьВОтчет=0, 1, КратностьВОтчет);
СуммаЗакупки=СуммаЗакупки/КурсВОтчет*КратностьВОтчет;
НДС=НДС/КурсВОтчет*КратностьВОтчет;
СуммаВсего=СуммаВсего/КурсВОтчет*КратностьВОтчет;
КонецЕсли;
итСуммаЗакупки=итСуммаЗакупки+СуммаЗакупки;
итНДС=итНДС+НДС;
итСуммаВсего=итСуммаВсего+СуммаВсего;
Наценка=СуммаВсего-СуммаЗакупки;
итНаценка=итНаценка+Наценка;
Если СуммаЗакупки<>0 Тогда
ПроцНаценки=окр(Наценка/СуммаЗакупки*100,2);
иначе
ПроцНаценки=0;
КонецЕсли;
Таб.ВывестиСекцию("Строка|Общая");
Если ФормироватьСебестоимость=1 Тогда
Таб.ПрисоединитьСекцию("Строка|Себестоимость");
КонецЕсли;
КонецЦикла;
Если СумРазница<>0 Тогда
итНаценка=итНаценка+СумРазница;
Ном=Ном+1;
ПечТовар="*** Сум.разница ***"; //+строка(Запрос.Док);
СРНаценка=СумРазница;
СРПроцНаценки=""""; //СумРазница/(?(СумРазница<0,-1,1)*СумРазница)*100;
Таб.ВывестиСекцию("СумРазница|Общая");
Если ФормироватьСебестоимость=1 Тогда
Таб.ПрисоединитьСекцию("СумРазница|Себестоимость");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если итСуммаЗакупки<>0 Тогда
итПроцНаценки=окр(итНаценка/итСуммаЗакупки*100,2);
иначе
итПроцНаценки=0;
КонецЕсли;
Таб.ВывестиСекцию("Подвал|Общая");
Если ФормироватьСебестоимость=1 Тогда
Таб.ПрисоединитьСекцию("Подвал|Себестоимость");
КонецЕсли;
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.Показать("Отчет по реализации");
КонецПроцедуры
"
Нашла в инете отчет по реализации по услугам а он не робит. помогите надо оч срочно(((
Вот исходник
Заранее спс!!!!!
НДС и себестоимость не надо и разницу тоже надо чтоб прост формировал по субконту за период и валюту тоже надо чтоб просто показывало сколько было и всего за месяц
//*******************************************
Процедура Сформировать()
строкаФильтра=ПериодСтр(НачДата,КонДата);
строкаФильтра=строкаФильтра+РазделительСтрок;
Запрос=создатьОбъект("Запрос");
ТекстЗапроса="
|Период с НачДата по КонДата;
|ОбрабатыватьДокументы Проведенные;
|Док=Документ.РасходнаяНакладная.ТекущийДокумент,Документ.СуммовыеРазницы.Документ;
|ДокСР=Документ.СуммовыеРазницы.ТекущийДокумент;
|Кол=Документ.РасходнаяНакладная.Количество;
|Товар=Документ.РасходнаяНакладная.Товар;
|НДС=Документ.РасходнаяНакладная.НДС;
|НомерСтроки=Документ.РасходнаяНакладная.НомерСтроки;
|НомерСтрокиСР=Документ.СуммовыеРазницы.НомерСтроки;
|СуммаВсего=Документ.РасходнаяНакладная.Сумма;
|СуммаСНДС=Документ.РасходнаяНакладная.Всего;
|СумРазница=Документ.СуммовыеРазницы.Сумма;
|Группировка Док;
|Группировка Товар без Групп;
|Функция итНДС=сумма(НДС);
|Функция итКол=сумма(Кол);
|Функция итСумРазница=сумма(СумРазница);
|Функция итСуммаВсегоСНДС=сумма(СуммаСНДС);
|Функция итСуммаВсего=сумма(СуммаВсего);";
Если ВыбТовар.Выбран()=1 Тогда
ТекстЗапроса=ТекстЗапроса+"
|Условие (Товар в ВыбТовар);";
строкаФильтра=строкаФильтра+РазделительСтрок+
"По товару: "+строка(ВыбТовар);
иначе
строкаФильтра=строкаФильтра+РазделительСтрок+
"По товару: ВСЕ";
КонецЕсли;
Если ВыбКонтрагент.Выбран()=1 Тогда
ТекстЗапроса=ТекстЗапроса+"
|Условие (Док.Контрагент в ВыбКонтрагент);";
строкаФильтра=строкаФильтра+РазделительСтрок+
"По контрагенту: "+строка(ВыбКонтрагент);
иначе
строкаФильтра=строкаФильтра+РазделительСтрок+
"По контрагенту: ВСЕ";
КонецЕсли;
Если СуммыСНДС=1 Тогда
строкаФильтра=строкаФильтра+РазделительСтрок+
"Суммы включают НДС";
КонецЕсли;
Запрос.Выполнить(ТекстЗапроса);
ит=создатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ит,1,1);
//чч=0;
//ит.ВыбратьСтроку(чч);
Таб=СоздатьОбъект("Таблица");
Опер=создатьОбъект("Операция");
Таб.ВывестиСекцию("Шапка|Общая");
Если ФормироватьСебестоимость=1 Тогда
Таб.ПрисоединитьСекцию("Шапка|Себестоимость");
КонецЕсли;
Ном=0;
итСуммаЗакупки=0;
итНДС=0;
итСуммаВсего=0;
итНаценка=0;
Пока Запрос.Группировка(1)=1 Цикл
ЦеныВДоговоре = 1; // в рублях
Договор=Запрос.Док.Договор;
Если Договор.Выбран() = 1 Тогда
Если ПустоеЗначение(Договор.ВалютаДоговора) = 0 Тогда
ЦеныВДоговоре = 2; // в валюте
КонецЕсли;
КонецЕсли;
Если ЦеныВДоговоре=2 Тогда
Валюта = Договор.ВалютаДоговора;
Кратность = Валюта.Кратность.Получить(Запрос.Док.ДатаДок);
Кратность = ?(Кратность=0, 1, Кратность);
КонецЕсли;
КурсВОтчет=ВыбВалюта.Курс.Получить(Запрос.Док.ДатаДок);
//сообщить(Запрос.ДокСР);
//------------
//считаем суммовые разницы по документу
//
СумРазница=0;
Если НЕ(ПустоеЗначение(Запрос.ДокСР)=1) Тогда
Если Опер.НайтиОперацию(Запрос.ДокСР)=1 Тогда
Опер.ПолучитьПроводкуПоНомеру(Запрос.НомерСтрокиСР);
СумРазница=Опер.Сумма;
Если ЦеныВДоговоре=2 Тогда
Если КурсВОтчет<>0 Тогда
КратностьВОтчет = ВыбВалюта.Кратность.Получить(Запрос.Док.ДатаДок);
КратностьВОтчет = ?(КратностьВОтчет=0, 1, КратностьВОтчет);
СумРазница=СумРазница/КурсВОтчет*КратностьВОтчет;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//конец расчета СР
//----------------
Если НЕ(Опер.НайтиОперацию(Запрос.Док)=1) Тогда
сообщить("Нет операции по документу: "+строка(Запрос.Док));
продолжить;
КонецЕсли;
Пока Запрос.Группировка(2)=1 Цикл
Если ПустоеЗначение(Запрос.Товар)=1 Тогда
Продолжить;
КонецЕсли;
Ном=Ном+1;
Опер.ПолучитьПроводкуПоНомеру(Запрос.НомерСтроки);
Если Опер.Кредит.Субконто(1)=Запрос.Товар Тогда
СуммаЗакупки=Опер.Сумма;
иначе
сообщить(строка(Запрос.Док)+". Проводки не соответсвуют документу. Необходимо перепровести документ");
КонецЕсли;
Если СуммыСНДС=1 Тогда
СуммаВсего=Запрос.итСуммаВсегоСНДС;
текСтавкаНДС=Запрос.Товар.СтавкаНДС.Получить(Запрос.Док.ДатаДок);
СуммаЗакупки=СуммаЗакупки*(1+текСтавкаНДС.Ставка/100);
иначе
СуммаВсего=Запрос.итСуммаВсего;
КонецЕсли;
Если ЦеныВДоговоре=2 Тогда
НДС=Запрос.итНДС*Запрос.Док.Курс/Кратность;
СуммаВсего=СуммаВсего*Запрос.Док.Курс/Кратность;
иначе
НДС=Запрос.итНДС;
СуммаВсего=СуммаВсего;
КонецЕсли;
Если КурсВОтчет<>0 Тогда
КратностьВОтчет = ВыбВалюта.Кратность.Получить(Запрос.Док.ДатаДок);
КратностьВОтчет = ?(КратностьВОтчет=0, 1, КратностьВОтчет);
СуммаЗакупки=СуммаЗакупки/КурсВОтчет*КратностьВОтчет;
НДС=НДС/КурсВОтчет*КратностьВОтчет;
СуммаВсего=СуммаВсего/КурсВОтчет*КратностьВОтчет;
КонецЕсли;
итСуммаЗакупки=итСуммаЗакупки+СуммаЗакупки;
итНДС=итНДС+НДС;
итСуммаВсего=итСуммаВсего+СуммаВсего;
Наценка=СуммаВсего-СуммаЗакупки;
итНаценка=итНаценка+Наценка;
Если СуммаЗакупки<>0 Тогда
ПроцНаценки=окр(Наценка/СуммаЗакупки*100,2);
иначе
ПроцНаценки=0;
КонецЕсли;
Таб.ВывестиСекцию("Строка|Общая");
Если ФормироватьСебестоимость=1 Тогда
Таб.ПрисоединитьСекцию("Строка|Себестоимость");
КонецЕсли;
КонецЦикла;
Если СумРазница<>0 Тогда
итНаценка=итНаценка+СумРазница;
Ном=Ном+1;
ПечТовар="*** Сум.разница ***"; //+строка(Запрос.Док);
СРНаценка=СумРазница;
СРПроцНаценки=""""; //СумРазница/(?(СумРазница<0,-1,1)*СумРазница)*100;
Таб.ВывестиСекцию("СумРазница|Общая");
Если ФормироватьСебестоимость=1 Тогда
Таб.ПрисоединитьСекцию("СумРазница|Себестоимость");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если итСуммаЗакупки<>0 Тогда
итПроцНаценки=окр(итНаценка/итСуммаЗакупки*100,2);
иначе
итПроцНаценки=0;
КонецЕсли;
Таб.ВывестиСекцию("Подвал|Общая");
Если ФормироватьСебестоимость=1 Тогда
Таб.ПрисоединитьСекцию("Подвал|Себестоимость");
КонецЕсли;
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.Показать("Отчет по реализации");
КонецПроцедуры
"
04.06.2009
13:31
#2
"Не работает" значит выдает ошибку при формировании или он Вас просто не устраивает или что-то ещё?
04.06.2009
20:34
#3
Чую, блондинка на форуме.
На хрен весь модуль выложила? Кто его читать будет? Где ошибка? Выложи текст ошибки. И отчет тогда уж.
На хрен весь модуль выложила? Кто его читать будет? Где ошибка? Выложи текст ошибки. И отчет тогда уж.
08.06.2009
16:38
#7
"> > > Пригласите программиста
> >
> >
> > И заплатите ему денег.
> >
>
> И нормально заплатите.
И вперед! ;)"
> >
> >
> > И заплатите ему денег.
> >
>
> И нормально заплатите.
И вперед! ;)"
Читают тему
(гостей: 1)