powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / (1С, v7) помогите с запросом, плиз
7 сообщений из 7, страница 1 из 1
(1С, v7) помогите с запросом, плиз
    #36043062
однобитный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть параметры на форме для отчёта по менеджеру...
Дата от и до: Дата1, Дата2
Отбор:
1 - все
2 - оплаченные и отгруженные
3 - оплаченные
4 - отгруженные

сказали добавить ещё 1 вариант отбора - 5
Т.е. "если дата идёт, например за весь июнь, то выводить надо статистику по: оплаченные в июне + отгруженные в июне, но оплаченные ранее июня"

помогите запрос улучшить...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "//{{ЗАПРОС
 
    |Период с Дата1 по Дата2;
    |ОбрабатыватьДокументы Проведенные;
    |Заявка = Документ.ЗаявкаПокупателя.ТекущийДокумент;
    |Автор = Документ.ЗаявкаПокупателя.Автор;";
    Если Отбор= 1  Тогда
// все
 
        ТекстЗапроса = ТекстЗапроса + "
        |Условие (Менеджер=Автор);";
    ИначеЕсли Отбор= 2  Тогда
// оплаченные и отгруженные
 
        ТекстЗапроса = ТекстЗапроса + "
        |Условие ((Менеджер=Автор) и (Заявка.Итог(""Сумма"")<=глОплачено(Заявка)) и (Заявка.Итог(""Сумма"")<=глОтгружено(Заявка)));";
    ИначеЕсли Отбор= 3  Тогда
// оплаченные
 
        ТекстЗапроса = ТекстЗапроса + "
        |Условие ((Менеджер=Автор) и (Заявка.Итог(""Сумма"")<=глОплачено(Заявка)));";
    ИначеЕсли Отбор= 4  Тогда
// отгруженные
 
        ТекстЗапроса = ТекстЗапроса + "
        |Условие ((Менеджер=Автор) и (Заявка.Итог(""Сумма"")<=глОтгружено(Заявка)));";
    ИначеЕсли Отбор= 5  Тогда
        ТекстЗапроса = ТекстЗапроса + "
// тут отбор №5
 
...
        // Возврат;
 
    Иначе        
        Возврат;
    КонецЕсли;
    ТекстЗапроса = ТекстЗапроса + "
    |Группировка Заявка;
    |"//}}ЗАПРОС
 
    ;
...
Рейтинг: 0 / 0
(1С, v7) помогите с запросом, плиз
    #36043141
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код глОтгружено() в студию.
...
Рейтинг: 0 / 0
(1С, v7) помогите с запросом, плиз
    #36043166
однобитный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Процедура СписокПодчиненныхДокументов(ДатаНач,ДатаКон,Докум,ДокумГЛ) 
    Перем код;
        
    ДокВыб=СоздатьОбъект("Документ"); 
    Если ДокВыб.ВыбратьПодчиненныеДокументы(ДатаНач,ДатаКон,Докум.ТекущийДокумент())= 1  тогда
        Пока ДокВыб.ПолучитьДокумент()= 1  Цикл
            Код= 0 ;
            Если Строка(ДокВыб.Вид())="ПКО" тогда
                Код= 1 ;
            КонецЕсли;  
            
            Если (Строка(ДокВыб.Вид())="СтрокаВыпискиПриход") или (Строка(ДокВыб.Вид())="ЧекЮрЛицо") Тогда
                Код= 1 ;
            КонецЕсли;  
            
            Если (Код= 1 ) и (ДокВыб.Проведен()= 1 ) тогда
                Документ=ДокВыб.ТекущийДокумент(); 
                Сумма=ДокВыб.Сумма; 
                СуммаОплаты=СуммаОплаты+ДокВыб.Сумма; 
                Если ДокумГЛ.СуммаВзаиморасчетов<=СуммаОплаты тогда
                    Оплата= 1 ; 
                    Если ДатаОплаты<Документ.ДатаДок тогда
                        ДатаОплаты=Документ.ДатаДок;
                    КонецЕсли;
                    Если ДокумГЛ.ДатаДок<Документ.ДатаДок тогда
                        Отсрочка= 1 ;        
                    КонецЕсли;    
                КонецЕсли;
                Код= 0 ;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли; 

КонецПроцедуры
//**********************************************************
 
Функция Оплата(Док)         
    ОплатаПозже= 0 ;
    //Если Док.Вид()="РеализацияРозница" тогда
 
    //    Оплата= 1 ; 
 
    //    Отсрочка= 0 ;
 
    //Иначе           
 
    Оплата= 0 ;      
    Отсрочка= 0 ;
    СуммаОплаты= 0 ;                                     
    
    СписокПодчиненныхДокументов("01.07.04",ДатаКонца,Док.ТекущийДокумент(),Док.ТекущийДокумент()); 
    Если Оплата= 0  тогда       
        Попытка 
            Если Док.ДокОснование.Выбран()= 1  тогда
                СписокПодчиненныхДокументов("01.07.04",ДатаКонца,Док.ДокОснование.ТекущийДокумент(),Док.ТекущийДокумент()); 
            КонецЕсли;
        Исключение   
            
        КонецПопытки;
    КонецЕсли;
    //КонецЕсли;
 
    Возврат Оплата;          
КонецФункции
...
Рейтинг: 0 / 0
(1С, v7) помогите с запросом, плиз
    #36043190
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и глОплачено() тоже
...
Рейтинг: 0 / 0
(1С, v7) помогите с запросом, плиз
    #36044950
однобитный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри не то вставил... вот глОплачено и глОтгружено
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Функция глОплачено(ТекущийДокумент) Экспорт
	Оплата =  0 ;
	Если ТекущийДокумент.Вид() = "ЗаявкаПокупателя" Тогда
		Док = СоздатьОбъект("Документ");
		Док.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент);
		Пока Док.ПолучитьДокумент() =  1  Цикл
			Если (ТекущийДокумент = Док.ДокОснование) И ((Док.Вид() = "СтрокаВыпискиПриход") ИЛИ
			(Док.Вид() = "ПКО")) Тогда
				Если Док.Проведен() =  1  Тогда
					Оплата = Оплата+Док.Сумма;
				КонецЕсли;
			Иначе
				ДокПодч = СоздатьОбъект("Документ");
				ДокПодч.ВыбратьПодчиненныеДокументы(,,Док);
				Пока ДокПодч.ПолучитьДокумент() =  1  Цикл
					Если (Док.ТекущийДокумент() = ДокПодч.ДокОснование) И ((ДокПодч.Вид() = "СтрокаВыпискиПриход") ИЛИ
					(ДокПодч.Вид() = "ПКО")) Тогда
						Если ДокПодч.Проведен() =  1  Тогда
							Оплата = Оплата+ДокПодч.Сумма;
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	Возврат Оплата;
КонецФункции	

Функция глОтгружено(ТекущийДокумент) Экспорт
	Отгрузка =  0 ;
	Если ТекущийДокумент.Вид() = "ЗаявкаПокупателя" Тогда
		Док = СоздатьОбъект("Документ");
		Док.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент);
		Пока Док.ПолучитьДокумент() =  1  Цикл
			Если (ТекущийДокумент = Док.ДокОснование) И (Док.Вид() = "Реализация") Тогда
				Если Док.Проведен() =  1  Тогда
					Отгрузка = Отгрузка+Док.Итог("Сумма");
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
		
	Возврат Отгрузка;
КонецФункции	

...
Рейтинг: 0 / 0
(1С, v7) помогите с запросом, плиз
    #36045042
Горилла с Нижнего Тагила
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
//*******************************************
Процедура Сформировать()
Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "//{{ЗАПРОС
 
    |Период с Дата1 по Дата2;
    |ОбрабатыватьДокументы Проведенные;
    |Заявка = Документ.ЗаявкаПокупателя.ТекущийДокумент;
    |Автор = Документ.ЗаявкаПокупателя.Автор;
	|Группировка Заявка;
	|Условие (Менеджер=Автор);";
   		Если Отбор= 2  Тогда
// оплаченные и отгруженные
         ТекстЗапроса = ТекстЗапроса + "|Условие ((Заявка.Итог(""Сумма"")<=глОплачено(Заявка)) и (Заявка.Итог(""Сумма"")<=глОтгружено(Заявка)));";
    ИначеЕсли Отбор= 3  Тогда
// оплаченные
         ТекстЗапроса = ТекстЗапроса + "|Условие (Заявка.Итог(""Сумма"")<=глОплачено(Заявка));";
    ИначеЕсли Отбор= 4  Тогда
// отгруженные
         ТекстЗапроса = ТекстЗапроса + "|Условие (Заявка.Итог(""Сумма"")<=глОтгружено(Заявка));";
ИначеЕсли Отбор= 5  Тогда  
	//Дата3, Дата4 - реквизиты на форме для определения периода оплаты-отгрузки
        ТекстЗапроса = ТекстЗапроса +  "|Условие (глДатаОплаты(Заявка)>=Дата3) или ((глДатаОплаты(Заявка)<Дата3 ) и (глДатаОтгрузки(Заявка)>Дата3)  и (глДатаОтгрузки(Заявка)Дата4));";
     КонецЕсли;
КонецПроцедуры         
//В глобальном модуле
Функция глДатаОплаты(ТекущийДокумент) Экспорт
	Оплата =  0 ;
	Если ТекущийДокумент.Вид() = "ЗаявкаПокупателя" Тогда
		Док = СоздатьОбъект("Документ");
		Док.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент);
		Пока Док.ПолучитьДокумент() =  1  Цикл
			Если (ТекущийДокумент = Док.ДокОснование) И ((Док.Вид() = "СтрокаВыпискиПриход") ИЛИ
			(Док.Вид() = "ПКО")) Тогда
				Если Док.Проведен() =  1  Тогда
					Оплата = Оплата+Док.Сумма;
				КонецЕсли;
			Иначе
				ДокПодч = СоздатьОбъект("Документ");
				ДокПодч.ВыбратьПодчиненныеДокументы(,,Док);
				Пока ДокПодч.ПолучитьДокумент() =  1  Цикл
					Если (Док.ТекущийДокумент() = ДокПодч.ДокОснование) И ((ДокПодч.Вид() = "СтрокаВыпискиПриход") ИЛИ
					(ДокПодч.Вид() = "ПКО")) Тогда
						Если ДокПодч.Проведен() =  1  Тогда
							Оплата = Оплата+ДокПодч.Сумма;   
								Если Оплата>=ТекущийДокумент.Итог("Сумма") Тогда //Документ полностью оплачен
									Возврат ДокПодч.ДатаДок;
								КонецЕсли;
							
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
Возврат ПолучитьПустоеЗначение ("Дата");
КонецФункции	
Функция глДатаОтгрузки(ТекущийДокумент) Экспорт
	Отгрузка =  0 ;
	Если ТекущийДокумент.Вид() = "ЗаявкаПокупателя" Тогда
		Док = СоздатьОбъект("Документ");
		Док.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент);
		Пока Док.ПолучитьДокумент() =  1  Цикл
			Если (ТекущийДокумент = Док.ДокОснование) И (Док.Вид() = "Реализация") Тогда
				Если Док.Проведен() =  1  Тогда
					Отгрузка = Отгрузка+Док.Итог("Сумма");
					Если Отгрузка>=ТекущийДокумент.Итог("Сумма") Тогда
						Возврат Док.ДатаДок;
						
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
		
Возврат ПолучитьПустоеЗначение ("Дата");
КонецФункции	



...
Рейтинг: 0 / 0
(1С, v7) помогите с запросом, плиз
    #36045865
однобитный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горилла с Нижнего Тагила, спасибо, буду тестить...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / (1С, v7) помогите с запросом, плиз
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]