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

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

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 10. Спец по платформе V8
« Ответ #75 : Декабрь 02, 2016, 05:33:01 am »
Если документ не относится к тем которые недолжны проводиться оперативно и в условии не сказано явно что недолжен  проводиться оперативно, то это не ошибка.
Да, ошибка не в самом факте оперативного проведения документа, а в получении остатков на момент времени, отличный от момента проведения. Как же док РН не относится к этой ситуации? И похоже, что именно недопустимая ситуация и формируется в том коде, который вы считаете верным.
Никакого явного указания не надо, вот цитата из перечня ошибок:
Цитировать
Если при проведении документа используются каким-то образом данные, считываемые из регистров, обязательно требуется предусмотреть получение таких данных на момент проведения документа
Цена ошибки - 1 балл.
Это в коде:
?(Режим=РежимПроведенияДокумента.Оперативный,Неопределено,МоментВремени())считаете недопустимая ситуация? Пожалуйста, объясните.

Думаю, да, если режим оперативный тогда передастся Неопределено, и будут получены остатки на конец времен 1С (конец ноября 3999 года если не ошибаюсь), и всегда по-моему проинициализированы Дата и Ссылка документа в ОбработкаПроведения, т.е. если написать так:
Запрос.УстановитьПараметр("Дата",МоментВремени());при передаче этого параметра Дата в виртуальную таблицу остатков регистра накопления будет правильней.

А вот экзаменаторы как считают?
« Последнее редактирование: Декабрь 02, 2016, 05:34:45 am от erdem.badluev »

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 10. Спец по платформе V8
« Ответ #76 : Декабрь 02, 2016, 07:13:33 am »
в обработкепроведения РасходнойНакладной когда затираете старые движения не нужно предварительно очищать коллекцию движений, ведь она итак пустая (строка 4):
Движения.ОстаткиНоменклатуры.Очистить();
http://expert.chistov.pro/public/291885/

http://forum.chistov.pro/index.php?topic=1656.0
http://1c.chistov.pro/2013/07/blog-post_25.html

движения нужно очищать методом Очистить() если установлена галка "Использовать всегда" у коллекции движений в форме документа или работает в обычном режиме. Но на экзамене конфигурация работает в управляемом режиме и устанавливать галку "Использовать всегда" нет нужды, поэтому не нужно, думаю, нагружать систему лишний раз.


verbatium80

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 10. Спец по платформе V8
« Ответ #77 : Декабрь 04, 2016, 01:31:30 pm »
в обработкепроведения РасходнойНакладной когда затираете старые движения не нужно предварительно очищать коллекцию движений, ведь она итак пустая (строка 4):
Движения.ОстаткиНоменклатуры.Очистить();
http://expert.chistov.pro/public/291885/

http://forum.chistov.pro/index.php?topic=1656.0
http://1c.chistov.pro/2013/07/blog-post_25.html

движения нужно очищать методом Очистить() если установлена галка "Использовать всегда" у коллекции движений в форме документа или работает в обычном режиме. Но на экзамене конфигурация работает в управляемом режиме и устанавливать галку "Использовать всегда" нет нужды, поэтому не нужно, думаю, нагружать систему лишний раз.
Этот вялотекущий вопрос с Движения.ОстаткиНоменклатуры.Очистить()  получился из того что, в  обычных формах при отсутствии данной строки при каждом повторном нажатии кнопки провести, движения в  регистре будут дублироваться. При использовании управляемых форм, такого эффекта не будет. На экзамене все делается на управляемых формах и формально эта запись не нужна.

verbatium80

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 10. Спец по платформе V8
« Ответ #78 : Декабрь 04, 2016, 02:24:51 pm »
Это в коде:
?(Режим=РежимПроведенияДокумента.Оперативный,Неопределено,МоментВремени())считаете недопустимая ситуация? Пожалуйста, объясните.

Думаю, да, если режим оперативный тогда передастся Неопределено, и будут получены остатки на конец времен 1С (конец ноября 3999 года если не ошибаюсь), и всегда по-моему проинициализированы Дата и Ссылка документа в ОбработкаПроведения, т.е. если написать так:
Запрос.УстановитьПараметр("Дата",МоментВремени());при передаче этого параметра Дата в виртуальную таблицу остатков регистра накопления будет правильней.

А вот экзаменаторы как считают?

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

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 10. Спец по платформе V8
« Ответ #79 : Декабрь 04, 2016, 05:43:40 pm »
Это в коде:
?(Режим=РежимПроведенияДокумента.Оперативный,Неопределено,МоментВремени())считаете недопустимая ситуация? Пожалуйста, объясните.

А вот экзаменаторы как считают?
Я, как правило, ИМХО не пишу.
Процитировал же, почему остатки надо получать только на момент проведения дока, никаких Неопределено. И экзаменаторы относятся так же, тут есть отзывы сдавших, искать не буду, лень.  :)

Aluvika

  • Пользователь
  • **
  • Сообщений: 27
Re: Билет 10. Спец по платформе V8
« Ответ #80 : Декабрь 04, 2016, 06:29:49 pm »
Я писал для старой методики согласно советам на форуме.
МВ = МоментВремени()т.е. никаких проверок на оперативность - претензий не было

Expert1c

  • Новичок
  • *
  • Сообщений: 8
  • ФИО: Expert
Re: Билет 10. Спец по платформе V8
« Ответ #81 : Декабрь 10, 2016, 05:49:46 pm »
Обязательно ли для ВР Компенсация на закладке "Ведущие" ставить флажок для ВР Оклад, ведь перерасчеты в задаче не используются?

GloryToGod

  • Пользователь
  • **
  • Сообщений: 15
Re: Билет 10. Спец по платформе V8
« Ответ #82 : Декабрь 22, 2016, 05:01:09 am »
Мое решение ОУ+БУ

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Билет 10. Спец по платформе V8
« Ответ #83 : Январь 30, 2017, 11:09:33 am »
Новый вариант решения.
С доп условием: Документ "Выплата зарплаты" с автозаполнением по результатам начисления.
Буду рад критике.
 :)

CeHbKA

  • Пользователь
  • **
  • Сообщений: 88
Re: Билет 10. Спец по платформе V8
« Ответ #84 : Февраль 09, 2017, 02:20:24 pm »
Решил задачу по СПР.

Из особенностей задачи - только невыход, который вытесняет основной тариф, сторно и компенсация за обеды. В принципе халява.
В начале темы рассуждения на тему, что базовые период в компенсации должен быть из расчетного периода (т.е. из периода регистрации), а не из указанного в т.ч. Я с этим не согласен.
В задаче сказано:
Цитировать
Компенсация за один обед рассчитывается как 5% от суммы начисления по тарифу в текущем расчетном периоде, деленная на количество рабочих дней в том же периоде.
Т.е. у нас есть некий период, за который начисляется компенсация и из него берутся суммы и рабочие дни.
Цитировать
Считать, что все данные вводятся только в пределах одного месяца, например, можно указать начисление по тарифу с 10.01 но 31.01, а запись: тариф с 10.01 по 03.02 вводить нельзя. В одном документе могут быть данные только за текущий расчетный период.
Это значит, что период регистрации в документе должен совпадать с периодами действия у записей. Только про невыход сказано, что он может вводиться задним числом, т.е. это исключительная ситуация, не более.

Поэтому, период действия есть только у Тарифа и Невыхода, а компенсация - это доп.начисление.

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Re: Билет 10. Спец по платформе V8
« Ответ #85 : Апрель 18, 2017, 09:07:09 pm »
Помогите разобраться с условием задачи ОУ
Цитировать
Комментарий сдающих: Документом комплектация пользователь делает движения в любой регистр накопления и правильность записей контролирует сам.
Насколько я понял это условие говорит о том что надо делать аналог бух. операции. Если же этого дополнения в задаче не будет, тогда делаем обычный документ комплектация, который списывает комплектующие и приходует комплект(блюдо).
Цитировать
Со временем (не чаще, чем 1 раз в день) состав набора может изменяться. При продаже должен приниматься тот состав набора, который был актуальным на момент продажи.
Не пойму как реализовать данное условие? Думал создать РС с реквизитами Набор и номенклатура и ресурсом количество. Но как контролировать "не чаще, чем 1 раз в день"?
« Последнее редактирование: Апрель 18, 2017, 09:09:15 pm от YFred »

White

  • Пользователь
  • **
  • Сообщений: 15
  • ФИО: Алексей
Re: Билет 10. Спец по платформе V8
« Ответ #86 : Апрель 22, 2017, 11:39:01 pm »
Буду рад критике моего решения опер части билета
« Последнее редактирование: Апрель 23, 2017, 12:01:04 am от White »

TUBORG14

  • Пользователь
  • **
  • Сообщений: 23
  • ФИО: КДБ
Re: Билет 10. Спец по платформе V8
« Ответ #87 : Июнь 10, 2017, 10:14:18 am »
Сдал спеца 09.06.17. Хочу поделиться своими решениями билетов. Спасибо всем участникам за обсуждение и выкладываемые решения. Это серьезная помощь в подготовке к экзамену.

MariaVG

  • Проверенный
  • ***
  • Сообщений: 113
Re: Билет 10. Спец по платформе V8
« Ответ #88 : Июнь 16, 2017, 11:37:14 am »
СПР. Я получаю базу по плановым рабочим дням без использования ресурса РабочиеДни, а непосредственно из ДанныхГрафика, но не по Компенсации, а по Окладу и без отбора по регистратору. Соединение таблиц данных базы и данных графика по периоду регистрации, Сотруднику, Подразделению, получаю максимум плановых дней.

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

Не является ли мое решение усложнением задачи и вообще правильное ли оно?

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

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

Таким образом, получается, что единственно точный вариант вычета компенсации за обеды с учетом сторнирования - это использование периода действия для начисления Компенсация и вытеснение Компенсации Невыходом, аналогично Окладу.  Этот вариант работает, но остается вопрос, насколько он верен с методологической точки зрения. Мой первый вариант решения был сделан именно таким образом. Потом я его пересмотрела после чтения форума (решила тоже делать Компенсацию без периода действия, чтобы не росла таблица Фактического периода действия) - прилагаемый файл уже с учетом этого пересмотра. Однако оказалось, что при таком варианте есть проблемы с учетом сторнирования при расчете Компенсации, описанные выше.




« Последнее редактирование: Июнь 16, 2017, 12:25:06 pm от MariaVG »

MariaVG

  • Проверенный
  • ***
  • Сообщений: 113
Re: Билет 10. Спец по платформе V8
« Ответ #89 : Июнь 18, 2017, 02:40:00 pm »
Не могу нигде найти ответ на вопрос, как автоматически исправить начисление Б, зависимое по базе от начисления А по периоду действия, при сторнировании начисления А в более позднем периоде.  Допустим, Б составляет 10% от А. В январе А=1000, Б=100.   В феврале ввели сторно запись для А, равную -100. Соответственно, новое значение Б за январь должно быть (1000-100)*10% =90. Но при проведении документа за январь начисление Б не берет в свою базу сторно записи, сделанные в более позднем периоде. Если же установить зависимость Б от А не по периоду действия, а по периоду регистрации, то может возникнуть такая ситуация. В феврале А=1000, а процент премии с февраля поменялся и стал 20%. Б=200. После добавления в базу для февраля сторно записи А за январь получаем Б=(1000 - 100)*20% = 900*20% = 180.  Видим, что уменьшение Б за счет сторнирования данных А составило 20. Хотя должно было составить 10, т.к. в январе ошибка расчета была именно на эту сумму, а не на 20.  Как выходить из таких ситуаций, абсолютно не понятно. При зависимости по периоду регистрации мы не можем гарантировать уменьшение зависимого начисления адекватно сторнированию прошлого периода. В общем случае начисления А за февраль вообще может не быть или он может быть меньше, чем в январе, что может привести к отрицательной базе текущего периода после сторнирования А за предыдущий.