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

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

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 1. Спец по платформе V8
« Ответ #15 : Сентябрь 16, 2015, 08:02:24 am »
alex1248,
спсибо

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 1. Спец по платформе V8
« Ответ #16 : Сентябрь 16, 2015, 08:13:03 am »
   // отметим активность проводок если док помечен
   Если Не ЭтоНовый() Тогда
      НабЗап = РегистрыБухгалтерии.Основной.СоздатьНаборЗаписей();
      НабЗап.Отбор.Регистратор.Установить(Ссылка);
      НабЗап.Прочитать();
      НабЗап.УстановитьАктивность(Не ПометкаУдаления);      
      НабЗап.Записать();
   КонецЕсли;


А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Зачем читаются старые движения регистра "НабЗап.Прочитать();" и потом записываются, они же затрутся по завершении процедуры "ПриЗаписи" и заместятся новыми движениями "Объект.Движения.Основной", взятыми с формы?



Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 1. Спец по платформе V8
« Ответ #17 : Сентябрь 17, 2015, 07:31:43 am »
А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Обратите внимание на УстановитьАктивность(). Этот фрагмент кода отключает активность проводок, если документ Помечен на удаление.

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 1. Спец по платформе V8
« Ответ #18 : Сентябрь 17, 2015, 01:32:04 pm »
А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Обратите внимание на УстановитьАктивность(). Этот фрагмент кода отключает активность проводок, если документ Помечен на удаление.

К этой строчке у меня вопросов нет.
Но зачем снова читать данные из регистра, они же есть на форме и так?

Quantum81

  • Проверенный
  • ***
  • Сообщений: 117
Re: Билет 1. Спец по платформе V8
« Ответ #19 : Сентябрь 17, 2015, 02:03:51 pm »
А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Обратите внимание на УстановитьАктивность(). Этот фрагмент кода отключает активность проводок, если документ Помечен на удаление.

К этой строчке у меня вопросов нет.
Но зачем снова читать данные из регистра, они же есть на форме и так?
Когда ставишь/снимаешь пометку удаления, никакой формы нет.

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 1. Спец по платформе V8
« Ответ #20 : Сентябрь 17, 2015, 02:25:38 pm »
А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Обратите внимание на УстановитьАктивность(). Этот фрагмент кода отключает активность проводок, если документ Помечен на удаление.

К этой строчке у меня вопросов нет.
Но зачем снова читать данные из регистра, они же есть на форме и так?
Когда ставишь/снимаешь пометку удаления, никакой формы нет.

Убедили!
Но код можно упростить:


    ДвиженияБух = Движения.РегистрБухгалтерии1; 
    Если не ДвиженияБух.Модифицированность() Тогда
        ДвиженияБух.Прочитать();
    КонецЕсли;
    ДвиженияБух.УстановитьАктивность(не ПометкаУдаления);
    ДвиженияБух.Записать();


Quantum81

  • Проверенный
  • ***
  • Сообщений: 117
Re: Билет 1. Спец по платформе V8
« Ответ #21 : Сентябрь 17, 2015, 06:47:29 pm »
пересмотрев несколько вариантов на форуме, решил залезть в БУХу и посмотреть.
Там примерно так:
Проводки=Движения.Проводки;
Если Проводки.Записывать=Ложь тогда
проводки.Прочитать();
КонецЕсли;
НоваяАктивность=Не ПометкаУдаления;
Для каждого строка из Проводки цикл
Если строка.Период<>Дата тогда
Проводки.Записывать=Истина;
строка.Период=Дата;
КонецЕсли;
Если строка.Активность<>НоваяАктивность тогда
Проводки.Записывать=Истина;
строка.Активность=НоваяАктивность;
КонецЕсли;
КонецЦикла;
Лишний раз не читает, лишний раз не обновляет.

Svetik_1704

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Светлана
Re: Билет 1. Спец по платформе V8
« Ответ #22 : Сентябрь 18, 2015, 01:01:46 pm »
Индексировать временные таблицы нужна всегда, причем по тем полям, которые используются при соединении таблиц, сортировке и тд. Еще временные таблицы не мешало бы и удалять. Но говорят платформа сама справляется с этим, поэтому никто этого не делает)).

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 1. Спец по платформе V8
« Ответ #23 : Сентябрь 18, 2015, 03:08:27 pm »
Индексировать временные таблицы нужна всегда, причем по тем полям, которые используются при соединении таблиц, сортировке и тд. Еще временные таблицы не мешало бы и удалять. Но говорят платформа сама справляется с этим, поэтому никто этого не делает)).

На экзамене снижают бал, если не проиндексирована ВТ?

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 1. Спец по платформе V8
« Ответ #24 : Сентябрь 21, 2015, 11:27:15 am »
На экзамене снижают бал, если не проиндексирована ВТ?

Вот здесь рекомендуют использовать индексы. Чисто показать что мы умеем ими пользоваться:

http://forum.chistov.pro/index.php?topic=2005.msg22307#msg22307

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 1. Спец по платформе V8
« Ответ #25 : Сентябрь 29, 2015, 05:28:45 pm »
Еще доработал обработку ПередЗаписью документа Операция.
Отключение активности записей поместил в условие. Теперь чтение и запись Набора выполняется только если происходит снятие/установка ПометкиУдаления для объекта.

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


alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 1. Спец по платформе V8
« Ответ #26 : Сентябрь 29, 2015, 06:34:37 pm »
доработал
Цитата: "пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов" и усё, больше никаких возможностей ему не требуется ...  :)
Я на экзамене сделал только запись Даты в шапке в Период каждой записи регистра.  По поводу остального сделал пометку доделать позже, но так и не добрался до этого, как оказалось, не напрасно. ИМХО, в цейтноте не стоит Операции уделять много внимания.

Jones

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

1)   ПР: получение Оклада на начало РасчетногоПериода (ПериодаДействия) записи
В условии задачи есть формулировка: «В одном документе могут быть данные за разные расчетные периоды». При этом «Первоначальное значение оклада может изменяться не чаще, чем один раз в день, но берется на начало расчетного периода».
Для решения,
- в запросе РасчетаНачислений получаю ПериодДействия каждой записи ОН
- Левым соединением получаю все записи физической таблицы регистра сведений СведенияОСотрудниках, у которых Период <= ПериодуДействия записи ОН
- Группирую, получаю Максимальный Период (т.е. последний на ПериодДействия записи)
- Еще раз левым соединением подцепляю записи физ.таблицы СведенияОСотрудниках, так получаю Оклад на ПериодДействия каждой записи
Проблема казалась серьезной, но решилась неожиданно легко.
Спасибо Quantum81 и alex1248 за то, что указали верное направление.

2)   ПР: получение Процента премии в зависимости от Стажа
Еще раз проработал решение и закрепил его для себя.
- в спр.ФизЛица добавляю реквизиты ДатаПриема и НачальныйСтаж
- добавляю рег свед ШкалаПроцентов (От, До, Процент)
- в запросе процедуры РасчетаНачислений получаю СтажВсего:
РазностьДат(ДатаПриема, БазовыйПериодНачало, Год) + НачальныйСтаж
- Левым соединением подцепляю Процент из Шкалы, используя два простых условия:
СтажВсего > От
СтажВсего <= До
Здесь важное дополнение: чтобы условия работали, в регистр надо занести последнюю запись со значением До=999 (т.е. не 0, а максимальное число)

3)   Про отчет сказано, что он должен быть построен только за определенный календарный месяц.
Как считаете, пойдет, если на форме отчета будет выбор стандартного периода (как у меня) или есть более красивые варианты?

pewit

  • Пользователь
  • **
  • Сообщений: 13
Re: Билет 1. Спец по платформе V8
« Ответ #28 : Октябрь 06, 2015, 02:31:58 pm »
Начинаю подготовку к сдаче экзамена. Посмотрите, кому не лень оперативный учет. Правильно ли хоть двигаюсь. Заранее спасибо большое!

margaritka47729

  • Пользователь
  • **
  • Сообщений: 43
Re: Билет 1. Спец по платформе V8
« Ответ #29 : Октябрь 09, 2015, 02:17:20 pm »
доработал
Цитата: "пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов" и усё, больше никаких возможностей ему не требуется ...  :)
Я на экзамене сделал только запись Даты в шапке в Период каждой записи регистра.  По поводу остального сделал пометку доделать позже, но так и не добрался до этого, как оказалось, не напрасно. ИМХО, в цейтноте не стоит Операции уделять много внимания.


подскажите, на счет задачи в БУ ....надо как то проверять правильность заполнения согласно этому условию задачи:

 На один и тот же товар с разными сроками годности при его поступлении может указываться разная цена. Например, на товар со сроком годности 10 января 2010 цена может быть ниже, чем на товар со сроком годности 30 января 2010. Товар с одинаковым сроком годности может поступать разными документами и по разной цене. Возможна ситуация когда в одном документе один и тот же товар поступает с разными сроками годности (и по разной цене). ?