Автор Тема: Задача 1.4 стр.10  (Прочитано 75039 раз)

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

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.4 стр.10
« Ответ #30 : Январь 12, 2011, 03:37:22 pm »
вот мое решение:
 1. Сделал по-другому запись в регистр Продажи себестоимости, теперь нет кучи лишних строк в регистре.
 2. Сделал сортировку партий в запросе: первая всегда выбранная пользователем, потом все остальные по порядку (по ФИФО или ЛИФО), если пользователь не выбрал - значит порядок согласно учетной политике.
Вложения:
Gyd_1_4.dt

AndreiPiter

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 1.4 стр.10
« Ответ #31 : Январь 12, 2011, 08:10:26 pm »
Quote (Gyd)
вот мое решение:
 1. Сделал по-другому запись в регистр Продажи себестоимости, теперь нет кучи лишних строк в регистре.
 2. Сделал сортировку партий в запросе: первая всегда выбранная пользователем, потом все остальные по порядку (по ФИФО или ЛИФО), если пользователь не выбрал - значит порядок согласно учетной политике.

 Грамотно. А где установлен "Режим управления блокировкой" в Управляемый?


Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.4 стр.10
« Ответ #32 : Январь 13, 2011, 10:35:32 am »
Quote (AndreiPiter)
Грамотно. А где установлен "Режим управления блокировкой" в Управляемый?

 спасибо.

вы про "Режим управления..." в свойстве конфигурации или про что-то другое?

« Последнее редактирование: Январь 13, 2011, 10:37:21 am от Олег »

Matcoder

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: алекс
Задача 1.4 стр.10
« Ответ #33 : Январь 13, 2011, 11:03:21 am »
Gyd, AndreiPiter, У вас не учитывается что по одной номенклатуре можен быть указано несколько приоритетных партий. И, соответсвенно, при списании с приоритетной партии количества указанного в документе, нужно уменьшать количество в этой партии. Чтобы при списании другой партии, по этой же номеклатуре, бралось количесто остатка из первой партии (с учетом уже списанного количества), а не первоначальное количество по партии.

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

Gyd, вот это лишнее
 

Code

 Движения.ОстаткиНоменклатуры.Записывать = Ложь;
  Движения.Продажи.Записывать = Ложь;
 

 И вот это
 
Code

 Если Отказ = Истина Тогда
     Возврат;
 КонецЕсли;
 

 в конце процедуры зачем?

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.4 стр.10
« Ответ #34 : Январь 13, 2011, 01:16:00 pm »
Quote (Matcoder)
Gyd, вот это лишнее
 Code

Движения.ОстаткиНоменклатуры.Записывать = Ложь;
 Движения.Продажи.Записывать = Ложь;


 я так понял со слов Чистова - это чтобы даже в кэш не записывались движения.

Quote (Matcoder)
И вот это
 Code

Если Отказ = Истина Тогда
 Возврат;
 КонецЕсли;


 а это общий отказ от проведения документа.

Добавлено (13.01.2011, 13:16)
---------------------------------------------

Quote (Gyd)
Решение этой задчи рассмотрено в задачнике (в конце), советую посмотреть.

 сразу видно что решение писали 1совцы, ничего не понятно smile

Matcoder

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: алекс
Задача 1.4 стр.10
« Ответ #35 : Январь 13, 2011, 04:18:10 pm »
Quote (Gyd)
я так понял со слов Чистова - это чтобы даже в кэш не записывались движения.

 Это если ты модифициовал набор записей, а потом передумал его записывать, тогда ставишь Записывать = Ложь. А в данном случае набор записей не был изменен, поэтому это лишнее.

Quote (Gyd)
а это общий отказ от проведения документа.

 У тебя документ итак не проведется, потому что Отказ = истина, а зачем возврат делать?

Quote (Gyd)
сразу видно что решение писали 1совцы, ничего не понятно

 Зато если неполениться и разобраться, многое станет понятным. smile

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.4 стр.10
« Ответ #36 : Январь 13, 2011, 06:02:32 pm »
Matcoder,
 У тебя документ итак не проведется, потому что Отказ = истина, а зачем возврат делать?

Это кстати нормально так приучать себя, потому что после опера будет бух. и возврат для того чтобы туда не залезать вообще. Хотя можно перед бух поставить Если не Отказ бла-бла-бла, но мне например так удобнее)


Matcoder

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: алекс
Задача 1.4 стр.10
« Ответ #37 : Январь 13, 2011, 07:09:37 pm »
SergTH000,
 Спасибо, учтем

AndreiPiter

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 1.4 стр.10
« Ответ #38 : Январь 13, 2011, 08:28:48 pm »
Quote (Gyd)
вы про "Режим управления..." в свойстве конфигурации или про что-то другое?

 да, я про это.

Добавлено (13.01.2011, 20:28)
---------------------------------------------

Quote (Matcoder)
Gyd, AndreiPiter, У вас не учитывается что по одной номенклатуре можен быть указано несколько приоритетных партий. И, соответсвенно, при списании с приоритетной партии количества указанного в документе, нужно уменьшать количество в этой партии. Чтобы при списании другой партии, по этой же номеклатуре, бралось количесто остатка из первой партии (с учетом уже списанного количества), а не первоначальное количество по партии.

 Ок, согласен. Этот момент не учтён.

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.4 стр.10
« Ответ #39 : Январь 14, 2011, 10:02:29 am »
Quote (Gyd)
Если Отказ = Истина Тогда
 Возврат;
 КонецЕсли;

 Сейчас посмотрел код, соглашусь с Matcoder что в данной задаче эти строки лишние: циклы всё равно уже прошли и флаг отказа уже установлен.
 
Quote (AndreiPiter)
Quote (Gyd)
 вы про "Режим управления..." в свойстве конфигурации или про что-то другое?

да, я про это.


 хмм, у меня в каркасной так стоит. Сейчас специально еще раз скачал каркасную - там тоже самое.
 
Quote (Matcoder)
Gyd, AndreiPiter, У вас не учитывается что по одной номенклатуре можен быть указано несколько приоритетных партий.

 согласен, не учли.
 
Quote (Matcoder)
Это если ты модифициовал набор записей, а потом передумал его записывать, тогда ставишь Записывать = Ложь. А в данном случае набор записей не был изменен, поэтому это лишнее.

 Модификация - это запись движений? Движения.ОстаткиНоменклатуры.Добавить() - это?
« Последнее редактирование: Январь 14, 2011, 10:04:15 am от Олег »

Matcoder

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: алекс
Задача 1.4 стр.10
« Ответ #40 : Январь 14, 2011, 01:40:52 pm »
Quote (Gyd)
Модификация - это запись движений? Движения.ОстаткиНоменклатуры.Добавить() - это?

Модификация это любое изменение. Даже если не добавлять новые записи, а изменить существующие - это тоже модификация. Даже если просто Движения.<ИмяРегистра>.Прочитать() - это тоже.


regal

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Регульский Ярослав Анатольевич
Задача 1.4 стр.10
« Ответ #41 : Январь 15, 2011, 10:27:38 pm »
Извините за нубский вопрос, я еще только учусь, но в тексте запроса, в решенном задании мне не понятна следующая конструкция:
 ИЗ
 |   Вт КАК Вт
 |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
 |            &Момент,
 |            Номенклатура В
 |               (ВЫБРАТЬ РАЗЛИЧНЫЕ
 |                  Вт.Номенклатура
 |               ИЗ
 |                  Вт))
КАК ОстаткиНоменклатурыОстатки
 |      ПО Вт.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
 Непонятна не вся конструкция, а только та, что выделена курсивом. Можно ли получить краткий комент по ней?
 И еще. Текст, что выделен курсивом создавался конструктором? Если да, то какие именно действия проводились в самом конструкторе?
« Последнее редактирование: Январь 15, 2011, 10:36:42 pm от Регульский Ярослав Анатольевич »

SINISTER_STAR

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Шкипер
Задача 1.4 стр.10
« Ответ #42 : Январь 16, 2011, 08:06:55 am »
regal, &Момент - означает что остатки следует брать на МоментВремени() документа.
 Номенклатура В
 | (ВЫБРАТЬ РАЗЛИЧНЫЕ
 | Вт.Номенклатура
 | ИЗ
 | Вт)) а вот это чудо означает что ты в регистре задаешь параметр типа выбрать только те номенклатурные позиции которые есть в ВТ - виртуальной таблице. Да и все ето надо писать ручками )
« Последнее редактирование: Январь 16, 2011, 08:07:17 am от Шкипер »

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.4 стр.10
« Ответ #43 : Январь 17, 2011, 09:30:17 am »
Quote (Matcoder)
Модификация это любое изменение. Даже если не добавлять новые записи, а изменить существующие - это тоже модификация. Даже если просто Движения.<ИмяРегистра>.Прочитать() - это тоже.

 А у меня разве не модификация происходит?:)

---------------------------------------------
 

Quote (regal)
Непонятна не вся конструкция, а только та, что выделена курсивом. Можно ли получить краткий комент по ней?

 Это параметры виртуальной таблицы (в данном случае это - РегистрНакопления.ОстаткиНоменклатуры.Остатки). Своего рода фильтры, первый параметр - это период, второй (и последующие) - это условия.

&Момент - как правило это МоментВремени(), хотя некоторые видел получают на Неопределенно.

По части Номенклатуры вам ответил SINISTER_STAR.

Quote (regal)
И еще. Текст, что выделен курсивом создавался конструктором? Если да, то какие именно действия проводились в самом конструкторе?

 Можно дописать это после создания запроса конструктором. А можно в процессе создания: закладка Таблицы и поля- отдел Таблицы - выделить виртуальную таблицу-нажать кнопку "Параметры..." (справа вверху)-прописать параметры.
« Последнее редактирование: Январь 17, 2011, 09:30:33 am от Олег »

regal

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Регульский Ярослав Анатольевич
Задача 1.4 стр.10
« Ответ #44 : Январь 17, 2011, 04:10:22 pm »
Понял. Спасибо за ответ.