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

Автор Тема: СКД и получение данных из табличной части  (Прочитано 204 раз)

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

Оффлайн dimanuga

  • *
  • Сообщений: 14
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-10-01
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте !
Подскажите новичку по формированию отчета в СКД:

Есть справочник у него есть реквизит наименование и табличная часть, допустим в ней есть следующие реквизиты: Дата и Значение

Необходимо при формировании отчета выводить наименование и рассчитывать на текущую дату Значение1 = (ЗначениеПоследнееВТабличномЗначении - ЗначениеПредыдущееВТабличномЗначении)/(ДатаПоследняяВТабличномЗначении-ДатаПредыдущаявТабличномЗначении)*(ДатаТекущая-ДатаПоследняяВТабличномЗначении)+ЗначениеПоследнееВТабличномЗначении

Т.е. если русским языком - необходимо найти прогнозное значение на текущую даты, основанное на среднем прибавлении значения между двумя последними датами
Дата               Значение
01.02.2018         500
02.03.2018         800
05.04.2018         1400

Итого на текущую дату (например сегодня 02.05.2018) Значение будет = 600/34*27+1400 = 1876,47
Как написать вычисляемое поле в СКД?


Оффлайн LexaK

  • *****
  • Сообщений: 1651
  • РЕПУТАЦИЯ: 470
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
в СКД такое рассчитывать это для самых продвинутых,
а вот по проще в обычном запросе выполните (а запрос в СКД потом вставите), попробуйте так
проверил, даже результат совпал :)
//эмуляция ТЧ справочника
ВЫБРАТЬ 1000 как Ссылка, ДатаВремя(2018,2,1) как Дата, 500 как Значение Поместить Таб
объединить все ВЫБРАТЬ 1000, ДатаВремя(2018,3,2), 800
объединить все ВЫБРАТЬ 1000, ДатаВремя(2018,4,5), 1400
;

//Выбрать * из таб

Выбрать
    //для проверки полученных значений
Таб0.*, //последние значения
Таб1.*, //предыдущие значения
//сам расчет
(Таб0.Значение - Таб1.Значение)
/ РазностьДат(Таб1.Дата, Таб0.Дата, День)
* РазностьДат(Таб0.Дата, &Дата, День)
+ Таб0.Значение как Результат
из
Таб таб0
левое соединение Таб Таб1 //данные для предыдущей записи
по Таб0.Ссылка = Таб1.Ссылка //для отбора в рамках одно элемента справончика
и Таб0.Дата > Таб1.Дата

левое соединение Таб Таб2 //для отсечки прошлого значения
по Таб0.Ссылка = Таб2.Ссылка //для отбора в рамках одно элемента справончика
и Таб0.Дата > Таб2.Дата
и Таб1.Дата < Таб2.Дата

левое соединение Таб Таб3 //для отсечки первого значения
по Таб0.Ссылка = Таб3.Ссылка //для отбора в рамках одно элемента справончика
и Таб0.Дата < Таб3.Дата
и Таб3.Дата <= &Дата

где
Таб0.Дата <= &Дата
и Таб2.Ссылка есть Null
и Таб3.Ссылка есть Null

Помогло? - Нажми СПАСИБО!!!
                       :)

Последний раз редактировалось: LexaK; 07 Фев 2019, 15:44

Оффлайн dimanuga

  • *
  • Сообщений: 14
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-10-01
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо ! Но я честно не совсем понял :(
Я еще совсем на ранней стадии изучения 1С...

Вот есть у меня код по кнопке

        Количество = Объект.Привесы.Количество();
   
   Если Количество = 0 Тогда
      Сообщить("Данных нет ! Введите данные по весу.");
   КонецЕсли;
   
   Если Количество = 1 Тогда
      Сообщить("Данных для подсчета недостаточно ! Введите данные по весу.");
   КонецЕсли;
   
   Если Количество > 1 Тогда
      РазницаВес = (Объект.Привесы[Количество-1].ВесЖивотного-Объект.Привесы[Количество-2].ВесЖивотного);
      РазницаДней = (НачалоДня(Объект.Привесы[Количество-1].ДатаВзвешивания) - НачалоДня(Объект.Привесы[Количество-2].ДатаВзвешивания))/(60*60*24);
      СреднееВес = РазницаВес / РазницаДней;
      Значение = Окр((Объект.Привесы[Количество-1].ВесЖивотного-Объект.Привесы[Количество-2].ВесЖивотного)/
      ((НачалоДня(Объект.Привесы[Количество-1].ДатаВзвешивания) - НачалоДня(Объект.Привесы[Количество-2].ДатаВзвешивания))/(60*60*24))*
      ((НачалоДня(ТекущаяДата())- НачалоДня(Объект.Привесы[Количество-1].ДатаВзвешивания))/(60*60*24))+ Объект.Привесы[Количество-1].ВесЖивотного);
      Сообщить("Cредний расчетный вес в день: " + СреднееВес + " Прогнозный вес на текущую дату: " + Значение);
   КонецЕсли;

Как мне получить "Значение" при открытии отчета для каждого животного ? Можно ли все таки это сделать с помощью расчета в СКД ?

Последний раз редактировалось: dimanuga; 08 Фев 2019, 07:25

Оффлайн LexaK

  • *****
  • Сообщений: 1651
  • РЕПУТАЦИЯ: 470
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
Можно ли все таки это сделать с помощью расчета в СКД ?
Вам ответили что можно! прислали пример! что-то еще?

Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн dimanuga

  • *
  • Сообщений: 14
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-10-01
  • Сайт: 
  • Профессия: Ученик 1С
Цитировать
Можно ли все таки это сделать с помощью расчета в СКД ?
Вам ответили что можно! прислали пример! что-то еще?

Вам спасибо огромное !
Я уточнил вопрос - может все-таки кто-то подскажет как это сделать с помощью вычисляемых полей и ресурсов в СКД - если это возможно?!

Я просто не совсем понял описанный Вами метод - разобраться не смог - не пойму как его записать в моем случае!

Выбрать
    (Таб0.ВесЖивотного - Таб1.ВесЖивотного)
   / РазностьДат(Таб1.ДатаВзвешивания, Таб0.ДатаВзвешивания, День)
   * РазностьДат(Таб0.Дата, &Дата, День)
   + Таб0.ВесЖивотного как Результат
из
   Справочник.Животные.Привесы Таб0
     
левое соединение Справочник.Животные.Привесы Таб1
   по Таб0.Ссылка = Таб1.Ссылка
   и Таб0.ДатаВзвешивания > Таб1.ДатаВзвешивания

левое соединение Справочник.Животные.Привесы Таб2
   по Таб0.Ссылка = Таб2.Ссылка
   и Таб0.ДатаВзвешивания > Таб2.ДатаВзвешивания
   и Таб1.ДатаВзвешивания < Таб2.ДатаВзвешивания

левое соединение Справочник.Животные.Привесы Таб3
   по Таб0.Ссылка = Таб3.Ссылка
   и Таб0.ДатаВзвешивания < Таб3.ДатаВзвешивания
   и Таб3.ДатаВзвешивания <= &Дата      

где
   Таб0.ДатаВзвешивания <= &Дата      
и    Таб2.Ссылка есть Null   
и    Таб3.Ссылка есть Null   

Правильно я записал?

И потом куда этот запрос вставлять? Делать в Схеме второй набор данных или добавить в основной ? :dfbsdfbsdf:
Добавлено: 08 Фев 2019, 12:04

В результате вставил вот такой запрос:

ВЫБРАТЬ
   (Таб0.ВесЖивотного - Таб1.ВесЖивотного) / РАЗНОСТЬДАТ(Таб1.ДатаВзвешивания, Таб0.ДатаВзвешивания, ДЕНЬ) * РАЗНОСТЬДАТ(Таб0.ДатаВзвешивания, &Дата, ДЕНЬ) + Таб0.ВесЖивотного КАК Результат
ИЗ
   Справочник.Животные.Привесы КАК Таб0
      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Животные.Привесы КАК Таб1
      ПО Таб0.Ссылка = Таб1.Ссылка
         И Таб0.ДатаВзвешивания > Таб1.ДатаВзвешивания
      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Животные.Привесы КАК Таб2
      ПО Таб0.Ссылка = Таб2.Ссылка
         И Таб0.ДатаВзвешивания > Таб2.ДатаВзвешивания
         И (Таб1.ДатаВзвешивания < Таб2.ДатаВзвешивания)
      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Животные.Привесы КАК Таб3
      ПО Таб0.Ссылка = Таб3.Ссылка
         И Таб0.ДатаВзвешивания < Таб3.ДатаВзвешивания
         И (Таб3.ДатаВзвешивания <= &Дата)
ГДЕ
   Таб0.ДатаВзвешивания <= &Дата
   И Таб2.Ссылка ЕСТЬ NULL
   И Таб3.Ссылка ЕСТЬ NULL

И в отчете пусто !!! Данные в ТЧ есть !

Последний раз редактировалось: dimanuga; 08 Фев 2019, 12:04. Причина: Объединение сообщений


Теги:
 

Перенос данных из 1с 82 БП (базовая) в 1с 82 БГУ (базовая)

Автор Владимир87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 8693
Последний ответ 06 Дек 2014, 17:40
от дфтын
Поиск по бае данных,(полнотекстовый поиск)

Автор kot_ooРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 4431
Последний ответ 19 Май 2014, 15:40
от kot_oo
Как исправить при обновлении ИБ: Ошибка в запросе набора данных по причине: {(58, 2)}: Несовместимые типы "ВЫБОР" <<?>>ВЫБОР

Автор dollРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 3344
Последний ответ 26 Апр 2018, 06:45
от Геннадий ОбьГЭС
"Задваивание" данных в отчете

Автор mashencev_antonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 13
Просмотров: 9491
Последний ответ 15 Окт 2015, 11:21
от Mari_beginner
Куда сохраняются данные в режиме работы клиент при выгрузке данных обработкой "Универсальный обмен данными в формате XML"

Автор xDDРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 8701
Последний ответ 13 Ноя 2014, 08:23
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
88 Сообщений
AIFrame AIFrame
64 Сообщений
alexandr_ll
42 Сообщений
alex0402
31 Сообщений
wise wise
23 Сообщений
LexaK
18 Сообщений
BuhRust
15 Сообщений
byte777
14 Сообщений
pavl_vs
14 Сообщений
Weidermail
13 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal