а вот у меня такой вопрос - зачем было выносить проверку даты в отдельную процедуру?
AI-выжимка обсуждения
скоро
Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.
Обзор обсужденияскоро
Разбор ответов скоро
Ключевые ответы обсуждения и их оценка появятся здесь.
Эксперты в тредескоро
Рейтинг участников скоро
Участники с сильными ответами в этой теме появятся здесь.
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
К курсу →
Сортировка
Обсуждаемые
Лучшие
Эксперты
скоро
хз...до 1С учил ток паскаль,оттуда привычка осталась,ибо в паскале процедуры\функции имхо смотрелись читабельней
'это для таблицы значений,тут такое не покатит,я пробывал...на это он выдает ошибку Поле агрегатного объекта не обнаружено (Сортировать)
Еще один камешек на чашу весов использования запроса по бухитогам.
А в твоем случае надо в цикле не выводить на печать строки, а формировать ТЗ, каковую потом отсортировать как пожелаешь
А в твоем случае надо в цикле не выводить на печать строки, а формировать ТЗ, каковую потом отсортировать как пожелаешь
Код:
Процедура Сформировать()
Перем Опер, Таб, ТЗ, Сумма, Заголовок, Итер;
Проверить_Дату();
Заголовок = "Отчет по движению денежных средств за период "+ ПериодСтр(НачДата,КонДата);
Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию ("Шапка");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка ("ТВидДДС");
ТЗ.НоваяКолонка ("ТВидДоговора");
ТЗ.НоваяКолонка ("ТКонтрагент");
ТЗ.НоваяКолонка ("ТПодразделДоговора");
ТЗ.НоваяКолонка ("ТСумма");
ТЗ.НоваяКолонка ("ТДатаВыписки");
ТЗ.НоваяКолонка ("ТНомПП");
ТЗ.НоваяКолонка ("ТДатаПП");
Док = СоздатьОбъект("Документ.Выписка");
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Проведен() = 0 Тогда
Продолжить;
КонецЕсли;
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Если Док.Расход <> 0 Тогда
Если ПустоеЗначение(Док.ПервичныйДокумент) = 0 Тогда
ТЗ.НоваяСтрока();
ВидДоговора = Док.ПервичныйДокумент.Договор.ВидДоговора;
ТЗ.ТВидДоговора = ВидДоговора;
Если Док.КоррСчет.ПринадлежитГруппе(СчетПоКоду("68")) = 1 Тогда
Контрагент = Док.ПервичныйДокумент.Договор;
ИначеЕсли Док.КоррСчет.ПринадлежитГруппе(СчетПоКоду("69")) = 1 Тогда
Контрагент = СчетПоКоду("69").Наименование;
Иначе
Контрагент = Док.ПервичныйДокумент.Контрагент;
КонецЕсли;
ТЗ.ТКонтрагент = Контрагент;
Если ((ВыбКонтрагент = Контрагент) и (ВыбВидДоговора = ВидДоговора)) или ((ВыбКонтрагент = Контрагент) и (ВыбВидДоговора.Выбран()=0))
или ((ВыбКонтрагент.Выбран()=0) и (ВыбВидДоговора=ВидДоговора)) или ((ВыбКонтрагент.Выбран()=0) и (ВыбВидДоговора.Выбран()=0)) Тогда
ВидДДС = Док.ВидДвижения;
ТЗ.ТВидДДС = ВидДДС;
Договор = Док.ПервичныйДокумент.Договор;
ТЗ.ТПодразделДоговора = Договор;
Сумма= Док.Расход;
ТЗ.ТСумма = Сумма;
НомПП = Док.НомерДокВходящий;
ТЗ.ТНомПП = НомПП;
ДатаПП = Док.ДатаДокВходящий;
ТЗ.ТДатаПП = ДатаПП;
ДатаВыписки = Док.ДатаДок;
ТЗ.ТДатаВыписки = ДатаВыписки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТЗ.Сортировать("ТВидДДС+");
Для НомерСтроки = 1 По ТЗ.КоличествоСтрок() Цикл
ВидДДС = ТЗ.ТВидДДС;
ВидДоговора = ТЗ.ТВидДоговора;
Контрагент = ТЗ.ТКонтрагент;
Договор = ТЗ.ТПодразделДоговора;
Сумма = ТЗ.ТСумма;
ДатаВыписки = ТЗ.ТДатаВыписки;
НомПП = ТЗ.ТНомПП;
ДатаПП = ТЗ.ТДатаПП;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.ПараметрыСтраницы(2,,,,,,,,,1);
Таб.Показать();
КонецПроцедуры
Посмотрите пожалуйста,сделал через ТЗ,но возможно с циклом где то накосячил.... при формировании отчета выдает n строк абсолютно одинаковых
Конечно ты выводишь только первую чтроку:
ТЗ.Сортировать("ТВидДДС+");
Для НомерСтроки = 1 По ТЗ.КоличествоСтрок() Цикл
ВидДДС = ТЗ.ТВидДДС;
ВидДоговора = ТЗ.ТВидДоговора;
Контрагент = ТЗ.ТКонтрагент;
Договор = ТЗ.ТПодразделДоговора;
Сумма = ТЗ.ТСумма;
ДатаВыписки = ТЗ.ТДатаВыписки;
НомПП = ТЗ.ТНомПП;
ДатаПП = ТЗ.ТДатаПП;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
а где в цикле ТЗ.получитьСтроку(НомерСтроки) ????
И да строки идут с 0ля надо делать условие
Для НомерСтроки = 0 По ТЗ.КоличествоСтрок()-1 Цикл
ТЗ.Сортировать("ТВидДДС+");
Для НомерСтроки = 1 По ТЗ.КоличествоСтрок() Цикл
ВидДДС = ТЗ.ТВидДДС;
ВидДоговора = ТЗ.ТВидДоговора;
Контрагент = ТЗ.ТКонтрагент;
Договор = ТЗ.ТПодразделДоговора;
Сумма = ТЗ.ТСумма;
ДатаВыписки = ТЗ.ТДатаВыписки;
НомПП = ТЗ.ТНомПП;
ДатаПП = ТЗ.ТДатаПП;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
а где в цикле ТЗ.получитьСтроку(НомерСтроки) ????
И да строки идут с 0ля надо делать условие
Для НомерСтроки = 0 По ТЗ.КоличествоСтрок()-1 Цикл
Это, похоже, новое слово в работе с таблицами значенийДля НомерСтроки = 0 По ТЗ.КоличествоСтрок()-1 Цикл
Никуда она не потеряется, сомневаешься - выкати ТЗ на экран и посмотри методом ВыбратьСтрокуесли делать с 1цы,то теряется строка одна
vbs Что-нить не так?
Если бы он использовал:
"Для каждого … Из … Цикл", я бы использовал эту структуру.
Так ему будет понятней.
З.Ы. Или это уже "mauvais ton"
Или по религиозным соображениям низя ?
h34r:
Если бы он использовал:
"Для каждого … Из … Цикл", я бы использовал эту структуру.
Так ему будет понятней.
З.Ы. Или это уже "mauvais ton"
Речь о 7.7, а там НомерСтроки меняется от ЕДИНИЦЫ до КоличествоСтрок,vbs Что-нить не так?
Если бы он использовал:
"Для каждого … Из … Цикл", я бы использовал эту структуру.
Так ему будет понятней.
естественно, в его примере надо использовать ПолучитьСтрокуПономеру
А если цикл по методу ПолучитьСтроку, то там и номер указывать не надо
thinkfast
И если уж мы по-французски стали разговаривать, обыграю твой ник
Penser est rapide - pas toujours penser correctement
h34r:
PS. Не обижайся, со всеми случается
И если уж мы по-французски стали разговаривать, обыграю твой ник
Penser est rapide - pas toujours penser correctement
PS. Не обижайся, со всеми случается
Да норм )
Это у меня из ММОшек пошло ) там скорей не "Быстро думать", а "Быстро соображать".
Да и во французком я 0ль ))) просто написал по-русски "Мувитон", подумал что не уверен в правильности написания, загуглил так и есть )) оказалось "Муветон". Решил вставить оригинал
h34r:
Это у меня из ММОшек пошло ) там скорей не "Быстро думать", а "Быстро соображать".
Да и во французком я 0ль ))) просто написал по-русски "Мувитон", подумал что не уверен в правильности написания, загуглил так и есть )) оказалось "Муветон". Решил вставить оригинал
По-русски обычно пишут Моветоноказалось "Муветон".
Зарделись щеки сквозь румяна.
Ошеломленная Татьяна
Давай французский вспоминать :
"Как Вас, Онегин, понимать ?"
Буду знать пасип. Я просто впервые употр*цензура*ю это слово письменно. 
З.Ы. И только сейчас, прочитав стишок, я обратил внимание на подпись))) Сам себе яму выкопал
h34r:
З.Ы. И только сейчас, прочитав стишок, я обратил внимание на подпись))) Сам себе яму выкопал
Поиск в обсуждении
Ещё по теме
4
Поделиться: