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

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

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

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С

Вопрос от технического руководителя проектов офиса «ДелаемПроекты.рф» компании «Первый БИТ» Королева Алексея. Взят с проекта «Световые технологии».

Задан некий период. Необходимо в СКД сформировать таблицу со всеми датами из этого периода и значением курса на каждую из дат. Какой механизм необходимо для этого использовать? Какое количество запросов будет в источниках данных СКД?


Предыдущий вопрос Следующий вопрос

Последний раз редактировалось: mixqn; 14 Мар 2013, 23:57


Оффлайн evgeny.s

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-07
  • Сайт: 
  • Профессия: Программист 8.1
Re: Четверг. Вопрос 8
« Ответ #1: 14 Мар 2013, 01:50 »
количество запросов в источниках данных - 2
основной момент для таких задач правильно указать параметры в связях наборов данных.
Если указан параметр,то  СКД передает в приемник связи параметры, указанные в соединении.
в качестве значений, переданных параметров будут выступать значения соответствующих полей источника связи.

Оффлайн soft

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-07-12
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 8
« Ответ #2: 14 Мар 2013, 03:57 »
Сначала - нужно получить все даты периода. Если есть регистр типа Производстенного календаря - берем из него (во всех типовых в принципе есть). Если нету - придется формировать этот запрос программно.
Далее получаем на каждую дату период последней записи регистра сведений (не среза последних, а берем саму таблицу регистра)
Далее присоединяем регистр к таблице, полученной на шаге 2 по периоду.
ТЕ - 2 вирт таблицы/1 запрос-выборка

Оффлайн AQR

  • *
  • Сообщений: 35
  • РЕПУТАЦИЯ: 2
  • КПД: 6%
  • Регистрация: 2013-03-12
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 8
« Ответ #3: 14 Мар 2013, 05:37 »
ВЫБРАТЬ
   0 КАК Цифра
ПОМЕСТИТЬ ТабЦифр

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) КАК День
ПОМЕСТИТЬ ТабДней
ИЗ
   ТабЦифр КАК ТабЦифр1,
   ТабЦифр КАК ТабЦифр2,
   ТабЦифр КАК ТабЦифр3,
   ТабЦифр КАК ТабЦифр4
ГДЕ
   ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) <= &ДатаКонца

ИНДЕКСИРОВАТЬ ПО
   День
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТабДней.День,
   КурсыВалют.Курс
ИЗ
   ТабДней КАК ТабДней
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
      ПО (НАЧАЛОПЕРИОДА(ТабДней.День, ДЕНЬ) = НАЧАЛОПЕРИОДА(КурсыВалют.Период, ДЕНЬ))
ГДЕ
   КурсыВалют.Валюта = &Валюта

Оффлайн info_pvm

  • *
  • Сообщений: 30
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-11-30
  • Сайт: 
  • Профессия: Консультант 1С
Re: Четверг. Вопрос 8
« Ответ #4: 14 Мар 2013, 08:51 »
на СКД можно так
 - сформировать програмно таблицу с датами периода и в СКД передать как внешний источник данных
 - и каждую дату из этой таблицы в СКД передавать как параметр в СрезПоследних в РС с информацией о курсах валют.

Оффлайн savichevae

  • *
  • Сообщений: 35
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-07-19
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 8
« Ответ #5: 14 Мар 2013, 09:06 »
Реализовать можно с помощью связанных наборов данных, будет 2 запроса

Оффлайн Alex_k

  • *
  • Сообщений: 38
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-07-14
  • Сайт: 
Re: Четверг. Вопрос 8
« Ответ #6: 14 Мар 2013, 09:09 »
Будет 2 источника данных.
В 1 список нужных периодов.
Во второй получаем срез последних значения курса.
При их объединении нужно будет указать свойство период как параметр в колонке "параметр". Переданный параметр, в этом случае, передастся как параметр "период" для среза последних.

Оффлайн IrinaO

  • *
  • Сообщений: 39
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2012-12-08
  • Сайт: 
  • Профессия: Ученик 1С
Re: Четверг. Вопрос 8
« Ответ #7: 14 Мар 2013, 09:30 »
Создаем в СКД 2 набора данных. В Первом отбираются даты, во втором строится запрос к регистру сведений, в параметрах виртуальной таблицы указываем параметр &Период, и выбираем поле &Период. Настраиваем связи наборов данных: Дата из первого набора - Период из второго и указываем параметр Период.

Оффлайн mzelensky

  • *
  • Сообщений: 40
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-02-28
  • Сайт: 
  • Профессия: Разработчик 1С
Re: Четверг. Вопрос 8
« Ответ #8: 14 Мар 2013, 09:51 »
Вопрос от технического руководителя проектов офиса «ДелаемПроекты.рф» компании «Первый БИТ» Королева Алексея. Взят с проекта «Световые технологии».

Задан некий период. Необходимо в СКД сформировать таблицу со всеми датами из этого периода и значением курса на каждую из дат. Какой механизм необходимо для этого использовать? Какое количество запросов будет в источниках данных СКД?

Первый набор данных - тут выбираем то, что нам требуется, например, заказ покупателя. Главное чтобы в выбираемых полях были реквизиты "Дата" и "Валюта".

Второй набор данных типа "Запрос":

ВЫБРАТЬ
    &Дата КАК Дата,
    КурсыВалютСрезПоследних.Валюта КАК Валюта,
    КурсыВалютСрезПоследних.Курс КАК Курс,
    КурсыВалютСрезПоследних.Кратность КАК Кратность
{ВЫБРАТЬ
    Дата,
    Валюта.*,
    Курс,
    Кратность}
ИЗ
    РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &Валюта) КАК
КурсыВалютСрезПоследних
{ГДЕ
    КурсыВалютСрезПоследних.Курс,
    КурсыВалютСрезПоследних.Кратность}

Далее соединяем эти наборы данных. Параметры второго запроса "&Дата" и "&Валюта" необходимы для соединения с первым набором данных. Настваиваем источники связей для параметров "Дата" и "Валюта" для того, чтобы из первого (основного) набора данных эти параметры были переданы во второй (подчиненный) набор данных

Оффлайн SlazZy

  • ***
  • Сообщений: 149
  • РЕПУТАЦИЯ: 15
  • КПД: 10%
  • Регистрация: 2012-04-28
  • Сайт: 
  • Профессия: Программист 1С
Re: Четверг. Вопрос 8
« Ответ #9: 14 Мар 2013, 11:08 »
На мой взгляд несколько странная формулировка вопроса :) если прямо следовать тому, что написано, то надо просто выбирать данные за определенный период из физической таблицы регистра сведений.
Если же имеется в виду, что в выборку должны попасть ВСЕ даты из заданного периода, даже если по ним нету записей, то надо сделать группировку по полю "Период" с дополнением день, тогда в выборке будут все даты за заданный период.


Теги:
 


* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
184 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
50 Сообщений
andron81_81
40 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
29 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 314
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal