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

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

Евгений

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 6. Спец по платформе V8
« Ответ #15 : Август 25, 2015, 12:55:46 pm »
Цитировать
А отпуск был, или еще какой-нибудь ВР, предполагающий расчет в зависимости от количества отработанных дней?
Отпуск был, но с поправкой на расчет средней ставки, см. выше. В остальном содержание задачи осталось прежним.
Больше ни каких ВР, предполагающий расчет в зависимости от количества отработанных дней, НЕ БЫЛО.

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

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 6. Спец по платформе V8
« Ответ #16 : Октябрь 14, 2015, 02:09:05 pm »
Задачу по ПР 06 билета нахожу неоднозначной, плюс не до конца расшифровал код формулировки задачи, поэтому не знаю, как точно должно выглядеть решение «правильное» с точки зрения экзаменаторов.

Посмотрел решение ПР 6 билета от S_A_E и оно мне понравилось.

S_A_E добавил в рег Графики ресурс ДниПятидневки, измерения График у него в рег.свед.нет, как и самого справочника Графики, думаю это правильно.

Переделал по методике S_A_E, теперь хорошо бы все это вспомнить, если задача попадется.

В задаче Оклад не зависит от фактически отработанного времени, поэтому его, по идее, надо помещять в ДН. Но для расчета Отпуска необходимо получать ОтработанныеДни за базовый период, поэтому Оклад сделал в ОН и ОтработанныеДни заполняю из ДнейФакт Оклада.

Как выше сообщал Евгений, здесь экзаменатор может придраться, поэтому надо быть готовым объяснить, зачем Оклад в ОН, а при дистанционной сдаче надо не забыть отметить это в пояснении.

С фразой «Один календарный месяц в году» решил ничего не городить т.к. это долго (воображение рисует всякие проверки на количество уже отгулянного в этом году отпуска).

В задании порадовало, что «В одном документе могут быть данные только за текущий расчетный период» и довольно простой отчет.

Поделюсь опытом, может кому пригодится.
При разработке допустил ошибку, которой на экзамене делать нельзя: не установил связь с графиком для измерения Автомобиль РР ОН, затем заполнил График в предприятии, создал док Начисление и понял, что ДниФакт в таблицу ДанныеГрафика попадают, но без отбора по Автомобилю (по всем Автомобилям). Тогда я установил связь с графиком для измерения Автомобиль и ДниФакт вообще перестали попадать в ДанныеГрафика.

Дальше, чтобы я ни делал, ДниФакт оставались не заполненными:
заново заполнял рег Графики, создавал новый документ, выгружал-загружал конфигурацию, загружал конфигурацию в новую БД, полностью выходил из базы, пересчитывал итоги – все бесполезно.
Зато стоило снова отключить связь с графиком, как ДанныеГрафика заполнялись, но проблема в том, что в ДниФакт попадали графики обоих Автомобилей, присутствующих в регистре Графики.

Минут через 5 для себя решил, что на экзамене бросил бы это, просто удалил бы одну машину из регистра и все, но сейчас надо было найти решение и в итоге мне это удалось.
Пришлось удалить измерения Автомобиль из РР ОН и из рег свед Графики, затем создать новые, применить, заполнить рег Графики, провести документ и.. Вуаля! Связь с графиком заработала корректно.

Итак: на борьбу с недокументированным глюком платформы потратил почти ПОЛЧАСА, что на экзамене недопустимо. Быстрое решение: удалить связку измерений (Автомобиль- Автомобиль) и создать ее заново.


Quantum81

  • Проверенный
  • ***
  • Сообщений: 117
Re: Билет 6. Спец по платформе V8
« Ответ #17 : Октябрь 14, 2015, 03:07:43 pm »
В задаче Оклад не зависит от фактически отработанного времени, поэтому его, по идее, надо помещять в ДН. Но для расчета Отпуска необходимо получать ОтработанныеДни за базовый период, поэтому Оклад сделал в ОН и ОтработанныеДни заполняю из ДнейФакт Оклада.
Это противоречит фразе из условия: "...осуществляется ежемесячно с использованием метода отклонений."  Напрашивается отклонение от фиксированной суммы.  А фраза "не зависит от отработанного времени" можно растолковать так, что один работал по такому то графику 150 часов а другой по другому графику 180 часов, но получат фиксированную сумму они одинаковую.
  В этом случае, правда, в ситуации со сменой машины в течение расчетного периода, как и с отпуском лучше не углубляться :)

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 6. Спец по платформе V8
« Ответ #18 : Октябрь 14, 2015, 04:52:32 pm »
S_A_E добавил в рег Графики ресурс ДниПятидневки, измерения График у него в рег.свед.нет, как и самого справочника Графики, думаю это правильно.
Еещ возможный вариант - я делал измерение (надо было реквизит) Автомобиль и реквизит График. Реквизит График составного типа СправочникСсылка.Автомобили + Перечисление.СтандартныеГрафики.Пятидневка. Гончаров спрашивал, зачем и Автомобиль и График, но моё указание на то, что в графике для отпуска вместо автомобиля записывается пятидневка его удовлетворило (это так же и к тому, что своеобразные решения принимаются, если они логичны и обосновываются).

В задаче Оклад не зависит от фактически отработанного времени, поэтому его, по идее, надо помещять в ДН. Но для расчета Отпуска необходимо получать ОтработанныеДни за базовый период, поэтому Оклад сделал в ОН и ОтработанныеДни заполняю из ДнейФакт Оклада.

Как выше сообщал Евгений, здесь экзаменатор может придраться, поэтому надо быть готовым объяснить, зачем Оклад в ОН, а при дистанционной сдаче надо не забыть отметить это в пояснении.
У меня никаких проблем с ОН не возникло.  :)

С фразой «Один календарный месяц в году» решил ничего не городить т.к. это долго (воображение рисует всякие проверки на количество уже отгулянного в этом году отпуска).
Я понял (и реализовал) эту фразу несколько иначе. Календарный месяц - это один месяц с 1-го по последнее число. Поэтому для отпуска НПД  я приводил к началу месяца, КПД - к концу месяца (было принято).

Поделюсь опытом, может кому пригодится.
При разработке допустил ошибку, которой на экзамене делать нельзя: не установил связь с графиком для измерения Автомобиль РР ОН...
Тут есть еще одна ошибка. Автомобиль должен быть реквизитом, аргумент - один водитель не может одновременно ездить на разных автомобилях (слова Гончарова).

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 6. Спец по платформе V8
« Ответ #19 : Октябрь 20, 2015, 08:16:43 am »
поясните:
если нужно "...Еще в этой задаче добавился один отчет "Перерасчет зарплаты"..."
тогда как быть с этим ... ОплатыПассажиров храню в оборотном регистре (не грех?) = так и делал...
Я догадываюсь что в отчет должны попадать данные которые нужно пересчитать. Если вводить оплаты отдельными документами и писать в РН отработанное время которое уже учитывать при проведении док.НЗ, тогда этот отчет всегда будет пустой.
либо же добавить Начисление ОплатыПассажиров писать туда сумму и уже док.НЗ брать базу. и только тогда появятся данные в отчете.

В решении Agamest-а вместо регистра "ОплатыПассажиров" в табличной части документа "НачислениеЗарплаты" используется реквизит "СуммаОплатПассажировЗаПрошлыйМесяц", куда пользователи вводят значение руками. Соответственно меняется эта сумма -> перепроводится весь документ "НачислениеЗарплаты" и перерасчеты отрабатывают корректно.

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 6. Спец по платформе V8
« Ответ #20 : Октябрь 20, 2015, 05:24:32 pm »
Цитировать
Фикс сумму сделал с "использовать период действия" за что получил негативный вопрос "ЗАЧЕМ"? Ясно же написано что "НЕ ЗАВИСИМО ОТ ОТРАБОТАННОГО ВРЕМЕНИ".
На самом деле формулировка задачи на экзамене немного изменена(я не заметил, делал как готовился), звучит так "Средняя дневная ставка определяется как сумма всех начислений за три предыдущих месяца /на кол-во РАБОЧИХ дней за пред. 3 месяца".
Не путать с отработанными днями. Короче дни теперь нужно собирать по-другому не по базе, а по графику, поэтому "использовать период действия" здесь не нужно.

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

Все сотрудники работают по графику работы, установленному для каждого автомобиля отдельно.

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 6. Спец по платформе V8
« Ответ #21 : Октябрь 21, 2015, 02:31:55 pm »
Покритикуйте, пожалуйста, мое решение.

1. Стеллажи сделаны на иерархии элементов.
2. Оклад и Надбавки не зависят от периода действия, в расчете отпуска берется количество РАБОЧИХ дней по базе, а не отработанных по виду расчета "оклад".
 

Zeskord

  • Пользователь
  • **
  • Сообщений: 77
  • ФИО: Андрей Назаров
Re: Билет 6. Спец по платформе V8
« Ответ #22 : Ноябрь 08, 2015, 04:12:10 pm »
ОУ.
Очень сомнительна правльность выбора хранения данных в виде иерархии элементов.
В обработке проведения РН выгрузка в таблицу значений без необходимости.
Если в результате проверки новых остатков ушли в минус, можно сразу завершать обработку проведения, не приступая к формированию движений БУ.
Для блокировки используется запись конкретного набора записей, а не Движения.Записать(). Может быть, в этом ничего страшного и нет.

БУ.
При установке управляемой блокировки одновременное использование источника данных и установить значение.
Перед установкой блокировки код Движения.РегистрБухгалтерии1.БлокироватьДляИзменения = ИСТИНА;
Движения.РегистрБухгалтерии1.Очистить();
Движения.РегистрБухгалтерии1.Записать();
выполнятся в любом случае, а не только при оперативном проведении.
Так же интересует обоснованность выбора порядка субконто на счете Товары: Номенклатура, Склады, Партии. Почему не Номенклатура, Партии, Склады?
В запросах по регистру бухгалтерии при левом соединении в параметрах виртуальной таблицы нет условия на номенклатуру.


« Последнее редактирование: Ноябрь 08, 2015, 04:27:30 pm от Zeskord »

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 6. Спец по платформе V8
« Ответ #23 : Ноябрь 08, 2015, 04:49:50 pm »
При установке управляемой блокировки одновременное использование источника данных и установить значение.
Если не ошибаюсь, вы уже где-то писали об этом и цитату из книжки приводили?
Так вот, даже в той цитате был еще такой текст: "для одного поля регистра". А здесь ситуация иная, так что всё норм.
Так же интересует обоснованность выбора порядка субконто на счете Товары: Номенклатура, Склады, Партии. Почему не Номенклатура, Партии, Склады?
Разве порядок субконто в плане счетов имеет значение?

Zeskord

  • Пользователь
  • **
  • Сообщений: 77
  • ФИО: Андрей Назаров
Re: Билет 6. Спец по платформе V8
« Ответ #24 : Ноябрь 08, 2015, 05:00:10 pm »
Так вот, даже в той цитате был еще такой текст: "для одного поля регистра"
Точно, спасибо, теперь разобрался. :)

Разве порядок субконто в плане счетов имеет значение?
Профессиональная разработка, том 1, стр 633. Принятие решений. Пример конкретно этого набора субконто: Номенклатура, партии, склады.

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 6. Спец по платформе V8
« Ответ #25 : Ноябрь 08, 2015, 05:12:56 pm »
Разве порядок субконто в плане счетов имеет значение?
Профессиональная разработка, том 1, стр 633. Принятие решений. Пример конкретно этого набора субконто: Номенклатура, партии, склады.
Ага, значит, имеет.
Но в этой задаче я всё же Склады поставил бы раньше партий - при списании проверка в первую очередь идет по ним, и отчет строится только по складам.

Zeskord

  • Пользователь
  • **
  • Сообщений: 77
  • ФИО: Андрей Назаров
Re: Билет 6. Спец по платформе V8
« Ответ #26 : Ноябрь 08, 2015, 05:13:50 pm »
Покритикуйте, пожалуйста, мое решение.
Меня еще смущает вот какой момент.
Смотрим внимательно запрос.
ВЫБРАТЬ
ЕСТЬNULL(СпрКомплектующие.Ссылка, РасходнаяНакладнаяСписокНоменклатуры.Номенклатура) КАК Номенклатура,
СУММА(ЕСТЬNULL(СпрКомплектующие.КоличествоВСтеллаже, 1) * РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество
ПОМЕСТИТЬ ДокТЧ
ИЗ
Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрКомплектующие
ПО РасходнаяНакладнаяСписокНоменклатуры.Номенклатура = СпрКомплектующие.Родитель
ГДЕ
РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
ЕСТЬNULL(СпрКомплектующие.Ссылка, РасходнаяНакладнаяСписокНоменклатуры.Номенклатура)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДокТЧ.Номенклатура КАК Номенклатура,
ДокТЧ.Количество КАК КоличествоВДокументе,
РегистрБухгалтерии1СуммаПартии.Субконто3 КАК Партия,
ЕСТЬNULL(РегистрБухгалтерии1Остатки.КоличествоОстатокДт, 0) КАК КоличествоОстатокДт,
ЕСТЬNULL(РегистрБухгалтерии1СуммаПартии.СуммаОстатокДт, 0) КАК СуммаОстатокПартии,
ЕСТЬNULL(РегистрБухгалтерии1СуммаПартии.КоличествоОстатокДт, 0) КАК КоличествоПартии
ИЗ
ДокТЧ КАК ДокТЧ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии1.Остатки(&МоментВремени, Счет = ЗНАЧЕНИЕ(ПланСЧетов.Управленческий.ТОвары), &МассивТиповСубконто, Субконто2 = &НашСклад) КАК РегистрБухгалтерии1Остатки
ПО ДокТЧ.Номенклатура = РегистрБухгалтерии1Остатки.Субконто1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии1.Остатки(&МоментВремени, Счет = ЗНАЧЕНИЕ(ПланСЧетов.Управленческий.ТОвары), , ) КАК РегистрБухгалтерии1СуммаПартии
ПО ДокТЧ.Номенклатура = РегистрБухгалтерии1СуммаПартии.Субконто1

УПОРЯДОЧИТЬ ПО
РегистрБухгалтерии1СуммаПартии.Субконто3.МоментВремени
.
.
.
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
ДвижениеБУ = Движения.РегистрБухгалтерии1.Добавить();
ДвижениеБУ.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
ДвижениеБУ.СчетКт = ПланыСчетов.Управленческий.Товары;
ДвижениеБУ.Период = Дата;
ДвижениеБУ.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаДетальныеЗаписи.Номенклатура;
ДвижениеБУ.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Склады] = Склад;
ДвижениеБУ.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Партия] = ВыборкаДетальныеЗаписи.Партия;
ДвижениеБУ.КоличествоКТ = МИН(ВыборкаДетальныеЗаписи.КоличествоПартии,ТекКоличество);
Если ВыборкаДетальныеЗаписи.КоличествоПартии = ДвижениеБУ.КоличествоКТ Тогда
ДвижениеБУ.Сумма = ВыборкаДетальныеЗаписи.СуммаОстатокПартии;
иначе
ДвижениеБУ.Сумма = ВыборкаДетальныеЗаписи.СуммаОстатокПартии * ДвижениеБУ.КоличествоКТ/ВыборкаДетальныеЗаписи.КоличествоПартии;
КонецЕсли;

ТекКоличество = ТекКоличество - ДвижениеБУ.КоличествоКТ;
Если ТекКоличество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Допустим, у нас есть несколько поступлений позиции номенклатуры на разные склады. При списании может случиться так, что товар будет списан со склада по партии, которая записывала на другой склад. Таким образом, при некотором наборе остатков, при списании не будет нормально закрываться количество по складу.

Zeskord

  • Пользователь
  • **
  • Сообщений: 77
  • ФИО: Андрей Назаров
Re: Билет 6. Спец по платформе V8
« Ответ #27 : Ноябрь 08, 2015, 06:10:34 pm »
alex1248,
в Вашем решении http://forum.chistov.pro/index.php?action=dlattach;topic=3670.0;attach=1122, похоже, возможны отрицательные остатки по сумме.

Zeskord

  • Пользователь
  • **
  • Сообщений: 77
  • ФИО: Андрей Назаров
Re: Билет 6. Спец по платформе V8
« Ответ #28 : Ноябрь 08, 2015, 06:16:56 pm »
После некоторых изысканий, пришел к выводу, что задачу БУ нужно решать следующим образом: делать партионное списание два раза. Первый раз таблицу документа соединяем с остатками по регистру бухгалтерии по всем субконто, фильтр по субконто-складу. Списываем по партиям только количество.
Потом делаем еще один запрос, таблицу документа соединяем с остатками без фильтра по складу, сгруппированными по Номенклатура, Партия. И снова делаем партионное списание, но в проводку пишем только сумму.
Пример прилагаю. Прошу жестоко критиковать.

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 6. Спец по платформе V8
« Ответ #29 : Ноябрь 08, 2015, 07:23:37 pm »
alex1248,
в Вашем решении http://forum.chistov.pro/index.php?action=dlattach;topic=3670.0;attach=1122, похоже, возможны отрицательные остатки по сумме.
Не увидел, каким образом это возможно, если сумма определяется с учетом суммы остатка по данной партии, а списываемое количество меньше или равно количества остатка по партии (Списать = МИН (ОстСписать, ВыбДетали.КоличествоОстПар); ).
Хотя, выложенный вариант я делал в самом начале подготовки, т.е. когда по сути знакомился с синтаксисом и очень поверхностно вникал в суть задач, в то время не были исключены довольно существенные ошибки. Но сверил с последним вариантом, вроде бы довольно схоже, в общем, не увидел проблемы.
На всякий случай, вот последний вариант (однако, и он в целом может быть не образцовым  :) ).