Автор Тема: Задача 1.25  (Прочитано 48598 раз)

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

valdu

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Задача 1.25
« Ответ #30 : Август 14, 2011, 01:24:09 pm »
Свой вариант.
Вложения:
1_25_valdu.dt

magrib

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Максим
Задача 1.25
« Ответ #31 : Август 21, 2011, 12:39:34 pm »
Всем привет! У меня вопрос ко всем специалистам 1с.
 Я просмотрел решения, опубликованные здесь, и везде данные, которые заносятся в документ "Счет" - Процент пени и Срок переплаты, никуда больше не заносятся.
 Впоследствии их получают через измерение регистров - "Счет", т.е например ВзаиморасчетыОстатки.Счет.ПроцентПени.
 Не получится ли как в рекомендациях 1с: "Получение расчетных данных не из регистра.
 Единственной достоверной информацией в системе учета следует считать информацию регистров. Информация из документов может рассматриваться лишь как вспомогательная и не может быть абсолютно достоверной. Например, при наличии документа (аналога ручной операции в бухгалтерском учете), позволяющего интерактивно вводить записи в регистр" - за что сразу снимают 3 балла.
 Может имеет смысл завести регистр сведений, куда заносить эти данные(Счет, ПроцентПени,СрокПереплаты) - или это будет неоптимально?


DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.25
« Ответ #32 : Август 24, 2011, 11:22:31 am »
Quote (magrib)
Впоследствии их получают через измерение регистров - "Счет", т.е например ВзаиморасчетыОстатки.Счет.ПроцентПени.


 Вы сами ответили на свой вопрос .. все берется из регистров .. все логично ..

magrib

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Максим
Задача 1.25
« Ответ #33 : Август 24, 2011, 05:50:11 pm »
Quote (DoctorRoza)
Вы сами ответили на свой вопрос .. все берется из регистров .. все логично ..

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

Добавлено (24.08.2011, 17:50)
---------------------------------------------
Можно получается создать один регистр на всю конфигурацию а в нем создать всего одно измерение - "Документ", и вытаскивать все данные из него, и вроде как все берется из регистров))


DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.25
« Ответ #34 : Август 24, 2011, 07:35:55 pm »
Quote (magrib)
Да все логично, но одно дело получить данные через измерение, как через ссылку,т.е все-таки обращаясь к документу, другое дело взять из регистра напрямую...


 Извините, но расшифруйте, что Вы тут написали .. )) .. Что Вы подразумеваете под понятием "взять из регистра напрямую"!
 Измерения/ресурсы/реквизиты регистров хранят данные определенных типов. Если Вам нужно хранить значения с типом ДокументСсылка вы и создаете .. чего там нужно .. с типом ДокументСсылка. Что то не совсем понятно, что Вы хотите.

 
 
Quote (magrib)
Можно получается создать один регистр на всю конфигурацию а в нем создать всего одно измерение - "Документ", и вытаскивать все данные из него, и вроде как все берется из регистров))


 Да .. так и будет .. но зачем доводить до абсурда! ))))

magrib

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Максим
Задача 1.25
« Ответ #35 : Август 24, 2011, 09:05:15 pm »
Quote (DoctorRoza)
Извините, но расшифруйте, что Вы тут написали .. )) .. Что Вы подразумеваете под понятием "взять из регистра напрямую"!

 Ну условно как-то так: ВзаиморасчетыОстатки.ПроцентПени - напрямую(ПроцентПени - ресурс регистра), а
 Взаиморасчеты.Счет.ПроцентПени - через ссылку(ПроцентПени - реквизит документа "счет", который является измерением регистра).

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.25
« Ответ #36 : Август 24, 2011, 10:30:19 pm »
Quote (magrib)
Ну условно как-то так: ВзаиморасчетыОстатки.ПроцентПени - напрямую(ПроцентПени - ресурс регистра), а
 Взаиморасчеты.Счет.ПроцентПени - через ссылку(ПроцентПени - реквизит документа "счет", который является измерением регистра).

 Если Вы получаете данные в запросе, то это нормальный вариант получения данных, все же будет делать СУБД (конечно, если хороший запрос!) быстро и надежно. А если Вас смущает, что Пени хранятся в документе, как реквизит, то тут ничего страшного нет .. Это нормально .. Данные взаимосвязаны, изменение одних приведет к изменениям других .. В данном случае Пени не так критичны, суть задачи в сумме, а цифра процентов пени выступают как вспомогательные данные, их место хранения не важно .. Конечно, можно создать регистры и в них закатать все что есть, но оно не нужно!

CmauJI

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Задача 1.25
« Ответ #37 : Август 25, 2011, 05:04:06 pm »
Quote (hapcher)
Выкладываю свое решение. Все оказалось не так сложно, как казалось ))

 Выше вы приводите ссылку на ответ Павла Белоусова (http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567805#567805), где четко написано:
 
Quote
В момент выставления счета возникают две задолженности: компании - по отгрузке и покупателя - по оплате

 У вас же Счет вешает только 1 долг предприятия, а долг покупателя вешается расходными.

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.25
« Ответ #38 : Сентябрь 30, 2011, 07:38:36 am »
Очень не однозначная задача.
 Использую три регистра
 ОтгрузкиПокупателям – Нужен чтоб, установить факт и дату полной отгрузки
 ОплатыПокупателей – Нужен чтоб, можно было гасить задолженности по счетам в разрезе контрагентов
 НачислениеПени – Нужен чтоб, можно было гасить задолженность по пени в разрезе счета
 Все три регистра независимы во времени, поэтому объединить их не получается

 Процент пени определяю на конец недели на остаточную сумму долга на конец недели
 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=580267

 В отчете
 Задолженность по счету – считаю, что это задолженность по оплате по счету включая пеню.
 На экзамене нужно выяснять это задолженность по отгрузке или по оплате, включать пеню или нет.
 Задолженность – считаю, что это приход по документу.
 Но в принципе это могут быть и остатки по отгрузкам или пеням

 Оплаты – вначале плачу по счету(в зависимости от даты документа) потом оплачиваю пени вызванные этим счетом(тоже по датам).

 Спасибо за комментарии и замечания
Вложения:
kow19761.25.dt

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.25
« Ответ #39 : Октябрь 01, 2011, 07:31:33 pm »
kow1976, эту задачу нужно знать обязательно .. Их таких 3 .. 1.25, 1.26 и 1.37 .. и все они в билетах .. поэтому не могу пройти мимо! )) Что мне показалось не айс:
 - РС .. зачем он? Так-с .. то есть их аж 2!? Зачем они? Пени насчитываются, если есть задолжности, а тут еще и булево ..хм
 - Расходная подчинена док Счету .. поэтому нужна ОбработкаЗаполнения
 - Не понравилось вот это ..
 Движения.ОтгрузкиПокупателям.Записывать =Не отказ;
    Движения.ОтгрузкиПокупателям.БлокироватьДляИзменения=Не отказ;
    ////////////////////////
    Движение = Движения.ОтгрузкиПокупателям.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Счет = Счет;
    Движение.СуммаОтгрузки = СуммаПоДокументу;
     Движения.ОтгрузкиПокупателям.Записать();
 ИМХО, как то .. по-индуски что ли .. тут лучше сразу записать все Истина и шабаш .. потом уже при контроле отгрузки остатков списания по счету делать отмену проведения .. Отказ = Истина .. smile
 - Начисление пени .. это сейчас посмотрю по-внимательней ..

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.25
« Ответ #40 : Октябрь 01, 2011, 08:11:10 pm »
kow1976, Так-с .. по поводу начислений пени .. скриншоты

 Добавлено (01.10.2011, 20:11)
 ---------------------------------------------
 kow1976, пени должны насчитываться не за неделю, а за дни просрочки! Вы упростили задачу, а это не хорошо. Тут то вся и сложность, рассчитать пени по дням, тем более, что оплаты могут происходить порциями и пени нужно насчитывать на каждый день, на текущую, оставшуюся сумму. На скриншотах я сознательно оплатил весь долг по счету, но пени не насчитались, а просрочка была аж на 6 дней! Отчеты не смотрел, мыслю, что тут есть над чем по-думать.
 Ну а вообще, лучше, если Вы не смотрели, все-таки посмотреть решения Евгения Гилева .. он понятно, правда несколько сложно .. решает 1.25. Задачу вообще можно решить на 2-ух РН. smile
Вложения:
s2376841.jpg
s0317611.jpg
s2336466.jpg
s4539243.jpg
« Последнее редактирование: Октябрь 01, 2011, 09:47:18 pm от Алексей »

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.25
« Ответ #41 : Октябрь 02, 2011, 07:27:49 am »
Спасибо за комментарии.
 Мне кажется, что в этих задачах без авторов сборника не обойтись.

 Движения.ОтгрузкиПокупателям.Записывать =Не отказ; - Позволяет не делать запись с пустыми наборами. В данном случае наверно не нужно
 Движения.ОтгрузкиПокупателям.БлокироватьДляИзменения=Не отказ; позволяет разблокировать регистр до окончания транзакции.
 Но это не принципиально

 А вот по пени это интересно

 У Гилева в задаче точно указана периодичность день. В задачнике ничего такого нет. Зато сказан, что раз в неделю вводится документ пеня. Значит, оплаты нужно отслеживать раз в неделю. Я считаю, что Гилев решает совсем другую задачу.

 К тому же в задачнике точно указана формула начисления пени. И это формула точно не начисления сложных процентов с периодом день.

 Поэтому я задал вопрос к Белоусову Павелу что применять в данной задаче
 Судя по его ответу, принял решения, что математика задачи следующая
 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=580267

 Я понимал ее так
 > «оставшаяся сумма задолженности по счету» - это сумма задолженности на дату ввода документа «Пеня» (за неделю).
 > «количество дней просрочки» - количество дней от полной отгрузки плюс отсрочка до даты документа Пеня
 > «% пени» - Пеня за неделю
 Все правильно.

 01.08.11 Счет 500 грн. 3 дня на оплату 50% пеня в неделю
 11.08.11 оплата 300грн.
 06.08.11 Полная отгрузка 500грн.
 07.08.11 Пеня 0 есть еще 2дня
 14.08.11 пеня 200*0,5=100грн.
 17.08.11 Оплата 200грн
 21.08.11 пеня 100*0,5=50грн.

 Правда есть сомнения по поводу обработки первой недели и последней.
 Я понимаю так клиенту дается неделя на оплату и не важно сколько раз он платил. Важно сколько он должен на дату ввода документа пеня.

 Исходя из последних комментариев Павла Белоусова, что в сборнике опечатка
 > Приход денег №76 80грн
 Это опечатка - Приход денег №77 80грн

 Регистр «НачислениеПени» в моей задаче становится, не нужен.
 Можно не оплачивать отдельно пеню и отдельно отгрузку в этой задаче. Так как проценты берем со всего долга.

 Один РС использую, чтобы контролировать количество введенных Документов пеня в неделю (там где истина)

 А чтобы не отлавливать в запросе не отгруженные , отгруженные, и оплаченные счета использую тоже РС
 Если решать, как у Гилева то скорость работы запроса будет зависеть от количества отгруженных счетов
 1 Находит все отгруженные
 2 Находит все не отгруженные
 Два обращения к виртуальным таблицам, думаю должно хуже работать, чем обращение к срезам последних регистра РС. Но что здесь более оптимально сказать точно не могу.

 Добавлено (02.10.2011, 07:27)
 ---------------------------------------------
 Алексей,

 У меня не получается смоделировать заданный отчет в задачнике по зад.1.25. 1.26 и 1.37
 Может у вас есть варианты?
« Последнее редактирование: Октябрь 02, 2011, 07:30:08 am от Олег »

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 1.25
« Ответ #42 : Октябрь 02, 2011, 11:00:32 am »
kow1976, ИМХО, это задача прекрасно перекладывается на реальные ситуации. Вы берете в банке кредит, платите за него и если вы не заплатили полностью, то начинают копиться пени. Эти пени не по неделям, и не по месяцам, там точно - день. Именно из этого, я посчитал, что тут идея именно в "пени за день". Поэтому, и
 //
 «количество дней просрочки» - количество дней от полной отгрузки плюс отсрочка до даты документа Пеня
 // посчитал
 «количество дней просрочки» - количество дней от полной отгрузки плюс отсрочка, либо до даты документа Пеня (если полностью не оплачено), либо до даты полного погашения (если есть просрочка)!
 //
 И так как ничего не оговаривается, то "до кучи" нужно рассчитать еще и "пени на пени".
 ////////////////////////////////////////////////
 Чем решение Е. Гилева интересно? Оно универсально, оно действительно рассчитает пени за день. Тем более, получается в решении всего 2 РН! Конечно, есть 2 обращения к виртуальным таблицам, зато база меньше.
 Насчет отчетов, даже не знаю .. если П. Белоус говорит, что есть опечатки, то тогда какой отчет то строить!?
 Эти 3 задачи сложные, их нужно понимать. И будет проблематично найти коллег, которым на экзамене попались 12 и 16 билеты, чтобы узнать по какому пути они шли.
 Да уж, ответы товарища Белоуса смутили .. sad
« Последнее редактирование: Октябрь 02, 2011, 11:01:04 am от Алексей »

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.25
« Ответ #43 : Октябрь 04, 2011, 03:54:45 am »
DoctorRoza,

 Пример с банком очень подходит
 Вы взяли кредит в 12 часов, банк работает с 8 часов до 16 часов. Вам же не начислят проценты за 5 часов. В данном случае периодичность определяется законодательством – это один банковский день.
 Так и в нашей задаче периодичность неделя. Эту информацию можно получить из текста задачи. А любая другая периодичность это фантазия того кто решает задачу.
 У Гилева в решении принято предположение, что оплаты поступают только после полной отгрузки (т.е. понятно сколько нужно платить по счету). А в условии задачи по заданным отчетам четко видно, что оплата может прийти в любое время после выставления счета. Т. е отгрузки и оплаты два не зависимых процесса во времени.

Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.25
« Ответ #44 : Октябрь 11, 2011, 09:16:21 am »
Решил задачу с 2 РН в первом учитываем отгрузки по счету, во втором учитываем задолженности и пени. Пеня считается каждый раз за весь срок за минусом уже начисленной. Никак не смог придумать как находить последние документы отгрузки из имеющихся данных поэтому пришлось создавать РегистрСведений чтобы получать последний документ по срезу последних, если кто-то придумал более логичный алгоритм получения послуднего документа отгрузки буду благодарен за совет.
Вложения:
Saipl_1.25.dt