Автор Тема: Задача 1.01  (Прочитано 176958 раз)

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

Albert

  • Пользователь
  • **
  • Сообщений: 29
  • ФИО: Альберт
Re: Задача 1.01
« Ответ #450 : Май 21, 2015, 05:07:23 pm »
Добрый день, посмотрите пожалуйста реализацию задачи 1.01 мой вариант
Хорошее решение.
В РасходнойНакладной трижды очищенные записи Движения.ОстаткиНоменклатурыПартия.Очистить(); -это не ошибка, но...

 Запрос к незаблокированному регистру ОстаткиНоменклатурыПартия.   Вместо

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

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

в запросах выбранные поля из ресурсов обработать на ЕСТЬ NULL.

Albert

  • Пользователь
  • **
  • Сообщений: 29
  • ФИО: Альберт
Re: Задача 1.01
« Ответ #451 : Май 21, 2015, 05:08:48 pm »
забыл блокировку при списании, файл во вложении
ну я по поводу блокировки уже написал ))


Сеня

  • Новичок
  • *
  • Сообщений: 6
Re: Задача 1.01
« Ответ #452 : Июнь 05, 2015, 04:57:40 am »
Прошу покритиковать моё решение, особенно обработку проведения в расходной накладной.

Сеня

  • Новичок
  • *
  • Сообщений: 6
Re: Задача 1.01
« Ответ #453 : Июнь 05, 2015, 05:37:40 am »
забыл блокировку при списании, файл во вложении
а зачем в обработке проведения в РН все сделано в отдельных запросах? это не будет ошибкой?

Сеня

  • Новичок
  • *
  • Сообщений: 6
Re: Задача 1.01
« Ответ #454 : Июнь 05, 2015, 05:39:48 am »
А вот кстате по поводу статьи есть вопрос всегда хотела его задать
Павел, в пункте 2 очищает движения документа, потом движения записывает, он там подробно рассказывает для чего сначала нужно очистить движения, но на форуме многие говорят, что строчка Движения.Очистить() не нужна,

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

Для очистки движений достаточно использовать Движения.Регистр.Записать();

olegio

  • Новичок
  • *
  • Сообщений: 3
Re: Задача 1.01
« Ответ #455 : Июнь 16, 2015, 12:48:18 am »
Доброго времени суток, уважаемые форумчане!
Прокомментируйте пожалуйста прилагаемое решение на предмет ошибок. Заранее спасибо.

timeforlive

  • Новичок
  • *
  • Сообщений: 5
Re: Задача 1.01
« Ответ #456 : Июнь 16, 2015, 08:07:50 am »
Вот мое решение. Что касается блокировки данных - не могу взять в толк, как ограничить только на конкретную номенклатуру. Если один пользователь обратился к РегиструНакопления.ОстаткиНоменклатуры (только один вид товара - "Куртка замшевая"), то второй пользователь уже вообще не может обратить к этому регистру (если товар другой, например, "Крупа манная").

timeforlive

  • Новичок
  • *
  • Сообщений: 5
Re: Задача 1.01
« Ответ #457 : Июнь 16, 2015, 08:20:44 am »
Доброго времени суток, уважаемые форумчане!
Прокомментируйте пожалуйста прилагаемое решение на предмет ошибок. Заранее спасибо.

При беглом ознакомлении:
1. Учетная политика, думаю, реализовано лучше, чем у меня (безопаснее), но интересно узнать, что скажут остальные. У меня через функцию СрезПоследних(Дата)
2. Нет блокировки данных при чтении данных (перед запросом)
3. Граница МоментВремени у тебя "Исключает" сам документ, хотя должен включать его движения. А вдруг пользователь решит перепровести документ с введенными изменениями?

Остальное, вроде нормально.
Щас посмотрим, что про мое решение скажут. Я пока что пытаюсь освоить блокировку данных, понять когда нужно
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;а когда
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");
Блокировка.Заблокировать();

Если что, вот полезные ссылки по блокировкам:
http://1c.chistov.pro/2010/06/1-82.html
http://1c.chistov.pro/2013/07/blog-post_25.html

olegio

  • Новичок
  • *
  • Сообщений: 3
Re: Задача 1.01
« Ответ #458 : Июнь 16, 2015, 12:28:56 pm »
Благодарю за комментарий, но
2. Блокировка реализована как
        БлокировкаДанных = Новый БлокировкаДанных;
   ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
   ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
   ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
   ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
   БлокировкаДанных.Заблокировать();
отрабатывает как раз перед запросом.
3. На мой взгляд, если документ перепроводится (первоначальные движения будут заменены новыми), границу как раз включать не следует.

malikov_pro

  • Новичок
  • *
  • Сообщений: 7
  • ФИО: Маликов А.
Re: Задача 1.01
« Ответ #459 : Июнь 24, 2015, 10:13:52 am »
Доброго времени суток, уважаемые форумчане.
Начинаю готовится к экзамену.
По решению:
1. Вынес расчет себестоимости и формирование РН Продажи в отдельную обработку, для контроля использую последовательность.
2. Запрос корректирую не заменой строки а схемой запроса.

Прошу прокомментировать мое решение на предмет ошибок, оптимальности решения.

DmitryZzz

  • Новичок
  • *
  • Сообщений: 8
  • ФИО: Дмитрий
Мое решение Задачи 1.01
« Ответ #460 : Июнь 26, 2015, 11:12:54 am »
Приветствую форумчан!
Посмотрите и мое решение Задачи 1.01  :)

malikov_pro

  • Новичок
  • *
  • Сообщений: 7
  • ФИО: Маликов А.
Re: Мое решение Задачи 1.01
« Ответ #461 : Июнь 26, 2015, 11:57:28 am »

1. В чем смысл дополнительного документа "ИзменениеУчетнойПолитики"?
2. В приходной нет проверки на услугу (ни при записи, ни через параметр выбора)
3. Городить левым соединением учетную политику излишне, проверка на то что она вообще есть отсутствует.
4. ВыборкаНоменклатура.Номенклатура - нужно через представление
5. И ОсталосьСписать <> 0 Цикл, если будет вход с минусом, то отработает некорректно, лучше наверно через "=>"
5. Стоимость = Списать / ВыборкаД, сначала умножаем, потом делим, объяснение в ветке есть.
6. в РН Остатки товаров, Продажи нет индекса по "Номенклатура"
7. Отчет остатки товаров, Номенклатура в полях не нужна, Расположение полей группировок Отдельно и только в итогах

DmitryZzz

  • Новичок
  • *
  • Сообщений: 8
  • ФИО: Дмитрий
Re: Мое решение Задачи 1.01
« Ответ #462 : Июнь 26, 2015, 12:07:32 pm »

1. В чем смысл дополнительного документа "ИзменениеУчетнойПолитики"?
2. В приходной нет проверки на услугу (ни при записи, ни через параметр выбора)
3. Городить левым соединением учетную политику излишне, проверка на то что она вообще есть отсутствует.
4. ВыборкаНоменклатура.Номенклатура - нужно через представление
5. И ОсталосьСписать <> 0 Цикл, если будет вход с минусом, то отработает некорректно, лучше наверно через "=>"
5. Стоимость = Списать / ВыборкаД, сначала умножаем, потом делим, объяснение в ветке есть.
6. в РН Остатки товаров, Продажи нет индекса по "Номенклатура"
7. Отчет остатки товаров, Номенклатура в полях не нужна, Расположение полей группировок Отдельно и только в итогах

Благодарю! Все крайне конструктивно и по делу!
К сожалению, сейчас нет времени прокомментировать, вечером обязательно отпишусь!

DmitryZzz

  • Новичок
  • *
  • Сообщений: 8
  • ФИО: Дмитрий
Re: Мое решение Задачи 1.01
« Ответ #463 : Июнь 27, 2015, 10:40:22 am »
1. В чем смысл дополнительного документа "ИзменениеУчетнойПолитики"?
2. В приходной нет проверки на услугу (ни при записи, ни через параметр выбора)
3. Городить левым соединением учетную политику излишне, проверка на то что она вообще есть отсутствует.
4. ВыборкаНоменклатура.Номенклатура - нужно через представление
5. И ОсталосьСписать <> 0 Цикл, если будет вход с минусом, то отработает некорректно, лучше наверно через "=>"
5. Стоимость = Списать / ВыборкаД, сначала умножаем, потом делим, объяснение в ветке есть.
6. в РН Остатки товаров, Продажи нет индекса по "Номенклатура"
7. Отчет остатки товаров, Номенклатура в полях не нужна, Расположение полей группировок Отдельно и только в итогах

Так-с, тоже по пунктам:
1) В видеокурсах Павла Чистова (далее ПЧ) именно таким способом задают учетную политику. Или это излишне усложняет задачу и может стать причиной снятия баллов?
2) По-невнимательности, конечно же нужно задать Параметр выбора в ТЧ для номенклатуры в Приходной накладной.
3) Опять же, делал по аналогии с видекурсами ПЧ. Но в последующих задачах выбираю отдельным запросом и проверяю.
4) Согласен. Тем самым избегаем еще одного неявного соединения.
5) Хмм, ПЧ рекомендовал именно так: Списать / КоличОст * СтоимостьОст. Почитаю ветку в поисках другого способа...
6) Индексировать нужно лишь те измерения, которые в последствие будем использовать в соединениях, да?
7) Да, так будет правильнее.

Во вложении исправленная версия.

malikov_pro

  • Новичок
  • *
  • Сообщений: 7
  • ФИО: Маликов А.
Re: Мое решение Задачи 1.01
« Ответ #464 : Июнь 27, 2015, 01:22:10 pm »
1) В видеокурсах Павла Чистова (далее ПЧ) именно таким способом задают учетную политику. Или это излишне усложняет задачу и может стать причиной снятия баллов?
2) По-невнимательности, конечно же нужно задать Параметр выбора в ТЧ для номенклатуры в Приходной накладной.
3) Опять же, делал по аналогии с видекурсами ПЧ. Но в последующих задачах выбираю отдельным запросом и проверяю.
4) Согласен. Тем самым избегаем еще одного неявного соединения.
5) Хмм, ПЧ рекомендовал именно так: Списать / КоличОст * СтоимостьОст. Почитаю ветку в поисках другого способа...
6) Индексировать нужно лишь те измерения, которые в последствие будем использовать в соединениях, да?

1. на баллы не повлияет, но времени на остальное может не хватить,
в темах поднимался вопрос по учетной политике, в какой момент её можно задавать, что есть период "год" и.т.д,
можно попробовать несколько вариантов организации при тренировке, после на экзамене уточнить у экзаменатора как ему нужно.
3. РС..ПолучитьПоследнее() проще
5. списать 2 остаток 3 стоимость 6   
2/3 = дробь
6*2/3 = целое
6. Если записи таблицы по измерению отбираются (в соединении так же присутствует), то да,
в отчетах так же используются отборы, соотв если измерений не много то лучше по всем поставить индексирование.