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

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

YFred

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: YFred
Задача 1.01
« Ответ #330 : Апрель 01, 2014, 03:54:42 pm »
Посмотрите пожалуйста мое решение
Вложения:
1781292.dt

Igor-pn

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Игорь
Задача 1.01
« Ответ #331 : Апрель 13, 2014, 08:38:16 pm »
Мой вариант задачи 1.1
Вложения:
7911302.dt
« Последнее редактирование: Апрель 13, 2014, 08:38:40 pm от Игорь »


Shooroopik111

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Никита
Задача 1.01
« Ответ #332 : Апрель 14, 2014, 04:39:54 pm »
Просьба мастеров и знатоков 1с проверить. Заранее спасибо.

 Заранее прошу прощения за то что не сделал подсистемы.

 Ребят и вот какие вопросы:

 1)Нужно ли делать проверку на не заполненньсть реквизита ВидНоменклатуры?
 И как такую возможность лучше реализовать?

 2)Чтобы в регистр непопали пустые данные, нужны ли выставлять свойстов проверка заполнения у реквизитов ТЧ ПТУ и РТУ?
Вложения:
Shooroopik_1_01.dt
« Последнее редактирование: Апрель 15, 2014, 10:05:29 am от Никита »

DenVit

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Виталий
Задача 1.01
« Ответ #333 : Апрель 20, 2014, 12:18:40 am »
удалено
« Последнее редактирование: Апрель 20, 2014, 11:33:17 am от Виталий »

snaz

  • Новичок
  • *
  • Сообщений: 3
  • ФИО: Нияз
Задача 1.01
« Ответ #334 : Апрель 21, 2014, 09:23:08 am »
Добрый день, смотрел примеры решения задачи 1.1. Там в коде при проведении документов есть строки
 Движения.ОстаткиТоваров.Очистить();
 Движения.ОстаткиТоваров.Записать();
 но нет аналогичных строк. По реистру продажи. Почему при перепроведении нужно очищать старые движение только по регистру остатки, а по регистру Продажи не нужно?

MorningStalker

  • Пользователь
  • **
  • Сообщений: 10
  • ФИО: Дмитрий Корчагин
Задача 1.01
« Ответ #335 : Апрель 21, 2014, 09:55:06 am »
Цитата s-n-a-y ()
Добрый день, смотрел примеры решения задачи 1.1. Там в коде при проведении документов есть строки Движения.ОстаткиТоваров.Очистить();
 Движения.ОстаткиТоваров.Записать();
 но нет аналогичных строк. По реистру продажи. Почему при перепроведении нужно очищать старые движение только по регистру остатки, а по регистру Продажи не нужно?

 потому что, ты обращаешься к ТОЛЬКО к регистру ОстаткиТоваров. И если ты не удалишь старые движения по этому регистру, то твой запрос вернет не верную информацию. К регистру Продажи ты НЕ обращаешься, поэтому нет смысла его очищать.

 Пример:
 На складе есть 5 табуреток.
 Документ №1 списывает все 5 шт.
 На складе осталось 0 шт.

 Перепроводим Документ №1.

 Если ты не очистишь тем или иным методом старые движения, то запрос к регистру ОстаткиТоваров вернет тебе информацию, что на складе 0 шт и не даст тебе перепровести документ (если конечно у тебя работает контроль остатков :)).

 А если очищать, то...
 в начале обработки проведения было 0.
 потом ты очищаешь движения, 5 шт. возвращаются на склад.
 делаешь запрос - он тебе возвращает 5 шт.
 записываешь нужные тебе движения...

 Подумай логически, зачем тебе в такой ситуации нужно очищать регистр Продажи?
« Последнее редактирование: Апрель 21, 2014, 09:56:21 am от Дмитрий Корчагин »

snaz

  • Новичок
  • *
  • Сообщений: 3
  • ФИО: Нияз
Задача 1.01
« Ответ #336 : Апрель 21, 2014, 10:39:18 am »
Приходящий, спасибо за ответ. В задаче нужно построить отчет по продажам. Как я понимаю, если после перепроведения Расходной накладной не очищать движения по регистру продажи в отчет могут попасть данные из старых записей. Квк это контролируется?

MorningStalker

  • Пользователь
  • **
  • Сообщений: 10
  • ФИО: Дмитрий Корчагин
Задача 1.01
« Ответ #337 : Апрель 21, 2014, 11:13:24 am »
Цитата MorningStalker ()
Приходящий, спасибо за ответ. В задаче нужно построить отчет по продажам. Как я понимаю, если после перепроведения Расходной накладной не очищать движения по регистру продажи в отчет могут попасть данные из старых записей. Квк это контролируется?
у тебя в ОбработкеПроведения  Р/н есть движения по Регистру Продажи и по Регистру ОстаткиТоваров. При выходе из ОбработкиПроведения эти движения запишутся в регистр. Никаких старых записей сохранено не будет. Будут единственные актуальные записи.

 Логика проведения проста:

 Для Регистра ОстаткиТоваров:
 1. На начало Обработки Проведения у тебя уже есть какие-то записи по Регистру ОтстаткиТоваров.
 2. Для того чтобы эти записи не влияли на данные, которые вернет запрос к Регистру ОстаткиТоваров ты их либо очищаешь, либо записываешь их пустыми.
 3. Запрос возвращает данные.
 4. Ты обрабатываешь эти данные и формируешь на их основании проводки.
 5. В регистр записываются сформированные тобой записи.
 _____________Они единственные, нет никаких старых или новых, пустых или очищенных. Есть записи, которые ты сформировал в ОбработкеПроведения_____________

 Для Регистра Продажи:
 1. На начало ОбработкиПроведения у тебя уже есть какие-то записи по Регистру Продажи. Ну и хрен с ними, пусть будут.
 2. Ты ничего не очищаешь и не перезаписываешь, тебе не нужны эти изменения - эти лишнее обращение к БазеДанных, которое абсолютно не нужно!
 3. Ты формируешь записи по регистру Продажи, они могут быть теми же самыми, что и раньше, а могут отличаться от них.
 4. В регистр записываются сформированные тобой записи.
 ____________Они единственные, нет никаких старых или новых, пустых или очищенных. Есть записи, которые ты сформировал в ОбработкеПроведения. Они могут отличаться от старых записей или быть такими же, но они одни и в отчет попадут именно они_____________

letni88

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 1.01
« Ответ #338 : Апрель 22, 2014, 10:41:02 am »
s-n-a-y, по очищению регистра Остатки: при проведении будущей датой, сначала ты очищаешь движения в памяти методом остатки.очистить(), хотя в большинстве случаев это можно не делать и движения очищаются автоматически, но тем не менее существуют некоторые моменты, когда движения в памяти не очищаются, тем самым мы предостерегаем себя от некоторых ситуаций. Далее мы записываем пустой набор в базу. Это сделано для того, чтобы в случае проведения будущей датой при получении остатков не учитывались движения нашего документа. С регистром продажи мы не получаем остатки, да и вообще никакую информацию не получаем, поэтому смысла нет его записывать пустым набором.

snaz

  • Новичок
  • *
  • Сообщений: 3
  • ФИО: Нияз
Задача 1.01
« Ответ #339 : Апрель 23, 2014, 10:50:05 am »
Вопрос по документу Приходная накладная. Может ли в табличной части документа (по условию задачи) быть несколько строк с одинаковой номенклатурой, но разной ценой (себестоимостью) товара. Если да, то при проведении документа Расходная накладная группировать по номенклатуре не получиться, так как цена разная. Нужно отдельно считать товар кол-во товара с большей ценой и с меньшей ценой. Это так?

Demy

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Demy
Задача 1.01
« Ответ #340 : Апрель 23, 2014, 01:11:13 pm »
Цитата s-n-a-y ()
Вопрос по документу Приходная накладная. Может ли в табличной части документа (по условию задачи) быть несколько строк с одинаковой номенклатурой, но разной ценой (себестоимостью) товара. Если да, то при проведении документа Расходная накладная группировать по номенклатуре не получиться, так как цена разная. Нужно отдельно считать товар кол-во товара с большей ценой и с меньшей ценой. Это так?
А при чем тут цена? Просто складываешь количество и сумму, а цена определяется отношением этих величин.

otymko

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Oleg Tymko
Задача 1.01
« Ответ #341 : Апрель 23, 2014, 05:20:55 pm »
Добрый день. Не знаю оптимально ли я решил данную задачу. Заранее спасибо тем кто посмотрит мое решение.
Вложения:
1.1_otymko.dt

letni88

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 1.01
« Ответ #342 : Апрель 23, 2014, 06:35:28 pm »
s-n-a-y, прослеживается непонимание регистра накопления. Цена в приходной это ресурс, поэтому не имеет значения сколько у тебя записей будет с разными ценами, в конечном счете при получении остатков все записи просуммируются и сгруппируются по номенклатуре.

Demy

  • Пользователь
  • **
  • Сообщений: 21
  • ФИО: Demy
Задача 1.01
« Ответ #343 : Апрель 24, 2014, 05:20:03 pm »
otymko, посмотрел твое решение:
 1. Зачем в справочнике "Номенклатура" использовать реквизит услуга, есть же "Перечисления.ВидыНоменклатуры"? (правда не знаю как к этому относятся на экзамене).
 2. В расходной накладной при получении партий в запросе нужно сортировать по моменту времени, а не по ссылке.
 3. В той же расходной накладной признак услуги лучше вытянуть в запросе, иначе платформа постоянно читает номенклатуру из базы.
 4. Так делать не обязательно:           
Код
Если КолНужно < ДанныеП.КолОст Тогда
                 КолС = КолНужно;
                 СуммаС = ДанныеП.СуммаОст * КолНужно / ДанныеП.КолОст;
             Иначе
                 КолС = ДанныеП.КолОст;
                 СуммаС = ДанныеП.СуммаОст;
             КонецЕсли;
можно обойтись:
                
Код
КолС = Мин(КолНужно, ДанныеП.КолОст);
                 СуммаС = ДанныеП.СуммаОст * КолС / ДанныеП.КолОст;
проблема копеек не возникнет.
 5. Не знаю как к этому относятся на экзамене, но в отчете по остаткам думаю выводить количество по партиям и в общих итогах не нужно.

MorningStalker

  • Пользователь
  • **
  • Сообщений: 10
  • ФИО: Дмитрий Корчагин
Задача 1.01
« Ответ #344 : Апрель 25, 2014, 05:07:47 am »
Цитата Demy ()
1. Зачем в справочнике "Номенклатура" использовать реквизит услуга, есть же "Перечисления.ВидыНоменклатуры"? (правда не знаю как к этому относятся на экзамене).
Вот с этим я не согласен, реквизит "ЭтоУслуга" у справочника "Номенклатура" использовать гораздо удобнее, чем перечисление. Я тоже так всегда делаю.

 И вообще, ты можешь решать в новой конфигурации и не использовать Каркасную, а в новой Перечисления.ВидыНоменклатуры не будет... И что тогда делать?

 P.S. с остальными пунктами абсолютно согласен. Пункт №3 вообще крупный косяк, по факту это запрос в цикле.