Имя: Пароль:
1C
1С v8
Обработка 62 счета
0 Яна93
 
17.07.13
10:48
Пытаюсь сделать обработку по 62 счету..
Но таблица выходит пустая..значения заполняются только в колонке Сумма у оплате..и те не верные.. В общем в отчете следующие кошонки: Принципал, Сальдо начало периода, ОборотДт, ОборотКт, Сальдо конец периода, Сумма к оплате и Оплата пропорционально.

Код выглядит следующим образом:


Процедура Обороты62(ТабДок, КонецПериода, НачалоПериода, Организация, Счет62) Экспорт
   
   Общаясумма    =0;
   Макет        =ПолучитьМакет("Обороты62");
   
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент,
       |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт) КАК НОКт,
       |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ОборотДт,
       |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт) КАК КОКт,
       |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК НОДт
       |ПОМЕСТИТЬ РБХоз
       |ИЗ
       |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &Счет62, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
       |
       |СГРУППИРОВАТЬ ПО
       |    ХозрасчетныйОстаткиИОбороты.Субконто1,
       |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    Ю_ТранзакцииОбороты.Принципал,
       |    СУММА(Ю_ТранзакцииОбороты.СуммаНаТООборот) КАК СуммаНаТООборот
       |ПОМЕСТИТЬ Оборот62Кт
       |ИЗ
       |    РегистрНакопления.Ю_Транзакции.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Ю_ТранзакцииОбороты
       |ГДЕ
       |    Ю_ТранзакцииОбороты.Контрагент <> Ю_ТранзакцииОбороты.Принципал
       |
       |СГРУППИРОВАТЬ ПО
       |    Ю_ТранзакцииОбороты.Принципал
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    Ю_ТранзакцииОбороты.Принципал,
       |    СУММА(Ю_ТранзакцииОбороты.СуммаНаТООборот) КАК СуммаНаТООборот1
       |ПОМЕСТИТЬ оборотмой
       |ИЗ
       |    РегистрНакопления.Ю_Транзакции.Обороты(&НачалоПериода, &Так, , ) КАК Ю_ТранзакцииОбороты
       |ГДЕ
       |    Ю_ТранзакцииОбороты.Контрагент <> Ю_ТранзакцииОбороты.Принципал
       |
       |СГРУППИРОВАТЬ ПО
       |    Ю_ТранзакцииОбороты.Принципал
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    РБХоз.Контрагент,
       |    РБХоз.НОКт,
       |    РБХоз.ОборотДт,
       |    РБХоз.КОКт,
       |    Оборот62Кт.СуммаНаТООборот,
       |    РБХоз.НОДт
       |ПОМЕСТИТЬ РБТранз
       |ИЗ
       |    РБХоз КАК РБХоз
       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Оборот62Кт КАК Оборот62Кт
       |        ПО РБХоз.Контрагент = Оборот62Кт.Принципал
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    Ю_ВзаиморасчетыСПринципаламиОстатки.Принципал,
       |    СУММА(Ю_ВзаиморасчетыСПринципаламиОстатки.СуммаВзаиморасчетовОстаток) КАК СуммаКОплате
       |ПОМЕСТИТЬ Сумма5Дней
       |ИЗ
       |    РегистрНакопления.Ю_ВзаиморасчетыСПринципалами.Остатки(&День5, ) КАК Ю_ВзаиморасчетыСПринципаламиОстатки
       |
       |СГРУППИРОВАТЬ ПО
       |    Ю_ВзаиморасчетыСПринципаламиОстатки.Принципал
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    ЕСТЬNULL(РБТранз.Контрагент, оборотмой.Принципал) КАК Контрагент,
       |    ЕСТЬNULL(РБТранз.НОКт, 0) КАК НОКт,
       |    ЕСТЬNULL(РБТранз.ОборотДт, 0) КАК ОборотДт,
       |    ЕСТЬNULL(РБТранз.КОКт, 0) КАК КОКт,
       |    ЕСТЬNULL(РБТранз.СуммаНаТООборот, 0) КАК СуммаНаТООборот,
       |    ЕСТЬNULL(оборотмой.СуммаНаТООборот1, 0) КАК СуммаНаТООборот1,
       |    ЕСТЬNULL(РБТранз.НОДт, 0) КАК НОДт
       |ИЗ
       |    оборотмой КАК оборотмой
       |        ЛЕВОЕ СОЕДИНЕНИЕ РБТранз КАК РБТранз
       |        ПО (РБТранз.Контрагент = оборотмой.Принципал)
       |
       |УПОРЯДОЧИТЬ ПО
       |    оборотмой.Принципал.Наименование";
       
       
   
   Запрос1 = Новый Запрос;
   Запрос1.Текст =
   "ВЫБРАТЬ
   |    ДнейЗадержки.Принципал КАК Принц,
   |    ДнейЗадержки.КолДней КАК Кол
   |ИЗ
   |    РегистрСведений.ДнейЗадержки КАК ДнейЗадержки";
   ТаблЗн=Запрос1.Выполнить().Выгрузить();
   
   
   Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
   Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
   Запрос.УстановитьПараметр("Организация", Организация);
   Запрос.УстановитьПараметр("Счет62", Счет62);
   Запрос.УстановитьПараметр("День5", НачалоДня(КонецПериода)-4*60*60*24 );
   Запрос.УстановитьПараметр("так", КонецДня(КонецПериода) );
   
   сумма=запрос.Выполнить().Выбрать();
   Пока сумма.Следующий() цикл
       общаясумма=общаясумма+сумма.НОКт-сумма.ОборотДт+ сумма.СуммаНаТООборот1;
   конеццикла;
       
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
   
   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();
   
   
   Результат =Запрос.Выполнить();
   ВыборкаДетали = Результат.Выбрать();
   
   Пока ВыборкаДетали.Следующий() Цикл
           
       ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
       Если ВыборкаДетали.НОКт = 0 Тогда
           ОбластьДетальныхЗаписей.Параметры.НОКт =-ВыборкаДетали.НОДт
       КонецЕсли;
       
       
       СуммаНаОплату=ВыборкаДетали.НОКт-ВыборкаДетали.ОборотДт+ ВыборкаДетали.СуммаНаТООборот1;    
       ОбластьДетальныхЗаписей.Параметры.СуммаКОплате =ВыборкаДетали.НОКт-ВыборкаДетали.ОборотДт+ ВыборкаДетали.СуммаНаТООборот1;
       
       ОбластьДетальныхЗаписей.Параметры.руками=ВыборкаДетали.НОКт+ВыборкаДетали.СуммаНаТООборот-ВыборкаДетали.ОборотДт;
       
       Найденная=ТаблЗн.Найти( ВыборкаДетали.Контрагент, "Принц");
       Если найденная <> неопределено    тогда
           Запрос2 = Новый Запрос;
           Запрос2.Текст =    
           "ВЫБРАТЬ
           |    Ю_ТранзакцииОбороты.Принципал,
           |    СУММА(Ю_ТранзакцииОбороты.СуммаНаТООборот) КАК СуммаНаТООборот1
           |ИЗ
           |    РегистрНакопления.Ю_Транзакции.Обороты(&НачалоПериода, &Так, , ) КАК Ю_ТранзакцииОбороты
           |ГДЕ
           |    Ю_ТранзакцииОбороты.Контрагент <> Ю_ТранзакцииОбороты.Принципал
           |    И Ю_ТранзакцииОбороты.Принципал = &Принципал
           |
           |СГРУППИРОВАТЬ ПО
           |    Ю_ТранзакцииОбороты.Принципал";
           Запрос2.УстановитьПараметр("так", НачалоДня(КонецПериода)-найденная.Кол*60*60*24 );
           Запрос2.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода) );
           Запрос2.УстановитьПараметр("Принципал",ВыборкаДетали.Контрагент  );
           выборка2= Запрос2.Выполнить().Выбрать();
           пока выборка2.Следующий() цикл
               новое= ВыборкаДетали.НОКт-ВыборкаДетали.ОборотДт+выборка2.СуммаНаТООборот1 ;
               СуммаНаОплату=новое; //число(ВыборкаДетали.НОКт-ВыборкаДетали.ОборотДт+ новое);
               ОбластьДетальныхЗаписей.Параметры.СуммаКОплате= СуммаНаОплату;
               общаясумма=  общаясумма- СуммаНаОплату+ новое;
           конеццикла;
       конецесли;
       //********************************************************************************    
       //сообщить(общаясумма);    
       
       процент =СуммаНаОплату*100/ общаясумма;
       а=НашСчет*процент/100;
       б=формат(а,"ЧЦ=10;ЧДЦ=2");
       ОбластьДетальныхЗаписей.Параметры.пропорц=б;
       
       Если а<0 тогда ОбластьДетальныхЗаписей.Параметры.пропорц = "                    -  ";
           
       конецесли;
       
       если  СуммаНаОплату<0 тогда
           ОбластьДетальныхЗаписей.Параметры.СуммаКОплате = "                    -  "
       конецесли;
       
       
       ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());
   КонецЦикла;
   
   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);
   сообщить(общаясумма);

КонецПроцедуры
1 golden-pack
 
17.07.13
10:51
две ошибки сразу:

1. Запрос в цикле

2. Без использования СКД
2 Vovan1975
 
17.07.13
10:58
смотреть портянку без фотки - впадлу
3 Яна93
 
17.07.13
11:24
Фотку как загрузить?) могу на внешний файлообменник..
4 Яна93
 
17.07.13
11:31
Бухгалтерия предприятия, редакция 1.6 (1.6.30.7)

http://www.fayloobmennik.net/3020737

пароль к файлу 123
5 Яна93
 
17.07.13
11:52
(1) В каком цикле? я слепая наверно..)
Основная теорема систематики: Новые системы плодят новые проблемы.