Автор Тема: 1.3  (Прочитано 77658 раз)

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

aveego

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
1.3
« Ответ #60 : Октябрь 14, 2011, 12:41:41 pm »
Вот мое решение в нем учел замечания по предыдущем заданиям.

Вложения:
aveego_1_3.dt

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #61 : Октябрь 14, 2011, 01:05:32 pm »
aveego, зачем используешь итоги в запросе при проведении расходной накладной?
« Последнее редактирование: Октябрь 14, 2011, 01:05:50 pm от Давид »


aveego

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
1.3
« Ответ #62 : Октябрь 14, 2011, 02:22:10 pm »
В документе реализации может быть несколько одинаковых номенклатур, но с разными партиями. А в регистре продаж мы не учитываем партию.
 Если не использовать Итоги то обход будет по детальным записям, и в регистр продаж по одному регистратору попадут записи с одинаковой номенклатурой, а так я записываю только итоговые данные и записи не "задваиваются" по номенклатуре

Добавлено (14.10.2011, 14:22)
---------------------------------------------
а еще нашел ошибку у себя же, нужно
 ЭлементБлокировкиДанных.ИспользоватьИзИсточникаДанных("Номенклатура, Партия", "Номенклатура, Партия");
 в место
 ЭлементБлокировкиДанных.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура", "Партия", "Партия");


Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #63 : Октябрь 14, 2011, 02:37:49 pm »
aveego, логично, я на это внимание не обратил когда эту задачу решал.

Кенгуру

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кенгуру
1.3
« Ответ #64 : Октябрь 14, 2011, 03:12:40 pm »
Quote (aveego)
В документе реализации может быть несколько одинаковых номенклатур, но с разными партиями. А в регистре продаж мы не учитываем партию.
 Если не использовать Итоги то обход будет по детальным записям, и в регистр продаж по одному регистратору попадут записи с одинаковой номенклатурой, а так я записываю только итоговые данные и записи не "задваиваются" по номенклатуре


 Там нужно группировку делать во временной таблице

 Выбрать
 Номенклатура,
 Партия,
 Сумма(Количество) Как Количество,
 Сумма(Сумма) Как Сумма
 Поместить ТаблицаРасходнаяНакладная

 Из Документ.РасходнаяНакладная

 ...
 ...
 Сгруппировать По
 Номенклатура, Партия
 //////////////////////////////////

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #65 : Октябрь 14, 2011, 03:18:16 pm »
Кенгуру

 Это при списании с регистра ОстаткиНоменклатуры. А когда формируешь движения в регистр Продажи нужно группировать по номенклатуре без учета партий.

ErrorPro

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Вениамин
1.3
« Ответ #66 : Октябрь 21, 2011, 12:09:31 am »
Всем доброй ночи, выкладываю свой ночной вариант решения, хотелось бы услышать замечания и предложения. Сразу скажу, только начал готовиться))
 З.Ы. Щас пошел зубы чистить думал какое лучше соединение использовать, так думал что свою зубную шетку мылом обычным помыл...
Вложения:
1Cv8_ErrorPro.dt

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #67 : Октябрь 21, 2011, 08:27:40 am »
ErrorPro,

 1. В свойствах конфигурации режим управления блокировками установлен в Автоматический, а нужно в управляемый.

 2. Не нужно в обработке проведения приходной накладной выгружать в ТЗ результат запроса для формирования движений.

 3. Движения.ОстаткиНоменклатуры.Очистить();
 Движения.ОстаткиНоменклатуры.Записать();
 Достаточно Записать().

 4. В обработке проведения расходной накладной блокировать нужно не только по номенклатуре, но и по складу. Блокировку ты описал, а заблокировать забыл.

 5. ЕСТЬNULL(ДОКТЧ.Количество, 0) КАК Количество,
 ЕСТЬNULL(ДОКТЧ.Сумма, 0) КАК Сумма
 Не надо здесь проверять на Null.

 Номенклатура В
 (ВЫБРАТЬ ДокТЧ.Номенклатура ИЗ ДокТЧ) И Партия В (ВЫБРАТЬ ДокТЧ.Партия ИЗ ДокТЧ КАК ДокТЧ), надо так: (Номенклатура, Партия) В (ВЫБРАТЬ ДокТЧ.Номенклатура, ДокТЧ.Партия ИЗ ДокТЧ КАК ДокТЧ).
 ПО (Остатки.Номенклатура = ДОКТЧ.Номенклатура) И (Остатки.Партия = ДОКТЧ.Партия). Второе условие соединения таблиц является избыточным.

 6. ВыборкаДетальная = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Можно просто Выборка.Выбрать()

 7. В регистр Продажи услуги у тебя не попадут.

 Отчеты не смотрел.

ErrorPro

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Вениамин
1.3
« Ответ #68 : Октябрь 21, 2011, 09:27:23 am »
Romdavid Спасибо , но ответь тогда пожалуйста,
 1.почему в приходной не нужно загружать движения через ТЗ, так ведь оптимальнее?
 2. В задаче написано что складской учет не ведется, да и в Расходной даже склада нет, так как его тогда блокировать?
 3. Лишняя проверка на Null плохо как-то повлияет?
 4.ВыборкаДетальная = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); - описал так как говорит Палев. Вдруг добавится еще один уровень группировки. Да и как-то это влиет на производительность?
 5. с Услугами точно, отчет продажи не внимательно глянул.
 Спасибо еще раз за рекомендации smile

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #69 : Октябрь 21, 2011, 10:03:50 am »
ErrorPro,
 1. Оптимальнее с точки зрения чего? На сколько я знаю, на выгрузку результата запроса в ТЗ и загрузку ТЗ в движения тратится больше времени, чем на аналогичные операции с использованием Выборки.
 В списке ошибок к экзамену указывается :"Выгрузка результата запроса в промежуточную таблицу (например, в таблицу значений) без необходимости", за это снимают 1 балл.
 2. По поводу складов извиняюсь, имел ввиду партии. По ним также блокировать нужно.
 3. На работу программы плохо врядли повлияет, а вот на оценку преподавателя твоего понимания может повлиять негативно.
 4. По-моему в данном случае "вдруг" неуместно. Есть конкретная задача, конкретные условия, никаких "вдруг". На счет производительности сказать не могу.

ErrorPro

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Вениамин
1.3
« Ответ #70 : Октябрь 21, 2011, 10:23:38 am »
Romdavid ясно спасибо, а по поводу блокировки по партиям, смысл? Мы же блокируем по номенклатуре, этого не достаточно?

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
1.3
« Ответ #71 : Октябрь 21, 2011, 10:35:24 am »
ErrorPro, дело в том, что списание происходит только с тех партий, которые указаны в табличной части и чтение остатков, соответственно, происходит только по этим партиям. А ты блокируешь всю номенклатуру без учета партий. Получается, что ты блокируешь те записи, которые тебе не нужны. А это не есть хорошо.

ErrorPro

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Вениамин
1.3
« Ответ #72 : Октябрь 21, 2011, 11:16:03 am »
Romdavid точно, все исправил, спасибо. Седня выложу 1.04 очень буду ждать твоих замечаний wink

crabzzy

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Alexander
1.3
« Ответ #73 : Октябрь 24, 2011, 09:41:40 am »
Мое решение

 Отчеты (Интервал, Срок) не обычные

Добавлено (24.10.2011, 09:41)
---------------------------------------------
у себя неверно сделал блокировку
 нужно было

 ....("Номенклатура,Партия","Номенклатура,Партия");


Вложения:
crabzzy_1.3.dt

Minotavrik

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Пастухов Андрей Григорьевич
1.3
« Ответ #74 : Октябрь 24, 2011, 02:10:16 pm »
Мое решение

Добавлено (24.10.2011, 14:10)
---------------------------------------------
Можно чуток критики?


Вложения:
Minotavrik_1.3.dt