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

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

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 5. Спец по платформе V8
« Ответ #15 : Август 14, 2015, 03:14:36 pm »
В этом билете нужен объект "последовательность документов"?

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 5. Спец по платформе V8
« Ответ #16 : Август 15, 2015, 09:16:33 am »
 Jones,
а зачем в вашем решении субконто подразделение на счёте Покупатели?


Евгений

  • Пользователь
  • **
  • Сообщений: 22
Re: Билет 5. Спец по платформе V8
« Ответ #17 : Август 15, 2015, 12:32:07 pm »
В задаче по СПР потребуется сумма продаж по подразделению из бух. регистра.

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 5. Спец по платформе V8
« Ответ #18 : Август 15, 2015, 01:03:16 pm »
В задаче по СПР потребуется сумма продаж по подразделению из бух. регистра.


ага, увидел. Дошёл сейчас только до расчетной части.

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 5. Спец по платформе V8
« Ответ #19 : Август 16, 2015, 10:14:28 pm »
1)   Как вам моя процедура ПриЗаписи() в модуле Операции?
На мой взгляд это простая и понятная, а главное верная последовательность:
1-в движениях устанавливаем Период из Даты документа
2-если док записан, то у помеченного документа отключаем активность
1. При попытке записи сразу выскакивает ошибка - Поле объекта не обнаружено (Период),
2. Если при пометке удаления активность будет снята, предусмотрен способ восстановления активности в случае снятия пометки удаления (в зависимости от желания пользователя)?

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 5. Спец по платформе V8
« Ответ #20 : Август 19, 2015, 10:36:30 pm »
2)   Прошу оценить мою блокировку в ОперУчете док РН
В своем решении я блокирую регистр Дебеторка по Проекту документа и пустому проекту.
Для этого поместил эти два проекта в ТЗ и подсовываю ее как источник данных.
Проверил на серверной базе, оба проекта блокируются, то есть пока идет транзакция, прочитать данные по ним невозможно,
однако, у меня такое чувство, будто это как-то громоздко. Может есть более изящное решение?

      Блок = Новый БлокировкаДанных;
      Эл = Блок.Добавить("РегистрНакопления.Дебеторка");
      Эл.УстановитьЗначение("Контрагент", Контрагент);
      
      ТЗ = Новый ТаблицаЗначений;
      ТЗ.Колонки.Добавить("Проект");
      НоваяСтрока = ТЗ.Добавить();
      НоваяСтрока.Проект = Проект;
      НоваяСтрока = ТЗ.Добавить();
      НоваяСтрока.Проект = Справочники.Проекты.ПустаяСсылка();
      
      Эл.ИсточникДанных = ТЗ;
      Эл.ИспользоватьИзИсточникаДанных("Проект", "Проект");
      Блок.Заблокировать();
Стал искать информацию по блокировкам, а нашел прежде всего другое - неверный алгоритм.
Дело в том, что вся сумма отгрузки в любом случае сначала должна пройти приходом по проекту, а потом, в случае наличия аванса, сторнируем аванс и относим на оплату по данной накладной (при алгоритме, использованном в этом решении, сумма продаж учитывается некорректно).
Теперь по поводу блокировки. В любом случае блокировать надо только Аванс, чтобы его никто не утащил повторно.  :D
В блокировке же самого проекта смысла нет, его проводим хоть раздельно, хоть параллельно с другими. Это типа приходной накладной в операции купли-продажи.
Теперь по поводу самой блокировки. Еще вот такой вариант предлагается (пример 6).
http://expert.chistov.pro/public/144750/

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 5. Спец по платформе V8
« Ответ #21 : Август 20, 2015, 09:37:33 am »
Я не эксперт, но перед записью надо заблокировать (БлокироватьДляИзменения)

По-моему это надо делать при использовании Новой методики, а здесь - Старая

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 5. Спец по платформе V8
« Ответ #22 : Август 20, 2015, 09:46:52 am »
Jones, а я опять вернусь к злочастному условию в СПР "данные за разные расчетные периоды". С окладом все понятно, можно задавать разные "ПериодДействияНачало" и "ПериодДействияКонец". А что делать с надбавкой? Только на один период получается? Он же у Вас привязан только к "Дате" документа.

Что касается условия "В одном документе могут быть данные за разные расчетные периоды", то его я в задаче не учел.
По идее надо с этим разбираться, но на реализацию уйдет много времени, поэтому отложил это на потом.
На сколько я понял, надо ПериодРегистрации заносить в ТЧ

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Билет 5. Спец по платформе V8
« Ответ #23 : Август 20, 2015, 09:54:36 am »
1. При попытке записи сразу выскакивает ошибка - Поле объекта не обнаружено (Период),
Большое спасибо, alex1248! Вот что значит спешка: забыл протестировать Операцию.
Исправленный вариант прикрепляю

2. Если при пометке удаления активность будет снята, предусмотрен способ восстановления активности в случае снятия пометки удаления (в зависимости от желания пользователя)?
Снятие пометки удаления автоматически восстанавливает активность записей.

HRom

  • Пользователь
  • **
  • Сообщений: 94
  • ФИО: HRom
Re: Билет 5. Спец по платформе V8
« Ответ #24 : Август 22, 2015, 05:10:03 pm »
1)   Как вам моя процедура ПриЗаписи() в модуле Операции?
На мой взгляд это простая и понятная, а главное верная последовательность:
1-в движениях устанавливаем Период из Даты документа
2-если док записан, то у помеченного документа отключаем активность


А зачем читать старые движения в процедуре перед записью?

   Если Не ЭтоНовый() Тогда
      НабЗап = РегистрыБухгалтерии.Основной.СоздатьНаборЗаписей();
      НабЗап.Отбор.Регистратор.Установить(Ссылка);
      НабЗап.Прочитать();
                ...
   КонецЕсли;

zorky

  • Проверенный
  • ***
  • Сообщений: 222
  • ФИО: ЗЖВ
Re: Билет 5. Спец по платформе V8
« Ответ #25 : Октябрь 06, 2015, 02:13:14 pm »
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
Движения.ОстаткиНоменклатуры.Записать(); //Набор пустой, нет значений полей пространства блокировки. нечего блокировать.
 Вы забыли уточнить, зачем мы блокируем "пустой" набор. Когда пишется "пустой" набор, то:

1) блокируются данные по "очищаемым" записям (т.е. тем, по которым были движения до перепроведения документа, ведь их тоже надо блокировать, чтобы в случае отмены транзакции гарантировать откат (отказ от проведения и возврат к предыдущим проводкам));
2) все записи очищаются

 - - - Значит БлокироватьДляИзменения=Истина, перед Записать, нужно ставить всегда? Почему только при
Оперативном проведении?
А при Неоперативном? Ведь старые записи тоже могут изменить в других транзакциях...
че т не догоняю)))

artemusII

  • Пользователь
  • **
  • Сообщений: 34
  • ФИО: Артем А.
Re: Билет 5. Спец по платформе V8
« Ответ #26 : Октябрь 07, 2015, 11:05:08 pm »
Привет всем. Решал сегодня 5й билет. Проверьте кому не лень, пожалуйста...

zorky

  • Проверенный
  • ***
  • Сообщений: 222
  • ФИО: ЗЖВ
Re: Билет 5. Спец по платформе V8
« Ответ #27 : Октябрь 08, 2015, 05:47:04 pm »
Привет всем. Решал сегодня 5й билет. Проверьте кому не лень, пожалуйста...


Ещё делаю задачу 5 го билета БУ, подсмотрел отчёт - ни фига не понимаю, структура данных та же, субконто и признаки, логика такая же!
Но отчёт не получается, уже цифры плывут, может посмотрите??? в чем ошибка - выводит пустые данные!
Задача не сложная, но я долго думал как без 2 -x левых соединений сделать, упростить всячески. Никак...и субконто для отчета о продажах...
Что не так в отчёте???

« Последнее редактирование: Октябрь 09, 2015, 07:53:26 am от zorky »

alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Билет 5. Спец по платформе V8
« Ответ #28 : Октябрь 08, 2015, 09:47:01 pm »
Что не так в отчёте???
А где он?  :)

zorky

  • Проверенный
  • ***
  • Сообщений: 222
  • ФИО: ЗЖВ
Re: Билет 5. Спец по платформе V8
« Ответ #29 : Октябрь 09, 2015, 07:54:02 am »
Что не так в отчёте???
А где он?  :)

Ну всё, пересидел за задачами))))  Прикрепил!