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

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

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

  • *****
  • Сообщений: 1771
  • РЕПУТАЦИЯ: 509
  • КПД: 29%
  • Регистрация: 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

  • *****
  • Сообщений: 1771
  • РЕПУТАЦИЯ: 509
  • КПД: 29%
  • Регистрация: 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
Просмотров: 8898
Последний ответ 06 Дек 2014, 17:40
от дфтын
Поиск по бае данных,(полнотекстовый поиск)

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
117 Сообщений
alexandr_ll
58 Сообщений
LexaK
47 Сообщений
alex0402 alex0402
45 Сообщений
DmitriyF DmitriyF
29 Сообщений
MuI_I_Ika MuI_I_Ika
27 Сообщений
BuhRust
27 Сообщений
Stanislav Gareev
19 Сообщений
Funt432286
18 Сообщений
Андрей_gen_D
16 Сообщений

* Кто онлайн

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

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal