Автор Тема: Билет 15. Спец по платформе V8  (Прочитано 31149 раз)

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

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Билет 15. Спец по платформе V8
« : Октябрь 01, 2015, 03:00:02 pm »
Решил Билет 15. Обсудим?

PS. Допилил. Добавил упорядочивание по учетной политике в РН по ОперУчету.
Вывел документы в подистемы.

[вложение удалено администратором]
« Последнее редактирование: Октябрь 01, 2015, 11:04:00 pm от Jones »

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 15. Спец по платформе V8
« Ответ #1 : Октябрь 01, 2015, 03:07:47 pm »
ОУ
Задача похожа на 1.28 и 1.29, но проще. Надо только добавить в регистр Продажи измерение РН.


БУ
Это задача из сборника 2.26.

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

Обратите внимание на мои блокировки в документе АвансовыйОтчет. Блокирую три счета. Исхожу из соображений, что блокировать надо данные всех регистров, которые могут быть изменены в обработке проведения. Как считаете, все верно?



ПР
В расчетах все просто: Оклад, Премия, все в ОН.
Единственное, не пойму, что надо делать в связи с фразой «В одном документе могут быть данные за разные расчетные периоды»



Quantum81

  • Проверенный
  • ***
  • Сообщений: 117
Re: Билет 15. Спец по платформе V8
« Ответ #2 : Октябрь 01, 2015, 03:37:07 pm »

ПР
В расчетах все просто: Оклад, Премия, все в ОН.
Единственное, не пойму, что надо делать в связи с фразой «В одном документе могут быть данные за разные расчетные периоды»
я понял эту фразу так:
 Вместо "СведенияОСотрудникахСрезПоследних" в запросах использовать что-то типа этого

ВЫБРАТЬ
ОН.НомерСтроки,
МАКСИМУМ(СведенияОСотрудниках.Период) КАК МаксПериод,
ОН.Сотрудник КАК Сотрудник,
ОН.Подразделение КАК Подразделение
ПОМЕСТИТЬ МаксПерЗП
ИЗ
РегистрРасчета.ОН КАК ОН
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
ПО ОН.Сотрудник = СведенияОСотрудниках.Сотрудник
И ОН.Подразделение = СведенияОСотрудниках.Подразделение
И ОН.ПериодДействия >= СведенияОСотрудниках.Период
ГДЕ
ОН.Регистратор = &Ссылка
И ОН.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисления.Оклад)

СГРУППИРОВАТЬ ПО
ОН.НомерСтроки,
ОН.Сотрудник,
ОН.Подразделение

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МаксПерЗП.НомерСтроки КАК НомерСтроки,
СведенияОСотрудниках.Оклад
ПОМЕСТИТЬ Оклады
ИЗ
МаксПерЗП КАК МаксПерЗП
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
ПО МаксПерЗП.Сотрудник = СведенияОСотрудниках.Сотрудник
И МаксПерЗП.Подразделение = СведенияОСотрудниках.Подразделение
И МаксПерЗП.МаксПериод = СведенияОСотрудниках.Период

ИНДЕКСИРОВАТЬ ПО
НомерСтроки
;


alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 15. Спец по платформе V8
« Ответ #3 : Октябрь 01, 2015, 05:12:51 pm »
Обратите внимание на мои блокировки в документе АвансовыйОтчет. Блокирую три счета. Исхожу из соображений, что блокировать надо данные всех регистров, которые могут быть изменены в обработке проведения. Как считаете, все верно?
Цитата: "Наличие денег в кассе контролировать не нужно."
Так зачем блокировать кассу?
ПР
Цитата: "17. СПР. Каждый вид расчета нужно рассчитывать отдельным запросом (и делать отдельную запись в регистр). Например, не надо делать одновременный расчет в запросе оклада и командировочных, премии и надбавки. Сначала запрос по расчету оклада (в общем модуле), запись окладов. Потом запрос по командировкам, запись командировок."
Отсюда http://forum.chistov.pro/index.php?topic=2005.msg22414#msg22414
ПР
В расчетах все просто: Оклад, Премия, все в ОН.
Единственное, не пойму, что надо делать в связи с фразой «В одном документе могут быть данные за разные расчетные периоды»
Если сделать так, как в цитате выше, расчет хоть немного упорядочится, оклад за прошлый месяц, введенный в этом, учтется при расчете отпуска (а если делать одним запросом - не факт), ну и то, на что указал Quantum81.

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 15. Спец по платформе V8
« Ответ #4 : Октябрь 01, 2015, 11:51:21 pm »
Если сделать так, как в цитате выше, расчет хоть немного упорядочится

Признаться, хотел как быстрее, одним запросом два ВР отработать.
И вправду, лучше буду теперь для каждого начисления свой расчет делать с записью, по порядку.
Убедил, alex1248, респект!

А вот насчет разных расчетных периодов в одном документе пока не разобрался.
Quantum81, можно словами, что значит тот запрос?
Нельзя что-ли получать Оклад на &НачМесяцаДатаДок? Надо для каждой строки получать Оклад на начало ПериодаДействия?

Quantum81

  • Проверенный
  • ***
  • Сообщений: 117
Re: Билет 15. Спец по платформе V8
« Ответ #5 : Октябрь 02, 2015, 01:37:21 am »
Например, у тебя в одном документе в ТЧ  Иванову Оклад за Июнь, дальше Июль, еще может какой отрезок.
Размер оклада может меняться. Какой именно размер окалда на начало этих месяцев из виртуальной таблицы не вытащить (одним запросом).
  Поэтому я вручную делю то, что делает срезпоследних, для каждой строчки. (тем самым избегаю запроса в цикле). 
  Для каждого движения, присоединяю все записи с размером оклада, которые младше расчетного периода указанного в этом движении (строке). Группирую и получаю самое близкое к моему расчетному периоду.
  А потом уже, в следующем запросе просто подтягиваю оклады из РС по полученному периоду.

Как-то так.

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 15. Спец по платформе V8
« Ответ #6 : Октябрь 02, 2015, 07:43:16 am »
А вот насчет разных расчетных периодов в одном документе пока не разобрался.
Quantum81, можно словами, что значит тот запрос?
Хм, а 2-й билет как делал? Там тоже разные периоды, да еще с неоднократным изменением.

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 15. Спец по платформе V8
« Ответ #7 : Октябрь 02, 2015, 09:12:18 am »
Группирую и получаю самое близкое к моему расчетному периоду.

А группируешь так ,чтобы получить максимальный из старых периодов? Так получается последний Оклад на ПериодДейтвия строки?

Там тоже разные периоды, да еще с неоднократным изменением.
Да уж. Тут хоть успеть все набить и в порядок привести. А они еще с такими выкрутасами. Моцк заворачивается от таких запросов.

Quantum81

  • Проверенный
  • ***
  • Сообщений: 117
Re: Билет 15. Спец по платформе V8
« Ответ #8 : Октябрь 02, 2015, 09:41:45 am »
Группирую и получаю самое близкое к моему расчетному периоду.

А группируешь так ,чтобы получить максимальный из старых периодов? Так получается последний Оклад на ПериодДейтвия строки?
Да.
Там тоже разные периоды, да еще с неоднократным изменением.
Да уж. Тут хоть успеть все набить и в порядок привести. А они еще с такими выкрутасами. Моцк заворачивается от таких запросов.
Это точно. Множественное изменение окладов "порадовало".  Т.к. к группировкам добавляется еще одна. По каждой строке надо получить список окладов в периоде действия.

artemusII

  • Пользователь
  • **
  • Сообщений: 34
  • ФИО: Артем А.
Re: Билет 15. Спец по платформе V8
« Ответ #9 : Октябрь 24, 2015, 06:32:48 pm »
ОУ
Задача похожа на 1.28 и 1.29, но проще. Надо только добавить в регистр Продажи измерение РН.

Мне кажется, что проще просто при проведении документа Затраты в период проводки писать дату из расходной накладной. Тогда оборот по затратам ляжет ровно на ту дату, что и расходная накладная, а значит попадет в отчет в том же периоде, что и накладная.

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 15. Спец по платформе V8
« Ответ #10 : Октябрь 29, 2015, 12:04:06 am »
БУ и ПР решил прогнать еще разок, ибо есть вопросы по решению

Задачу БУ 15 билета считаю одной из самых сложных.
Сложность заключается в том, что надо не просто погасить ДолгПоНакладной ДеньгамиФилиаловКурьера,
но еще и перекидывать деньги между филиалами в рамках курьера (если деньги у курьера есть, но они относятся к другому филиалу).

В ходе решения выявил еще одну ловушку, заложенную создателями билетов: в тексте задания четко казано, что в ПН «помимо всего указывается и курьер», а про Филиал наоборот ничего не сказано. Зачем в ПН нужен курьер я так и не понял (если только для отвлечения внимания), а вот филиал там,по-моему, обязателен.
Хотя… Может я чего не понимаю? Если кому-нибудь известно, зачем в ПН указывать Курьера, поясните, пожалуйста.

БУ задача интересна и своим отчетом. На первый взгляд он выглядит очень простым: вроде бы достаточно вывести данные из таблицы ОстаткиИОбороты.
Однако, из-за перемещений денег между Филиалами в рамках Курьера, везде возникает задвоение сумм.
В качестве решения, на поля ПолученоВКассе и Отчитался установлены условия по типу документа регистратора.



В ПР задаче сложность может вызывать расчет Оклада на фоне условия «разные расчетные периоды». ПериодРегистрации выводим в ТЧ и получаем последний Оклад на момент этого ПериодаРегистрации.

Справочник Графики в задаче не нужен, зато в рег свед Графики добавляем измерение Подразделение. В обработке заполнения графиков, наряду со Значением (Часы) заполняем еще и ДниШестидневка, которые пригодятся для расчета отпуска.

Но самым интересным в этой задаче, для меня, остается отчет ДиаграммаГанта. Хоть и делал его уже много раз, но каждый раз копаюсь в синтаксис-помощнике, разбираясь, что такое Диаграмма Ганта и с чем ее едят. Для себя вывел такой алгоритм, который стараюсь запомнить:
1)   Получить данные из таблицы ФактПД:
        Сотрудник
        ВР
        ПДНачало
        ПДКонец
2)   В обходе выборки самое интересное:
        Точка=Диаграмма.УстановитьТочку(Сотр)
        Серия=Диаграмма.УстановитьСерию(ВР)
        Значение=Диаграмма.ПолучитьЗначение(Точка, Серия)
        Интервал=Значение.Добавить
        Заполнить Нач и Кон Интервала
« Последнее редактирование: Октябрь 29, 2015, 09:24:29 am от Jones »

zorky

  • Проверенный
  • ***
  • Сообщений: 222
  • ФИО: ЗЖВ
Re: Билет 15. Спец по платформе V8
« Ответ #11 : Октябрь 29, 2015, 02:31:49 pm »
В ПР задаче сложность может вызывать расчет Оклада на фоне условия «разные расчетные периоды». ПериодРегистрации выводим в ТЧ и получаем последний Оклад на момент этого ПериодаРегистрации.


 - Не пойму, а если период регистрации  - это текущий месяц, а считаем ЗП за прошлый...
Наверное надо брать действующий Оклад на ПериодДействия?

Подскажите, зачем вытаскивать ПериодРегистрации в ТЧ, можно ли присвоить ему Дату Документа?

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 15. Спец по платформе V8
« Ответ #12 : Октябрь 29, 2015, 10:20:00 pm »
Наверное надо брать действующий Оклад на ПериодДействия?
Подскажите, зачем вытаскивать ПериодРегистрации в ТЧ, можно ли присвоить ему Дату Документа?
Так и бери по периоду действия.
Я тоже не понимаю, какой смысл периода регистрации в ТЧ, и тоже в ПР всегда записывал дату дока.
Но вообще на экз вроде оба варианта проходят, если сделать логично и с пониманием.

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 15. Спец по платформе V8
« Ответ #13 : Октябрь 30, 2015, 01:23:48 pm »
ОУ
Задача похожа на 1.28 и 1.29, но проще. Надо только добавить в регистр Продажи измерение РН.

Мне кажется, что проще просто при проведении документа Затраты в период проводки писать дату из расходной накладной. Тогда оборот по затратам ляжет ровно на ту дату, что и расходная накладная, а значит попадет в отчет в том же периоде, что и накладная.

+1 за это решение
Только как к нему отнесутся экзаменаторы?

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 15. Спец по платформе V8
« Ответ #14 : Ноябрь 06, 2015, 11:30:14 am »
В ПР задаче сложность может вызывать расчет Оклада на фоне условия «разные расчетные периоды». ПериодРегистрации выводим в ТЧ и получаем последний Оклад на момент этого ПериодаРегистрации.


 - Не пойму, а если период регистрации  - это текущий месяц, а считаем ЗП за прошлый...
Наверное надо брать действующий Оклад на ПериодДействия?

Подскажите, зачем вытаскивать ПериодРегистрации в ТЧ, можно ли присвоить ему Дату Документа?

Вообще, с условием «разные расчетные периоды» нет однозначной трактовки, что надо сделать,
однако думаю, что сейчас Вы, коллеги, совершенно правы и для Оклада ПР в ТЧ не нужен!

Вношу кооректировку в свое понимание условий задач ПР.
ПерРег буду добавлять теперь только в ТЧ ДН (у которых нет ПД), а в ТЧ ОН такое поле не нужно.

Спасибо вам, друзья! И снова в споре умных людей рождается истина ))