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

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

CyberGirl

  • Пользователь
  • **
  • Сообщений: 13
Re: Билет 1. Спец по платформе V8
« Ответ #435 : Март 29, 2017, 10:03:08 am »
Ребят, ну что за проблема с этим "данные за разные расчетные периоды". Уже множество раз писалось об этом. Период регистрации - это период, в котором делаются начисления. Не нужно его выносить в ТЧ. В ТЧ у нас уже есть ДатаНачала и ДатаОкончания - это будет Период Действия - период, за который выполняются начисления и вот он-то и может быть разными месяцами. Т.е. начисляем в марте зарплату за январь и февраль, например. Период регистрации - март, период действия - январь, февраль. Все, что нужно в связи с этим условием - обработать получение оклада на начало расчетного периода, т.к. если могут быть разные расчетные периоды, срез последних (для РС Сведения о сотрудниках, где хранится оклад) не подойдет; а также для премии указаать месяц начисления в ТЧ - от него будем считать ПериодДействияНачало и ПериодДействияКонец. 

CeHbKA

  • Пользователь
  • **
  • Сообщений: 88
Re: Билет 1. Спец по платформе V8
« Ответ #436 : Март 29, 2017, 12:12:59 pm »
Судя по сообщению от уже сдавшего ITshnik, то нужно в табличную часть Начисления добавить Реквизит "ПериодРегистрации".
Так делать точно не "нужно". Но, поскольку экзаменаторы принимают, можно.
проверьте, пожалуйста, свою почту


freemaestro

  • Пользователь
  • **
  • Сообщений: 79
  • ФИО: Сергей А.
Re: Билет 1. Спец по платформе V8
« Ответ #437 : Март 31, 2017, 10:26:34 am »
Ребят, ну что за проблема с этим "данные за разные расчетные периоды". Уже множество раз писалось об этом. Период регистрации - это период, в котором делаются начисления. Не нужно его выносить в ТЧ. В ТЧ у нас уже есть ДатаНачала и ДатаОкончания - это будет Период Действия - период, за который выполняются начисления и вот он-то и может быть разными месяцами. Т.е. начисляем в марте зарплату за январь и февраль, например. Период регистрации - март, период действия - январь, февраль. Все, что нужно в связи с этим условием - обработать получение оклада на начало расчетного периода, т.к. если могут быть разные расчетные периоды, срез последних (для РС Сведения о сотрудниках, где хранится оклад) не подойдет; а также для премии указаать месяц начисления в ТЧ - от него будем считать ПериодДействияНачало и ПериодДействияКонец. 

Доброго времени суток, CyberGirl !

  Хотел сделать ещё уточнение и дополнение по сказанному тобой.
Текст задачи:

  "Считать, что все данные вводятся только в
пределах одного месяца, например, можно указать начисление оклада с 10.01 по 31.01, а запись
оклад: с 10.01 по 03.02 вводить нельзя. В одном документе могут быть данные за разные
расчетные периоды."

  Т.е. у нас получается, что в пределах одной строки в ТЧ не могут быть данные за разные месяца, т.е строки не надо разбивать при записи в регистр. А вот в разных строках могут быть данные за разные месяцы.
  А период регистрации - ты правильно говоришь, не надо в ТЧ выносить. Он у нас один - это тот месяц, когда мы делаем (регистрируем) начисления. Его можно получить как начало месяца на дату документа.

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Re: Билет 1. Спец по платформе V8
« Ответ #438 : Март 31, 2017, 04:15:37 pm »
Добрый день,
Решил ОУ и БУ по первому билету.
Возник один вопрос. При формировании движений по БУ при продаже товара с разными сроками годности в 0. Могут оставаться копейки из-за округления. Я сделал проверку, но мне кажется не очень красиво получилось.
Прошу посмотреть мое решение.

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 1. Спец по платформе V8
« Ответ #439 : Март 31, 2017, 10:51:05 pm »
Добрый день,
Решил ОУ и БУ по первому билету.
Возник один вопрос. При формировании движений по БУ при продаже товара с разными сроками годности в 0. Могут оставаться копейки из-за округления.
Если делать правильно, копейки не останутся.
Если по документу в сумме по всем срокам годности списывается всё количество, надо сразу списывать всю сумму, примерно так:
СумСписать = ? (ВыбИт.КолДок = ВыбИт.КолОст, ВыбИт.СумОст,  КолОстСписать / ВыбИт.КолОст * ВыбИт.СумОст);

freemaestro

  • Пользователь
  • **
  • Сообщений: 79
  • ФИО: Сергей А.
Re: Билет 1. Спец по платформе V8
« Ответ #440 : Апрель 05, 2017, 10:49:35 pm »
Кто знает, что означает условие в СПР:

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

strizhhh

  • Пользователь
  • **
  • Сообщений: 14
Re: Билет 1. Спец по платформе V8
« Ответ #441 : Апрель 18, 2017, 01:59:43 pm »
Просьба посмотреть и прокомментировать моё решение билета (решены все задачи). В решениях я писал пояснения и комментарии. Постарался собрать описание всех основных нюансов, на которые обращают внимание экзаменаторы, со слов тех, кто уже сдавал и со слов некоторых преподавателей.

xXeNoNx

  • Пользователь
  • **
  • Сообщений: 67
Re: Билет 1. Спец по платформе V8
« Ответ #442 : Апрель 18, 2017, 02:38:30 pm »
Движения.Себестоимость.Записывать = Истина;
Движения.Себестоимость.Очистить();
Движения.Себестоимость.БлокироватьДляИзменения = Истина; // Отключаем разделитель итогов, блокировка набора записи осуществится непосредственно в момент записи.
Движения.Себестоимость.Записать();
Движения.Себестоимость.Записывать = Истина;

Что означает данная конструкция?

xXeNoNx

  • Пользователь
  • **
  • Сообщений: 67
Re: Билет 1. Спец по платформе V8
« Ответ #443 : Апрель 18, 2017, 02:43:56 pm »
Если имеется ввиду блокирование записей регистра по данному регистратору, что бы кто-нить не списал, пока мы будем пытаться перепроводить документ
Движения.Себестоимость.Очистить(); - нет смысла, если есть Движения.Себестоимость.Записать();
нет смысла  два раза устанавливать Движения.Себестоимость.Записывать = Истина; - т.к. Движения.Себестоимость.Записать() - не сбрасывает этот флаг.

strizhhh

  • Пользователь
  • **
  • Сообщений: 14
Re: Билет 1. Спец по платформе V8
« Ответ #444 : Апрель 18, 2017, 02:59:18 pm »
Если имеется ввиду блокирование записей регистра по данному регистратору, что бы кто-нить не списал, пока мы будем пытаться перепроводить документ
Движения.Себестоимость.Очистить(); - нет смысла, если есть Движения.Себестоимость.Записать();
нет смысла  два раза устанавливать Движения.Себестоимость.Записывать = Истина; - т.к. Движения.Себестоимость.Записать() - не сбрасывает этот флаг.

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

Движения.Себестоимость.Записывать = Истина; - согласен, это лишнее. Это хвосты из-за копипасты. Спасибо за замечание.

xXeNoNx

  • Пользователь
  • **
  • Сообщений: 67
Re: Билет 1. Спец по платформе V8
« Ответ #445 : Апрель 18, 2017, 03:02:18 pm »
.Очистить - лишнее, т.к.  .Записать, записывает пустой набор записей...
Достаточно:
Движения.Себестоимость.БлокироватьДляИзменения = Истина; // Отключаем разделитель итогов, блокировка набора записи осуществится непосредственно в момент записи.
Движения.Себестоимость.Записать();
Движения.Себестоимость.Записывать = Истина;

xXeNoNx

  • Пользователь
  • **
  • Сообщений: 67
Re: Билет 1. Спец по платформе V8
« Ответ #446 : Апрель 18, 2017, 03:05:03 pm »
Не всегда расположение измерений в регистре накопления будут: номенклатура, склад(в данном случае). Нужно в первую очередь смотреть соединения, потом отчеты, если есть отбор по измерению(в отчете), например, склад, то склад должен быть первым из измерений, с учетом того что по номенклатуре нет соединений. 

strizhhh

  • Пользователь
  • **
  • Сообщений: 14
Re: Билет 1. Спец по платформе V8
« Ответ #447 : Апрель 18, 2017, 03:06:56 pm »
.Очистить - лишнее, т.к.  .Записать, записывает пустой набор записей...
Достаточно:
Движения.Себестоимость.БлокироватьДляИзменения = Истина; // Отключаем разделитель итогов, блокировка набора записи осуществится непосредственно в момент записи.
Движения.Себестоимость.Записать();
Движения.Себестоимость.Записывать = Истина;

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

xXeNoNx

  • Пользователь
  • **
  • Сообщений: 67
Re: Билет 1. Спец по платформе V8
« Ответ #448 : Апрель 18, 2017, 03:10:47 pm »
На экзамене упоминание обычных форм происходит в контексте тех обработок, которые включены в каркасную, не более. Т.е. знать как их подключить в УФ.

strizhhh

  • Пользователь
  • **
  • Сообщений: 14
Re: Билет 1. Спец по платформе V8
« Ответ #449 : Апрель 18, 2017, 03:13:16 pm »
Не всегда расположение измерений в регистре накопления будут: номенклатура, склад(в данном случае). Нужно в первую очередь смотреть соединения, потом отчеты, если есть отбор по измерению(в отчете), например, склад, то склад должен быть первым из измерений, с учетом того что по номенклатуре нет соединений.

"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура.Представление КАК Номенклатура, // Необходимо помнить, что разыменовывание при обходе результата запроса делает еще запросы.
| -ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток // Инвертируем знак сугубо для отображения в сообщениях.
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ
| ВТ_Документ.Номенклатура
| ИЗ
| ВТ_Документ КАК ВТ_Документ)
| И Склад = &Склад) КАК ОстаткиНоменклатурыОстатки  // Это эффективнее, чем (Номенклатура, Склад) В (..., ...), так как нет цикла в цикле на уровне СУБД.
|ГДЕ
| ОстаткиНоменклатурыОстатки.КоличествоОстаток < 0";

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