Автор Тема: Актуальные билеты  (Прочитано 620513 раз)

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

nskripka

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Николай
Актуальные билеты
« Ответ #30 : Сентябрь 01, 2013, 06:28:54 pm »
Ок. Давайте в ближайшее время (постараюсь сделать в понедельник) я выложу решение билета 5, посмотрите мои запросы. Кратно изложу свои мысли:
 -Если исходить из того, что могут быть разные расчетные периоды в одном документе, то период регистрации будет в табличной части. Есть некоторые сложности с запросом. Оклад на начало месяца буду считать соединением с реальной таблицей, чтобы сразу получить оклад на разные периоды по списку сотрудников.
 -Премию буду считать и заносить в документе начисление зарплаты, когда добавляю записи. Сумму продаж буду получать из виртуальных таблиц регистра продажи, без цикла в запросе, по каждому сотруднику и периоду. Потом умножать на процент из табличной части, получать сумму премии и заносить её при добавлении записей. Посмотрел билет внимательно, увидел, что сумма продаж есть в регистре бухгалтерии. То есть буду брать сумму продаж по подразделению не из оборотного регистра накопления, а из существующего регистра бухгалтерии (добавлю только разрез по подразделению).
 ...
 Однако, по своим наблюдениям с экзамена, то всё это можно не делать. Я сам видел решения, когда при занесении данных в регистр вообще нет никаких запросов, все данные копируются из табличных частей. И такие решения принимаются экзаменаторами.  (Исключение составляет задача, где нужно оклад меняется неоднократно за месяц и нужно подсчитать оклад с учетом всех изменений. Тогда приходится уже писать большой запрос и срезу последних и к физическим записям регистра сведений, далее объединять интервалы. Но это один билет ). Если будете не успевать решать расчетную задачу, чтобы не мучатся с запросами, я предлагаю (на основании опыта сдачи некоторых знакомых) такой путь решения:
 Например, с окладом. В табличную часть добавить поле - оклад. Для усложнения период регистрации пусть будет в табличной части.  Поле "оклад" в табличной части будет заполняться при добавлении сотрудника в отдельной процедуре, в которой уже будет вызов запроса с получением среза последних, чтобы найти оклад. Чисто формально условие будет соблюдено, ведь нигде не написано прямо, что так делать нельзя и должно считаться автоматически. Вы просто избавитесь от запроса и сложностей его написания.
 Таким же образом можно и решить проблему получения оборотов по регистру накопления премия. Тут будет засада для неподготволенных людей, если будет запрос в цикле - минус баллы, если будет подсчет оборотов по физической табилце - тоже минус балл. Здесь нужен динамически формировать текст запроса, что может быть сложным.
 Нужно сделать отдельную табличную часть - дополнительные начисления, список сотрудников, подразделение, месяц регистрации, процент премии(если вводится в докумнете) и сумму продаж. Сумма продаж будет вычислять при добавлении строки (или изменении данных строки - сотрудника, подразделения или периода регистрации), сразу оборот за период, простой запрос. То есть сумма продаж считается только для текущей данной строки в табличной части. А потом сразу считаться премия при проведении документа при добавлении записей в регистр расчета и всё. Никаких сложных запросов.
 Предлагаю сделать Вам так на экзамене. Некоторые сдают так и эти решения принимают. (Я пойду на пересдачу в будущую пятницу, посмотрим как сдам, отпишусь что и как).
 Надеюсь, понятно изложил свои мысли? Если есть вопросы, спрашивайте. Посмотрите, пример на диске к сборнику задач. Там оклад на начало месяца тоже получается, как я описал. Без запроса, при выборе сотрудника.
 Это моё мнение, на истину, конечно, не претендую.
« Последнее редактирование: Сентябрь 01, 2013, 07:00:21 pm от Николай »

NigaStoleMyPlane

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Anton
Актуальные билеты
« Ответ #31 : Сентябрь 02, 2013, 11:24:54 am »
Приветствую.
 Не понимаю условие задачи на УФ билет №2. Адекватного решения  на мой взгляд здесь нет(да и вообще задачи на УФ как то плохо освещаются).
 1."С помощью регл. задания необходимо по расписанию каждый день формировать задачи сотрудникам на создание отчет о проделанной работе". - как это понимать? формировать задачи где сотрудник вручную пишет что именно он сделал?... если так то это противоречит следующему .. . " По мере возникновения этих задач у пользователя должна автоматически открываться форма каждой невыполненной его задачи"... то есть надо формировать все таки задачу которую пользователь может выполнить. И еще что значит "автоматически открываться форма каждой невыполненной"? Если их несколько их надо сразу все показать?


oleg2202

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Актуальные билеты
« Ответ #32 : Сентябрь 03, 2013, 12:16:42 am »
Доброй ночи!

 С горем пополам добил 9 билет, расчетную задачу и упр форму.

 Когда решал СПР возник вопрос, можно ли количество отработанных дней одновременно хранить в регистре расчета с количеством часов и потом получить базу по отработанным дням. На данный момент я просто получаю базу по часам и рассчитываю больничные, что на мой взгляд неправильно, т.к. в условии задачи звучит: Больничный. Рассчитывается как количество дней болезни умноженное на среднюю дневную ставку. Средняя дневная ставка = Сумма оклада, начисленного за предыдущий месяц, деленная на количество рабочих ДНЕЙ в том же месяце.

 А я получается рассчитываю все по часам.

 Добавил ресурс Количество дней, но он у меня при получении базы пустой, потом удалил его.

 Выкладываю свое решение 9, думаю спр решена неверно.
Вложения:
9_.dt
« Последнее редактирование: Сентябрь 03, 2013, 12:17:42 am от Олег »

Lada_k

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Лада
Актуальные билеты
« Ответ #33 : Сентябрь 03, 2013, 08:37:36 am »
Цитата (NigaStoleMyPlane)
И еще что значит "автоматически открываться форма каждой невыполненной"? Если их несколько их надо сразу все показать?
Думаю да, надо все невыполненные. Вот только мои попытки программно открыть форму задач при выполнении регламентного задания успехом так и не увенчались. У кого получится, выложите пожалуйста.
« Последнее редактирование: Сентябрь 03, 2013, 08:38:37 am от Лада »

nskripka

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Николай
Актуальные билеты
« Ответ #34 : Сентябрь 03, 2013, 10:03:10 am »
Lada_k,
 Открытие формы - ОткрытьФорму("Задача.Задача1.ФормаОбъекта", Новый Структура("Ключ", Эл));
 Эл - это элемент массива невыполненных задач - ссылка на задачу.
 NigaStoleMyPlane, посмотрите моё решение на первой странице этой темы. Возможно оно несколько перегружено. Для отслеживания статуса задачи - была показана (чтобы отслеживать новые задачи и не показывать уже показанные) - правильнее использовать регистр сведений, а не реквизит самой задачи.
 На сервере пользователям формируется задание - отчет о работе. Они его заполняют, нажимают ок, задание считается выполненным. "Автоматически показывать невыполненные задачи при их формировании" - понял, таким образом -как только на сервере сформировались новые задачи, то они показываются пользователю, если пользователь был не в сети, то невыполненные задачи показываются при входе.
 oleg2202, здесь выложен неполный текст задачи.
 Но если в решение присутствуют часы и дни, то самый простой способ - это добавить два ресурса регистра Графика - дни и часы. Другое решение, это добавить отдельное измерение, например, способ учета времени (часы или дни), отдельный реквизит заполнять при заполнении записей регистра расчета, связанный с измерением графика, но им пользоваться не всегда удобно. В задачи указано количество рабочих дней (не отработанных), так даже проще, значит нужно использовать данные графика за базовый период. (ДниБазовыйПериод в таблице ДанныеГрафика).
« Последнее редактирование: Сентябрь 03, 2013, 10:07:18 am от Николай »

Lada_k

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Лада
Актуальные билеты
« Ответ #35 : Сентябрь 03, 2013, 01:35:51 pm »
Цитата (nskripka)
Lada_k, Открытие формы - ОткрытьФорму("Задача.Задача1.ФормаОбъекта", Новый Структура("Ключ", Эл));
 Эл - это элемент массива невыполненных задач - ссылка на задачу.
nskripka, спасибо за ответ, а где это написать? Я так поняла что ОткрытьФорму() работает только на клиенте, как ни крутила, не нашла как запустить такое действие из общего модуля. Процедура или функция с указанным именем не определена (ОткрытьФорму). Подскажите блондинке...

nskripka

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Николай
Актуальные билеты
« Ответ #36 : Сентябрь 03, 2013, 05:32:07 pm »
Lada_k
 Видимо, Вы не совсем представляете себе формат взаимодействия. 
 Регламентное задание выполняется на сервере. Формы не доступны, так как показывать оно ничего не может. Оно выполняется без клиентов. Оно может только делать что-то с базой - добавлять, менять данные. Регламентное задание в нашем случае будет генерировать задания по расписанию. Регламентное задание выполняется, если даже никого нет в базе. Формы на сервере не используются и недоступны.
 Отображение и открытие форм будет на клиенте. Тут существует два варианта - либо проверять при начале работы системы и выводить формы задач - или как сделал я, подключил обработчик ожидания на клиенте, который с периодичность 5 секунд делает запрос к таблице задач, выводит формы, далее помечает задачи как "показанные", чтобы они не показывались снова (можно сделать по другому, отключить обработчик).

nskripka

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Николай
Актуальные билеты
« Ответ #37 : Сентябрь 03, 2013, 05:37:39 pm »
Предлагаю свои варианты решения задач. 
 Для всех билетов написал краткие заметки со структурой данных и алгоритмами.  Сейчас решаю наугад. 
 Спешил сильно, времени было мало, возможны недоработки.
 Билет 3, Билет 5, Билет 8
Вложения:
3_nskripka.dt
5_nskripka.dt
8_nskripka.dt

Lada_k

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Лада
Актуальные билеты
« Ответ #38 : Сентябрь 03, 2013, 05:52:09 pm »
nskripka, Ваше решение я посмотрела, красиво, но в задании сказано что во время создания задачи должны открываться все невыполненные, а не при начале работы системы. Получается что сделать как в задании вообще нельзя?

oleg2202

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Актуальные билеты
« Ответ #39 : Сентябрь 04, 2013, 12:18:50 am »
nskripka, Спасибо за совет

papagan

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Dmitri
Актуальные билеты
« Ответ #40 : Сентябрь 04, 2013, 10:00:19 am »
Цитата (nskripka)
Если исходить из того, что могут быть разные расчетные периоды в одном документе, то период регистрации будет в табличной части. Есть некоторые сложности с запросом. Оклад на начало месяца буду считать соединением с реальной таблицей, чтобы сразу получить оклад на разные периоды по списку сотрудников.


 А если процедуру  общего модуля , куда по умолчанию передаются параметры - ссылка документа, набор записей
 регистра и период регистрации  , вызывать в цикле  при переборе массива ? Элементами массива будут периоды регистраций из документа Начисление Зарплаты.
 Изменения в коде минимальные и сложностей никаких. Но можно ли такой подход формально считать -  "запросом в цикле", так как в общем модуле запросом получаются и оклады и базы  все остальное для конкретного периода регистрации?
« Последнее редактирование: Сентябрь 04, 2013, 05:51:15 pm от Dmitri »

grate

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Анатолий Шамов
Актуальные билеты
« Ответ #41 : Сентябрь 05, 2013, 07:53:26 am »
Цитата (papagan)
Но можно ли такой подход формально считать -  "запросом в цикле", так как в общем модуле запросом получаются и оклады и базы  все остальное для конкретного периода регистрации?
Имхо, проверяющий так и посчитает - зачем делать несколькими запросами то, что можно сделать одним?

NigaStoleMyPlane

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Anton
Актуальные билеты
« Ответ #42 : Сентябрь 05, 2013, 11:20:23 am »
Почему никто не делает задачи на УФ?
 Решил все билеты по 2 раза а с  формами как-то не получается. К тому же сформулированы некоторые "мягко говоря" мутно.
   Кто ни будь подскажите как делать УФ билета №3. а именно :
 "необходимо создать основную УФ элемента спр. "Контрагенты" в которой пользователь сможет увидеть все движения с участием этого контрагента по регистру бухгалтерии. Доступ к этой информации должен осуществляться из панели навигации." Если бы это надо было сделать с помощью команды формы тогда вопросов не было, а тут из панели навигации. Насколько я знаю команду нельзя поместить в панель навигации.

DenisRos

  • Новичок
  • *
  • Сообщений: 3
  • ФИО: Денис
Актуальные билеты
« Ответ #43 : Сентябрь 05, 2013, 12:50:55 pm »
Цитата (NigaStoleMyPlane)
Почему никто не делает задачи на УФ?
Тоже интересует этот вопрос, очень нужна задача 6 билета, в приложении выложил 6 билет. Так как делал всё в одной базе - в расходной для открытия формы выбора нужно выбирать НоменклатураУПР, всё открывается, цены видны, но когда выбор произошел цены не ставятся в накладную, и в процедуру СписокВыборЗначения не заходит

 По поводу билета №3 - имеется ввиду панель навигации элемента. Решение ещё раз выложу
Вложения:
03_denisros.dt
06_denisros.dt

NigaStoleMyPlane

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Anton
Актуальные билеты
« Ответ #44 : Сентябрь 05, 2013, 01:11:07 pm »
Цитата (DenisRos)
в расходной для открытия формы выбора нужно выбирать НоменклатураУПР, всё открывается, цены видны, но когда выбор произошел цены не ставятся в накладную, и в процедуру СписокВыборЗначения не заходит
 По моему там должен быть другой обработчик "ОбработкаВыбора".