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

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

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Билет 3. Спец по платформе V8
« : Август 04, 2015, 02:15:22 pm »
ОУ: Партионный учет Фифо, ПоСредней. Документ УчетнаяПолитика
Этот раздел занял у меня больше всего времени. Вроде все просто, но накодить надо очень много + затем все это отладить. В результате: один регистра партий и три двигающих его документа: ПН, РН, УчетнаяПолитика

БУ: задача 2.06 Валютный учет. Корректировка курсовых разниц
Здесь кода тоже хватает. Мало того, что есть РН и ПриходДенег, так еще присутствует док Корректировка.

Док РН создает задолженность Покупателей (дтПокупат-ктПрибыли)
Док ПриходДенег (Контр, Сумма руб) списывает задолженность Покупателей, начиная с Договора с самой большой задолженностью.
Док Корректировка получает ДтОстатки ВалСуммы по Контрагентам+Договорам на тек момент, умножает на текущий Курс (получается НоваяСуммаРублевая) и сравнивает ее с ДтОст Суммы (рублевой)
Разницу записывает на счПокупатели, корректирует Сумму руб.
 
Структура решения БУ:
Признак учета Валютный
Ресурсы Сумма и ВалСумма(Валютный, Небалансовый)
На счете Покупатели два субконто: Контрагент и Договор
Валюта – реквизит Договора

Расчеты: Здесь все просто: Оклад, Командировка, все в ОН. Оклад получаем на начало периода.
Структура решения Расчты:
РР ОН: период действия, по базе зависит от себя же, ресурс ОтработаноЧасов. Подразделение и График связаны с регистром сведений Графики.
ПВР ОН: Оклад (вытесняется Командировкой), Командировка (база Командировка и Оклад)

УФ:
Задача 5.03 спр Контр форма с движениями по РегБух
Задача 5.10 переход по нав.ссылке из комментария документа
Задача 5.14 сообщение о нехватке Количества в РН
В УФ фактически три задачи из сборника.

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

Всем кто это читает я буду благодарен, если найдете у меня ошибки и ткнете в них пальцем.

GROOVY

  • Администратор
  • Старожил
  • *****
  • Сообщений: 284
  • ФИО: Павел Чистов
Re: Билет 3. Спец по платформе V8
« Ответ #1 : Август 04, 2015, 02:45:04 pm »
Билет в приложении, текст восстановлен по памяти нескольких сдающих.

[вложение удалено администратором]


Евгений

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 3. Спец по платформе V8
« Ответ #2 : Август 04, 2015, 10:33:34 pm »
Jones, у меня возник вопрос по блоку Расчеты. В билете есть такое условие "В одном документе могу быть данные за разные расчетные периоды". У вас в решении я не обнаружил его выполнение.

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 3. Спец по платформе V8
« Ответ #3 : Август 06, 2015, 09:46:25 am »
В билете есть такое условие "В одном документе могу быть данные за разные расчетные периоды". У вас в решении я не обнаружил его выполнение.

А как именно Вы его себе представляете? К сожалению, единого мнения о том, как оно должно выглядеть, не существует.
Но вот несколько ссылок Вам в помощь:

это значит, что в строке табличной части период действия может быть не за весь месяц, а к примеру с 01.10 по 15.10.
http://forum.chistov.pro/index.php?topic=993.msg31513#msg31513
значит, что оклад может быть за июнь, за январь и командировка за декабрь
http://forum.chistov.pro/index.php?topic=993.msg32335#msg32335
http://forum.chistov.pro/index.php?topic=993.msg40137#msg40137

Да и вот еще ))
На фразу в билете "В одном документе могу быть данные за разные расчетныепериоды" покосился и забыл
http://forum.chistov.pro/index.php?topic=993.msg30563#msg30563


tatyana_fiesta

  • Пользователь
  • **
  • Сообщений: 39
Re: Билет 3. Спец по платформе V8
« Ответ #4 : Август 06, 2015, 10:04:38 am »
В билете есть такое условие "В одном документе могу быть данные за разные расчетные периоды". У вас в решении я не обнаружил его выполнение.

А как именно Вы его себе представляете? К сожалению, единого мнения о том, как оно должно выглядеть, не существует.
Но вот несколько ссылок Вам в помощь:

это значит, что в строке табличной части период действия может быть не за весь месяц, а к примеру с 01.10 по 15.10.
http://forum.chistov.pro/index.php?topic=993.msg31513#msg31513
значит, что оклад может быть за июнь, за январь и командировка за декабрь
http://forum.chistov.pro/index.php?topic=993.msg32335#msg32335
http://forum.chistov.pro/index.php?topic=993.msg40137#msg40137

Да и вот еще ))
На фразу в билете "В одном документе могу быть данные за разные расчетныепериоды" покосился и забыл
http://forum.chistov.pro/index.php?topic=993.msg30563#msg30563

Мда  :'(
Вот и я на экзамене запарилась на экзамене с этим условием, т.к. было ещё условие как во втором билете "неоднократное изменение оклада" я не смогла правильно решить эту задачу
Я "ПериодРегистрации" оставила в шапке, а в ТЧ делала расчет по разным "ПериодамДействия" (как в принципе и происходит в типовой ЗУП) - судя по результату экзамена, это не было ОШИБКОЙ
но была у меня ОШИБКА: использование запроса в цикле
я крутила - вертела запрос, но никак не смогла найти Оклады без цикла (написала об этом в объяснительной к базе, но не помогло)

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 3. Спец по платформе V8
« Ответ #5 : Август 06, 2015, 10:18:58 am »
Я "ПериодРегистрации" оставила в шапке, а в ТЧ делала расчет по разным "ПериодамДействия" (как в принципе и происходит в типовой ЗУП) - судя по результату экзамена, это не было ОШИБКОЙ
ЗУП даю  :D, что вы сделали верно.
Период регистрации - это, фактически, дата проводки, крутить-вертеть ею не позволяет законодательство о бухгалтерском учете. Поэтому работаем с периодом действия.
но была у меня ОШИБКА: использование запроса в цикле
я крутила - вертела запрос, но никак не смогла найти Оклады без цикла (написала об этом в объяснительной к базе, но не помогло)
А мой вариант чем вас не устраивает?
http://forum.chistov.pro/index.php?topic=1108.msg40491#msg40491
Довольно просто (я уже на автомате делаю, особенно, если "берется на начало периода"). Один недостаток - используется реальная таблица регистра, но вот это, думаю, в данном случае как раз может пройти, так как в перечне ошибок указано, что считается ошибкой только, если в этом не было необходимости.
Я для себя этот вопрос уже закрыл.
« Последнее редактирование: Август 06, 2015, 10:24:15 am от alex1248 »

tatyana_fiesta

  • Пользователь
  • **
  • Сообщений: 39
Re: Билет 3. Спец по платформе V8
« Ответ #6 : Август 06, 2015, 10:22:52 am »
А мой вариант чем вас не устраивает?
http://forum.chistov.pro/index.php?topic=1108.msg40491#msg40491
Довольно просто (я уже на автомате делаю, особенно, если "берется на начало периода"). Один недостаток - используется реальная таблица регистра, но вот это, думаю, в данном случае как раз может пройти, так как в перечне ошибок указано, что считается ошибкой только, если в этом не было необходимости.
Я для себя этот вопрос уже закрыл.
Да, очень даже устаривает  ;D

seravkin

  • Пользователь
  • **
  • Сообщений: 22
  • ФИО: Серавкин Константин
Re: Билет 3. Спец по платформе V8
« Ответ #7 : Август 11, 2015, 12:53:07 am »
Я "ПериодРегистрации" оставила в шапке, а в ТЧ делала расчет по разным "ПериодамДействия" (как в принципе и происходит в типовой ЗУП) - судя по результату экзамена, это не было ОШИБКОЙ
ЗУП даю  :D, что вы сделали верно.
Мне на экзамене сказали, что это неверно, нужно было типа подойти и уточнить у препода: "для того он там и сидит". В моём случае требовалось период регистрации делать в ТЧ (как бы нелепо это не звучало). Сдается мне, что данное условие произвольным образом трактуется/требуется разными экзаменаторами

Евгений

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 3. Спец по платформе V8
« Ответ #8 : Август 11, 2015, 11:25:30 am »
Я тоже уже был на экзамене, не сдал. В СПР попалась задача с таким условием. У экзаменатора все уточнил по условию, он подтвердил что ПериодРегитрации нужно в ТЧ выносить. Я сделал как он хотел, в документе "Начисление зарплаты" размер оклада определялся исходя из ПериодаРегистрации в ТЧ. По этому вопросу не было.
Ошибка была в том, что в модуле расчета начисления еще нужна обработка записей регистра – в разрезе периодов регистрации. Что это значит и зачем она нужна я так и не понял.
Сколько здесь не смотрел готовые решения, я ни у кого не видел чтобы кто то это делал.
Так что готовтесь, если будет мой экзаменатор, у вас будут вопросы по этой задаче.

seravkin

  • Пользователь
  • **
  • Сообщений: 22
  • ФИО: Серавкин Константин
Re: Билет 3. Спец по платформе V8
« Ответ #9 : Август 11, 2015, 08:58:22 pm »
Ошибка была в том, что в модуле расчета начисления еще нужна обработка записей регистра – в разрезе периодов регистрации. Что это значит и зачем она нужна я так и не понял.

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

Евгений

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 3. Спец по платформе V8
« Ответ #10 : Август 11, 2015, 09:47:33 pm »
У меня получилась такая вот процедура расчет для условия "ПериодРегистрации" должен быть в ТЧ.
Что скажете, это имелось ввиду?

//Процедура из общего модуля для расчета начисления "Оклад"
Процедура Расчет (Регистратор)  Экспорт

Набор = РегистрыРасчета.ОсновныеНачисления.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Регистратор);
Набор.Прочитать();

//сделаем запрос на все периоды регистрации в документе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| НачислениеЗарплатыОсновныеНачисления.ПериодРегистрации
|ИЗ
| Документ.НачислениеЗарплаты.ОсновныеНачисления КАК НачислениеЗарплатыОсновныеНачисления
|ГДЕ
| НачислениеЗарплатыОсновныеНачисления.Ссылка = &Регистратор";

Запрос.УстановитьПараметр("Регистратор", Регистратор);

ТзПериодыРегистрации = Запрос.Выполнить().Выгрузить();

//последовательно обойдем эти периоды и выполним расчет оклада
Для каждого СтрТЗ Из ТзПериодыРегистрации  Цикл

Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеНачисленияДанныеГрафика.НомерСтроки,
| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЗначениеПериодДействия, 0) КАК План,
| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЗначениеФактическийПериодДействия, 0) КАК Факт
|ИЗ
| РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
| Регистратор = &Регистратор
| И ПериодРегистрации = &ПериодРегистрации) КАК ОсновныеНачисленияДанныеГрафика";


Запрос.УстановитьПараметр("ПериодРегистрации", СтрТЗ.ПериодРегистрации);
РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

СтруктураПоиска = Новый Структура("НомерСтроки");
Для каждого Запись  Из Набор Цикл
Если Запись.ВидРасчета <> ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
Продолжить;
КонецЕсли;

СтруктураПоиска.НомерСтроки = Запись.НомерСтроки;
Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
Если Выборка.План = 0 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не заполнен график в текущем периоде!";
Сообщение.Сообщить();

Запись.Сумма = 0;
Запись.ОтработаноЧасов = 0;

Иначе
Если Запись.Сторно Тогда
Сторно = -1;
Иначе
Сторно = 1;
КонецЕсли;

Запись.Сумма = Сторно * Запись.Размер / Выборка.План *  Выборка.Факт;
Запись.ОтработаноЧасов = Выборка.Факт;
КонецЕсли;
КонецЕсли;

Выборка.Сбросить();
КонецЦикла;

Набор.Записать(,Истина);

КонецЦикла;

КонецПроцедуры


Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 3. Спец по платформе V8
« Ответ #11 : Август 11, 2015, 10:05:47 pm »
У меня получилась такая вот процедура расчет для условия "ПериодРегистрации" должен быть в ТЧ.
Что скажете, это имелось ввиду?

Надо подумать, как можно оптимизировать это. Крайне желательно, от запроса в цикле избавиться.
Похоже, раньше на это внимания не обращали, а теперь частенько придираются к формулировке с разными расчетными периодами.

Евгений

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 3. Спец по платформе V8
« Ответ #12 : Август 11, 2015, 10:23:41 pm »
На защите своего решения, я задавал такой вопрос мол как же сделать эту обработку, без цикла же не обойтись. На что был ответ, что это та ситуация, в которой можно воспользоваться циклом.

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 3. Спец по платформе V8
« Ответ #13 : Август 11, 2015, 10:37:03 pm »
На защите своего решения, я задавал такой вопрос мол как же сделать эту обработку, без цикла же не обойтись. На что был ответ, что это та ситуация, в которой можно воспользоваться циклом.

Так! Ситуация проясняется, осталось все это успешно применить на экзамене.
Однако у меня вопрос: перебирать надо просто ПериодыРегистрации каждой строки или только разные ПериодыРегистрации?
И надо ли их приводить к НачалуМесяца?

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

Евгений

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 3. Спец по платформе V8
« Ответ #14 : Август 11, 2015, 10:49:48 pm »

Однако у меня вопрос: перебирать надо просто ПериодыРегистрации каждой строки или только разные ПериодыРегистрации?
И надо ли их приводить к НачалуМесяца?

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