dmntr
Newbie | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Добрый день, совсем не разбираюсь в 1С, но необходимо узнать из каких таблиц берутся данные и по какому полю они связанны. Вот пример модуля 1С 7.7 отчет реализация по поставщикам //******************************************* Функция ПроверкаПериода() Если НачДата > КонДата Тогда Предупреждение("Неправильно задан период отчета!"+РазделительСтрок+ "Дата начала больше даты окончания периода."); Возврат 0; КонецЕсли; Если КонДата > КонецРассчитанногоПериодаБИ() Тогда Предупреждение("За выбранный период итоги не рассчитаны!"+РазделительСтрок+ "Расчет итогов выполняется в режиме"+РазделительСтрок+ """Операции - Управление бухгалтерскими итогами""."); Возврат 0; КонецЕсли; Возврат 1; КонецФункции //****************************** Процедура Сформировать() Если ПроверкаПериода() = 0 Тогда Возврат; КонецЕсли; стрПост = ""; Если Поставщик.Выбран()=1 Тогда Если Поставщик.ЭтоГруппа()=0 Тогда стрПост = "по поставщику: "+СокрЛП(Поставщик.Наименование); КонецЕсли; КонецЕсли; Таб = СоздатьОбъект("Таблица"); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Товар"); ТЗ.НоваяКолонка("Поставщик"); ТЗ.НоваяКолонка("Колво"); ТЗ.НоваяКолонка("РознЦена","Число"); ТЗ.НоваяКолонка("УчетСтоим","Число"); ТЗ.НоваяКолонка("СтавкаНДС"); ТЗ.НоваяКолонка("СуммаНДС","Число"); ТЗ.НоваяКолонка("УчСтоимСНДС","Число"); БухИт = СоздатьОбъект("БухгалтерскиеИтоги"); БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура); БухИт.ИспользоватьСубконто(ВидыСубконто.Партии); Если МХ.Выбран()=1 Тогда БухИт.ИспользоватьСубконто(ВидыСубконто.МестаХранения,МХ,2); КонецЕсли; БухИт.ВыполнитьЗапрос(НачДата,КонДата,"41.2","90.2",,,,5); БухИт.ВыбратьСубконто(1); //***********номенклатура Пока БухИт.ПолучитьСубконто(1)=1 Цикл БухИт.ВыбратьСубконто(2); //********партии Пока БухИт.ПолучитьСубконто(2)=1 Цикл //*****Закр.С.П. №10437 от 18.01.10 Если БухИт.Субконто(2).Документ.Вид() = "КомплектацияРоз" Тогда Продолжить КонецЕсли; //**************** Если БухИт.КО("С") = 0 Тогда Продолжить; КонецЕсли; //***** Поставщик выбран Если Поставщик.Выбран()=1 Тогда Если БухИт.Субконто(2).Документ.Выбран()=0 Тогда Продолжить; КонецЕсли; Док = БухИт.Субконто(2).Документ; //*************поставщик не группа Если Поставщик.ЭтоГруппа()=0 Тогда Если Док.Субконто1<>Поставщик Тогда Продолжить; КонецЕсли; //*********поставщик группа Иначе спрКонтр = СоздатьОбъект("Справочник.Контрагенты"); Если спрКонтр.НайтиЭлемент(Док.Субконто1)=1 Тогда Если спрКонтр.ПринадлежитГруппе(Поставщик)=0 Тогда Продолжить; КонецЕсли; Иначе Продолжить; КонецЕсли; КонецЕсли; КонецЕсли; Если ТовГруппа.Выбран()=1 Тогда Товар = БухИт.Субконто(1); //********************Закр.С.П. №10437 от 18.01.10 Если ТовГруппа.ЭтоГруппа() = 1 Тогда Если Товар.ТоварнаяГруппа.ПринадлежитГруппе(ТовГруппа) = 0 Тогда Продолжить КонецЕсли; Иначе //********************** Если Товар.ТоварнаяГруппа<>ТовГруппа Тогда Продолжить; КонецЕсли; КонецЕсли; КонецЕсли; Если БухИт.КО("С")=0 Тогда Продолжить; КонецЕсли; Если БухИт.Субконто(2).Документ.Выбран()=0 Тогда Продолжить; КонецЕсли; //**********Закр.С.П. 21.03.10 ТЗ.НоваяСтрока(); ТЗ.Товар = БухИт.Субконто(1); ТЗ.Поставщик = БухИт.Субконто(2).Документ.Субконто1; ТЗ.Колво = БухИт.КО("К"); Если БухИт.КО("К")<>0 Тогда ТЗ.РознЦена = БухИт.КО("С")/БухИт.КО("К"); Иначе ТЗ.РознЦена = БухИт.КО("С"); КонецЕсли; ТЗ.УчетСтоим = БухИт.Субконто(2).ЦенаУчетная; ТЗ.СтавкаНДС = БухИт.Субконто(2).СтавкаНДС; Если ТЗ.Товар.ВариантРасчетаСумм.СуммаВключаетНДС=0 Тогда //**********Закр.С.П. 20.03.10 //ТЗ.СуммаНДС = ТЗ.УчетСтоим*БухИт.Субконто(2).СтавкаНДС.Ставка/100; ТЗ.СуммаНДС = Окр(ТЗ.УчетСтоим*БухИт.Субконто(2).СтавкаНДС.Ставка/100,2); ТЗ.УчСтоимСНДС = ТЗ.УчетСтоим+ТЗ.СуммаНДС; Иначе //**********Закр.С.П. 20.03.10 //ТЗ.СуммаНДС = ТЗ.УчетСтоим*БухИт.Субконто(2).СтавкаНДС.Ставка/(100+БухИт.Субконто(2).СтавкаНДС.Ставка); ТЗ.СуммаНДС = Окр(ТЗ.УчетСтоим*БухИт.Субконто(2).СтавкаНДС.Ставка/(100+БухИт.Субконто(2).СтавкаНДС.Ставка),2); ТЗ.УчСтоимСНДС = ТЗ.УчетСтоим; КонецЕсли; // КонецЕсли;//**********Закр.С.П. 21.03.10 КонецЦикла; КонецЦикла; //*************Закр.С.П. // Если (Поставщик.Выбран()=0) ИЛИ (Поставщик.ЭтоГруппа()=1) Тогда ТЗ.Свернуть("Поставщик, Товар, РознЦена,УчетСтоим,СтавкаНДС,СуммаНДС,УчСтоимСНДС", "Колво"); ТЗ.Сортировать("+Поставщик,+Товар"); // КонецЕсли; //*************** Вывод на печать ПоставщикПеч = ПолучитьПустоеЗначение("Справочник.Контрагенты"); ном = 0; РознЦенаПечИт = 0; УчетСтоимПечИт = 0; СуммаНДСПечИт = 0; УчетСтоимСНДСПечИт = 0; РознЦенаПостПечИт = 0; УчетСтоимПостПечИт = 0; СуммаНДСПостПечИт = 0; УчетСтоимСНДСПостПечИт = 0; //**********Закр.С.П. РознСумПеч = 0; КолвоПечИт = 0; //********** поставщик не группа Если (Поставщик.Выбран()=1) И (Поставщик.ЭтоГруппа()<>1) Тогда Таб.ВывестиСекцию("Шапка"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ном = ном+1; ТоварПеч = ТЗ.Товар; ЕдИзмПеч = ТЗ.Товар.ЕдиницаИзмерения.Наименование; КолвоПеч = ТЗ.Колво; РознЦенаПеч = ТЗ.РознЦена; УчетСтоимПеч = ТЗ.УчетСтоим; СтавкаНДСПеч = ТЗ.СтавкаНДС; //СуммаНДСПеч = окр(ТЗ.СуммаНДС); СуммаНДСПеч = ТЗ.СуммаНДС;//**********Закр.С.П. УчетСтоимСНДСПеч = ТЗ.УчСтоимСНДС; Если число(КолвоПеч) <> 0 Тогда //**********Закр.С.П. 20.03.10 РознСумПеч = Число(РознЦенаПеч)*Число(КолвоПеч); КолвоПечИт = КолвоПечИт + Число(КолвоПеч); //********** РознЦенаПечИт = РознЦенаПечИт + Число(РознЦенаПеч)*Число(КолвоПеч); УчетСтоимПечИт = УчетСтоимПечИт + Число(УчетСтоимПеч)*Число(КолвоПеч); СуммаНДСПечИт = СуммаНДСПечИт + Число(СуммаНДСПеч)*Число(КолвоПеч); УчетСтоимСНДСПечИт = УчетСтоимСНДСПечИт + Число(УчетСтоимСНДСПеч)*Число(КолвоПеч); Иначе //****кол-во = 0 //**********Закр.С.П. 20.03.10 Продолжить; // РознЦенаПечИт = РознЦенаПечИт + Число(РознЦенаПеч); //********** КонецЕсли; Если ТолькоИтоги=0 Тогда Таб.ВывестиСекцию("Строка"); КонецЕсли; КонецЦикла; //РознЦенаПечИт = ТЗ.Итог("РознЦена"); //УчетСтоимПечИт = ТЗ.Итог("УчетСтоим"); //СтавкаНДСПечИт = ТЗ.Итог("СтавкаНДС"); //СуммаНДСПечИт = Окр(ТЗ.Итог("СуммаНДС")); //УчетСтоимСНДСПечИт = ТЗ.Итог("УчСтоимСНДС"); Таб.ВывестиСекцию("Итог"); Иначе //***по нескольким поставщикам Таб.ВывестиСекцию("Шапка"); ТЗ.ВыбратьСтроки(); КолвоПечИт = 0; УчетСтоимСНДСПечИт = 0; Пока ТЗ.ПолучитьСтроку() = 1 Цикл Если (ТЗ.НомерСтроки=1) ИЛИ (ПоставщикПеч <> ТЗ.Поставщик) Тогда Если (ТЗ.НомерСтроки<>1) Тогда Таб.ВывестиСекцию("ИтогПоставщик"); РознЦенаПостПечИт = 0; УчетСтоимПостПечИт = 0; СуммаНДСПостПечИт = 0; //**********Закр.С.П. РознСумПеч = 0; УчетСтоимСНДСПостПечИт = 0; РознСумПостПеч = 0; КолвоПостПечИт = 0; //********** КонецЕсли; ПоставщикПеч = ТЗ.Поставщик; Если ТолькоИтоги = 0 Тогда Таб.ВывестиСекцию("Поставщик"); //выводит наименование поставщика КонецЕсли; КонецЕсли; ном = ном+1; ТоварПеч = ТЗ.Товар; ЕдИзмПеч = ТЗ.Товар.ЕдиницаИзмерения.Наименование; КолвоПеч = ТЗ.Колво; РознЦенаПеч = ТЗ.РознЦена; УчетСтоимПеч = ТЗ.УчетСтоим; СтавкаНДСПеч = ТЗ.СтавкаНДС; //**********Закр.С.П. //СуммаНДСПеч = окр(ТЗ.СуммаНДС); СуммаНДСПеч = ТЗ.СуммаНДС; //*************** УчетСтоимСНДСПеч = ТЗ.УчСтоимСНДС; Если число(КолвоПеч)<>0 Тогда РознЦенаПечИт = РознЦенаПечИт + Число(РознЦенаПеч)*Число(КолвоПеч); УчетСтоимПечИт = УчетСтоимПечИт + Число(УчетСтоимПеч)*Число(КолвоПеч); СуммаНДСПечИт = СуммаНДСПечИт + Число(СуммаНДСПеч)*Число(КолвоПеч); // УчетСтоимСНДСПечИт = УчетСтоимСНДСПечИт + Число(УчетСтоимСНДСПеч)*Число(КолвоПеч); //**********Закр.С.П. 20.03.10 УчетСтоимСНДСПечИт = УчетСтоимСНДСПечИт + Число(УчетСтоимПеч)*Число(КолвоПеч) + Число(СуммаНДСПеч)*Число(КолвоПеч); РознСумПеч = Число(РознЦенаПеч)*Число(КолвоПеч); // РознСумПостПеч = Число(РознЦенаПеч)*Число(КолвоПеч); КолвоПостПечИт = КолвоПостПечИт + Число(КолвоПеч); КолвоПечИт = КолвоПечИт + КолвоПостПечИт; //********** РознЦенаПостПечИт = РознЦенаПостПечИт + Число(РознЦенаПеч)*Число(КолвоПеч); УчетСтоимПостПечИт = УчетСтоимПостПечИт + Число(УчетСтоимПеч)*Число(КолвоПеч); СуммаНДСПостПечИт = СуммаНДСПостПечИт + Число(СуммаНДСПеч)*Число(КолвоПеч); УчетСтоимСНДСПостПечИт = УчетСтоимСНДСПостПечИт + Число(УчетСтоимСНДСПеч)*Число(КолвоПеч); Иначе //**********Закр.С.П. Продолжить; //РознЦенаПечИт = РознЦенаПечИт + Число(РознЦенаПеч); //РознЦенаПостПечИт = РознЦенаПостПечИт + Число(РознЦенаПеч); //********** КонецЕсли; Если ТолькоИтоги=0 Тогда Таб.ВывестиСекцию("Строка"); КонецЕсли; КонецЦикла; Таб.ВывестиСекцию("ИтогПоставщик"); Таб.ВывестиСекцию("Итог"); КонецЕсли; Таб.Опции(0, 0, 6, 0); Таб.ПараметрыСтраницы(1,1,, 10, 10, 10, 10,,, 1); Таб.ТолькоПросмотр(1); Таб.Показать("Реализация по поставщикам"); КонецПроцедуры //*********************** Процедура ПриОткрытии() НачДата = НачМесяца(РабочаяДата()); КонДата = КонМесяца(РабочаяДата()); КонецПроцедуры |