Имя: Пароль:
1C
1C 7.7
v7: ОбратныйПорядок(1) По "ТаблицаЗначений" через Сортировать
0 tpudl_bases
 
29.11.12
15:32
Хелп,не получается вывести последный документ

   Запрос = СоздатьОбъект("Запрос");  
   
   ТекстЗапроса="ПЕРИОД С {ДатаКонца} ПО {ДатаКонца};";            
   ТекстЗапроса=ТекстЗапроса+"    
   |КредДокумент = Регистр.Покупатели.КредДокумент,Регистр.Поставщики.КредДокумент;
   |ДатаДокумента= Регистр.Покупатели.КредДокумент.ДатаДок,Регистр.Поставщики.КредДокумент.ДатаДок;
   |Фирма        = Регистр.Покупатели.Фирма,Регистр.Поставщики.Фирма;
   |Контрагент   = Регистр.Покупатели.Договор.Владелец,Регистр.Поставщики.Договор.Владелец;
   |Договор_     = Регистр.Покупатели.Договор,Регистр.Поставщики.Договор;
   |МОЛ          = Регистр.Покупатели.МОЛ,Регистр.Поставщики.МОЛ;
   |СуммаРубл=Регистр.Покупатели.СуммаРуб,Регистр.Поставщики.СуммаРуб;    
   |";
   
   ТекстЗапроса=ТекстЗапроса+"        
   |Функция СуммаКонРуб=КонОст(СуммаРубл);
//    |Функция ВидД = Сумма(ВидД(КредДокумент));
   |";
   ТекстЗапроса=ТекстЗапроса+"        
   |Группировка Контрагент упорядочить по Контрагент.Наименование;
   |Группировка Договор_;
   |Группировка КредДокумент ;
   |";

   Флаг=Запрос.Выполнить(ТекстЗапроса);    
   Если Флаг=0 Тогда
       Сообщить("Ошибка в формировании запроса по итогам регистра. Запрос не выполнен!");
   //    Возврат;
   КонецЕсли;
   Запрос_из_ТЗ = СоздатьОбъект("ТаблицаЗначений");
   Запрос.Выгрузить(Запрос_из_ТЗ,1);
   Запрос_из_ТЗ.Сортировать("-ДатаДокумента");

   Запрос_из_ТЗ.ВыбратьСтроки();
   Пока Запрос_из_ТЗ.ПолучитьСтроку()=1 Цикл
1 tpudl_bases
 
29.11.12
15:45
апну разочек
2 viktor_vv
 
29.11.12
15:50
Запрос_из_ТЗ.Сортировать("-ДатаДокумента",1)
3 viktor_vv
 
29.11.12
15:50
А не. У тебя ж там дата.
4 viktor_vv
 
29.11.12
15:51
Запрос_из_ТЗ.Сортировать("-КредДокумент",1);
5 Касандер72
 
29.11.12
15:56
В запросе: Группировка КредДокумент Упорядочить по КредДокумент.ДатаДок
6 tpudl_bases
 
29.11.12
16:00
(5)не работает блина:
   Запрос = СоздатьОбъект("Запрос");  
   
   ТекстЗапроса="ПЕРИОД С {ДатаКонца} ПО {ДатаКонца};";            
   ТекстЗапроса=ТекстЗапроса+"    
   |КредДокумент = Регистр.Покупатели.КредДокумент,Регистр.Поставщики.КредДокумент;
   |ДатаДокумента= Регистр.Покупатели.КредДокумент.ДатаДок,Регистр.Поставщики.КредДокумент.ДатаДок;
   |Фирма        = Регистр.Покупатели.Фирма,Регистр.Поставщики.Фирма;
   |Контрагент   = Регистр.Покупатели.Договор.Владелец,Регистр.Поставщики.Договор.Владелец;
   |Договор_     = Регистр.Покупатели.Договор,Регистр.Поставщики.Договор;
   |МОЛ          = Регистр.Покупатели.МОЛ,Регистр.Поставщики.МОЛ;
   |СуммаРубл=Регистр.Покупатели.СуммаРуб,Регистр.Поставщики.СуммаРуб;    
   |";
   
   ТекстЗапроса=ТекстЗапроса+"        
   |Функция СуммаКонРуб=КонОст(СуммаРубл);
//    |Функция ВидД = Сумма(ВидД(КредДокумент));
   |";
   ТекстЗапроса=ТекстЗапроса+"        
   |Группировка Контрагент упорядочить по Контрагент.Наименование;
   |Группировка Договор_;
   |Группировка КредДокумент Упорядочить по КредДокумент.ДатаДок;
   |";
   Если ТипЗначенияСтр(ЗначениеФильтра)="Справочник" Тогда
       ТекстЗапроса=ТекстЗапроса+"    
       |Условие (Фирма=ЗначениеФильтра);
       |";    
   ИначеЕсли ТипЗначенияСтр(ЗначениеФильтра)="СписокЗначений" Тогда
       ТекстЗапроса=ТекстЗапроса+"    
       |Условие (ЗначениеФильтра.Принадлежит(Фирма)=1);
       |";    
   КонецЕсли;
   
   ТекстЗапроса=ТекстЗапроса+"    
   |Условие (Контрагент в Клиент);
   |";    
   
//    Если ВыбДоговор.Выбран()>0 Тогда                    
       ТекстЗапроса=ТекстЗапроса+"    
       |Условие (Договор_ = Договор);
       |";        
//    КонецЕсли;    
//
   Если ВыбФизЛица.Выбран()>0 Тогда                    
       ТекстЗапроса=ТекстЗапроса+"    
       |Условие (МОЛ=ВыбФизЛица);
       |";        
   КонецЕсли;    
   
   Флаг=Запрос.Выполнить(ТекстЗапроса);    
   Если Флаг=0 Тогда
       Сообщить("Ошибка в формировании запроса по итогам регистра. Запрос не выполнен!");
   //    Возврат;
   КонецЕсли;
   Запрос_из_ТЗ = СоздатьОбъект("ТаблицаЗначений");
   Запрос.Выгрузить(Запрос_из_ТЗ,1);
   Запрос_из_ТЗ.Сортировать("-КредДокумент",1);

   Запрос_из_ТЗ.ВыбратьСтроки();
   Пока Запрос_из_ТЗ.ПолучитьСтроку()=1 Цикл
7 Касандер72
 
29.11.12
16:00
+ (5) продвинутые могут добавить: ,КредДокумент.ВремяДок
8 tpudl_bases
 
29.11.12
16:01
Епрст должен знать..........
9 Касандер72
 
29.11.12
16:03
(6) напрямую выборку попробуй из документов - ты же с одним видом работаешь - на кой хафф тебе регистр сдался?
10 Касандер72
 
29.11.12
16:05
+ (9) или у тебя в доке нет ссылки на договор?
11 tpudl_bases
 
29.11.12
16:06
(9)
если бы по одним,все документы которые образуют дебеторку.
12 tpudl_bases
 
29.11.12
16:07
очень долго
Док=СоздатьОбъект("Документ");    
Док.ОбратныйПорядок(1);
   СуммаДокументов=0;
   
   Док.ВыбратьДокументы(,ДатаКонца);
13 Касандер72
 
29.11.12
16:10
(0) упс, сори - попутал, чтобы сортануть через упорядочение нужно считать из регистра текущий документ, а у тебя по ходу КредДокумент - измерение в регистрах?
14 tpudl_bases
 
29.11.12
16:11
(13)да измерение
15 Касандер72
 
29.11.12
16:14
(14) ну и ещё вопросик - ты выбираешь остаток, а доки - движение - это на мысль не наводит?
16 Касандер72
 
29.11.12
16:16
(14) попробуй так:

КредДокумент = Регистр.Покупатели.ТекущийДокумент,Регистр.Поставщики.ТекущийДокумент;

авось взлетит)
17 Касандер72
 
29.11.12
16:21
+ (16) но функцию Прихода или Расхода я бы все-таки добавил)
18 Касандер72
 
29.11.12
16:25
(11) на счет дебеторки - в один не ригистр не судьба было приходом и расходом запихнуть? - или это тебе по-наследству досталось?
19 Aleksey
 
29.11.12
16:30
(18) Расскажи это писателям типовых на 7-ке (ТиС, комплексная)
20 Касандер72
 
29.11.12
16:32
(19) а, дык енто в типовой .... мы давно от ентого косячного сборища отказалить ... ыыы, тогда соболезнования)
21 tpudl_bases
 
29.11.12
16:34
(17)так воще документов нет
22 Касандер72
 
29.11.12
16:36
(21) функции прихода и/или расхода не забыл добавить?
23 Касандер72
 
29.11.12
16:39
(21) стоп, если тебе нужна оплата в разрезе доков - тогда оставь как было - я щас гляну что за баг с сортировкой в ТЗ может быть
24 Касандер72
 
29.11.12
16:46
(21) Запрос_из_ТЗ на форму выбрось и проверь визуально значения в колонках.
(Если бы ты "ручками" запрос обрабатывал - я бы предложил преобразовать дату в аналог-строку перевертыш - тогда с сортировкой было бы все оки)
25 Касандер72
 
29.11.12
16:50
(21) предположение: у тебя КредДокумент не всегда заполнен (нужно проводки по регистру из доков отслеживать) - тогда  целостность типа колонки "ДатаДокумента" не гарантирована - отсюда: баг при сортировке колонки с различными типами значений в ячейках.
Можно "пробежать" ТЗ и заменить пустышки на дата(0) - тогда сортировка должна сработать
26 tpudl_bases
 
29.11.12
17:09
(25)слушай я по реализации так делал:
Рег=СоздатьОбъект("Регистр.Продажи");
   Рег.УстановитьЗначениеФильтра("Покупатель",Клиент,1);
   Рег.ОбратныйПорядок(1);


по 2-м регистрам может как то можно?!(Покупатели/Поставщики)
27 пипец
 
29.11.12
17:11
по документам не сортирнет ... это ж ТЗ
28 Mikeware
 
29.11.12
17:15
в ТЗ добавить "разницу дат" между датой документа, и "локальным началом времен". и по ней уже сортировать...
29 Касандер72
 
29.11.12
17:21
(25) можно - но это дольше и некрасиво - как вариант - два запроса - у тебя другая проблема - всегда ли присутствует дата в нужном формате
30 Касандер72
 
29.11.12
17:22
(28) как вычислится разница, если КредДокумент - пустышка? )
31 Mikeware
 
29.11.12
17:35
(30) ну а как в этом случае нужно сортировать?
32 Касандер72
 
29.11.12
17:46
(31) ручками а не выгрузкой заполнить ТЗ с проверкой на пустой док - если он пустой дату читать с дока, сделавшего эту проводку, ну на крайняк дата(0) поставить - они вниз уйдут правда - здесь определиться нужно
33 Mikeware
 
29.11.12
17:49
(32) ну так и я о том же - прежде чем "сортировать технически" - нужно определить, как "сортировать логически"
34 tpudl_bases
 
29.11.12
18:02
Вообщем вроде все получилось,завтра еще раз все перепроверю...........Всем спасибо