|
v7: Получился кривой отчет, почему - автор не знает (( Печаль | ☑ | ||
---|---|---|---|---|
0
serg-lom89
26.09.12
✎
16:58
|
Пишу отчет по эффективности раелизации мол продукции
в печатной форме неправильно выдает значения...(отчет пишеться на основании другого отчета).и циферки)с тем не сходяться=(посомтрите плиз...что не так.. //******************************************* Процедура ПриОткрытии() НачДата = НачМесяца(РабочаяДата()); КонДата = КонМесяца(РабочаяДата()); КонецПроцедуры Процедура Сформировать() Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); ТЗ=СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Группа","Справочник.ГруппаДляОтчетаПоЭфРеализ"); ТЗ.НоваяКолонка("ГруппаКод","Число"); ТЗ.НоваяКолонка("Сумма","Число"); ТЗ.НоваяКолонка("СуммаЭ","Число"); ТЗ.НоваяКолонка("Количество","Число"); ТЗ.НоваяКолонка("КоличествоЭ","Число"); БИ=СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура); БИ.ВыполнитьЗапрос(НачДата,КонДата,"КОП",,,,"Операция"); Таб.ВывестиСекцию("Шапка1"); БИ.ВыбратьПериоды(); Пока БИ.ПолучитьПериод()=1 Цикл Док=БИ.Операция.Документ; Если (Док.Вид()<>"РасходнаяНакладная") Тогда Продолжить; КонецЕсли; Если Док.Дегустация = 1 Тогда Продолжить; КонецЕсли; Если Док.Контрагент.ПризнакФилиала = 1 Тогда Продолжить; КонецЕсли; БИ.ВыбратьСубконто(ВидыСубконто.Номенклатура); Пока БИ.ПолучитьСубконто(ВидыСубконто.Номенклатура)=1 Цикл Если БИ.ДО("К")=0 Тогда Продолжить; КонецЕсли; Товар=БИ.Субконто(ВидыСубконто.Номенклатура); КПМ = Товар.КоэфПересчетаНаМолоко.Получить(Док.ДатаДок); Количество=0; КоличествоЭ=0; Если Док.Договор.Выбран() = 1 Тогда Если ПустоеЗначение(Док.Договор.ВалютаДоговора) = 0 Тогда Валюта = Док.Договор.ВалютаДоговора; Кратность = Валюта.Кратность.Получить(Док.ДатаДок); Кратность = ?(Кратность=0, 1, Кратность); Если Док.Курс = 0 Тогда Сообщить("В накладной № "+СокрЛП(Док.НомерДок)+" от "+СокрЛП(Док.ДатаДок)+" не указан курс валюты!"); Количество=БИ.ДО("К")*?(КПМ=0,1,КПМ); Иначе КоличествоЭ=БИ.ДО("К")*?(КПМ=0,1,КПМ); КонецЕсли; Иначе Количество=БИ.ДО("К")*?(КПМ=0,1,КПМ); КонецЕсли; Иначе Количество=БИ.ДО("К")*?(КПМ=0,1,КПМ); КонецЕсли; Коэф=0; СуммаПоДок = 0; СуммаПоДокЭ = 0; Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку()>0 Цикл Если Док.Товар = Товар Тогда Если Товар.ГруппаПродукции.Выбран()=1 Тогда Если (Док.Жирность <> 0) и (Константа.БазиснаяЖирность.Получить(Док.ДатаДок) <> 0) Тогда Коэф = Док.Жирность/10/Константа.БазиснаяЖирность.Получить(Док.ДатаДок); КонецЕсли; Если Док.Договор.Выбран() = 1 Тогда Если ПустоеЗначение(Док.Договор.ВалютаДоговора) = 0 Тогда Валюта = Док.Договор.ВалютаДоговора; Кратность = Валюта.Кратность.Получить(Док.ДатаДок); Кратность = ?(Кратность=0, 1, Кратность); Если Док.Курс = 0 Тогда Сообщить("В накладной № "+СокрЛП(Док.НомерДок)+" от "+СокрЛП(Док.ДатаДок)+" не указан курс валюты!"); СуммаПоДок = СуммаПоДок + Док.Сумма; Иначе СуммаПоДокЭ = СуммаПоДокЭ + Окр(Док.Сумма*Док.Курс/Кратность,0,1); КонецЕсли; Иначе СуммаПоДок = СуммаПоДок + Док.Сумма; КонецЕсли; Иначе СуммаПоДок = СуммаПоДок + Док.Сумма; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; ТЗ.НоваяСтрока(); ТЗ.Группа = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ; ТЗ.ГруппаКод = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ.Код; ТЗ.Сумма = СуммаПоДок; ТЗ.Количество = Количество*?(Коэф=0,1,Коэф); ТЗ.СуммаЭ = СуммаПоДокЭ; ТЗ.КоличествоЭ = КоличествоЭ*?(Коэф=0,1,Коэф); Если ТЗ.Группа.Выбран()=0 Тогда Сообщить("Для группы продукции" +Товар.ГруппаПродукции+"не выбрана группа для отчета по эфф-сти реализации" ); КонецЕсли; КонецЦикла; КонецЦикла; //// ДокВозврат = СоздатьОбъект("Документ.ВозвратПродукции"); ДокВозврат.ВыбратьДокументы(НачДата,КонДата); Пока ДокВозврат.ПолучитьДокумент()>0 Цикл Если ДокВозврат.Проведен() = 1 Тогда Если ДокВозврат.Контрагент.ПризнакФилиала = 1 Тогда Продолжить; КонецЕсли; //Коэф=0; Количество = 0; КоличествоЭ = 0; СуммаПоДок = 0; СуммаПоДокЭ = 0; ДокВозврат.ВыбратьСтроки(); Пока ДокВозврат.ПолучитьСтроку()>0 Цикл Товар=ДокВозврат.Товар; Если Товар.ГруппаПродукции.Выбран()=0 тогда Продолжить; КонецЕсли; КПМ = Товар.КоэфПересчетаНаМолоко.Получить(Док.ДатаДок); // Количество=-ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); Если ДокВозврат.Договор.Выбран() = 1 Тогда Если ПустоеЗначение(ДокВозврат.Договор.ВалютаДоговора) = 0 Тогда Валюта = ДокВозврат.Договор.ВалютаДоговора; Кратность = Валюта.Кратность.Получить(ДокВозврат.ДатаДок); Кратность = ?(Кратность=0, 1, Кратность); Если ДокВозврат.Курс = 0 Тогда Сообщить("В накладной № "+СокрЛП(ДокВозврат.НомерДок)+" от "+СокрЛП(ДокВозврат.ДатаДок)+" не указан курс валюты!"); СуммаПоДок = СуммаПоДок -ДокВозврат.Сумма; Количество =Количество -ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); Иначе СуммаПоДокЭ =СуммаПоДокЭ - Окр(ДокВозврат.Сумма*ДокВозврат.Курс/Кратность,0,1); КоличествоЭ =КоличествоЭ -ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); КонецЕсли; Иначе СуммаПоДок =СуммаПоДок -ДокВозврат.Сумма; // Количество =Количество -ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); КонецЕсли; Иначе СуммаПоДок = -ДокВозврат.Сумма; //СуммаПоДок Количество =Количество -ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); КонецЕсли; /////////////////////////////////////////////////////////////////// // Количество = 0; // КоличествоЭ = 0; // КПМ = Товар.КоэфПересчетаНаМолоко.Получить(Док.ДатаДок); // // Если ДокВозврат.Договор.Выбран() = 1 Тогда // Если ПустоеЗначение(ДокВозврат.Договор.ВалютаДоговора) = 0 Тогда // Валюта = ДокВозврат.Договор.ВалютаДоговора; // Кратность = Валюта.Кратность.Получить(ДокВозврат.ДатаДок); // Кратность = ?(Кратность=0, 1, Кратность); // Если ДокВозврат.Курс = 0 Тогда // Сообщить("В накладной № "+СокрЛП(ДокВозврат.НомерДок)+" от "+СокрЛП(ДокВозврат.ДатаДок)+" не указан курс валюты!"); // // СуммаПоДок = СуммаПоДок -ДокВозврат.Сумма; // Количество =Количество -ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); // Иначе // // СуммаПоДокЭ =СуммаПоДокЭ - Окр(ДокВозврат.Сумма*ДокВозврат.Курс/Кратность,0,1); // КоличествоЭ =КоличествоЭ -ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); // КонецЕсли; // Иначе // //СуммаПоДок =СуммаПоДок -ДокВозврат.Сумма; // Количество =Количество -ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); // КонецЕсли; // Иначе // //СуммаПоДок = -ДокВозврат.Сумма; //СуммаПоДок // Количество =Количество -ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); // КонецЕсли; ////////////////////////////////////////////////////////////////// КонецЦикла; ТЗ.НоваяСтрока(); ТЗ.Группа = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ; ТЗ.ГруппаКод = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ.Код; ТЗ.Сумма = СуммаПоДок; ТЗ.Количество = Количество; ТЗ.СуммаЭ = СуммаПоДокЭ; ТЗ.КоличествоЭ = КоличествоЭ; Если ТЗ.Группа.Выбран()=0 Тогда Сообщить("Для группы продукции" +Товар.ГруппаПродукции+"не выбрана группа для отчета по эфф-сти реализации" ); КонецЕсли; КонецЕсли; КонецЦикла; ; /////////////////////////////////////////////////// ДокВводВозвратныхОтходов = СоздатьОбъект("Документ.ВводВозвратныхОтходов"); ДокВводВозвратныхОтходов.ВыбратьДокументы(Начдата,КонДата); Пока ДокВводВозвратныхОтходов.ПолучитьДокумент()>0 Цикл Если ДокВводВозвратныхОтходов.Проведен() = 1 Тогда Если ДокВводВозвратныхОтходов.Контрагент.ПризнакФилиала = 1 Тогда Продолжить; КонецЕсли; ДокВводВозвратныхОтходов.ВыбратьСтроки(); Пока ДокВводВозвратныхОтходов.ПолучитьСтроку()>0 Цикл Товар=ДокВводВозвратныхОтходов.Продукция; Если Товар.ГруппаПродукции.Выбран()=0 тогда Продолжить; КонецЕсли; КПМ = Товар.КоэфПересчетаНаМолоко.Получить(ДокВводВозвратныхОтходов.ДатаДок); Количество=ДокВводВозвратныхОтходов.ФизВес*?(КПМ=0,1,КПМ); СуммаПоДок = 0; СуммаПоДок = ДокВводВозвратныхОтходов.Сумма; ТЗ.НоваяСтрока(); ТЗ.Группа = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ; ТЗ.ГруппаКод = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ.Код; ТЗ.Сумма = СуммаПоДок; ТЗ.Количество = Количество; Если ТЗ.Группа.Выбран()=0 Тогда Сообщить("Для группы продукции" +Товар.ГруппаПродукции+"не выбрана группа для отчета по эфф-сти реализации" ); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ДокВводВозвратныхОтходов = СоздатьОбъект("Документ.ВводВозвратныхОтходовМастер"); ДокВводВозвратныхОтходов.ВыбратьДокументы(НачДата,КонДата); Пока ДокВводВозвратныхОтходов.ПолучитьДокумент()>0 Цикл Если ДокВводВозвратныхОтходов.Проведен() = 1 Тогда Если ДокВводВозвратныхОтходов.Контрагент.ПризнакФилиала = 1 Тогда Продолжить; КонецЕсли; ДокВводВозвратныхОтходов.ВыбратьСтроки(); Пока ДокВводВозвратныхОтходов.ПолучитьСтроку()>0 Цикл Товар=ДокВводВозвратныхОтходов.Продукция; Если Товар.ГруппаПродукции.Выбран()=0 тогда Продолжить; КонецЕсли; КПМ = Товар.КоэфПересчетаНаМолоко.Получить(ДокВводВозвратныхОтходов.ДатаДок); Количество=ДокВводВозвратныхОтходов.ФизВес*?(КПМ=0,1,КПМ); СуммаПоДок = 0; СуммаПоДок = ДокВводВозвратныхОтходов.Сумма; ТЗ.НоваяСтрока(); ТЗ.Группа = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ; ТЗ.ГруппаКод = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ.Код; ТЗ.Сумма = СуммаПоДок; ТЗ.Количество = Количество; Если ТЗ.Группа.Выбран()=0 Тогда Сообщить("Для группы продукции" +Товар.ГруппаПродукции+"не выбрана группа для отчета по эфф-сти реализации" ); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; /////////////////////////////////////////////////// ТЗ1=СоздатьОбъект("ТаблицаЗначений"); ТЗ1.Загрузить(ТЗ); ТЗ1.ВыбратьСтроки(); Пока ТЗ1.ПолучитьСтроку()> 0 Цикл Если ТЗ1.Группа.Уровень() = 2 Тогда ТЗ.НоваяСтрока(); ТЗ.Группа = ТЗ1.Группа.Родитель; ТЗ.ГруппаКод = Число(ТЗ1.Группа.Родитель.Код); ТЗ.Сумма = ТЗ1.Сумма; ТЗ.Количество =ТЗ1.Количество; ТЗ.СуммаЭ = ТЗ1.СуммаЭ; ТЗ.КоличествоЭ = ТЗ1.КоличествоЭ; КонецЕсли; КонецЦикла; ТЗ.Свернуть("Группа,ГруппаКод","Сумма,Количество,СуммаЭ,КоличествоЭ"); ТЗ.Сортировать("ГруппаКод"); Таб.ВывестиСекцию("Строка|Верх1"); ВсегоСумма = 0; ВсегоСуммаЭ = 0; ВсегоКолво=0; ВсегоКолвоЭ=0; ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Таб.ПрисоединитьСекцию("Строка|Верх2"); ВсегоСумма = ВсегоСумма + ТЗ.Сумма; ВсегоСуммаЭ = ВсегоСуммаЭ + ТЗ.СуммаЭ; ВсегоКолво = ВсегоКолво+ТЗ.Количество; ВсегоКолвоЭ = ВсегоКолво+ТЗ.КоличествоЭ; КонецЦикла; Таб.ПрисоединитьСекцию("Строка|Итог"); Таб.ТолькоПросмотр(1); Таб.Показать("Эффективность реализации молочной продукции"); КонецПроцедуры |
|||
1
IamAlexy
26.09.12
✎
16:59
|
Нееееее е е еееееее ееет!!!!!!111
|
|||
2
DenLaDen
26.09.12
✎
16:59
|
(0) упал?
|
|||
3
IamAlexy
26.09.12
✎
17:00
|
ххха
так это же просто.. 485ый символ - тут ошибка |
|||
4
Ёпрст
26.09.12
✎
17:00
|
что-то определенно не так.
а вот что именно - загадка. |
|||
5
DenLaDen
26.09.12
✎
17:01
|
(4) не хватает глобального модуля
|
|||
6
serg-lom89
26.09.12
✎
17:01
|
гениально..что что то не так)
|
|||
7
mikecool
26.09.12
✎
17:01
|
(0) это все изза закоментаренных строк, их слишком много - надо убрать и все взлетит
|
|||
8
Волесвет
26.09.12
✎
17:01
|
какая прелесть -
"...(отчет пишеться на основании другого отчета).и циферки)с тем не сходяться=(посомтрите плиз...что не так.. ") |
|||
9
rs_trade
26.09.12
✎
17:02
|
(4) с ДНК что то не так.
|
|||
10
Vol71
26.09.12
✎
17:02
|
Присоединяюсь к (4), ТС хоть маленькую наводку дай. Выложить глобальник любой может, а вот что в нем.
|
|||
11
Aleks73
26.09.12
✎
17:03
|
(0) Поправлю кривой отчет. Строго в нерабочее время. Дорого.
|
|||
12
Deon
26.09.12
✎
17:03
|
(6) А какого ответа ты ждал, дорогой? Ты ж ещё ничего не спросил
|
|||
13
YF
26.09.12
✎
17:03
|
(10) В качестве подсказки будет выложен глобальный модуль!
(0) Пока ничего не понятно. Выкладывай глобальный модуль и весь модуль формы отчета |
|||
14
WoodMan
26.09.12
✎
17:06
|
да выкладывай уж всю базу
|
|||
15
serg-lom89
26.09.12
✎
17:07
|
тот отчет пишется на основании вот этого
Перем ГодОтчета; Перем КварталОтчета; Перем МесяцОтчета; Функция МесяцОтчетаСтр( НомерМесяцаОтчета, ГодОтч ) // Для формирования периода словами используем // системную функцию ПериодСтр(). Для этого ей надо передать // дату начала и дату конца месяца. ДатаВМесяце=Дата( ГодОтч, НомерМесяцаОтчета, 1 ); Возврат ПериодСтр( НачМесяца( ДатаВМесяце ), КонМесяца( ДатаВМесяце ) ); КонецФункции Процедура ПриОткрытии() МесяцОтчета=ВосстановитьЗначение("Месяц отчета"); Если ПустаяСтрока( Строка( МесяцОтчета ) ) = 1 Тогда МесяцОтчета=ДатаМесяц( РабочаяДата() ); КонецЕсли; ГодОтчета=ВосстановитьЗначение("Год отчета") ; Если ПустаяСтрока( Строка( ГодОтчета ) ) = 1 Тогда ГодОтчета=ДатаГод( РабочаяДата() ); КонецЕсли; // Формируем период отчета для показа ПериодОтчета=МесяцОтчетаСтр( МесяцОтчета, ГодОтчета ); ВидКонтрагента=1; Вывод = 1; КонецПроцедуры //****************************************************************************** Процедура Сформировать() Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); ДатаНачМесяца=Дата(ГодОтчета,МесяцОтчета,1); ДатаКон=КонМесяца(ДатаНачМесяца); ДатаНачКвартала=НачКвартала(ДатаНачМесяца); ДатаНачГода=НачГода(ДатаНачМесяца); БИ=СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура); БИ.ВыполнитьЗапрос(НачДата,КонДата,"КОП",,,,"Операция"); ТЗ=СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Контрагент",); ТЗ.НоваяКолонка("ГруппаПродукции"); ТЗ.НоваяКолонка("КоличествоМ","Число",19,3); ТЗ.НоваяКолонка("КоличествоК","Число",19,3); ТЗ.НоваяКолонка("КоличествоГ","Число",19,3); ТЗ.НоваяКолонка("СуммаМ","Число"); ТЗ.НоваяКолонка("СуммаК","Число"); ТЗ.НоваяКолонка("СуммаГ","Число"); Таб.ВывестиСекцию("Шапка"); БИ.ВыбратьПериоды(); Пока БИ.ПолучитьПериод()=1 цикл Док=БИ.Операция.Документ; Если (Док.Вид()<>"РасходнаяНакладная") тогда Продолжить; КонецЕсли; Если Док.Дегустация = 1 Тогда Продолжить; КонецЕсли; Если Контрагент.Выбран()=1 тогда Если (ВидКонтрагента=1) и (Док.Контрагент.Область<>Контрагент) тогда продолжить; ИначеЕсли (ВидКонтрагента=2) и (Док.Контрагент<>Контрагент) тогда Продолжить; КонецЕсли; Контр=Контрагент; Иначе Если ВидКонтрагента=1 тогда Контр=Док.Контрагент.Область; Иначе Контр=Док.Контрагент; КонецЕсли; КонецЕсли; Если Вывод = 2 Тогда Если Док.Контрагент.ПризнакФилиала = 1 Тогда Продолжить; КонецЕсли; ИначеЕсли Вывод = 3 Тогда Если Док.Контрагент.ПризнакФилиала = 0 Тогда Продолжить; КонецЕсли; КонецЕсли; БИ.ВыбратьСубконто(ВидыСубконто.Номенклатура); Пока БИ.ПолучитьСубконто(ВидыСубконто.Номенклатура)=1 цикл Если БИ.ДО("К")=0 Тогда Продолжить; КонецЕсли; Товар=БИ.Субконто(ВидыСубконто.Номенклатура); Если Товар.ГруппаПродукции.Выбран()=0 Тогда Если Товар.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Продукция Тогда Сообщить("В продукции "+СокрЛП(Товар)+" не выбрана группа продукции!"); КонецЕсли; Продолжить; КонецЕсли; //Количество=БИ.ДО("К")*Товар.МассаЕдПродукции*?(Товар.КоэфПересчетаНаМолоко=0,1,Товар.КоэфПересчетаНаМолоко); КПМ = Товар.КоэфПересчетаНаМолоко.Получить(Док.ДатаДок); Количество=БИ.ДО("К")*?(КПМ=0,1,КПМ); Коэф=0; СуммаПоДок = 0; Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку()>0 Цикл Если Док.Товар = Товар Тогда Если (Док.Жирность <> 0) и (Константа.БазиснаяЖирность.Получить(Док.ДатаДок) <> 0) Тогда Коэф = Док.Жирность/10/Константа.БазиснаяЖирность.Получить(Док.ДатаДок); КонецЕсли; Если Док.Договор.Выбран() = 1 Тогда Если ПустоеЗначение(Док.Договор.ВалютаДоговора) = 0 Тогда Валюта = Док.Договор.ВалютаДоговора; Кратность = Валюта.Кратность.Получить(Док.ДатаДок); Кратность = ?(Кратность=0, 1, Кратность); Если Док.Курс = 0 Тогда Сообщить("В накладной № "+СокрЛП(Док.НомерДок)+" от "+СокрЛП(Док.ДатаДок)+" не указан курс валюты!"); СуммаПоДок = СуммаПоДок + Док.Сумма; Иначе СуммаПоДок = СуммаПоДок + Окр(Док.Сумма*Док.Курс/Кратность,0,1); КонецЕсли; Иначе СуммаПоДок = СуммаПоДок + Док.Сумма; КонецЕсли; Иначе СуммаПоДок = СуммаПоДок + Док.Сумма; КонецЕсли; КонецЕсли; КонецЦикла; ТЗ.НоваяСтрока(); ТЗ.Контрагент=Контр; ТЗ.ГруппаПродукции=Товар.ГруппаПродукции; Если СокрЛП(Врег(Товар.ГруппаПродукции))="МАСЛО" Тогда ППП=1; КонецЕсли; ТЗ.КоличествоГ=Количество*?(Коэф=0,1,Коэф); ТЗ.СуммаГ=СуммаПоДок; Если КонМесяца(Док.ДатаДок)=ДатаКон тогда ТЗ.КоличествоМ=Количество*?(Коэф=0,1,Коэф); ТЗ.СуммаМ=СуммаПоДок; КонецЕсли; Если НачКвартала(Док.ДатаДок)=ДатаНачКвартала тогда ТЗ.КоличествоК=Количество*?(Коэф=0,1,Коэф); ТЗ.СуммаК=СуммаПоДок; КонецЕсли; КонецЦикла; КонецЦикла; ДокВозврат = СоздатьОбъект("Документ.ВозвратПродукции"); ДокВозврат.ВыбратьДокументы(НачДата,КонДата); Пока ДокВозврат.ПолучитьДокумент()>0 Цикл Если ДокВозврат.Проведен() = 1 Тогда Если Контрагент.Выбран()=1 тогда Если (ВидКонтрагента=1) и (ДокВозврат.Контрагент.Область<>Контрагент) тогда продолжить; ИначеЕсли (ВидКонтрагента=2) и (ДокВозврат.Контрагент<>Контрагент) тогда Продолжить; КонецЕсли; Контр=Контрагент; Иначе Если ВидКонтрагента=1 тогда Контр=ДокВозврат.Контрагент.Область; Иначе Контр=ДокВозврат.Контрагент; КонецЕсли; КонецЕсли; Если Вывод = 2 Тогда Если ДокВозврат.Контрагент.ПризнакФилиала = 1 Тогда Продолжить; КонецЕсли; ИначеЕсли Вывод = 3 Тогда Если ДокВозврат.Контрагент.ПризнакФилиала = 0 Тогда Продолжить; КонецЕсли; КонецЕсли; ДокВозврат.ВыбратьСтроки(); Пока ДокВозврат.ПолучитьСтроку()>0 Цикл Товар=ДокВозврат.Товар; Если Товар.ГруппаПродукции.Выбран()=0 тогда Продолжить; КонецЕсли; КПМ = Товар.КоэфПересчетаНаМолоко.Получить(Док.ДатаДок); Количество=-ДокВозврат.МассаНетто*1000*?(КПМ=0,1,КПМ); //Количество=-ДокВозврат.МассаНетто*1000*?(Товар.КоэфПересчетаНаМолоко=0,1,Товар.КоэфПересчетаНаМолоко); ТЗ.НоваяСтрока(); ТЗ.Контрагент=Контр; ТЗ.ГруппаПродукции=Товар.ГруппаПродукции; ТЗ.КоличествоГ=Количество; СуммаПоДок = 0; Если ДокВозврат.Договор.Выбран() = 1 Тогда Если ПустоеЗначение(ДокВозврат.Договор.ВалютаДоговора) = 0 Тогда Валюта = ДокВозврат.Договор.ВалютаДоговора; Кратность = Валюта.Кратность.Получить(ДокВозврат.ДатаДок); Кратность = ?(Кратность=0, 1, Кратность); Если ДокВозврат.Курс = 0 Тогда Сообщить("В накладной № "+СокрЛП(ДокВозврат.НомерДок)+" от "+СокрЛП(ДокВозврат.ДатаДок)+" не указан курс валюты!"); СуммаПоДок = -ДокВозврат.Сумма; Иначе СуммаПоДок = -Окр(ДокВозврат.Сумма*ДокВозврат.Курс/Кратность,0,1); КонецЕсли; Иначе СуммаПоДок = -ДокВозврат.Сумма; КонецЕсли; Иначе СуммаПоДок = -ДокВозврат.Сумма; КонецЕсли; ТЗ.СуммаГ=СуммаПоДок; Если КонМесяца(ДокВозврат.ДатаДок)=ДатаКон тогда ТЗ.КоличествоМ=Количество; ТЗ.СуммаМ=СуммаПоДок; КонецЕсли; Если НачКвартала(ДокВозврат.ДатаДок)=ДатаНачКвартала тогда ТЗ.КоличествоК=Количество; ТЗ.СуммаК=СуммаПоДок; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ДокВводВозвратныхОтходов = СоздатьОбъект("Документ.ВводВозвратныхОтходов"); ДокВводВозвратныхОтходов.ВыбратьДокументы(НачДата,КонДата); Пока ДокВводВозвратныхОтходов.ПолучитьДокумент()>0 Цикл Если ДокВводВозвратныхОтходов.Проведен() = 1 Тогда Если Контрагент.Выбран()=1 тогда Если (ВидКонтрагента=1) и (ДокВводВозвратныхОтходов.Контрагент.Область<>Контрагент) тогда продолжить; ИначеЕсли (ВидКонтрагента=2) и (ДокВводВозвратныхОтходов.Контрагент<>Контрагент) тогда Продолжить; КонецЕсли; Контр=Контрагент; Иначе Если ВидКонтрагента=1 тогда Контр=ДокВводВозвратныхОтходов.Контрагент.Область; Иначе Контр=ДокВводВозвратныхОтходов.Контрагент; КонецЕсли; КонецЕсли; Если Вывод = 2 Тогда Если ДокВводВозвратныхОтходов.Контрагент.ПризнакФилиала = 1 Тогда Продолжить; КонецЕсли; ИначеЕсли Вывод = 3 Тогда Если ДокВводВозвратныхОтходов.Контрагент.ПризнакФилиала = 0 Тогда Продолжить; КонецЕсли; КонецЕсли; ДокВводВозвратныхОтходов.ВыбратьСтроки(); Пока ДокВводВозвратныхОтходов.ПолучитьСтроку()>0 Цикл Товар=ДокВводВозвратныхОтходов.Продукция; Если Товар.ГруппаПродукции.Выбран()=0 тогда Продолжить; КонецЕсли; КПМ = Товар.КоэфПересчетаНаМолоко.Получить(ДокВводВозвратныхОтходов.ДатаДок); Количество=ДокВводВозвратныхОтходов.ФизВес*?(КПМ=0,1,КПМ); ТЗ.НоваяСтрока(); ТЗ.Контрагент=Контр; ТЗ.ГруппаПродукции=Товар.ГруппаПродукции; ТЗ.КоличествоГ=Количество; СуммаПоДок = 0; СуммаПоДок = ДокВводВозвратныхОтходов.Сумма; ТЗ.СуммаГ=СуммаПоДок; Если КонМесяца(ДокВводВозвратныхОтходов.ДатаДок)=ДатаКон тогда ТЗ.КоличествоМ=Количество; ТЗ.СуммаМ=СуммаПоДок; КонецЕсли; Если НачКвартала(ДокВводВозвратныхОтходов.ДатаДок)=ДатаНачКвартала тогда ТЗ.КоличествоК=Количество; ТЗ.СуммаК=СуммаПоДок; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ДокВводВозвратныхОтходов = СоздатьОбъект("Документ.ВводВозвратныхОтходовМастер"); ДокВводВозвратныхОтходов.ВыбратьДокументы(НачДата,КонДата); Пока ДокВводВозвратныхОтходов.ПолучитьДокумент()>0 Цикл Если ДокВводВозвратныхОтходов.Проведен() = 1 Тогда Если Контрагент.Выбран()=1 тогда Если (ВидКонтрагента=1) и (ДокВводВозвратныхОтходов.Контрагент.Область<>Контрагент) тогда продолжить; ИначеЕсли (ВидКонтрагента=2) и (ДокВводВозвратныхОтходов.Контрагент<>Контрагент) тогда Продолжить; КонецЕсли; Контр=Контрагент; Иначе Если ВидКонтрагента=1 тогда Контр=ДокВводВозвратныхОтходов.Контрагент.Область; Иначе Контр=ДокВводВозвратныхОтходов.Контрагент; КонецЕсли; КонецЕсли; Если Вывод = 2 Тогда Если ДокВводВозвратныхОтходов.Контрагент.ПризнакФилиала = 1 Тогда Продолжить; КонецЕсли; ИначеЕсли Вывод = 3 Тогда Если ДокВводВозвратныхОтходов.Контрагент.ПризнакФилиала = 0 Тогда Продолжить; КонецЕсли; КонецЕсли; ДокВводВозвратныхОтходов.ВыбратьСтроки(); Пока ДокВводВозвратныхОтходов.ПолучитьСтроку()>0 Цикл Товар=ДокВводВозвратныхОтходов.Продукция; Если Товар.ГруппаПродукции.Выбран()=0 тогда Продолжить; КонецЕсли; КПМ = Товар.КоэфПересчетаНаМолоко.Получить(ДокВводВозвратныхОтходов.ДатаДок); Количество=ДокВводВозвратныхОтходов.ФизВес*?(КПМ=0,1,КПМ); ТЗ.НоваяСтрока(); ТЗ.Контрагент=Контр; ТЗ.ГруппаПродукции=Товар.ГруппаПродукции; ТЗ.КоличествоГ=Количество; СуммаПоДок = 0; СуммаПоДок = ДокВводВозвратныхОтходов.Сумма; ТЗ.СуммаГ=СуммаПоДок; Если КонМесяца(ДокВводВозвратныхОтходов.ДатаДок)=ДатаКон тогда ТЗ.КоличествоМ=Количество; ТЗ.СуммаМ=СуммаПоДок; КонецЕсли; Если НачКвартала(ДокВводВозвратныхОтходов.ДатаДок)=ДатаНачКвартала тогда ТЗ.КоличествоК=Количество; ТЗ.СуммаК=СуммаПоДок; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ТЗ.Свернуть("Контрагент,ГруппаПродукции","КоличествоМ, КоличествоК, КоличествоГ,СуммаМ, СуммаК, СуммаГ"); ТЗ.Сортировать("Контрагент,ГруппаПродукции"); Контр=ПолучитьПустоеЗначение(); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 цикл Если Контр<>ТЗ.Контрагент тогда Контр=ТЗ.Контрагент; Таб.ВывестиСекцию("Контрагент"); КонецЕсли; КоличествоМ=Окр(ТЗ.КоличествоМ/1000,3,1); КоличествоК=Окр(ТЗ.КоличествоК/1000,3,1); КоличествоГ=Окр(ТЗ.КоличествоГ/1000,3,1); Группа=ТЗ.ГруппаПродукции; Таб.ВывестиСекцию("Строка"); Контр=ТЗ.Контрагент; КонецЦикла; Если Контрагент.Выбран()=0 тогда КоличествоМЗавод=0; КоличествоКЗавод=0; КоличествоГЗавод=0; СуммаМЗавод=0; СуммаКЗавод=0; СуммаГЗавод=0; Если Вывод = 1 Тогда Итого = "Итого по заводу"; ИначеЕсли Вывод = 2 Тогда Итого = "Итого по заводу (без филиалов)"; Иначе Итого = "Итого по филиалам"; КонецЕсли; Таб.ВывестиСекцию("Итог"); ТЗ.Свернуть("ГруппаПродукции","КоличествоМ,КоличествоК,КоличествоГ,СуммаМ,СуммаК,СуммаГ"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 цикл КоличествоМ=Окр(ТЗ.КоличествоМ/1000,3,1); КоличествоК=Окр(ТЗ.КоличествоК/1000,3,1); КоличествоГ=Окр(ТЗ.КоличествоГ/1000,3,1); КоличествоМЗавод=КоличествоМЗавод + Окр(ТЗ.КоличествоМ/1000,3,1); КоличествоКЗавод=КоличествоКЗавод + Окр(ТЗ.КоличествоК/1000,3,1); КоличествоГЗавод=КоличествоГЗавод + Окр(ТЗ.КоличествоГ/1000,3,1); СуммаМЗавод=СуммаМЗавод + ТЗ.СуммаМ; СуммаКЗавод=СуммаКЗавод + ТЗ.СуммаК; СуммаГЗавод=СуммаГЗавод + ТЗ.СуммаГ; Группа=ТЗ.ГруппаПродукции; Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.ВывестиСекцию("ИтогЗавод"); КонецЕсли; Таб.ПовторятьПриПечатиСтроки(4,4); Таб.Опции(0,0,0,0); Таб.ПараметрыСтраницы(1,,,,,,,,,1); Таб.Показать("Учет поставок молочной продукции"); КонецПроцедуры //******************************************************************************** Процедура ПриНачалеВыбораЗначения(Элем,Флаг) Если Элем="Контрагент" тогда Флаг=0; Если ВидКонтрагента=1 тогда ОткрытьФорму("Справочник.Области.ФормаСписка",); Иначе ОткрытьФорму("Справочник.Контрагенты.ФормаСписка",); КонецЕсли; КонецЕсли; КонецПроцедуры //******************************************************************************** Процедура ПлюсПериод() Если МесяцОтчета=12 Тогда МесяцОтчета=1; ГодОтчета=ГодОтчета+1; Иначе МесяцОтчета=МесяцОтчета+1; КонецЕсли; КварталОтчета=Цел( ( МесяцОтчета - 1 )/3 ) + 1; ПериодОтчета=МесяцОтчетаСтр( МесяцОтчета, ГодОтчета ); КонецПроцедуры //******************************************************************************** Процедура МинусПериод() Если МесяцОтчета=1 Тогда МесяцОтчета=12; ГодОтчета=ГодОтчета-1; Иначе МесяцОтчета=МесяцОтчета-1; КонецЕсли; КварталОтчета=Цел( ( МесяцОтчета - 1 )/3 ) + 1; ПериодОтчета=МесяцОтчетаСтр( МесяцОтчета, ГодОтчета ); КонецПроцедуры //******************************************************************************** Процедура ПриЗакрытии() СохранитьЗначение("Месяц отчета", МесяцОтчета); СохранитьЗначение("Год отчета", ГодОтчета); КонецПроцедуры |
|||
16
chief accountant
26.09.12
✎
17:07
|
да выкладывай уже весь жесткий диск
|
|||
17
YF
26.09.12
✎
17:07
|
(15) Вот, правильной дорогой идешь, товарищ. Ждем глобальник
|
|||
18
ILM
гуру
26.09.12
✎
17:08
|
(0) А давайте начнем листинги конфы на мисту постить? Не ну а, чё?
Покритикуем разработчиков? Сколько строк можно запостить... |
|||
19
Deon
26.09.12
✎
17:08
|
(15) Погоди, ты правда думаешь, что эти полотенца кода кто-то будет читать за тебя?
|
|||
20
HeroShima
26.09.12
✎
17:09
|
дорого дорогой идёт дорогой
|
|||
21
mikecool
26.09.12
✎
17:09
|
(19) я могу, за 1500 в час
|
|||
22
GreyK
26.09.12
✎
17:11
|
(0) "по эффективности раелизации" - убило на прочь :)
Ты хоть скажи что тебе ms. Отладчик говорит. |
|||
23
serg-lom89
26.09.12
✎
17:11
|
там дело в том что неправильно считает с расходнойНакладной и возвратТовара.
может что с ТЗ не так...по отладчику не выдает ТЗ.Группу из док ВозвратТовара |
|||
24
Deon
26.09.12
✎
17:12
|
(21) А читаю я 1 строку в минуту? )
|
|||
25
YF
26.09.12
✎
17:12
|
(23) Может.
Мне вот кажется, что в этой ветке раньше чем через 100 постов никакого ответа не будет ... |
|||
26
Deon
26.09.12
✎
17:13
|
(23) Серёга. Мы ту русские, правда. С нами можно говорить по-русски, не обязательно по-тарабарски.
|
|||
27
mikecool
26.09.12
✎
17:13
|
(24) и долго плюю на палец перед перелистыванием страницы )
|
|||
28
MeGa_BALANCE
26.09.12
✎
17:15
|
я тож так раньше считал что-
Язык запросов придумали лодыри ... |
|||
29
Vol71
26.09.12
✎
17:16
|
пятнично
|
|||
30
Sh1ko
26.09.12
✎
17:17
|
В мониторе проблема, однозначно!
|
|||
31
Ёпрст
26.09.12
✎
17:17
|
код конечно, супер..для каждого субконто перебирать табличную часть дока..
ээх, куда только процессорное время тратится |
|||
32
serg-lom89
26.09.12
✎
17:17
|
печалька
|
|||
33
Vol71
26.09.12
✎
17:18
|
там еще и декалитры вроде
|
|||
34
Deon
26.09.12
✎
17:18
|
(31) Дядень из Интела придумаю процессор помощнее и нет проблем ;)
|
|||
35
Deon
26.09.12
✎
17:18
|
*дяденьки
|
|||
36
Sh1ko
26.09.12
✎
17:18
|
(31) В наш век дешевых мощных процов, хоть на форму запрос в цикле вешай-)
|
|||
37
serg-lom89
26.09.12
✎
17:19
|
вот вот=))
|
|||
38
serg-lom89
26.09.12
✎
17:20
|
жаль что никто не подсказал..спасибо=))
|
|||
39
Тарантул
26.09.12
✎
17:20
|
Да грустно что автор не знает, сочувствую искренне
|
|||
40
HeroShima
26.09.12
✎
17:20
|
(32) мы так не думаем)
|
|||
41
Deon
26.09.12
✎
17:21
|
(32) Чем ты опечален о юный падаван? Неужели тем, что в этой ветке висят 40 суровых мегапрофессионалов 1С 7.7, только и ждущих, что хоть какого-нибудь маленького конкретного намека на твою проблему, чтобы сразу же тебе от всей души помочь?
|
|||
42
Sh1ko
26.09.12
✎
17:21
|
А в 89-ом никаких катастроф ядерных не было?
|
|||
43
Deon
26.09.12
✎
17:21
|
(42) Думаю, просто год неправильно написал.
|
|||
44
Тарантул
26.09.12
✎
17:21
|
(41) он не знает в чем его проблема насколько я поняла)
|
|||
45
serg-lom89
26.09.12
✎
17:22
|
да нет=)))
думал кто то подсажет))ну нет так нет-) |
|||
46
andrewalexk
26.09.12
✎
17:22
|
(42) :) ЧП "перестройка"
|
|||
47
Deon
26.09.12
✎
17:23
|
(45) Что тебе подсказать-то? )
|
|||
48
chief accountant
26.09.12
✎
17:23
|
(45) Будь мужиком заплати денег за отчет
|
|||
49
serg-lom89
26.09.12
✎
17:23
|
в 1984 все произошли катастрофы=))
|
|||
50
andrewalexk
26.09.12
✎
17:23
|
(45) :) мысли свои приведи в порядок ты, юный падаван о
зы переходи на желтую сторону силы |
|||
51
serg-lom89
26.09.12
✎
17:24
|
бегу)
|
|||
52
andrewalexk
26.09.12
✎
17:24
|
(49) :)) *1986
|
|||
53
Deon
26.09.12
✎
17:24
|
Мне кажется, что ТС его проблема интересна меньше, чем нам )
|
|||
54
Sh1ko
26.09.12
✎
17:26
|
Если Док.Дегустация = 1 Тогда
У вас есть люди, которые дегустируют Расходные Накладные? |
|||
55
serg-lom89
26.09.12
✎
17:27
|
ТЗ.НоваяСтрока();
ТЗ.Группа = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ; ТЗ.ГруппаКод = Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ.Код; ТЗ.Сумма = СуммаПоДок; ТЗ.Количество = Количество; ТЗ.СуммаЭ = СуммаПоДокЭ; ТЗ.КоличествоЭ = КоличествоЭ; этой части в ВозвратПродукции в отладчике не отображаеться ТЗ.Группа и ТЗ.ГруппаКод ...в чем дело??может подскажет кто нить? |
|||
56
serg-lom89
26.09.12
✎
17:27
|
жуют накладные.епт-)
|
|||
57
Deon
26.09.12
✎
17:28
|
(55) Не отображаются - это в смысле выдают пустые значения?
|
|||
58
Иде я?
модератор
26.09.12
✎
17:29
|
А где ты их сохраняешь ? После каждой строки транзакцию закрепляй
|
|||
59
Тарантул
26.09.12
✎
17:29
|
(55) а ТЗ.Сумма и все остальное отображается?
|
|||
60
serg-lom89
26.09.12
✎
17:30
|
ТЗ,сумма и ТЗ,колво отображаеться
|
|||
61
serg-lom89
26.09.12
✎
17:31
|
да пусто..ничего не выдает ТЗ,ГРуппа
|
|||
62
Aleks73
26.09.12
✎
17:32
|
(61) в отладке рой в Товаре
|
|||
63
Deon
26.09.12
✎
17:32
|
(61) А значение переменной Товар отладчик показывает?
В этот товаре заполнено Товар.ГруппаПродукции? |
|||
64
serg-lom89
26.09.12
✎
17:34
|
да..товар показывает(перебирает его)...и ГруппаПродукции тож...
|
|||
65
Тарантул
26.09.12
✎
17:35
|
(64)и ГруппаДляОтчетаПоЭфРеализ показывает?
|
|||
66
serg-lom89
26.09.12
✎
17:35
|
вот тока когда перебираю в ВозвратеПродукции то ТЗ.Группа не показывает..а товар показывает
|
|||
67
serg-lom89
26.09.12
✎
17:36
|
ГруппаДляОтчетаПоЭфРеализ...нет
|
|||
68
Deon
26.09.12
✎
17:36
|
(66) Товар.ГруппаПродукции.ГруппаДляОтчетаПоЭфРеализ в отладчике показывает
|
|||
69
Тарантул
26.09.12
✎
17:37
|
(67) и как тогда оно туда попадет?
|
|||
70
Deon
26.09.12
✎
17:38
|
(67) Отсюда вывод: У этой ГруппаПродукции не заполнен реквизит ГруппаДляОтчетаПоЭфРеализ
|
|||
71
Deon
26.09.12
✎
17:38
|
логично?
|
|||
72
serg-lom89
26.09.12
✎
17:41
|
заполненно...я делаю отчет за день что бы сверить со старым отчетом..так где РасходнаяНакладная то выбирает а ВозвратПродукции нет
|
|||
73
serg-lom89
26.09.12
✎
17:42
|
и для того товара что я выбрал то там заполнил ГруппаДляОтчетаПоЭфРеализ
|
|||
74
Deon
26.09.12
✎
17:44
|
(72)(73) Переходи обратно на русский
|
|||
75
HeroShima
26.09.12
✎
17:46
|
(74) одновременно с этим исчезнут вопросы типа (0)
|
|||
76
Тарантул
26.09.12
✎
17:50
|
(72) а что тогда (67). как то более определенно можно ответить)?
|
|||
77
serg-lom89
26.09.12
✎
18:11
|
в отладчике показывает мне что за ТЗ.Группа и что за ТЗ.КодГруппы(выдает отладчик там где происходит выборка этой группы и код ее) ну и суммы и кол ва.
а вот в возрате продукции не выдает..только отладчик показывает сумму и колва. |
|||
78
serg-lom89
26.09.12
✎
18:12
|
в отладчике показывает мне что за ТЗ.Группа и что за ТЗ.КодГруппы(выдает отладчик там где происходит выборка этой группы и код ее) ну и суммы и кол ва.- это для расходной накладной
|
|||
79
serg-lom89
26.09.12
✎
18:12
|
то есть от расходной должно отниматься (суммы и колва)должна отниматься (суммы и колва)возврата продукции
|
|||
80
serg-lom89
26.09.12
✎
18:13
|
а мне в печатной форме выдает только расходную накладную
|
|||
81
serg-lom89
26.09.12
✎
18:13
|
ее значения
|
|||
82
Zubizub
26.09.12
✎
18:14
|
вот как надо писать программы Как такое может работать? Шахматная программа из 1024 символов.
|
|||
83
DJ Anthon
26.09.12
✎
18:15
|
(82) круто стебанул )
|
|||
84
Скользящий
26.09.12
✎
18:17
|
Отжигаете.
|
|||
85
ЧеловекДуши
01.10.12
✎
06:26
|
И я тоже, кину камень :)
(0)Автор, советую для практики переписать свой отчет, а не подтираться этим гоунокодом и не ломать себе головушку :) ...Там смотришь, через месяцок и напишешь... :) |
|||
86
VladZ
01.10.12
✎
06:33
|
(0) Глядя на твой код можно подумать, что ты в пещере живешь... В которой нет разделения на комнаты, сан.узлы и прочие функциональные штуки... Просто пещера, в которой все навалено в кучу...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |