Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Ноя 2018, 01:33
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Четверг. Вопрос 8  (Прочитано 38142 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн saleksvik

  • *
  • Сообщений: 39
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-03-11
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 8
« Ответ #40: 15 Мар 2013, 19:18 »
1. Создаем 1-ый набор данных "ТаблицаСДатами" с типом "Запрос". Текст запроса:
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, Таблица1.а * 1000 + Таблица2.а * 100 + Таблица3.а * 10 + Таблица4.а) КАК ПериодКурса
ИЗ
   (ВЫБРАТЬ
      0 КАК а ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ
      6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК Таблица1,
   (ВЫБРАТЬ
      0 КАК а ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ
      6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК Таблица2,
   (ВЫБРАТЬ
      0 КАК а ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ
      6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК Таблица3,
   (ВЫБРАТЬ
      0 КАК а ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ
      6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК Таблица4
ГДЕ
   Таблица1.а * 1000 + Таблица2.а * 100 + Таблица3.а * 10 + Таблица4.а < РАЗНОСТЬДАТ(&Дата1, &Дата2, ДЕНЬ)
2. Создаем 2-ой набор данных "КурсыВалют" с типом "Запрос". Текст запроса:
ВЫБРАТЬ
   &ДатаПериода,
   КурсыВалютСрезПоследних.Валюта,
   КурсыВалютСрезПоследних.Курс,
   КурсыВалютСрезПоследних.Кратность
ИЗ
   РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПериода, ) КАК КурсыВалютСрезПоследних

3. Связываем эти наборы данных. Параметр &ДатаПериода используем для связи этих наборов данных:
- ИсточникСвязи - ТаблицаСДатами; - ПриемникСвязи - КурсыВалют; - ВыражениеИсточник - ПериодКурса; - ВыражениеПриемник - ДатаПериода; - Параметр - ДатаПериода

В каждом из наборов данных использовали по одному запросу.
Во вложении пример отчета для конфигурации "Управление торговлей, ред.11"


Оффлайн Opera

  • *
  • Сообщений: 30
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-26
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 8
« Ответ #41: 15 Мар 2013, 19:31 »
объединение. 2 запроса

Оффлайн adamx

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-06-29
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 8
« Ответ #42: 15 Мар 2013, 20:22 »
Для того чтобы получить дополнительный разворот по всем датам, необходимо указать поле "Все" в качестве значения параметра "ГруппировкиДляЗначенийГруппировок" метода "Выбрать".
Это если использовать запрос.
В СКД  создается 2 источника данных типа Запрос. В одном формируются  даты  на которые  необходимо  получить курс, во втором сами регистры  из  которых получаем значения курса,  дату  получения остатков ставим & Период , еще выбираем такое поле & Период .
Затем в связях наборов данных  СКД  связываем данные ТаблицаДат и НаборДанных, поле связи  Период  и параметр  Период .
Этот параметр передается в  таблицу  курсов  из   таблицы   дат  и получаем курсы валют на  все   даты, сформированные  в  таблице дат .

Оффлайн Boulala

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-27
  • Сайт: 
Re: Четверг. Вопрос 8
« Ответ #43: 15 Мар 2013, 20:58 »
В источниках данных будет 2 набора данных:
1. Это таблица с датами на каждый день периода (либо запрос к регл. календарю, либо в набор данных - объект передать таблицу дат)
2. Обращение к виртуальной таблице КурсВалют.СрезПоследних
ВЫБРАТЬ
&Период КАК Период,
КурсыВалютСрезПоследних.Курс
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПоследних

Для реализации отчета необходимо использовать связь наборов данных:
Соединить два набора данных по полю Периода из первого и полю Периода второго набора, указать параметр "Период".

Оффлайн crs

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-03-15
  • Сайт: 
  • Профессия: Разработчик 1С
Re: Четверг. Вопрос 8
« Ответ #44: 15 Мар 2013, 21:45 »
Для этого нужно использовать механизм дополнения периодов. Будет 2 запроса

Оффлайн Cyber_mouse

  • *
  • Сообщений: 30
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-08-08
  • Сайт: 
  • Профессия: Программист 8.1
Re: Четверг. Вопрос 8
« Ответ #45: 15 Мар 2013, 21:49 »
Для вывода этих данных необходимо использовать один источник данных. Регистр сведений "Курсы валют". в механизме СКД использвать Набор - запрос. Обратится непосредственно к этой таблице и поставить условие по дате на начало периода и конец периода. Приблизительно это будет выглядеть так:
ВЫБРАТЬ
   КурсыВалют.Период,
   КурсыВалют.Валюта,
   КурсыВалют.Курс,
   КурсыВалют.Кратность
ИЗ
   РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
   КурсыВалют.Период МЕЖДУ &ДатаНАч И &ДатаКон

Оффлайн 1Chelpk

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-03-07
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 8
« Ответ #46: 15 Мар 2013, 23:00 »
Используя в качестве источника данных запрос, с помощью одного запроса по регламентированному производственному календарю и курсам валют, мы можем получить необходимыйрезультат. Связав левым соединеняем календарь и курсы по дате и периоду.

Оффлайн TimonChD

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-17
  • Сайт: 
  • Профессия: Программист 8.1
Re: Четверг. Вопрос 8
« Ответ #47: 15 Мар 2013, 23:21 »
Можно выполнить одним запросом в CRL^
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК ДатаЗ
ПОМЕСТИТЬ СписокДат
ИЗ
(ВЫБРАТЬ
0 КАК a

ОБЪЕДИНИТЬ

ВЫБРАТЬ
1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
9) КАК aa
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК b

ОБЪЕДИНИТЬ

ВЫБРАТЬ
1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
9) КАК bb
ПО (ИСТИНА)
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК c

ОБЪЕДИНИТЬ

ВЫБРАТЬ
1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
9) КАК cc
ПО (ИСТИНА)
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК d

ОБЪЕДИНИТЬ

ВЫБРАТЬ
1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
9) КАК dd
ПО (ИСТИНА)
ГДЕ
aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&Дата1, &Дата2, ДЕНЬ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЕСТЬNULL(КурсыВалют.Период, КурсыПоследние.Период) КАК Период,
ЕСТЬNULL(КурсыВалют.Валюта, КурсыПоследние.Валюта) КАК Валюта,
ЕСТЬNULL(КурсыВалют.Курс, КурсыПоследние.Курс) КАК Курс
ПОМЕСТИТЬ КурсыВалют
ИЗ
(ВЫБРАТЬ
КурсыВалютСрезПоследних.Период КАК Период,
КурсыВалютСрезПоследних.Валюта КАК Валюта,
КурсыВалютСрезПоследних.Курс КАК Курс
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(&Дата1, ) КАК КурсыВалютСрезПоследних) КАК КурсыПоследние
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
КурсыВалют.Период КАК Период,
КурсыВалют.Валюта КАК Валюта,
КурсыВалют.Курс КАК Курс
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
КурсыВалют.Период МЕЖДУ &Дата1 И &Дата2) КАК КурсыВалют
ПО КурсыПоследние.Период = КурсыВалют.Период
И КурсыПоследние.Валюта = КурсыВалют.Валюта

ИНДЕКСИРОВАТЬ ПО
Период,
Валюта
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СписокДат.ДатаЗ,
Валюты.Ссылка
ПОМЕСТИТЬ МассивВалют
ИЗ
СписокДат КАК СписокДат,
(ВЫБРАТЬ
Валюты.Ссылка КАК Ссылка
ИЗ
Справочник.Валюты КАК Валюты) КАК Валюты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МассивВалют.ДатаЗ КАК ДатаЗ,
МассивВалют.Ссылка КАК Ссылка,
МАКСИМУМ(ДатаКурса.Период) КАК Период
ПОМЕСТИТЬ МассивВалютСДатами
ИЗ
МассивВалют КАК МассивВалют
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
КурсыВалют.Период КАК Период,
КурсыВалют.Валюта КАК Валюта,
КурсыВалют.Курс КАК Курс
ИЗ
КурсыВалют КАК КурсыВалют) КАК ДатаКурса
ПО МассивВалют.ДатаЗ >= ДатаКурса.Период
И МассивВалют.Ссылка = ДатаКурса.Валюта

СГРУППИРОВАТЬ ПО
МассивВалют.ДатаЗ,
МассивВалют.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МассивВалютСДатами.ДатаЗ,
МассивВалютСДатами.Ссылка,
ВложенныйЗапрос.Курс
ИЗ
МассивВалютСДатами КАК МассивВалютСДатами
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
КурсыВалют.Период КАК Период,
КурсыВалют.Валюта КАК Валюта,
КурсыВалют.Курс КАК Курс
ИЗ
КурсыВалют КАК КурсыВалют) КАК ВложенныйЗапрос
ПО МассивВалютСДатами.Ссылка = ВложенныйЗапрос.Валюта
И МассивВалютСДатами.Период = ВложенныйЗапрос.Период


Теги:
 


* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
64 Сообщений
wise wise
58 Сообщений
AIFrame AIFrame
50 Сообщений
alexandr_ll
46 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
43 Сообщений
alex0402
41 Сообщений
LexaK
32 Сообщений
BuhRust
28 Сообщений
andron81_81
24 Сообщений
MuI_I_Ika MuI_I_Ika
22 Сообщений

* Кто онлайн

  • Точка Гостей: 143
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal