Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Проблемы формирования отчетов (число прочтений - 2081 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Проблемы формирования отчетов
22. Марта 2011 :: 15:01
Печать  
Изначально отчет был сформирован конструктором, затем возникла проблема с отображением строки с годом, что привело к следующему
Код
Выбрать все
Процедура ВыполнениеЗаявкиИнициализация()
    ЧислоСтрокой = "00";
    Для N = 0 По 99 Цикл
        ЧислоСтрокой = ЧислоСтрокой + Формат(N,"ЧЦ=2; ЧВН=");
    КонецЦикла;

	ПостроительОтчетаВыполнениеЗаявки.Текст =
	"ВЫБРАТЬ
	|	ВыполнениеЗаявкиСрезПоследних.Заявка КАК Заявка,
	|	ВыполнениеЗаявкиСрезПоследних.Клиент КАК Клиент,
	|	""Заявка №20"" + ПОДСТРОКА(""" + ЧислоСтрокой + """, (ГОД(ВыполнениеЗаявкиСрезПоследних.Заявка.Дата) - 2000) * 2 + 1, 2) + ""-"" + ВыполнениеЗаявкиСрезПоследних.Заявка.Номер + "" от "" + ВыполнениеЗаявкиСрезПоследних.Клиент.Наименование КАК ЗаявкаКлиент,
	|	ВыполнениеЗаявкиСрезПоследних.ОбъектЗаявки КАК ОбъектЗаявки,
	|	ВыполнениеЗаявкиСрезПоследних.Регистратор,
	|	ПРЕДСТАВЛЕНИЕ(ВыполнениеЗаявкиСрезПоследних.Состояние) КАК СостояниеСобытие
	|{ВЫБРАТЬ
	|	ЗаявкаКлиент,
	|	ОбъектЗаявки.*,
	|	Регистратор.*,
	|	СостояниеСобытие}
	|ИЗ
	|	РегистрСведений.ВыполнениеЗаявки.СрезПоследних КАК ВыполнениеЗаявкиСрезПоследних
	|
	|СГРУППИРОВАТЬ ПО
	|	ВыполнениеЗаявкиСрезПоследних.Заявка,
	|	ВыполнениеЗаявкиСрезПоследних.Клиент,
	|	""Заявка №20"" + ПОДСТРОКА(""" + ЧислоСтрокой + """, (ГОД(ВыполнениеЗаявкиСрезПоследних.Заявка.Дата) - 2000) * 2 + 1, 2) + ""-"" + ВыполнениеЗаявкиСрезПоследних.Заявка.Номер + "" от "" + ВыполнениеЗаявкиСрезПоследних.Клиент.Наименование,
	|	ВыполнениеЗаявкиСрезПоследних.ОбъектЗаявки,
	|	ВыполнениеЗаявкиСрезПоследних.Регистратор,
	|	ПРЕДСТАВЛЕНИЕ(ВыполнениеЗаявкиСрезПоследних.Состояние)
	|
	|ОБЪЕДИНИТЬ
	|
	|ВЫБРАТЬ
	|	СобытияПоЗаявке.Заявка,
	|	СобытияПоЗаявке.Заявка.Клиент,
	|	""Заявка №20"" + ПОДСТРОКА(""" + ЧислоСтрокой + """, (ГОД(СобытияПоЗаявке.Заявка.Дата) - 2000) * 2 + 1, 2) + ""-"" + СобытияПоЗаявке.Заявка.Номер + "" от "" + СобытияПоЗаявке.Заявка.Клиент.Наименование,
	|	СобытияПоЗаявке.ОбъектЗаявки,
	|	СобытияПоЗаявке.Регистратор,
	|	ПРЕДСТАВЛЕНИЕ(СобытияПоЗаявке.Регистратор.ВидСобытия)
	|ИЗ
	|	РегистрСведений.СобытияПоЗаявке КАК СобытияПоЗаявке
	|
	|СГРУППИРОВАТЬ ПО
	|	СобытияПоЗаявке.Заявка,
	|	СобытияПоЗаявке.Заявка.Клиент,
	|	""Заявка №20"" + ПОДСТРОКА(""" + ЧислоСтрокой + """, (ГОД(СобытияПоЗаявке.Заявка.Дата) - 2000) * 2 + 1, 2) + ""-"" + СобытияПоЗаявке.Заявка.Номер + "" от "" + СобытияПоЗаявке.Заявка.Клиент.Наименование,
	|	СобытияПоЗаявке.ОбъектЗаявки,
	|	СобытияПоЗаявке.Регистратор,
	|	ПРЕДСТАВЛЕНИЕ(СобытияПоЗаявке.Регистратор.ВидСобытия)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Заявка,
	|	Клиент,
	|	ЗаявкаКлиент,
	|	ОбъектЗаявки
	|{УПОРЯДОЧИТЬ ПО
	|	Заявка.*,
	|	Клиент.*,
	|	ЗаявкаКлиент,
	|	ОбъектЗаявки.*}
	|ИТОГИ ПО
	|	Заявка,
	|	Клиент,
	|	ЗаявкаКлиент,
	|	ОбъектЗаявки
	|{ИТОГИ ПО
	|	Заявка.*,
	|	Клиент.*,
	|	ЗаявкаКлиент,
	|	ОбъектЗаявки.*}";
	ПостроительОтчетаВыполнениеЗаявки.ЗаполнитьНастройки();
	ПостроительОтчетаВыполнениеЗаявки.ЗаполнениеРасшифровки = ВидЗаполненияРасшифровкиПостроителяОтчета.ЗначенияГруппировок;
	ПостроительОтчетаВыполнениеЗаявки.ТекстЗаголовка = "Выполнение заявки";
	Настройка = 841-4294-aeb6-dc93ad37f1bc");
	Если Настройка <> Неопределено Тогда
		ПостроительОтчетаВыполнениеЗаявки.УстановитьНастройки(Настройка);
	КонецЕсли;
КонецПроцедуры 



В целом отчет работает, НО:
  • При первом формировании нет поля ЗаявкаКлиент и его можно вывести только через настройку - почему?
  • Сортировка идет как-то странно:
    • Заявка №2010-000000001 от 777
    • Заявка №2011-000000001 от 777
    • Заявка №2010-000000002 от 777
    • Заявка №2011-000000001 от 777
    Т.е. в сортировке также не учитывается это поле и лечится опять же только ручным ковырянием настроек...

Помогите понять и исправить!

И еще - есть ли способ вывести из отчета код формирования строки с годом? - пока не нашел...
  
Наверх
 
IP записан
 
fishca
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Местоположение: Воронеж
Зарегистрирован: 03. Сентября 2010
Пол: Мужской
Re: Проблемы формирования отчетов
Ответ #1 - 23. Марта 2011 :: 12:25
Печать  
В
Цитата:
{ВЫБРАТЬ
     |      ЗаявкаКлиент,
     |      ОбъектЗаявки.*,
     |      Регистратор.*,
     |      СостояниеСобытие}


вставь:
Цитата:
|      ""Заявка №20"" + ПОДСТРОКА(""" + ЧислоСтрокой + """, (ГОД(ВыполнениеЗаявкиСрезПоследних.Заявка.Дата) - 2000) * 2 + 1, 2) + ""-"" + ВыполнениеЗаявкиСрезПоследних.Заявка.Номер + "" от "" + ВыполнениеЗаявкиСрезПоследних.Клиент.Наименование КАК ЗаявкаКлиент

В фигурных скобках показываются поля построителя по умолчанию, у тебя поле ЗаявкаКлиент туда не включено, соответственно и не попадает в первоначальные настройки по умолчанию.
  
Наверх
IP записан
 
fishca
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Местоположение: Воронеж
Зарегистрирован: 03. Сентября 2010
Пол: Мужской
Re: Проблемы формирования отчетов
Ответ #2 - 23. Марта 2011 :: 12:27
Печать  
Dmitry The Wing писал(а) 22. Марта 2011 :: 15:01:
...затем возникла проблема с отображением строки с годом

Что за проблема возникла? В дате год отображается через неразрывный пробел?
  
Наверх
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Проблемы формирования отчетов
Ответ #3 - 24. Марта 2011 :: 03:09
Печать  
fishca писал(а) 23. Марта 2011 :: 12:25:
В
Цитата:
{ВЫБРАТЬ
     |      ЗаявкаКлиент,
     |      ОбъектЗаявки.*,
     |      Регистратор.*,
     |      СостояниеСобытие}


вставь:
Цитата:
|      ""Заявка №20"" + ПОДСТРОКА(""" + ЧислоСтрокой + """, (ГОД(ВыполнениеЗаявкиСрезПоследних.Заявка.Дата) - 2000) * 2 + 1, 2) + ""-"" + ВыполнениеЗаявкиСрезПоследних.Заявка.Номер + "" от "" + ВыполнениеЗаявкиСрезПоследних.Клиент.Наименование КАК ЗаявкаКлиент

В фигурных скобках показываются поля построителя по умолчанию, у тебя поле ЗаявкаКлиент туда не включено, соответственно и не попадает в первоначальные настройки по умолчанию.

Т.е. в первой же строке после слова ВЫБРАТЬ не оно? Сделал по аналогии с полем СостояниеСобытие - почему-то для этого поля все прекрасно работает ... в чем разница?

fishca писал(а) 23. Марта 2011 :: 12:27:
Dmitry The Wing писал(а) 22. Марта 2011 :: 15:01:
...затем возникла проблема с отображением строки с годом

Что за проблема возникла? В дате год отображается через неразрывный пробел?

В том, что приходится вводить новую переменную ЧислоСтрокой и выискивать там нужные комбинации вместо простого сложения строк, как было в семерке. Хотел сделать так:
""Заявка №"" + ГОД(ВыполнениеЗаявкиСрезПоследних.Заявка.Дата) + ""-"" + ВыполнениеЗаявкиСрезПоследних.Заявка.Номер + "" от "" + ВыполнениеЗаявкиСрезПоследних.Клиент.Наименование КАК ЗаявкаКлиент
однако, восьмерка так не умеет  Плачущий
Способа вызвать функцию модуля, как в семерке, тоже не нашел.

Вот из-за этих хитростей с переменной запрос становится непонятным для конструктора.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблемы формирования отчетов
Ответ #4 - 24. Марта 2011 :: 04:47
Печать  
А почему СКД не использовать? там нет этой проблемы.
ЗЫ официальный ответ 1С - построители более не будут развиваться и поддерживаться.
ЗЗЫ и функции из общих неглобальных модулей можно вызывать Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Проблемы формирования отчетов
Ответ #5 - 24. Марта 2011 :: 06:49
Печать  
artbear писал(а) 24. Марта 2011 :: 04:47:
А почему СКД не использовать? там нет этой проблемы.
ЗЫ официальный ответ 1С - построители более не будут развиваться и поддерживаться.
ЗЗЫ и функции из общих неглобальных модулей можно вызывать Улыбка

Потому что не умею  Смущённый
Конкретно этот запрос живет в конфе 1С 8.1.
Можешь накидать простой, но понятный пример с использованием СКД для аналогичного запроса? Или если нельзя пример - то порядок действий, которые требуются при построении?
  
Наверх
 
IP записан
 
fishca
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Местоположение: Воронеж
Зарегистрирован: 03. Сентября 2010
Пол: Мужской
Re: Проблемы формирования отчетов
Ответ #6 - 24. Марта 2011 :: 09:40
Печать  
Dmitry The Wing писал(а) 24. Марта 2011 :: 03:09:
fishca писал(а) 23. Марта 2011 :: 12:25:
В
Цитата:
{ВЫБРАТЬ
     |      ЗаявкаКлиент,
     |      ОбъектЗаявки.*,
     |      Регистратор.*,
     |      СостояниеСобытие}


вставь:
Цитата:
|      ""Заявка №20"" + ПОДСТРОКА(""" + ЧислоСтрокой + """, (ГОД(ВыполнениеЗаявкиСрезПоследних.Заявка.Дата) - 2000) * 2 + 1, 2) + ""-"" + ВыполнениеЗаявкиСрезПоследних.Заявка.Номер + "" от "" + ВыполнениеЗаявкиСрезПоследних.Клиент.Наименование КАК ЗаявкаКлиент

В фигурных скобках показываются поля построителя по умолчанию, у тебя поле ЗаявкаКлиент туда не включено, соответственно и не попадает в первоначальные настройки по умолчанию.

Т.е. в первой же строке после слова ВЫБРАТЬ не оно? Сделал по аналогии с полем СостояниеСобытие - почему-то для этого поля все прекрасно работает ... в чем разница?

fishca писал(а) 23. Марта 2011 :: 12:27:
Dmitry The Wing писал(а) 22. Марта 2011 :: 15:01:
...затем возникла проблема с отображением строки с годом

Что за проблема возникла? В дате год отображается через неразрывный пробел?

В том, что приходится вводить новую переменную ЧислоСтрокой и выискивать там нужные комбинации вместо простого сложения строк, как было в семерке. Хотел сделать так:
""Заявка №"" + ГОД(ВыполнениеЗаявкиСрезПоследних.Заявка.Дата) + ""-"" + ВыполнениеЗаявкиСрезПоследних.Заявка.Номер + "" от "" + ВыполнениеЗаявкиСрезПоследних.Клиент.Наименование КАК ЗаявкаКлиент
однако, восьмерка так не умеет  Плачущий
Способа вызвать функцию модуля, как в семерке, тоже не нашел.

Вот из-за этих хитростей с переменной запрос становится непонятным для конструктора.


Попробуй добавить заявку еще в выбранные поля построителя, может для формирования ЗаявкаКлиент не все поля определены 1С считает?
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать