• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Отчет по кредиту 51го счета

  • Автор темы ge4r
  • Дата начала
K

KiR

а вот у меня такой вопрос - зачем было выносить проверку даты в отдельную процедуру?
 
G

ge4r

хз...до 1С учил ток паскаль,оттуда привычка осталась,ибо в паскале процедуры\функции имхо смотрелись читабельней
 
G

ge4r

и все же никак не пойму,как сдесь сделать группировку по виду договора...
 
T

thinkfast

Что группировать надо ТЧ ТЗ Отчет?
 
K

KiR

ge4r , тебе именно группировать нада или сортировать?
 
G

ge4r

неправильно выразился...надо отсортировать по столбцу вид договора
 
T

thinkfast

есть стандартная обработка :
*.Сортировать("ВидДоговора Убыв");
 
G

ge4r

'это для таблицы значений,тут такое не покатит,я пробывал...на это он выдает ошибку Поле агрегатного объекта не обнаружено (Сортировать)
 
V

vbs

Еще один камешек на чашу весов использования запроса по бухитогам.
А в твоем случае надо в цикле не выводить на печать строки, а формировать ТЗ, каковую потом отсортировать как пожелаешь
 
G

ge4r

Код:
Процедура Сформировать() 
Перем Опер, Таб, ТЗ, Сумма, Заголовок, Итер;
Проверить_Дату(); 
Заголовок = "Отчет по движению денежных средств за период "+ ПериодСтр(НачДата,КонДата);
Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию ("Шапка");  
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка ("ТВидДДС");
ТЗ.НоваяКолонка ("ТВидДоговора");
ТЗ.НоваяКолонка ("ТКонтрагент");
ТЗ.НоваяКолонка ("ТПодразделДоговора");
ТЗ.НоваяКолонка ("ТСумма");
ТЗ.НоваяКолонка ("ТДатаВыписки");
ТЗ.НоваяКолонка ("ТНомПП");
ТЗ.НоваяКолонка ("ТДатаПП");

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

КонецЕсли; 

КонецЕсли;
КонецЕсли;
КонецЦикла;

КонецЦикла; 
ТЗ.Сортировать("ТВидДДС+"); 
Для НомерСтроки = 1 По ТЗ.КоличествоСтрок() Цикл
ВидДДС = ТЗ.ТВидДДС;
ВидДоговора = ТЗ.ТВидДоговора;
Контрагент = ТЗ.ТКонтрагент;
Договор = ТЗ.ТПодразделДоговора;
Сумма = ТЗ.ТСумма;
ДатаВыписки = ТЗ.ТДатаВыписки;
НомПП = ТЗ.ТНомПП;
ДатаПП = ТЗ.ТДатаПП;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.ПараметрыСтраницы(2,,,,,,,,,1);	
Таб.Показать(); 
КонецПроцедуры

Посмотрите пожалуйста,сделал через ТЗ,но возможно с циклом где то накосячил.... при формировании отчета выдает n строк абсолютно одинаковых
 
T

thinkfast

Конечно ты выводишь только первую чтроку:
ТЗ.Сортировать("ТВидДДС+");

Для НомерСтроки = 1 По ТЗ.КоличествоСтрок() Цикл
ВидДДС = ТЗ.ТВидДДС;
ВидДоговора = ТЗ.ТВидДоговора;
Контрагент = ТЗ.ТКонтрагент;
Договор = ТЗ.ТПодразделДоговора;
Сумма = ТЗ.ТСумма;
ДатаВыписки = ТЗ.ТДатаВыписки;
НомПП = ТЗ.ТНомПП;
ДатаПП = ТЗ.ТДатаПП;
Таб.ВывестиСекцию("Строка");
КонецЦикла;

а где в цикле ТЗ.получитьСтроку(НомерСтроки) ????
И да строки идут с 0ля надо делать условие
Для НомерСтроки = 0 По ТЗ.КоличествоСтрок()-1 Цикл
 
V

vbs

Для НомерСтроки = 0 По ТЗ.КоличествоСтрок()-1 Цикл
Это, похоже, новое слово в работе с таблицами значений
если делать с 1цы,то теряется строка одна
Никуда она не потеряется, сомневаешься - выкати ТЗ на экран и посмотри методом ВыбратьСтроку
 
T

thinkfast

vbs Что-нить не так?


Если бы он использовал:
"Для каждого … Из … Цикл", я бы использовал эту структуру.
Так ему будет понятней.

З.Ы. Или это уже "mauvais ton" :D Или по религиозным соображениям низя ? :ph34r:
 
V

vbs

vbs Что-нить не так?
Если бы он использовал:
"Для каждого … Из … Цикл", я бы использовал эту структуру.
Так ему будет понятней.
Речь о 7.7, а там НомерСтроки меняется от ЕДИНИЦЫ до КоличествоСтрок,
естественно, в его примере надо использовать ПолучитьСтрокуПономеру
А если цикл по методу ПолучитьСтроку, то там и номер указывать не надо
 
T

thinkfast

А елки... я думал это 8-ка. Я в 7.7 не силен. Звиняй зря с агрился :ph34r:
 
V

vbs

thinkfast
И если уж мы по-французски стали разговаривать, обыграю твой ник
Penser est rapide - pas toujours penser correctement
:ph34r:
PS. Не обижайся, со всеми случается
 
T

thinkfast

Да норм )
Это у меня из ММОшек пошло ) там скорей не "Быстро думать", а "Быстро соображать".
Да и во французком я 0ль ))) просто написал по-русски "Мувитон", подумал что не уверен в правильности написания, загуглил так и есть )) оказалось "Муветон". Решил вставить оригинал :ph34r:
 
T

thinkfast

Буду знать пасип. Я просто впервые употр*цензура*ю это слово письменно. :D

З.Ы. И только сейчас, прочитав стишок, я обратил внимание на подпись))) Сам себе яму выкопал :ph34r:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!