Имя: Пароль:
1C
1C 7.7
v7: Не работает отчет после перехода с файловой базы на серверную
,
0 Soul771
 
02.07.13
12:55
Добрый день.
Помогите, пожалуйста, найти ошибку, бьемся уже неделю....
Была файловая база, перешли на sql-сервер. Конфигурация самописная, на 7.7.
После перехода не формируется отчет, выдает ошибку 1 , после того, как несколько раз нажимаешь enter, выдает ошибку 2. На файловом варианте все работает... Код и скрины прилагаю.

ммм... а как вставить скрины, подскажите, не нашла кнопку?...


отчет :"объем реализации с разбивкой по месяцам", в фильтре выбирается период, валюта и клиент (покупатели).

код

Перем  Массивкол[20];

//*******************************************
Процедура Сформировать()
   Заг="";
   Если ВыбКлиент.Выбран()=0 Тогда
       Предупреждение("Выберите клиента или группу!");
       Возврат;
   КонецЕсли;
   Запрос=СоздатьОбъект("Запрос");    
   Если ДатаКонца>=ПолучитьДатуТА() Тогда
       ТекстЗап="Период С { ДатаНачала };";
   Иначе
       ТекстЗап="Период С { ДатаНачала } По { ДатаКонца } ;";
   КонецЕсли;
   ТекстЗап=ТекстЗап+"
   
   |Док=Регистр.Реализация.ТекущийДокумент,Регистр.УчетЗатрат.ПоДокументу;
   |Клиент=Регистр.Реализация.Клиент;
   |Признак=Регистр.Реализация.ПризнакОперации;      
   |ВидТовара=Регистр.Реализация.Товар.ВидТовара,Регистр.УчетЗатрат.Услуга.ВидТовара;";
   Если Валюта=1 Тогда ТекстЗап=ТекстЗап+"
       |Реал=Регистр.Реализация.СуммаРуб;
       |РеалВ=Регистр.Реализация.СуммаРубВ;
       |Себ = Регистр.Реализация.СебестРуб,Регистр.УчетЗатрат.СуммаРуб;    
       |СебВ= Регистр.Реализация.СебестРубВ;";    
   Иначе ТекстЗап=ТекстЗап+"
       |Реал=Регистр.Реализация.СуммаSFT;
       |РеалВ=Регистр.Реализация.СуммаSFTВ;
       |Себ= Регистр.Реализация.СебестSFT,Регистр.УчетЗатрат.СуммаSFT;    
       |СебВ= Регистр.Реализация.СебестSFTВ;";
   КонецЕсли;                
   ТекстЗап=ТекстЗап+"
   |Функция СуммаРеал=Сумма(Реал);  
   |Функция СуммаРеалВ=Сумма(РеалВ);  
   |Функция СуммаСеб=Сумма(Себ);
   |Функция СуммаСебВ=Сумма(СебВ);
   |Условие ((ВидТовара=Перечисление.ВидыТоваров.Товар) ИЛИ (ВидТовара=Перечисление.ВидыТоваров.Услуга));";
   
   Таб=СоздатьОбъект("Таблица");
   Если (ВыбКлиент.ЭтоГруппа()=1) Тогда  
       For i=1 to 20 do
           МассивКол[i]=0;
       enddo;    
       ТекстЗап=ТекстЗап+"Условие (Клиент.ПринадлежитГруппе(ВыбКлиент)=1);";
       Заг="По клиентам группы "+ВыбКлиент.Наименование;
       ТекстЗап=ТекстЗап+"
       |Группировка Клиент без групп упорядочить по Клиент.ОфициальноеНаименование;
       |Группировка Месяц;
       |Группировка Док ;
       |";
       Флаг=Запрос.Выполнить(ТекстЗап);
       Если Флаг=0 тогда
           Возврат;
       КонецЕсли;
       Таб.ИсходнаяТаблица("Таблица1");
       Таб.ВывестиСекцию("Выбор|Клиент");  
       ДатаП=ДатаНачала;  
       Ном=0;  КолМес=0;
       Пока ДатаП<ДатаКонца Цикл        
           Мес= Формат(ДатаП,"ДММММГГ");    
           КолМес=КолМес+1;
           Таб.ПрисоединитьСекцию("Выбор|Месяц");
           ДатаП=ДобавитьМесяц(ДатаП,1);
       КонецЦикла;  
       Таб.ПрисоединитьСекцию("Выбор|Всего");
       Сум=0;   СумП=0; Рнт=0; ИтогКол=0;    СумИт=0;
       Пока Запрос.Группировка("Клиент") = 1 Цикл
           Если (Запрос.Клиент.ЭтоГруппа()=1) Тогда
               Продолжить;
           КонецЕсли;  
           Клнт=Запрос.Клиент;
           Ном=Ном+1;
           Таб.ВывестиСекцию("Строка|Клиент");
           ДатаП=ДатаНачала;  ОбщКол=0;
           Сч=1;
           Пока ДатаП<ДатаКонца Цикл        
               Мес= Формат(ДатаП,"ДММММГГ");  
               Кол=0; СумП=0;  Рнт=0;
               Запрос.Получить(Клнт,,);  
               Пока Запрос.Группировка("Месяц") =1 Цикл
                   МесКл=Запрос.Месяц+" г.";  
                   Если Мес=МесКл Тогда  
                       СумП=Запрос.СуммаРеал+Запрос.СуммаРеалВ;
                       Себест=Запрос.СуммаСеб+Запрос.СуммаСебВ;
                       СумИт=СумИт+СумП;
                       Рнт=?(Себест<>0,Окр((СумП/Себест-1)*100,2),100);
                       Пока Запрос.Группировка("Док")=1 Цикл
                           Кол=Кол+1;
                       КонецЦикла;    
                   КонецЕсли;                          
               КонецЦикла;      
               МассивКол[Сч]=МассивКол[Сч]+Кол;
               Таб.ПрисоединитьСекцию("Строка|Месяц");
               ДатаП=ДобавитьМесяц(ДатаП,1);  
               ОбщКол=ОбщКол+Кол;
               Сч=Сч+1;
           КонецЦикла;
           ИтгП=Запрос.СуммаРеал+Запрос.СуммаРеалВ;  
           Себест=Запрос.СуммаСеб+Запрос.СуммаСебВ;
           СРнт=?(Себест<>0,Окр((ИтгП/Себест-1)*100,2),100);
           Таб.ПрисоединитьСекцию("Строка|Всего");
           ИтогКол=ИтогКол+ОбщКол;    
       КонецЦикла;    
       Таб.ВывестиСекцию("Итог|Клиент");
       ОбщИтогКол=0;
       For i=1 to  КолМес do
           ИтогКол=МассивКол[i];
           ОбщИтогКол=ОбщИтогКол+ИтогКол;
           Таб.ПрисоединитьСекцию("Итог|Месяц");
       Enddo;
       Таб.ПрисоединитьСекцию("Итог|Всего");
   Иначе
       ТекстЗап=ТекстЗап+"Условие (Клиент={ВыбКлиент});";
       ТекстЗап=ТекстЗап+"
       |Группировка Клиент без групп;
       |Группировка Месяц;
       |Группировка Док;
       |";  
       Флаг=Запрос.Выполнить(ТекстЗап);
       Если Флаг=0 тогда
           Возврат;
       КонецЕсли;    
       Ном=1;
       Таб.ВывестиСекцию("Выбор|Клиент");  
       Итг=0;        ИтгП=0;  ОбщКол=0;
       Пока Запрос.Группировка("Клиент") = 1 Цикл
           Пока Запрос.Группировка("Месяц") = 1 Цикл
               СумП=Запрос.СуммаРеал+Запрос.СуммаРеалВ;  
               Себест=Запрос.СуммаСеб+Запрос.СуммаСебВ;
               Рнт=?(Себест=0,100,Окр((СумП/Себест-1)*100,2));
               Кол=0;
               Мес=Запрос.Месяц ;
               Пока Запрос.Группировка("Док") = 1 Цикл
                   Кол=Кол+1;
               КонецЦикла;    
               Таб.ПрисоединитьСекцию("Выбор|Месяц");
               ОбщКол=ОбщКол+Кол;
           КонецЦикла;
           Если Запрос.СуммаРеал<>0 Тогда
               ИтгП=Запрос.СуммаРеал +Запрос.СуммаРеалВ ;  
               Себест=Запрос.СуммаСеб+Запрос.СуммаСебВ;
               СРнт=?(Себест<>0,Окр((ИтгП/Себест-1)*100,2),100);
               Таб.ПрисоединитьСекцию("Выбор|Всего");
           КонецЕсли;
       КонецЦикла;        
       
   КонецЕсли;
   Таб.ТолькоПросмотр(1);
   Таб.Опции(0,0,5,0);
   Таб.ПараметрыСтраницы(2,100,1,20,10,10);
   Таб.Показать("Реализация по клиентам","");
КонецПроцедуры    

//-------------------------------  
ДатаНачала=НачГода(РабочаяДата());
ДатаКонца=РабочаяДата();

Валюта=1;



ошибка 1:
Значение не представляет агрегатный объект(ПринадлежитГруппе):8

ошибка 2:

Пока Запрос.Группировка("Месяц"=1) Цикл
{Отчет.Клиент_по_месяцам.Форма.Модуль(81}: Не было обращения к старшим уровням выборки.
1 1Сергей
 
02.07.13
12:56
//ТекстЗап=ТекстЗап+"Условие (Клиент.ПринадлежитГруппе(ВыбКлиент)=1);";
ТекстЗап=ТекстЗап+"Условие (Клиент В ВыбКлиент);";
2 Soul771
 
02.07.13
13:38
Спасибо большое!!! :)
Первая ошибка ушла, а вторая все равно вылазит, не формируется...
3 Godofsin
 
02.07.13
13:41
Пока Запрос.Группировка("Месяц") =1 цикл
4 dedmoroz777
 
02.07.13
13:49
//Запрос.Получить(Клнт,,);
5 Soul771
 
02.07.13
13:50
Да, так и есть, я ошибочно скобочку поставила не в том месте, когда перепечатывала сообщение об ошибке)
не формируется.....
6 Godofsin
 
02.07.13
13:54
на будущее: saveimg.ru через подобные ссайты можно скрины выкладывать здесь.
7 Soul771
 
02.07.13
14:03
dedmoroz777, огромное спасибо!!!Получилось! ура-ура!!
всем спасибо, ребята :-)
8 Soul771
 
08.07.13
10:23
Поспешила написать, что все работает(( После изменений в отчете задвоение по периоду, например, выбираю период-3 месяца, выводятся сначала 3 месяца и за ними еще раз 3 теже 3 месяца, но цифры разные..
9 Dolly_EV
 
08.07.13
11:14
(8) 77 на СКЛе с группировкой "Период" в черном запросе весьма своеобразно работает
10 Dolly_EV
 
08.07.13
14:06
(0) и во втором варианте, когда ВыбКлиент - НЕ группа:
ИМХО, вместо
    Таб.ВывестиСекцию("Выбор|Клиент");  
       Итг=0;        ИтгП=0;  ОбщКол=0;
       Пока Запрос.Группировка("Клиент") = 1 Цикл

должно быть:

       Итг=0;        ИтгП=0;  ОбщКол=0;
       Пока Запрос.Группировка("Клиент") = 1 Цикл
         Таб.ВывестиСекцию("Выбор|Клиент");
11 Dolly_EV
 
08.07.13
14:07
+(10) - (8) тогда ине будет "задвоений" по месяцам - месяцы выводятся по РАЗНЫМ клиентам несколько раз в вашем варианте
12 Soul771
 
08.07.13
16:17
Спасибо, Dolly_EV!
Заменила, как посоветовали, задвоение ушло, но появилась сверху строка с непонятными данными....
вот скрин того, что получилось
[URL=http://saveimg.ru/show-image.php?id=23c7339a03fadaaae5dae6b96e962130] [IMG]http://saveimg.ru/thumbnails/08-07-13/63caea17634dfbf17d58f7836bee3937.jpg[/IMG][/URL]

а это то, что было до изменений
[URL=http://saveimg.ru/show-image.php?id=8e911a820b8f54715ee1c50de26bbfa7] [IMG]http://saveimg.ru/thumbnails/08-07-13/e89ab042c2e045b192ecf38f71a59410.png[/IMG][/URL]
13 Soul771
 
08.07.13
16:20
14 Dolly_EV
 
09.07.13
03:33
(13) епт... в (10) - верни все на место.
после Пока Запрос.Группировка("Клиент") = 1 Цикл
добавь Таб.ВывестиСекцию("Строка|Клиент");
ниже
Таб.ПрисоединитьСекцию("Выбор|Месяц");
Таб.ПрисоединитьСекцию("Выбор|Всего");

замени на
Таб.ПрисоединитьСекцию("Строка|Месяц");
Таб.ПрисоединитьСекцию("Строка|Всего");
15 Soul771
 
12.07.13
13:08
Dolly_EV,большое спасибо за помощь!
Получилось реализовать, оставив и изменив только первую часть условия(т.е. тот кусок кода, который был для групп). Сейчас хочу все-таки понять,что же не так во второй части) О результатах отпишусь)
16 пипец
 
12.07.13
13:15
Запрос.ВключитьSQL(0) еще не предлагали ?
Программист всегда исправляет последнюю ошибку.