Форум Чистова. Подготовка к экзаменам 1С

Аттестация "1С:Специалист" => Аттестация "1С:Специалист по платформе 1С:Предприятие 8.3 и 8.2" => Тема начата: napan от Июль 16, 2010, 09:23:05 am

Название: 1.6
Отправлено: napan от Июль 16, 2010, 09:23:05 am
Вот решил для 8.2. Может кто прокомментирет решение?
Вложения:
1520959.dt
Название: Re: 1.6
Отправлено: alice от Июль 16, 2010, 10:44:29 am
В принципе, все нормально, единственное что БлокироватьДляИзменения нужно использовать только в том случае, если проведение идет по новой методике, то есть если происходит сначала запись набора движений, то, таким образом, блокируются нужные комбинации полей измерений, но, повторюсь, только в том случае, если сначала делается запись в регистр.
 Если же сначала происходит чтение, как здесь, то для того, чтобы обеспечить неизменность данных нужно создавать объект типа БлокировкаДанных и описывать его, поскольку подразумевается, что должен быть использован управляемый режим блокировок.

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

Название: Re: 1.6
Отправлено: tenikov от Июль 19, 2010, 12:16:26 pm
Quote (alice)
я когда решала эту задачу

можешь выложить своё решение? интересует как раз списание отрицательных остатков в приходной, хочу свериться.

Название: Re: 1.6
Отправлено: tyes4 от Июль 19, 2010, 03:39:51 pm
на экзамене в этой задаче немного иное условие :
 Оптовая торговля,поступление товаров - прих накл, продажа - расх накл.
 учет товаров - в разрезе сроков годностей.
 При поступлении у товара указывается срок годности.
 Складской учет не ведется.
 Списание себестоимости - в зависимости от срока годности,начиная с самого раннего.
 информация о поступлении на склад может приходить позднее фактического поступления.
 Документы задним числом не вводятся.
 существует система, когда продается товар, которого еще нет.
 Осуществить такую возможность.
 Построить отчет по движениям за период. (отчет только один)
Название: Re: 1.6
Отправлено: alice от Июль 19, 2010, 03:59:48 pm
Выкладываю базу на 8.2. По идее, нужно бы еще последовательность создать, но у меня этого нет...
Название: Re: 1.6
Отправлено: alice от Июль 19, 2010, 04:00:24 pm
Забыла прикрепить.
Вложения:
2506449.dt
Название: Re: 1.6
Отправлено: 1C_CoderVamp от Июль 20, 2010, 04:19:37 pm
Не останусь в стороне, мой вариант smile
Вложения:
106_1CCoder.dt
Название: Re: 1.6
Отправлено: napan от Август 04, 2010, 05:15:19 pm
Quote (alice)
И еще, я когда решала эту задачу дополнительно в обработке проведения приходной делала проверку на наличие отрицательных остатков и если они были, погашала их. По сути, партионное списание только наоборот.
 НЕ знаю, надо это делать на экзамене и если это сделать, не будет ли это усложнением, а если не сделать не будет ли это упрощением задачи.

Получается например: Расходная Карандаш -3 на сумму 0 (т.к. в остатках его нету). Делаем приходную например Карандаш 5 шт. на сумму 50. И что получается: Списываем минус: 3 шт по цене (какой 0?????) и добавляем еще 2 по цене 20. Так что ли???? Мне кажется не совсем правильно....Отчет кривой будет

Название: Re: 1.6
Отправлено: alice от Август 05, 2010, 09:56:37 am
Почему кривой, все правильно будет посчитано, себестоимость одной штуки в партии 10 р.
 соотв, раз мы до этого списывали с нулевой себестоимостью 3 шт, а теперь она нам стала известна, то надо сделать расход на эту себестоимость 3*10, единственное что, если
 расходную распровести тогда получатся неправильные цифры, но для этого нужно будет делать восстановление последовательности и перепроводить приходные.
Название: Re: 1.6
Отправлено: napan от Август 05, 2010, 03:06:35 pm
Посмотри в отчет в задачнике...Начальный Остаток 0, Был Приход 2 шт стоимостью 32, Расхода не было и на остатке осталось 0. (Последняя строчка). Тогда надо делать Расход (В приходной) на дату Расходной..... Иначе расход попадет в отчет (хотя на самом деле его быть не должно). И что получается:
 Например:
 Была Расходная (10.05.2010): списали 3 шт стоимостью 0 (расход) Партия - Пустая.
 Потом как то была Приходная (12.07.2010) : 5 шт. по цене 50 (приход) - Партия - Ссылка . Сдесь же получаются еще движения: Приход 3шт. стоимостью 0 (на дату расходной) Партия - Пустая, и Расход 3 шт. стоимость 30 (на дату расходной) Партия Ссылка.

Так чтоли???

Название: Re: 1.6
Отправлено: alice от Август 05, 2010, 04:14:42 pm
Честно говоря, я не понимаю, что имеется ввиду, если по комбинации измерений есть приход - расход, то и кон остаток получается исходя из начального остатка и всех операций.
 Ситуация описанная в сборнике, если судить здраво, возможна только в том случае, если формирование отчета было запущено во время проведения каких-либо массовых операций с БД (некого регламента) и в отчет попали данные незафиксированных транзакций.

Не вижу в моем решении противоречия, исходя из полноты формулировки приведенной в задаче и формата реализации за "час с небольшим".

Опять же, я не могу читать чужие мысли, и, соотв., не могу утверждать, как, впрочем, и все остальные, что именно имеют ввиду этим составители.

А ты, что думаешь по этому поводу, и можешь ли предложить свой алгоритм реализации решения при таком раскладе.

Название: Re: 1.6
Отправлено: napan от Август 05, 2010, 04:29:07 pm
я же описал свой метод, только вместо Партия Пустая - Писать СсылкуРасходной
Название: Re: 1.6
Отправлено: alice от Август 06, 2010, 09:54:13 am
Не знаю принципиально ли это, можно, в принципе, у преподавателя уточнить, если он ответит. В любом случае формулировка задания звучит "Предоставить возможность списывать товар при продаже в минус", и здесь ничего не сказано конкретно, что именно нужно сделать, поэтому, на мой взгляд, доказать, что писать пустую партию или расходную нельзя, опять же преподаватель, царь и бог, и если он будет настаивать на чем-то, то тут ничего ему не докажешь.
 Ведь нигде нет контроля правильности решений этих задач, с которым можно было бы свериться или к которым можно было бы апеллировать.
Название: Re: 1.6
Отправлено: napan от Август 06, 2010, 11:14:18 am
Просто если писать ПустуюСсылку, дату документа расходной не достанешь, если вдруг надо делать движение на дату расходной....у тебя просто в ноль регистр не уйдет
Название: Re: 1.6
Отправлено: alice от Август 06, 2010, 11:40:46 am
Регистр всегда выйдет в ноль при такой схеме, отрицательные остатки погашаются без привязки к расходной.

Добавлено (06.08.2010, 11:40)
---------------------------------------------
Аналогично при учете авансов, когда аванс - это пустая ссылка

Название: Re: 1.6
Отправлено: napan от Август 20, 2010, 08:44:42 am
Документ задним числом не вводится, но перепроводится....Это что - Последовательность?
Название: Re: 1.6
Отправлено: napan от Август 20, 2010, 10:18:43 am
Не могу отчет Номенклатуру со сроком годности в группировку объединить....
Вложения:
1509687.dt
Название: Re: 1.6
Отправлено: Amali от Август 20, 2010, 01:17:49 pm
Quote (napan)
Не могу отчет Номенклатуру со сроком годности в группировку объединить....

 Если я правильно поняла, то в отчете надо добавить подчиненную группировку по детальным записям (на закладке "Настройки")

Получится:
 Бодиан Дианы 29.07.2010
 ---Прих-я накл...........
 ---Прих-я накл...........
 ---Прих-я накл...........

Название: Re: 1.6
Отправлено: Zhora_Vlg от Август 20, 2010, 05:11:32 pm
Quote (alice)
Честно говоря, я не понимаю, что имеется ввиду, если по комбинации измерений есть приход - расход, то и кон остаток получается исходя из начального остатка и всех операций.
 Ситуация описанная в сборнике, если судить здраво, возможна только в том случае, если формирование отчета было запущено во время проведения каких-либо массовых операций с БД (некого регламента) и в отчет попали данные незафиксированных транзакций.

 Такое вообще разве возможно?
 Скорее вместо минусовых остатков в отчет выводятся нули.
Название: Re: 1.6
Отправлено: aworld от Август 20, 2010, 09:40:30 pm
Quote
Скорее вместо минусовых остатков в отчет выводятся нули

 пришел к такому же выводу, после долгих попыток смоделировать эту ситуацию)

Добавлено (20.08.2010, 21:40)
---------------------------------------------
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=560073

Название: Re: 1.6
Отправлено: petrov86 от Август 23, 2010, 07:16:46 pm
Quote (Amali)
Quote (napan)Не могу отчет Номенклатуру со сроком годности в группировку объединить.... Если я правильно поняла, то в отчете надо добавить подчиненную группировку по детальным записям (на закладке "Настройки") Получится: Бодиан Дианы 29.07.2010 ---Прих-я накл........... ---Прих-я накл........... ---Прих-я накл...........

 Не понял, что такое подчинённая группировка.
 Я создавал в общем модуле функцию которая складывала два параметра номенклатура и срок годности.
 В скд создавал вычисляемое поле, собственно вызов этой функции.
 Эсли кто понял что такое подчинённая групировка напишите плиз. А то другого способа, как создать функцию в общем модуле не нашёл. А это как то не айс по мойму.
Название: Re: 1.6
Отправлено: SergTH000 от Август 25, 2010, 08:06:09 pm
В принципе задача от решения на 8.1 ничем не отличается. Просмотрел ту ветку форума, мне больше всего понравился принцип решения Tarja: Регистр один - изм: Номернклатура, СрокГодности, ресурсы: Количество, Сумма.
 Приходную делаем конструктором smile В расходной, если в учетной политике разрешено списание в минус, получаем остатки ВСЕ остатки (МоментВремени = Неопределено), если нет, то на момент проведения документа. Списываем в минус с пустой партией, себестоимость, партию и срок годности заполняем после перепроведения всех раходных накладных, которые делали движения с пустой партией.
 Никак не могу разобраться, как последовательность сюда лучше прикрутить: у меня в нее включены только расходные, измерение, связал с реквизитом регистра, все равно туда попадают почему то еще и Приходные sad .
 Отчеты, вроде как в задании)
Вложения:
1.6.dt
Название: Re: 1.6
Отправлено: Zhora_Vlg от Август 26, 2010, 06:18:16 pm
С чего ты
Quote (SergTH000)
все равно туда попадают почему то еще и Приходные

Консоль запросов показывает что в последовательности только Расходные.

Измерение в последовательности не нужно.

Название: Re: 1.6
Отправлено: SergTH000 от Август 26, 2010, 06:56:24 pm
Zhora_Vlg, Черт, не помню что там уже)))Слушай, если решал эту задачу, покажи решение свое, плз. Я сделал измерение, чтоб в последовательность попадали только расходные кот. сделали движения с пустой партией, по идее другие то не надо перепроводить. Когда перепроводим документ с движением по пустой партией он видит все остатки и ориентируется на них. может не догоняю чего wacko нету времени совсем вникать глубоко в эти последовательности)
 Приходные видел когда заходишь в упр. приложении все функции-провдение документов-там последняя закладка!
 Надо ли програмно ее двигать?
Название: Re: 1.6
Отправлено: Amali от Август 27, 2010, 12:59:01 pm
Quote (petrov86)
Не понял, что такое подчинённая группировка.

Отчет для базы 1509687.dt.


Вложения:
8045893.erf
Название: Re: 1.6
Отправлено: User_OKA от Август 28, 2010, 11:56:53 am
Посмотрел все решения.
 Ни у кого не увидел отчета по продажам с учетом срока годности?!
Название: Re: 1.6
Отправлено: SergTH000 от Август 28, 2010, 12:10:29 pm
У меня посмотри, в другой теме 1.6
Название: Re: 1.6
Отправлено: User_OKA от Август 28, 2010, 12:41:50 pm
А разве приходная накладная не должна влиять на последовательность?
Название: Re: 1.6
Отправлено: SergTH000 от Август 28, 2010, 01:48:56 pm
User_OKA, Тут все дело для чего ты используешь последовательность. Моя последовательность для расчета себестоимости, т.е. необходимо перепровести только расходные чтобы ее расчитать. Вот пример расходная списала в минус, себестоимость, срок годности и партия не заполнены. Потом товар оприходовали. Перепроводим расходную, она "видит" уже и следующие приходные и вместо старых своих движений, списывает еще и партию которая пришла позже ее даты. Соответственно, что бы рассчитать себестоимость на данный момент нужно перепровести все расходные, которые сделали движения с пустой партией.
 А вот если пользователь что то изменил задним числом, то тут нужна другая последовательность в нее будут входить и приходные и расходные, которые нужно перепровести начиная с даты самого раннего изменения
Название: Re: 1.6
Отправлено: User_OKA от Август 28, 2010, 01:49:10 pm
По поводу решения
 наверное все таки в РасхНакл должно быть
 |ИТОГИ
 |   МАКСИУМ(Количество),

Если продаем несколько одинаковых товаров с разными сроками годности СуммаПродажи записывается общая для каждого товара?!

Выходит для данной задачи требуется 2 последовательности?

Название: Re: 1.6
Отправлено: SergTH000 от Август 28, 2010, 03:53:14 pm
User_OKA, Да у меня ошибка, конечно итоги по по количеству в расходной надо брать МАКС или МИН.
 
Quote
Если продаем несколько одинаковых товаров с разными сроками годности СуммаПродажи записывается общая для каждого товара?!

 Ну да, для одинаковых товаров, по каждому сроку годности, записываем сумму продажи. Там же отчет в разрезе сроков годности, на иначе как?
 По поводу последовательностей, если неоперативное проведение задним числом - общее требование, то я думаю вообще во всех задачах она нужна. Выходит, что две.
Название: Re: 1.6
Отправлено: petrov86 от Август 30, 2010, 09:18:24 am
Quote (Amali)
Quote (petrov86)Не понял, что такое подчинённая группировка. Отчет для базы 1509687.dt.
 Прикрепления: 8045893.erf(6Kb)

 Понял. Спасибо
Название: Re: 1.6
Отправлено: User67 от Сентябрь 01, 2010, 08:42:42 pm
Доброго времени суток! Подскажите, а нельзя вот так решить: создается еще доп. регистр накопления МинусовыеОстатки, измерение номенклатура, ресурс кол-во. Если разрешена продажа в минус, то расходная делает поступление по этому регистру на не хватающее кол-во. При проведении приходной, она смотрит этот регистр и помимо прихода формирует движение расход по обоим регистрам на перебранное кол-во. По условию задним числом документы не вводятся, так что даже если мы продали без наличия, приход будет более поздней датой. И если мы перепроводим расход, то он не увидит новое поступление.
Название: Re: 1.6
Отправлено: aworld от Сентябрь 01, 2010, 09:55:56 pm
User67, думаю если можно решить с одним регистром, то лучше решать с одним smile
Название: Re: 1.6
Отправлено: ut2k5 от Сентябрь 09, 2010, 03:49:50 pm
pershinsergei, это что такое:
 
Code

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

причем тут проводить нельзя задним числом, если мы хотим записать, наверное помимо анализа даты, надо еще проверить РежимЗаписи?
 видимо вот так:
 

Code

 ....
 Если НачалоДня(ТекущаяДата())>НачалоДня(Дата) и РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
 ...
 КонецЕсли;
 
Название: Re: 1.6
Отправлено: ut2k5 от Сентябрь 13, 2010, 03:40:27 pm
мое решение:
Вложения:
Quest_1_6.dt
Название: Re: 1.6
Отправлено: marku от Сентябрь 17, 2010, 08:20:35 pm
"_"
Название: Re: 1.6
Отправлено: marku от Сентябрь 18, 2010, 01:18:50 am
Вот как я делал

Добавлено (18.09.2010, 01:18)
---------------------------------------------
тут разместил http://forum.chistov.pro/index.php?topic=987.msg3#msg3

Название: Re: 1.6
Отправлено: marku от Сентябрь 18, 2010, 01:16:22 am
Вот мое решение
Вложения:
1.06.dt
Название: Re: 1.6
Отправлено: aworld от Сентябрь 21, 2010, 12:27:32 pm
SergTH000, может быть нужно при проведении приходной накладной двигать границу последовательности, если "до нее" есть минусовые остатки по номенклатуре, присутствующей в самой приходной?
 ведь когда ты списываешь товар в минус, а потом приходуешь его, система не знает что последовательность нарушена
Название: Re: 1.6
Отправлено: Ksenium от Сентябрь 21, 2010, 02:28:55 pm
Всем доброго времени суток!
 ut2k5, просмотрела твое решение. У тебя ошибка. При проведении расходной накладной не делается запись "в минус" в регистре накопления ОстаткиНоменклатуры.
Название: Re: 1.6
Отправлено: Ksenium от Сентябрь 21, 2010, 02:57:38 pm
Выкладываю свое решение. В отличие от предыдущих, в нем чтобы разобраться с записями "в минус" нужно просто перепровести Расходную накладную, которая эти записи и сделала.

Прошу прокомментировать мой вариант решения.

Добавлено (21.09.2010, 14:57)
---------------------------------------------
marku, у тебя ошибка вылетает при проведении Расходной накладной


Вложения:
_1.06.dt
Название: Re: 1.6
Отправлено: SergTH000 от Сентябрь 21, 2010, 04:10:37 pm
aworld, Почему не знает? Знает, когда расходная в минус списала, вот оттуда и надо перепроводить.

Добавлено (21.09.2010, 16:10)
---------------------------------------------
Пока та расходная не закроет партию какую-то и уберется из последовательности

Название: Re: 1.6
Отправлено: aworld от Сентябрь 21, 2010, 04:22:21 pm
SergTH000, может я не правильно понимаю ка работает последовательность , но я так думал :
 с каждым новым проведенным документом граница последовательности сдвигается. Если перепроводим старый документ, граница сдвигается на момент времени этого документа, и в дальнейшем система будет проводить документы с этого момента времени.
 В этой же задаче предпологается что приходная будет создаваться и проводиться после расходной, то есть при проведении такой запоздалой приходной у нее просто граница встанет "правее" расходной, и будет там пока мы не перепроведем расходную.
Название: Re: 1.6
Отправлено: SergTH000 от Сентябрь 21, 2010, 04:33:25 pm
aworld, Приходные не нужны в этой последовательности вообще. Смотри если расходная сделала движение с пустой партией, то она должна попасть в последовательность. Если последующая тоже сделала движение с пустой партией то она тоже должна попасть, но вот границу двигать не должна. То есть в последовательности хранятся все расходные которые сделали движение с пустой партией, а граница должна быть на самой первой из них. Как в программе реализовать это сам пока сомневаюсь, попозже вернусь к этому вопросу, наверное надо все таки програмно ею управлять. Это немного осложнит задачу, но зато приходную то мы конструктором делаем

Добавлено (21.09.2010, 16:29)
---------------------------------------------
Границу можно двигать, а можно не двигать от настрек последовательности зависит

Добавлено (21.09.2010, 16:32)
---------------------------------------------
Если приходная придет после расходной, то при разрешенном списании в минус, расходная "увидит" ее и спишет как надо. Правда получится что сначала списали партию, а потом она пришла, но ведь условие именно такое!

Добавлено (21.09.2010, 16:33)
---------------------------------------------
А когда расходная закроет полностью партию и у нее не будет движений с пустой партией то она не попадает в последовательность.

Название: Re: 1.6
Отправлено: aworld от Сентябрь 21, 2010, 04:36:45 pm
SergTH000, понятно, просто мы говорим о разных вещах. Ты говоришь о последовательности просто как о массиве документов, а я - как о упорядоченной логически последовательности.
 Я думал проверять самую первую расходную с пустой партией и нужной номенклатурой и устанавливать границу на эту расходную.
Название: Re: 1.6
Отправлено: SergTH000 от Сентябрь 21, 2010, 04:49:14 pm
aworld, Хм, ну вот взять например классический вариант: приходные и расходные состовляют последоваетльность. Пользователь что меняет задним числом, граница сдвигается на этот документ. После перепроведения всех приходных и расходных с этого момента мы получим нормальное состояние учета на текущий момент.
 Если рассуждать с такой точки зрения, то при проведении приходной нужно дать понять пользователю что необходимо перепровести расходные с пустой партией, с момента самой ранней. Хотя сама приходная в последовательность все таки не входит
 То есть получается так. При проведении расходных, если они делают движения с пустой партией, просто заполняем ими последовательность. Границу двигаем. А при проведении приходной сдвигаем границу назад на самую раннюю расходную. Что вроде этого =)
Название: Re: 1.6
Отправлено: aworld от Сентябрь 21, 2010, 04:51:16 pm
SergTH000, да)
Название: Re: 1.6
Отправлено: ut2k5 от Сентябрь 22, 2010, 12:16:20 pm
Ksenium, При проведении расходной накладной не делается запись "в минус"
 а зачем?... ведь явно в задаче не сказано об этом, но решается у меня это путем добавления следующего кода после цикла детальной выборки:
 
Code

 Если КоличествоСписать > 0 Тогда
    Движение = Движения.ОстаткиНоменклатуры.Добавить();
    Движение.Период = Дата;
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Номенклатура = Номенклатура;
    Движение.Количество = КоличествоСписать;
    Движение.Сумма = 0;
 КонецЕсли;
 

 просила прокомментировать:
 ...твое решение отлично будет работать на предприятии где малый документооборот, а что делать, если в день будет проходить 1000 расходных, т.о. когда прийдет приходная, тебе прийдется перепроводить 1000 накладных, благо в 8.2 есть множественный выбор, но и это не спасает, потому что перепроводить-то надо только те расходные, которые "ушли в минус"..., так что задача надо бы решить последовательностью...
 однако идеального решения не бывает, и твое имеет место быть...
 ... еще нашел ошибку, где третий отчет "остатки товаров"? smile
Название: Re: 1.6
Отправлено: Ksenium от Сентябрь 27, 2010, 04:10:08 pm
ut2k5, в твоей выгрузке под названием Quest_1_6.dt отсутствует представленный тобой код после цикла детальной выборки. Потому-то мне и было непонятно, как происходит учет "в минус".

Спасибо, что просмотрел мое решение. Верно подмечено, что с большим документооборотом оно нежизнеспособно. Но ведь в задаче ничего не сказано про объемы документации wink

...кстати, про третий отчет "Остатки товаров" там тоже ничего не сказано tongue

Название: Re: 1.6
Отправлено: 1C_CoderVamp от Сентябрь 27, 2010, 06:58:51 pm
Quote (Ksenium)
Но ведь в задаче ничего не сказано про объемы документации

 это нужно учитывать по умолчанию, кстати в задачах действительно многое не сказано, ведь это все уже есть в общих требованиях, очень важно изучить от А до Я список типичных ошибок, выложенный на офиц. сайте 1С, т.к. их в первую очередь и проверяют
Название: Re: 1.6
Отправлено: ut2k5 от Сентябрь 27, 2010, 07:30:10 pm
Ksenium, учет "в минус" - не означает, что товар должен делать отрицательные остатки, достаточно того, что их 0...
 ... кроме того, такой учет необходим только в тех случаях, когда списать нужно прям здесь и сейчас, а завтра прийдет накладная и мы ее проведем задним число, зачастую тот товар который якобы списывается в "минус" на самом деле есть на складе, его просто нет у нас в базе (нет накладной приходной), поэтому представленый мною код может присутствовать, а может и не нужен вовсе, это двоякий взгляд на задачу не меняющий сути..., в любом случаем запись с пустыми ссылками (партия) и минус по ресурсам - ошибочные и лишь временные, вот если бы в задаче было условие, что необходимо знать сколько и какого товара отгрузили в минус, тогда это было бы принципиально...
 ...на счет третьего отчета, у меня сборник за август 2009 года, там три отчета, может по этому я и пристал к тебе с этим отчетом smile
Название: Re: 1.6
Отправлено: InSurgent от Октябрь 02, 2010, 04:47:26 pm
по-моему, правильно
Вложения:
InSurgent-1.6.dt
Название: Re: 1.6
Отправлено: User_OKA от Октябрь 04, 2010, 03:28:59 pm
Не понятно как реализовать:

Приход январь
 10 штук по 1 рублю
 20 штук по 2 рубля

Реализация февраль
 20 штук по 2 рубля
 10 штук по 1 рублю
 5 штук 0 рублей

Приход март (задним числом вводить не можем по условию задачи)
 30 штук по 3 рубля

Получается я должен скорректировать движения февральской реализации,
 теперь с учетом мартовского прихода они должны быть следующими:
 30 штук по 3 рубля
 5 штук по 2 рублю

отсторнировать реализацию и сделать приходником новые движения?

Название: Re: 1.6
Отправлено: ut2k5 от Октябрь 05, 2010, 09:26:23 am
User_OKA, юзай "последовательность", а приходная должна быть задним числом, ужо несколько раз это обсуждалось даже под 8.1 читай полностью эту ветку..., и если хочешь вот тут: http://forum.chistov.pro/index.php?topic=333.msg1#msg1
Название: Re: 1.6
Отправлено: User_OKA от Октябрь 05, 2010, 10:18:56 am
ut2k5
 Если задним числом можно, тогда все намного проще.
 Только ответа на вопрос можно ли задним числом вводить приходную накладную я не нашел.

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

Название: Re: 1.6
Отправлено: SergTH000 от Октябрь 05, 2010, 10:34:09 am
ut2k5, При проведении расходной - получаем остатки на МоментВремени документа с непустым сроком годности, если количество больше делаем списание с пустым сроком.
 Для приходной получаем остатки с пустым сроком годности, если он есть делаем три движения
 Закрываем пустой срок на общее количество такого товара в документе
 Делаем приход товара на сроки, указанные в документе
 Делаем расход товара на сроки, указанные в документе
 Если что то осталось делаем приход.
 Никаких последовательностей не нужно. Я описал ситуацию когда партий товаров нет и списание в минус разрешено.

Добавлено (05.10.2010, 10:34)
---------------------------------------------
User_OKA, Мне задача попалась на экзамене и первым делом препод открыл модуль Приходной, только тогда я сразу понял, что он хотел там увидеть

Название: Re: 1.6
Отправлено: ut2k5 от Октябрь 05, 2010, 11:44:26 am
SergTH000, ты сдавал выездную, преподы всегда лояльнее, нежели удаленно...
 общался со своим знакомым, которому тоже попалась похожая задача, он решал через последовательность, и у него не было ни одной ошибки... по крайней мере в опер учете, он спец еще с прошлого года..., так что я смотрю мнения разделяются до сих пор...
 Уважаемый Павел, помогите нам, пока мы не подрались тута smile

кстати SergTH000, как там экзамен? можно поздравлять?

Название: Re: 1.6
Отправлено: SergTH000 от Октябрь 05, 2010, 04:58:33 pm
ut2k5, Свою слезную историю написал тут http://forum.chistov.pro/index.php?topic=993.msg9#msg9
 Скажи поконкретнее про твое решение, я тоже решал через последовательность и препод не принял решение, ну точнее сказал что так решать плохо
Название: Re: 1.6
Отправлено: User_OKA от Октябрь 05, 2010, 07:39:35 pm
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567334
Название: Re: 1.6
Отправлено: SergTH000 от Октябрь 05, 2010, 11:51:18 pm
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567334
 Во-во..комментарии излишни..
Название: Re: 1.6
Отправлено: ut2k5 от Октябрь 06, 2010, 09:55:14 am
ладненько, соглашусь с "отсторнировать, приход по расх. накл, расход по расх. накл и приход всех остальных", но честно говоря не очень то все красиво получается, в отчетах будут все равно болтаться пустые движения, если не сделать специальное условие, задача не на знание платформы получается, а на умения прикрутить заплатку на дырку smile
 все таки с последовательностью и созданием приходной задним числом все красивей выходит..., но что поделать..., 1с преподы из нас делают зубрилок, а не спецов...., жаль - жаль....
Название: Re: 1.6
Отправлено: User_OKA от Октябрь 06, 2010, 10:04:37 am
Исходя из рекомендаций преподавателя 1С, возник следующий вопрос. Например:

Приход январь
 10 штук по 1 рублю
 20 штук по 2 рубля

Реализация февраль
 20 штук по 2 рубля
 10 штук по 1 рублю
 5 штук 0 рублей

Приход март (задним числом вводить не можем по условию задачи)
 30 штук по 3 рубля

1. Мы должны целиком отсторнировать февральскую реализацию и с учетом мартовского прихода
 они должны быть следующими:
 30 штук по 3 рубля
 5 штук по 2 рублю

2. или мы сторнируем наши 5 штук которые мы списали по 0 стоимости в феврале и с учетом мартовского прихода
 они должны быть следующими:
 5 штук по 3 рубля

?

накидал 2 вариант.


Вложения:
User_OKA_1_06.dt
Название: Re: 1.6
Отправлено: InSurgent от Октябрь 06, 2010, 11:33:56 am
Кто-нибудь мой вариант смотрел ?
Название: Re: 1.6
Отправлено: ut2k5 от Октябрь 06, 2010, 04:31:21 pm
User_OKA,
Quote
Приход март (задним числом вводить не можем по условию задачи)
 30 штук по 3 рубля
, тут немного по другому:
 сторнируешь только в той части, где ушло в минус, т.о.
 1) сторно = Приход 5 штук 0 рублей
 2) приход в этой же части Приход 5 штук по 3 рубля
 3) расход (копия расходной) = Расход 5 штук по 3 рубля
 4) приход остальных позиций = Приход 25 штук по 3 руб.

(2) и (4) можно и вместе, но наверное лучше чтобы у этих записей были разные периоды, типа сторно день реализации
 , а остальной приход на дату приходу...., это потому как я не видел в отчете (в задании) минусовых записей...

Добавлено (06.10.2010, 16:31)
---------------------------------------------
кста родилась еще одна идея, вот только не знаю как реализовать, вообщем идея в том, что бы при приходе лезть в движения расходной и подставлять там сумму себестоимости и партию, тогда запись прихода составит только "приход остальных позиций"

Название: Re: 1.6
Отправлено: hugo от Октябрь 07, 2010, 10:43:54 am
ut2k5,
 
Quote (ut2k5)
сторно = Приход 5 штук 0 рублей

 в данном случае, сторно я понимаю как приход прошлой датой(датой расходной накладной). так?
 у 1)-3) какими будут периоды записей?
 и какой срок годности будет при списании (в расходной) 5 штук по 0 ?
Название: Re: 1.6
Отправлено: SergTH000 от Октябрь 07, 2010, 11:13:29 am
Quote
в данном случае, сторно я понимаю как приход прошлой датой(датой расходной накладной). так?

 Нет, товар пришел тогда, когда он пришел, все датой прихода реальной. В приходе при списании сортируешь как указано в задании по возрастанию. Да, в отчете будут движения с пустым сроком,ну и что хотели то, при списании в минус?
Название: Re: 1.6
Отправлено: User_OKA от Октябрь 07, 2010, 01:13:10 pm
Вот набросал решение

вызывает затруднение отчет продажи
 в разрезе номенклатуры, сроков годности
 с ресурсами Себестоимость, Продажа

кто нибудь сделал?


Вложения:
5309610.dt
Название: Re: 1.6
Отправлено: hugo от Октябрь 07, 2010, 02:42:27 pm
User_OKA,
 тут еще до отчетов надо поковырять, не правильно работает база. тестировал не смотря код
 ситуация:
 прих1 10 100
 прих2 10 100
 реализуем
 расх 25 500
 движения:
 расход 10
 расход 10
 расход 40 (должно быть 25-20=5)

смотрю код

Добавлено (07.10.2010, 14:28)
---------------------------------------------
при выборе таб части в запросе нет ссылки на документ, то есть собираешь таб части не только текущего документа

дальше, допустим, списалось 40. если после это этого списать еще 11 по 550 (на данный момент остатков вообще нет), то выходит ошибка = деление на 0!

дальше, после этих жвижений есть приход на 13 суммой 150.
 движения:
 + ПартияХ 13 150
 - ПартияХ 13 150 (то есть первая строчка полностью затерла вторую)
 и самое интересное:
 - (-40) 0 (ВидДвиженияНакопления.Расход и Сумма=-40) помоему это неправильно.

к сожалению на работе не могу прикрепить дтшник своего решения, если тока на почту отправить, либо вечером выложу

Добавлено (07.10.2010, 14:42)
---------------------------------------------
думаю после этого всем станет ясно принцип решения данной задачи
 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567334

Название: Re: 1.6
Отправлено: User_OKA от Октябрь 07, 2010, 03:24:08 pm
hugo

про ссылку на документ я забыл в запросе условие, параметр определил, а условие не описал

деление на ноль подправил, если остатков нет, то все кидаем на пустую партию

конечно затерла
 был приход
 10 по 100
 10 по 100

затем расход
 25 по 100
 10 по 150

в результате зависло 15 штук

приход
 13 по 150
 тут же
 сторно реализации (можно либо приход на 15 штук, либо расход на -15 штук)
 обычное списание 13 штук
 ну и 2 штук не хватило снова кидаем на пустую партию

Что с отчетом по продажам?


Вложения:
1710342.dt
Название: Re: 1.6
Отправлено: hugo от Октябрь 07, 2010, 04:20:01 pm
User_OKA,
 просто тупо запустил отчет Продажи, прибыль в минусе, директор будет в ярости biggrin

Добавлено (07.10.2010, 16:20)
---------------------------------------------
вроде все норм,

Quote (User_OKA)
сторно реализации (можно либо приход на 15 штук, либо расход на -15 штук)

 все же "расход -15" как то напрягает, но если так можно, я не против.
Название: Re: 1.6
Отправлено: 1C_CoderVamp от Октябрь 08, 2010, 01:28:41 pm
Чет вы, имхо, колесо изобретаете с этой задачей, не усложняйте себе жизнь.
 По поводу сторно: сторно надо делать с тем-же видом движения (и остальным набором параметров соответственно), что и оригинал, только с обратным знаком. Иначе это будет уже не сторно.
Название: Re: 1.6
Отправлено: hugo от Октябрь 08, 2010, 01:41:01 pm
1C_CoderVamp, то есть в приходнике запись сторно будет Приход (-15) так?
Название: Re: 1.6
Отправлено: 1C_CoderVamp от Октябрь 08, 2010, 02:04:58 pm
hugo,
 Суть "сторнирования" заключается в том, чтобы фактически не удаляя запись, свести ее значение к 0.
 К примеру есть поступление на 01.10.2010 - 10 шт:
 1) сторно - тоже самое поступление, только кол-во = -1 * 10 шт., итог:
 Остаток на 01.10.2010 (23.59.59) - 0шт.
 Приход за 01.10.2010 - 0шт.
 Расход за 01.10.2010 - 0шт.

2) тоже самое поступление, только ВидДвижения = Расход, итог:
 Остаток на 01.10.2010 (23.59.59) - 0шт.
 Приход за 01.10.2010 - 10шт.
 Расход за 01.10.2010 - 10шт.

Проще говоря, все зависит от того результата, который требуется добиться.

Название: Re: 1.6
Отправлено: SergTH000 от Октябрь 09, 2010, 10:21:37 pm
utk25 (прости если не правильно по памяти пишу)
 
Quote
кста родилась еще одна идея, вот только не знаю как реализовать, вообщем идея в том, что бы при приходе лезть в движения расходной и подставлять там сумму себестоимости и партию, тогда запись прихода составит только "приход остальных позиций"

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

Добавлено (09.10.2010, 22:21)
---------------------------------------------
Чето сейчас засомневался, на какую дату делать расход, после сторнирования=) скорее действительно на дату расходной.
 Все-таки идея менять движения расходной рискованная, как то сразу задача выделяется из всего списка по опер учету. У меня уже сложилось твердое убеждение, что задачи проверяют одни и те же механизмы и инициатива как правило наказуема=)

Название: Re: 1.6
Отправлено: ut2k5 от Октябрь 11, 2010, 03:40:34 pm
SergTH000, вот поэтому и пушу "не знаю как реализовать", я то знаю, как получить движения (например через менеджер и набор), но вот не знаю, как бы это так чтобы вот так smile короче не правильно это...., это только в расчетных задачах правильно smile но там нету оперативных (быстрых) операций... так то....
 короче, я уже ненавижу эту задачу....
Название: Re: 1.6
Отправлено: User_OKA от Октябрь 11, 2010, 07:30:47 pm
Продажи тоже нужно как-то корректировать. Есть идеи?
Название: Re: 1.6
Отправлено: SergTH000 от Октябрь 12, 2010, 03:42:37 pm
User_OKA, Да также можно сторнировать с пустым сроком (просто перед суммой поставить знак минус) и записывать движение со сроком годности в приходной.
 А вообще забейте на продажи на экзамене в билете их нет в отчете, они нигде не нужны=)
Название: Re: 1.6
Отправлено: 1C_CoderVamp от Октябрь 12, 2010, 05:57:23 pm
Quote (SergTH000)
А вообще забейте на продажи на экзамене в билете их нет в отчете, они нигде не нужны=)

 Абсолютно согласен, не усложняйте себе и другим жизнь. Стремление идеально решить поставленную задачу понятно, но это невозможно, невозможно уже потому, как ставятся условия, плюс временное ограничение (час с хвостиком на раздел). Все равно реальные навыки программирования придут только на практике, а сертификат специалиста - это лишь приятное дополнение, вкусная плюшка так сказать smile
Название: Re: 1.6
Отправлено: Danan от Октябрь 20, 2010, 12:57:17 pm
SergTH000, Допустим уп разрешает продавать товары в минус. Предположим что в расходной указывается 50 ед товара, а по данным учета в наличии есть только 25. То есть 25 должно быть продано как обычно, а 25 в минус? Тогда в чем смысл получать остатки на момент времени который равен неопределено?
Название: Re: 1.6
Отправлено: SergTH000 от Октябрь 20, 2010, 01:48:58 pm
Danan,
 Эту тему надо убить вообще, решение которое я выложил не верное, что я узнал на экзамене=)

А вообще на момент неопределено ты получишь ВСЕ остатки, то есть увидишь если был приход позже момента документа и рассчитаешь себестоимость, но повторюсь не бери это в голову, вот здесь пришли к единому мнению как надо решать задачу
 http://forum.chistov.pro/index.php?topic=987.msg7#msg7

Название: Re: 1.6
Отправлено: ut2k5 от Октябрь 27, 2010, 06:01:29 pm
всем, снова привет, сегодня на экзамене попалась эта задача, решил так как советовал SergTH000...
 результата еще не знаю...., последоавтельность не прикручивал..., так что смотри мой друг...
 правда я млин в приходной в запросе забыл упорядочить по сроку годности, что бы минусовые расходы тоже в соответствии со сроком годности списались..., надеюсь не замЭтят smile ведь в расходной все ок smile
Название: Re: 1.6
Отправлено: sada от Октябрь 31, 2010, 07:11:36 pm
В общем то, как я понял эту задачу, главное реализовать списание себестоимости в том виде, как сказано в условии, а именно: по партиям в зависимости от срока годности, внутри одного срока годности в первую очередь более дорогой.

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

В связи с этим предлагаю добавить в документ «ПриходнаяНакладная» реквизит «Дата поступления». И при каждом поступлении проверять, не продавался ли данный товар, начиная с этой даты до момента текущего поступления, если продавался, то сторнировать все продажи этого товара и формировать новые с учетом этого поступления.

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


Вложения:
1Cv8_sada_1_06.dt
Название: Re: 1.6
Отправлено: ut2k5 от Ноябрь 01, 2010, 10:51:40 am
sada, на экзамене нет условия: "внутри одного срока годности в первую очередь более дорогой", да и вообще нет партий, только срок годности, и отчет вместо партии - расходная накладная...
Название: Re: 1.6
Отправлено: sada от Ноябрь 01, 2010, 11:02:51 am
ut2k5, а как отчет называется на экзамене, тут он ведомость по партиям а там, чтото я не предствляю такой отчет , тоесть нач. остаток по расходной , приход по расходной , расход по расходной, не пониятно цель такого отчета в чем?
 В разрезе расходных надо движения и остаток показать или продажи?
Название: Re: 1.6
Отправлено: ut2k5 от Ноябрь 01, 2010, 11:24:42 am
"движение товаров за период" как то так и он один без продаж, плиз глянь сюда, если есть воемя http://forum.chistov.pro/index.php?topic=1259.msg1#msg1
Название: Re: 1.6
Отправлено: SergTH000 от Ноябрь 01, 2010, 12:58:52 pm
sada, Там просто Товар, СрокГодности - НачОст, Приход, Расход, КонОст. Цель отчета - в самом отчете=)
Название: Re: 1.6
Отправлено: detec от Ноябрь 03, 2010, 05:57:58 pm
Я постарался сделать описанную в задаче модель учёта максимально приближенной к реальной жизни.
 Создал 3 регистра:

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

2-й и 3-й регистр при оперативном проведении вообще не заполняются. Их заполнение предусмотрено стандартной командой перепроводки документов, вызываемой из "Все функции", т.е. когда выполняется неоперативное проведение. При проводке по этим регистрам я всегда контролирую отрицательные остатки, механика списания повторяется во многом типовая, останавливаться на ней не буду. В регистр продаж пишу и себестоимость, поэтому в отчёте не соединяю 2 виртуальные таблицы.

Что касается тезисов в постановке задачи, что ввод документов задним числом не происходит - тут, как мне кажется, то ли недосмотр составителей, то ли сознательная "подножка" для аттестующихся. Очевидно, что приходная накладная проводится неоперативно, дял удобства неоперативного проведения сегодняшней датой я поставил запрет оперативной проводки. Считаю, что в корне ошибочно делать какие-то заумные движения при приходе, сторно всякие и пр. Выравнивание остатков партий и себестоимости должно быть регламентной операцией, пакетным перепроведением базы данных в часы, когда не работают операторы. В противном случае в реальной работе возникнут ожидания на блокировках и тормоза при проведениях.

Файл конфигурации прилагаю.

P.S.
 Посмотрел несколько решений из ветки, видно, что многие тиражируют друг у друга код )) Плагиат - это простительно при подготовке, ну а где же в решениях работа с управляемыми блокировками? В большинстве случаев, когда идёт работа с расчётом себестоимости, без БлокировкаДанных в режиме Исключительный никак не обойтись, ИМХО.


Вложения:
1Cv8_task_1.6.cf
Название: Re: 1.6
Отправлено: sada от Ноябрь 03, 2010, 07:05:40 pm
detec, чтото я не понял, приходная просто приходует, расходная просто списывает, в какой момент списание становится верным?
 Где определяется по каким именно товарам необходимо делать перерасчет списания, где сам перерасчет?
Название: Re: 1.6
Отправлено: InSurgent от Ноябрь 03, 2010, 07:36:53 pm
sada, а про мою реализацию что скажешь ?
 4-ая страница
Название: Re: 1.6
Отправлено: detec от Ноябрь 04, 2010, 10:19:17 am
sada, вы внимательно читали мой пост? У меня выравнивается всё автоматически при неоперативном перепроведении документов. Если точнее, при неоперативной проводке РасходнойНакладной. В этот момент и рассчитывается себестоимость списываемых партий, если документ в принципе можно провести (если более ранней датой был введён под него приход).
Название: Re: 1.6
Отправлено: sada от Ноябрь 04, 2010, 10:55:24 am
Quote (detec)
(если более ранней датой был введён под него приход).

Перепроводить все документы хотите? т.е. двигать все товары в каждой накладной, даже те, по которым с приходами полный порядок?

В условии сказано, что приходы могут вводится после реализаций, и при этом только текущей датой (задим числом вводить нельзя).
 Как реализация учтет такие приходы?

Название: Re: 1.6
Отправлено: detec от Ноябрь 04, 2010, 01:23:20 pm
Да, я считаю, что нужно перепроводить документы, двигающие регистр, если часть из документов вносится неоперативно. Условие про "задним числом вводить нельзя", как я понимаю, означает для аттестующихся, что не нужно использовать последовательность для документов прихода и расхода. В типовых конфигурациях, да и в переписанных под управленческий учёт, вводится дата запрета редактирования для закрытытх периодов. Всё, что сверху этой даты, может сколько угодно перепроводиться, меняться и выравниваться.

Я также отмечу, что нигде в условии задачи явно не запрещено пользоваться перепроводкой документов для расчёта себестоимости и опять же нигде нет в условиях, что расчёт себестоимости должен выполняться только оперативно, путём проводки документов только в оперативном режиме.
 В какой-то из более ранних по номеру задач, кажется 1.03, в документе расхода в явно виде в реквизитах или построчно в табличной части указывается ссылка на партию-приходную накладную. В такой модели учёта действительно, мы можем сначала продать товар в минус, не указав при этом руками партию, а потом, после поступления товара, перепровести расходную накладную. А если у нас сложный алгоритм со допустимыми отрицательными остатками, да ещё и со сроками годности, то без неоперативного внесения приходов мы в реально работающем учёте не обойдёмся. В качестве примера я могу привести своё предприятие, где в полностью самописной управленческой конфигурации отрицательные остатки запрещены всегда и везде, списание партий делается оперативно. Но в конце каждого месяца, на выходных, расходные документы, как минимум, перепроводятся. Количество пользовтаелей - 80-100 одновременно висящих в одной базе.

Название: Re: 1.6
Отправлено: sada от Ноябрь 04, 2010, 02:10:15 pm
detec, т.е. в вашем решении приходы всегда будут вводится перед реализациями, иногда задним числом, а потом вы все реализации перепроводите?
Название: Re: 1.6
Отправлено: detec от Ноябрь 04, 2010, 03:02:39 pm
sada, именно так.

Кстати, в условии задачи ничего про это не пишется, но все пробовали в своих решениях менять табличную часть проведённых документов и потом перепроводить их? А это очень частая практика. Поэтому я против "хитрых" оперативных расчётов себестоимости, только топорная перепроводка базы, где каждый документ делает движения по своему прямому назначению.

Название: Re: 1.6
Отправлено: sada от Ноябрь 04, 2010, 05:18:21 pm
detec, Я считаю это не верно, потому, что в условии сказано четко "Документы задним числом вводить нельзя". И перепроводить все документы реализации, чтобы скорректировать списание одного товара в одном документе, по меньшей мере не оптимально.
Название: Re: 1.6
Отправлено: detec от Ноябрь 04, 2010, 05:43:59 pm
sada, к сожалению, постановка задачи 1.6 в сборнике неполная. Во всяком случае, у нас бы я и коллеги в таком виде не взялись бы дорабатывать столь ответственный механизм как партионный учёт, без дополнительных разъяснений от финдира.

Кстати, у вас есть свежее решение этой задачи? Я скачивал вашу выгрузку с предыдущей страницы - там нет отчёта "Продажи" и исходя из структуры регистра "Продажи" непонятно, как рассчитать прибыль от реализации, если на одну строку номенклатуры вдруг будет списано более одной партии. То, что по слухам на экзамене в этой задаче нет отчёта - это формальность, сегодня нет - завтра ошибку исправят и требование к отчёту появится. А регистр "Продажи" и соответствующий ему отчёт самый важный в этой задаче, с точки зрения учёта.

Название: Re: 1.6
Отправлено: GranatUA от Ноябрь 09, 2010, 05:00:13 pm
Привет, коллеги!
 InSurgent, посмотрел Ваше решение. Списание/оприходование работает корректно, но
 не понятно одно: зачем приходная накладная делает:
 1. приход в соответствии с таб частью документа,
 2. такой же приход, но с пустой партией и себестоимостью расходной накладной
 3. сторнирует 1-й шаг.

Можно же было оставить только 2-й шаг.
 И еще остается нюанс с искажением показателей прибыли, т.к. товар списывается не
 по его реальной цене (указанной в приходной), а по непонятной взятой с потолка.
 В моем тестовом примере был один приход 10 Йогуртов на сумму 100 руб.
 Списал одной расходной 15 шт: списалось 10 шт. на сумму 100 руб. и 5 шт. на сумму 150 руб... wacko откуда товар подорожал сразу втрое не понятно.
 Так что, свой вариант я еще ваяю wink

Название: Re: 1.6
Отправлено: sada от Ноябрь 09, 2010, 05:29:19 pm
detec, на данный момент считаю свое решение вреным, отчет не добавил именно по причине отсутсвия его на экзамене.
Название: Re: 1.6
Отправлено: artkor от Ноябрь 09, 2010, 05:51:11 pm
Товарищи, извиняюсь если повторил чью-то мысль по данной задаче (постов тут много biggrin ).
 имхо сторнировать "расходные" движения со сроками годности, которые больше или равны сроку годности из проводимой партии(прихода) считаю ненужным - поправьте, если ктото думает иначе.

Пример: если по номенклатуре "Товар 1" до определенной даты было "всё ровно" - то есть "сколько купили столько и продали"
 напр. в разное время купили 2шт. со сроком до 01.04.10, 3шт. со сроком до 20.06.10, 1шт. со сроком до 10.08.10,
 после чего также планомерно все 6 штук продали: напр. последняя партия была 01.05.10

Если 20.05.10 поступил "Товар 1" со сроком 01.06.10 - не нужно же сторнировать то что было продано ранее(где срок товара равен 20.06.10 и 10.08.10) и затем перепроводить по цепочке.

Вариант такой: если при продаже остаток внезапно уходит в "минус" - делать движения по расходу остатка, НО с пустым сроком годности. Впоследствии, когда приходит новая партия, проверяем отрицательный остаток с пустым сроком, сторнируем это "вспомогательное" движение и датой расходной накладной записываем уже "нормальное" движение.

Реализовывать пока не "кидался" - возможно кто-то из уважаемых пользователей форума "забракует" данную идею.
 Может кто прокомментирует...

Название: Re: 1.6
Отправлено: GranatUA от Ноябрь 09, 2010, 06:20:07 pm
sada, еще не полностью проанализировал твое решение, но при открытии
 обработок проведения уже бросились в глаза строки:
 1) Движения.ОстаткиНоменклатуры.Записывать =Истина;
 2) Движения.ОстаткиНоменклатуры.Очистить();
 3) Движения.ОстаткиНоменклатуры.Записать();
 .........
 .........
 4) Движения.ОстаткиНоменклатуры.Записать();

Так вот, если вначале мы указываем стр. 1), то запись стр. 4) нам не нужна, т.к. запись и так запишется.
 Потом, стр. 2) лишняя, т.к. запись в регистр происходит с замещением, т.е. все старое затирается.
 Не нашел управляемых блокировок, за которые можно не здать экзамен.
 Прошу воспринимать не как придирки, а как обмен опытом wink

Название: Re: 1.6
Отправлено: sada от Ноябрь 09, 2010, 06:34:38 pm
artkor
 Я считаю что сторнировать нужно только тогда, когда накладная приходит с опозданием, при этом сторнировать нужно движения всех продаж за период с даты (указанной в самой накладной, т.е дата прихода по накладной) и по текущую дату (т.е. по дату от корой мы эту накладную вводим в систему).

Для определения этого периода, я ввел реквизит накладной "ДатаПоступления" - эта та дата, когда накладная должна была прейти, без опозданий, а в стандартный реквизит дата уже указываем ту дату, когда накладная добралась до нас.

Я сторнирую не реализации а только их движения и только по тем товарам, которые в есть в текущей накладной, и при этом были проданы за указанный период.

т.е. не важно какой строк годности, не важно в минус был продан товар или нет, важно то, что если накладная пришла позже того как товар поступил, необходимо сторнировать движения по списанию себестоимости товара который успели продать за этот промежуток времени.

Добавлено (09.11.2010, 18:34)
 ---------------------------------------------
 GranatUA

Quote (sada)
если вначале мы указываем стр. 1), то запись стр. 4) нам не нужна

не факт, что не нужна , про какой модуль речь ?

Quote (sada)
2) лишняя, т.к. запись в регистр происходит с замещением, т.е. все старое затирается

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

Quote (sada)
Не нашел управляемых блокировок

Не помню, ставил блокировки или нет, конечно на экзамене они нужны, но там все однообразно, по этому иногда не ставлю для упрощения :)

Название: Re: 1.6
Отправлено: InSurgent от Ноябрь 09, 2010, 07:56:19 pm
GranatUA, если товар не поступил в организацию, но он продаётся, то нам не известно, ни его себестоимость, ни его срок годности. Поэтому я списываю расходной накладной товар в количестве и сумме его продажи.
 Затем при поступлении товара сначала происходит его оприходование в полном количестве, потом я сторнирую запись с пустыми значениями(срок годности и партия). Из этих записей я беру списываемое количество и сумму продажи. Третий шаг соответственно списание самой номенклатуры, которое должна была совершить расходная накладная. Так как нам известны все данные о продаже, то формируем движение в регистре Продажи.
Название: Re: 1.6
Отправлено: GranatUA от Ноябрь 10, 2010, 10:35:32 am
InSurgent, спасибо за пояснения, интересный подход. Но пугает громоздкость
 реализации этой задачи (не именно Ваше решение, а вообще все, что я успел посмотреть),
 а время на экзамене лимитированно.

sada, если для отладки на толстом клиенте, тогда вполне приемлемо, но на экзамене могут
 придраться, т.к. реализация должна быть ориентирована на тонкий клиент. Кстати, хорошо об
 этом рассказал Фарит Насипов и Дмитрий Гилев в своих бонусных видеокурсах.

Название: Re: 1.6
Отправлено: ut2k5 от Ноябрь 11, 2010, 07:57:26 pm
Внимание всем!!! Эта задача уже сто раз обсуждалась, смотрите посты SergTH000, у меня на экзамене попадалась эта задача, решил как советовал гуру SergTH000..., нареканий по опер учету (кроме "нет отбора в параметрах виртуальной таблицы") не было, поэтому считают решение через сторнирование пустых сроков (партий) и оприходование их же в приходной накладной верным решением, отчета по продажам НЕТ НА ЭКЗАМЕНЕ, все тот же SergTH000 четко описал какой отчет присутствует на экзамене, кстати задача на экзамене немного легче, но зато с явным жестким указанием на то, что "Документы задним числом вводить нельзя", помоему даже перепроводить нельзя, поэтому на экзамене ни разу при отладке не приходилось заходить в старые документы...., так что не нужно изобретать велосипед, у sada, все правильно решено...
 но если кто-то еще не уверовал то вот выкладываю баян, который мелькает тут как минимум третий раз:
 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567334
Название: Re: 1.6
Отправлено: 1C_CoderVamp от Ноябрь 12, 2010, 03:25:11 pm
ut2k5,
 жестко :)
Название: Re: 1.6
Отправлено: InSurgent от Ноябрь 12, 2010, 04:57:22 pm
GranatUA, насчёт громоздкости не знаю. Сегодня попробовал заново её решить по своему методу, уложился в час десять минут вместе с отладкой. Это тебе не 1.49. Главное помнить как её решать smile
Название: Re: 1.6
Отправлено: ut2k5 от Ноябрь 12, 2010, 08:01:09 pm
1C_CoderVamp, а что делать? smile тему пора бы уже прикрыть, а мы ее уже пол-года мусолим smile
Название: Re: 1.6
Отправлено: Boris-Leleko от Декабрь 16, 2010, 02:12:03 pm
Я решил немного извратиться и попробовать обойтись без даты поступления в приходной и вот что получилось...
 Даже если не делать в продажах аналитику по срокам, то получается более сложно чем у Sada.
 Но я все-таки решил сделать как в билете в книжке и добавил сроки в рег продаж.
 Основная заморочь в том что мы должны, после того как сделаем приход, сделать сторно только тех расходов которые сделаны по пустой партии и сроку. Потом как бы заполнить в них правильную партию и срок. Для этого делаем соединение: справа обороты с пустой парией и сроком, а слева ТЧ и обороты по продажам с пустым сроком. ТО что лишнее, то опять записываем с пустыми париями и сроками. Ну и не меньшая заморочь с продажами. Сумму надо распределить по срокам пропорционально количеству. И при этом избежать проблемы бесконечных дробей в результате деления. Алгоритм получился забавный wacko
Вложения:
1.6_.dt
Название: Re: 1.6
Отправлено: Boris-Leleko от Декабрь 16, 2010, 02:28:28 pm
И еще я все таки решил добавить в решение sada аналитику по срокам в продажах. Теперь это похоже на идеальное решение.
 Тот же алгоритм распределения суммы по срокам
Вложения:
3881767.dt
Название: Re: 1.6
Отправлено: AndreiPiter от Декабрь 16, 2010, 07:50:57 pm
мой вариант такой.
 Не смог добится првильного оформления отчёта "Ведомость по партиям", как оформить Номенклатуру и СрокГодности в одну колонку (с названием "Номенклатура")? Пересмотрел все решения, ни в одном решении не нашёл правильно оформленного отчёта.
Вложения:
8659963.dt
Название: Re: 1.6
Отправлено: Boris-Leleko от Декабрь 17, 2010, 03:38:40 pm
Это косяк платформы наверное. В других настройках есть поле реквизиты вместе с владельцем или просто в месте... не помню. Ни то не другое не работает. sad
Название: Re: 1.6
Отправлено: pako_amadi от Декабрь 17, 2010, 10:09:54 pm
Чуть подправил версию sada исправил несколько ошибок
 добавил отчет о продажах
Вложения:
1_6.dt
Название: Re: 1.6
Отправлено: Danan от Декабрь 19, 2010, 11:50:18 am
У меня такой вопрос по этой задаче:
 1)Допустим есть 3 партии товара по 10 ед в каждой. Уп позволяет списывать товары в минус. В расходной хотят списать 50 ед этого товара. Надо списать 30 ед как обычно, а 20 списать в минус? Или все 50 списать в минус?
Название: Re: 1.6
Отправлено: sada от Декабрь 19, 2010, 01:34:38 pm
Danan, Надо списать 30 ед как обычно, а 20 списать в минус.
Название: Re: 1.6
Отправлено: rus от Январь 21, 2011, 07:27:56 am
Мое решение
Вложения:
5466163.dt
Название: Re: 1.6
Отправлено: Danan от Январь 25, 2011, 09:11:15 pm
Мой взгляд на решение такой задачи:
 Три регистра: ОстаткиНоменклатуры, ОтрицательныеОстаткНоменклатуры и Продажи.

Я думаю, что в регистре ОстаткиНоменклатуры лучше хранить данные только по реальному списанию товаров. Вся номенклатура списанная в минус идет в другой регистр остатков. В момент проведения приходной проверяется наличие списанной в минус номенклатуры, в случае ее наличия оформляется поступление и погашение списанной в минус номенклатуры. В качестве примера в моем решении расходная №1 погашается приходной №1, а расходная №2 погашается дальнейшими приходными.

Точного сходства ведомость товаров не имеет, на продажи махнул, потому что тут кто сказал что на экзамене такого отчета не будет и мне стало лень.


Вложения:
Task_1_6..dt
Название: Re: 1.6
Отправлено: Matcoder от Январь 25, 2011, 11:55:06 pm
Danan,
 Гы-гы... а почему нет регистра "Положительные остатки номенклатуры "?
Название: Re: 1.6
Отправлено: Gulf_Stream от Январь 26, 2011, 05:36:26 pm
Задачу пока не решал, как вы думаете, возможен вариант когда приходная накладная изменяет движения расходных накладных (не сторнирует, а именно изменят через НаборДвижений), или лучше так не делать?
Название: Re: 1.6
Отправлено: sada от Январь 26, 2011, 06:55:13 pm
Gulf_Stream,
 Лучше не делать, потому что если приходной накладной изменить движения росходной, то после проведения расходной, движения снова станут кривыми. А в условии сказано что существующие документы могут перепроводится.
Название: Re: 1.6
Отправлено: maxximilisan от Март 16, 2011, 02:59:58 pm
Посмотрел решения - а почему движения не группируются? например было сторнирование и обратно стало такое же движение
 в итоге обороты увеличиваются, что не правильно...
Название: Re: 1.6
Отправлено: Istur от Май 21, 2011, 04:28:50 pm
rus, Твое решение не совсем верно. Движения должны сторнироваться, то есть должно быть не приход 150 Дасцилл синеточечный, а расход -150.

Quote (maxximilisan)
Посмотрел решения - а почему движения не группируются? например было сторнирование и обратно стало такое же движение в итоге обороты увеличиваются, что не правильно...

Если смотрел правильное решение, например у sada, то обороты не увеличиваются. происходит замена одного на другое, например меняется срок годности и партия. Приведи конкретный пример.

pako_amadi, у тебя неверно. В 22.40 расход Big (капилярная) 10 штук со сроком годности до 02.01.2011. В 22.42 зафиксирован приход 30 штук со сроком годности до 17.12.2010 и ты пытаешься поменять в реализации расход 10 штук до 02.01.2011 на 17.12.2010, но при этом сохраняешь приход со сроком до 17.12.2010 полностью, а 10 штук до 02.01.2011 теряешь. Или другими словами у тебя было в начале 30 штук до 17.12.2010 и 10 штук до 02.01.2011. Ты списываешь 10 штук до 17.12.2011 и остается в остатке 30 штук до 17.12.2011. А должно быть на остатке 20 штук до 17.12.2010 и 10 штук до 02.01.2011.

Название: Re: 1.6
Отправлено: Alejandro_m от Май 24, 2011, 12:59:24 am
Какие то получаются не равноценные задачи на сертификации. Одни скучно решать - другие черт ногу сломит. Еще условия недосказанные... Попробовал та - только механизмы списания без продаж и типа учетной политики. С продажами вообще не понятно - как считать прибыль от проданного товара которого еще нет на складе. Какая себестоимость? Или вообще его не считать... По идее хорошо бы в оба регистра Продажи и Остатки завести измерения - типа по честному продаем или то чего нет. Указывать в документе оприходования дату "реального" попадания на склад не стал.
Вложения:
1723264.dt
Название: Re: 1.6
Отправлено: Lukashov_as от Июнь 05, 2011, 10:09:15 pm
вроде даже работает:)
Вложения:
1_6_lukashov.dt
Название: Re: 1.6
Отправлено: ArturLn от Июнь 06, 2011, 03:49:10 am
Пришёл пока к тому, что остатки не стоит списывать в минус, информация о продаже хранится в "Продажи", когда поступает "Приходная" просто сделать сторно и на количество проданного сделать приход и списание, как буд то продажа(без товара) - это как бы заказ с предоплатой, но тогда дата продажи сместится на дату прихода.

 п.с. остаётся вопрос - продажи без поступления надо отображать в отчёте или нет ?
Название: Re: 1.6
Отправлено: Lukashov_as от Июнь 06, 2011, 08:12:20 am
Quote (ArturLn)
п.с. остаётся вопрос - продажи без поступления надо отображать в отчёте или нет ?


 мне думается надо, продажа была - была, значит надо отобразить, только себестоимость будет пока 0, и соответственно люди работающие по этой схеме будут видеть общее количество и сумму продаж а то что себестоимость 0 будет говорить о том что приходы еще не разнесены
Название: Re: 1.6
Отправлено: ArturLn от Июнь 27, 2011, 09:37:04 pm
А вообще надо ли Приходной хоть что нибудь списывать, если можно в минус ? Вот думаю, что действительно - в Приходной нужен реквизит, в котором будет дата РеальногоПоступления товара, потому что именно с неё списываться будет неправильно, даже если товара хватает, то может списаться не того срока годности(пришёл товар позже, но срок годности у него более ранний) и значить с неправильной себестоимостью.
 По этому если можно списывать в минус надо использовать новый алгорит проведения, если низя - то старый. То есть это задача - как бы 2в1 - на новый и старый метод списания с переключением в начале года, и в первом случае Приходная будет аналогом регламентного документа, который списывает себестоимость, только он списывает не за месяц, а по условию - за произвольный период - с момента реального поступления товара(указываемого в документе) до фактического поступления товарного документа.

 п.с. под старым и новым методом списания имеется в виду, что если надо списать сразу и себестоимость - то старый метод, а если только количество - то новый.
Название: Re: 1.6
Отправлено: SergTH000 от Июнь 28, 2011, 11:32:23 am
ArturLn, Перечитай тему, тут уже давно все перетерли..http://forum.chistov.pro/index.php?topic=987.msg11845#msg11845
Название: Re: 1.6
Отправлено: Para_1987 от Июль 04, 2011, 08:30:17 am
Посмотрел вариант решения от Sada, пришел к выводу что вариант решения наиболее верный. Сам так тоже решил biggrin
Название: Re: 1.6
Отправлено: kravius от Июль 08, 2011, 11:29:43 am
А вот и мое решение
Вложения:
1_6_kravius.dt
Название: Re: 1.6
Отправлено: interslaner от Июль 17, 2011, 12:49:10 pm
Мысль такая: Два регистра

 «Остатки»
 - Номенклатура
 - Срок
 - Партия
 = Количество
 = Сумма
 = СуммаВыручка

 «Обороты»
 - Номенклатура
 - Срок
 = Количество
 = Сумма
 = СуммаСеб

 Приходная – безусловно читает «отрицательные» остатки и преобразует их в «положительные»
 Расходная - в зависимости от учетной политики или контролирует, или нет «отрицательные» остатки
 В реализации функциональны две очень похожие ОбработкиПроведения (Приходная/Расходная) – в расходную перенесена процедура от приходной и подкорректирована (синонимы остались от приходной).
Вложения:
V1slan_1.06.dt
Название: Re: 1.6
Отправлено: kow1976 от Июль 18, 2011, 05:00:01 pm
kravius, и interslaner,

 Я понял, что у вас алгоритм работает так
 1. Если в расходе нахватает товара, вы фиксируете нехватку
 2. В приходной накладной понимаете, сколько не хватила товара и до списываете необходимое количество.
 Наверно это не правильно, так как если приходная была первый, то сортировка товара была бы другой. Соответственно порядок списания другой и стоимость списания другая.

 Приведу пример (Списываем по стоимости от большей к меньшей)
 Документ Кол. сумма
 2 июня Прих. нак №1 5шт. 100грн.
 3 июня Прих. нак №2 4шт. 30 грн.
 4 июня Расх нак №1 10шт.
 Стоимость=5*100+4*30=620 грн.
 Нехватка 1шт
 5 июня Прих. нак №3 10шт. 1000 грн.
 По вашему алгоритму стоимость :
 Стоимость=620+1*1000=1620 грн.
 Что неправильно, так как 5 июня Прих. нак №3 только фиксируется факт прихода бумажных документов. А на складе этот товар уже есть, и нельзя не учитывать его стоимость при списании. Соответственно таблица для списания должна иметь вид:
 Прих. нак №3 10шт. 1000 грн
 Прих. нак №1 5шт. 100грн.
 Прих. нак №2 4шт. 30 грн
 Стоимость=10*1000=10 000грн.

 Поэтому нужно сторнировать все движения Расх нак №1 по :
 Прих. нак №1
 Прих. нак №2
 А потом запускать алгоритм списания в Прих. нак №3.
 Данный подход реализован в решении sada
Название: Re: 1.6
Отправлено: interslaner от Июль 18, 2011, 09:41:30 pm
kow1976, Спасибо

 > ... Прих. нак №3 только фиксируется факт прихода бумажных документов. А на складе этот товар уже есть ...
 этот факт для ненаметанного глаза из условия задачи сразу не читается ...

 1. Насколько я понял, сейчас наиболее оптимальным принято решение завести реквизит "ДатаПоступление" (это тоже для новичка не очевидно) и от него сторнировать/списывают ...
 2. С последовательностями не связываются, потому что SergTH000 имеет негативный опыт в этом направлении ...
Название: Re: 1.6
Отправлено: kow1976 от Июль 22, 2011, 11:01:57 am
В решении использую следующий алгоритм
 1. В приходной проверяю необходимость (есть отрицательные остатки) и возможность (хватает прихода в проводимом документе для списания) реализации сторнирования по номенклатуре.
 2. Сторнирую все расходы от даты документа реализации вызвавшего отрицательные остатки до, текущей приходной.
 3. В общем модуле списываю себестоимость и продажи по срокам годности и партиям.
 4. В оборотный регистр продаж записываю приходной или расходной накладной, но только если хватает остатков.
 В остаточный регистр ОстаткиНоменклатуры добавляю ресурс «Продажи» - для получения цен из расходных накладных для расчета выручки по номенклатуре и срокам годности при списании отрицательных остатков.
 Отчет ведомость по партиям как в задании смоделировать, не получиться, так как по условию списание должно быть упорядочено по себестоимости. А в приведенном отчете столбец «Расход» упорядочен по неизвестному принципу.
 Ведомость получается только если включить запрет отрицательных остатков.
 Спасибо за комментарии и оценки
Вложения:
0424164.dt
Название: Re: 1.6
Отправлено: interslaner от Июль 23, 2011, 10:08:43 pm
kow1976,
 Я-то думал идея с «ДатаПоступления» (а у Вас его почему-то нет) определяющая для этой задачи (или я не прав ?).
 А почему бы просто не записать поступление на дату «ДатаПоступления» (отвязать движение от даты документа), а потом перепровести (в приходной накладной) все расходные (взяв их из оборотов регистра остатков), по которым был оборот в расход.?
 Как-то так
 Пока Выборка.Следующий() Цикл
 // перепроводим расходные
 Выборка.Регистратор.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);
 КонецЦикла;
Название: Re: 1.6
Отправлено: kow1976 от Июль 24, 2011, 06:36:20 am
interslaner,

 Пример
 01 .01. 11 Расх нак. 1 В минус 2ед
 01 .02. 11 Расх нак. 2 В минус 3ед(-2-3=-5)
 01 .03. 11 Расх нак. 3 в минус 4ед(-5-4=-9)
 01 .05. 11 прих.нак. в плюс 3ед
 01 .06. 11 прих.нак. в плюс 3ед(3+3=6)
 01 .07. 11 прих.нак. в плюс 3ед (6+3=9) записываем движения на 01 .01. 11 в плюс 9 ед.
 Тогда при перепроведении
 01 .01. 11 Расх нак. 1 В минус 2ед (9-2=5)
 01 .02. 11 Расх нак.2 В минус 3ед (5-3=3)
 И т.д.
 Я думаю, не стоит менять прошлое из будущего.

 Идея с датой остается, только я определяю ее программным образом (определяю дату документа вызвавшего отрицательные остатки). И сторнирую все расходы до текущей даты.
 01 .07. 11 прих. нак. Расход -9ед (-9+9=0)
 Потом списываю, согласно задания.
Название: Re: 1.6
Отправлено: interslaner от Июль 24, 2011, 09:57:16 pm
kow1976,
 1. Алгоритм не запускал. Меня отпугивает навороченность – я бы долго набивал и еще дольше отлаживал.
 2. Идея с расходной в партиях прикольная
 3. Блокировки ?
 4.
 Движения.ОстаткиНоменклатуры.Загрузить(Результат.Выгрузить());
 Движения.ОстаткиНоменклатуры.Записать(ложь);
 Думаю это уже не есть хорошо (хотя можно заменить на добавление по выборке), а вот запросы в цикле имхо - это зло во плоти.

 5. Отстраненный вопрос: А Вы оперативное/неопреративное пытаетесь реализовать – это такие требования для экзамена где-то прописаны (я упустил что-то этот вопрос из виду)?
 6. Я почему-то думаю, что любое решение для этой задачи будет для экзамена нормальным (вплоть до моего первоначального), если выполнить следующие условия:
 - процедура проведения приходной не должна быть пустой (кроме прихода там требуется какая-то логика по обработке отрицательных остатков)
 - не использовать последовательности и не использовать перепроведение расходных (как у меня постом выше), т.к. Белоусов из двух вариантов выбрал сторнирование, плюс такие действия должны выноситься на регламент, о чем в условии задачи не упоминается.
 - суметь объяснить, как понял условие.
 7. Реквизит «ДатаПоступления» сильно упрощает решение и я не вижу у него отрицательных сторон (у товара же должна быть дата фактического появления в организации). Тем более, что он может появиться и на момент, когда расходные не формируют отрицательных остатков, а выправлять по сроку годности я так понял требуется по условию задачи.
Название: Re: 1.6
Отправлено: kow1976 от Июль 25, 2011, 02:50:19 am
На экзамене конечно лучше решать наиболее коротким и эффективным способом, но хорошо когда есть понимания достоинств и недостатков решения.
 Метод
 Движения.ОстаткиНоменклатуры.Загрузить(Результат.Выгрузить());
 Движения.ОстаткиНоменклатуры.Записать(ложь);
 Применяю, чтоб уменьшить текст программы и время набора. записывать движения по частям действительно не хорошо(снимут балл)

 При оперативном проведении остатки надо брать из текущихитогов на 3999г (неопределенно)
 При не оперативном МоментВремени()
 «Если при проведении документа используются каким-то образом данные, считываемые из регистров, обязательно требуется предусмотреть получение таких данных на момент проведения документа -1 балл»

 Запрос в цикле это действительно большое несчастье в решении (могут не засчитать все решение)

 Реквизит ДатаПоступления имеет свои недостатки.
 1 Сторнирует всю номенклатуру из дока в независимости есть отрицательные остатки или нет.
 2 От сторнированные могут быть еще раз от сторнированы в следующем по оси времени документе, что увеличивает количество записей в прогрессии.
 3. Нужно знать дату поступления товара(Найти в списке расходных нужную дату).
 По, этому в цикле я обрабатываю каждую номенклатуру. У каждой номенклатурной позиции будет своя ДатаПоступления. Сторнироваться будет только номенклатура с отрицательным остатком.
 Может быть передать в параметре массив дат ?
Название: Re: 1.6
Отправлено: DoctorRoza от Июль 25, 2011, 08:14:40 pm
kow1976,
 Очередной раз убеждаюсь, что Вы сами усложняете себе решение! Не подумайте плохого, но Ваше решение, возможно, взятое из реальной практики, к экзамену по спецу применимо отчасти. Или Вы ищете свое решение, отличное от изложенного на сайте, но насколько оно состоятельно!? Это мое мнение, основанное на следующих аргументах:
 1. Расходная .. в обработке проведения необходимо всего лишь получить остатки по товару и, в зависимости от учетной политики, осуществить проведение ..
 Скажите, для решения этого пункта задачи использование общего модуля, в Вашем случае, оправдано? Зачем вот это .. ?
 ////////////////////////
 ПроведениеДокументов.Проведение(МенеджерВТ,Движения,Ссылка,Отказ,ОперативноеПроведение);
 ////////////////////////
 1.1. соглашусь с товарищем interslaner насчет оперативного проведения .. в задаче про реализацию опер. проведения ничего не говориться .. ну зачем лишнее .. ?
 //////////////////////////////
 ОперативноеПроведение=Режим=РежимПроведенияДокумента.Оперативный;
 /////////////////////////////
 На решение это не повлияет, но без этого можно и обойтись!
 1.2. СписокНоменклатуры.Итог("Сумма"); - это видимо оЧепятка .. )))
 2. Регистры накопления .. в каком то из регистров ресурс Продажи лишний .. а где именно, мыслю в Остатках .. Чтобы получить обороты, получается их можно взять из Остатков .. тогда зачем Продажи ..!?
 3. Приходная .. на скриншоте 1 я получил, что списание производится не верно .. суммируете товар, а ведь себестоимость у прихода разная ..
 ////////////////////////
 Получил в коде ..
 Результат=Запрос.Выполнить();
          Движения.ОстаткиНоменклатуры.Загрузить(Результат.Выгрузить());
          Движения.ОстаткиНоменклатуры.Записать(ложь);
          
          Если не Результат.Пустой() тогда <- сюда так и не зашел
             ПроведениеДокументов.Проведение(МенеджерВТ,Движения,Ссылка,Отказ,ОперативноеПроведение);
          Конецесли;
 ////////////////////////////
 ну а скриншот 2 .. выдал только приход, а ведь этот товар должен был быть сразу списан!
 ///////////////////
 Конечно, запросы в цикле .. не айс!
 4. Считаю, что применение дополнительного реквизита ДатаПоступления, предложенный товарищем Sada, пока, наилучший вариант (может кто -нибудь придумает что то лучше!) и Ваши доводы (недостатки) можно парировать:
 1) Если заполнен реквизит ДатаПост. значит отрицательные остатки есть и только тогда нужно осуществлять сторнирование .. добавленные движения все равно уйдут в 0;
 2) Новый записи в регистры осуществляются только на основании текущего документа и вероятность коллизий за конкуренцию с другими документами .. мыслю .. маловероятна;
 3) А вот дату - это, полностью согласен, надо еще поискать, как тут быть .. надо думать! )))))
 Все сказанное выше, мое мнение, не подумайте плохого .. Где ошибаюсь .. поправьте! Но все равно считаю - решение сложное!
Вложения:
s0020053.jpg
s0852326.jpg
Название: Re: 1.6
Отправлено: kow1976 от Июль 26, 2011, 06:29:52 am
Большое спасибо за комментарий и анализ.
 
Quote (DoctorRoza)
Скажите, для решения этого пункта задачи использование общего модуля, в Вашем случае, оправдано? Зачем вот это .. ?
 ////////////////////////
 ПроведениеДокументов.Проведение(МенеджерВТ,Движения,Ссылка,Отказ,ОперативноеПроведение);


 Учитываю случай когда товара хватило на расходах и он корректно списался расх №1 и№2 на скрине

 
Quote (DoctorRoza)
в задаче про реализацию опер. проведения ничего не говориться .. ну зачем лишнее .. ?

 29.8.11 проводим расход
 Если на МоментВремени()
 Система возьмет итоги на 31.07.11 и добавит из физической таблицы все записи за месяц. Их может быть тысячи. Скорость проведения будет зависеть от количества записей. Зачем это делать, если есть уже посчитанные текущие итоги.

 
Quote (DoctorRoza)
Регистры накопления .. в каком то из регистров ресурс Продажи лишний .. а где именно, мыслю в Остатках .. Чтобы получить обороты, получается их можно взять из Остатков .. тогда зачем Продажи ..!?


 В остатках ресурс продажи использую для восстановления информации по ценам продаж (Разное количество одного и того же товара продано по разным ценам). Цены нужны для распределения выручки по срокам годности в оборотном регистре. Сразу распределить невозможно, если есть отрицательные продажи.
 В оборотном регистре продажи ресурс продажи отражает выручку по номенклатуре и сроку годности.
 Но это нужно, только если на экзамене нужен отчет по продажам. В том виде как на рисунке в книге. На экзамене вроде одна ведомость, поэтому задача сильно упроститься. Одна треть кода отвалиться и вполне можно успеть за час двадцать решить задачу.

 
Quote (DoctorRoza)
Приходная .. на скриншоте 1 я получил, что списание производится не верно .. суммируете товар, а ведь себестоимость у прихода разная ..

 По алгоритму сторнируем все отрицательные остатки
 На остатках после сторно
 10.08.11 100ед на 10 000грн
 12.08.11 1ед на 30грн.
 Поэтому 11*100=1100грн.
 А по 30грн. спишется 101 ед согласно условия задачи.
 (если я правильно понял проблему)

 
Quote
ну а скриншот 2 .. выдал только приход, а ведь этот товар должен был быть сразу списан!


 Специально так сделано зачем списывать если товара не хватает. Будут идти приходы до тех пор, пока не хватит для списания
 
Quote
1) Если заполнен реквизит ДатаПост. значит отрицательные остатки есть и только тогда нужно осуществлять сторнирование .. добавленные движения все равно уйдут в 0;
 2) Новый записи в регистры осуществляются только на основании текущего документа и вероятность коллизий за конкуренцию с другими документами .. мыслю .. маловероятна;


 Коллизий, конечно, может и не быть, но работать пользователю будет очень тяжко.
 Можно представить ситуацию приходуется 10 номенклатурных(бумажный документ один) позиций в конце месяца, отрицательные остатки только по одной и то в начале месяца. От сторнируются и оприходуются вся номенклатура за весь месяц. А хуже всего то, что в приходной накладной может опять не хватить товара. Списание будет не завершено и далеко не очевидно, какую дату, для какой номенклатурной позиции ставить в следующий раз. База будет разрастаться с огромной скоростью.
 Я хотел вначале использовать ссылку на документ расх. Нак. в место даты поступления, но это не решает проблемы
Вложения:
s2279431.jpg
Название: Re: 1.6
Отправлено: DoctorRoza от Июль 26, 2011, 08:12:30 pm
Quote (kow1976)
Специально так сделано зачем списывать если товара не хватает. Будут идти приходы до тех пор, пока не хватит для списания

 А вот это странно .. Получается, что у Вас в системе будут отрицательные остатки и, в то же время, будет присутствовать товар!?

 
Quote (kow1976)
На остатках после сторно
 10.08.11 100ед на 10 000грн
 12.08.11 1ед на 30грн.
 Поэтому 11*100=1100грн.
 А по 30грн. спишется 101 ед согласно условия задачи.
 (если я правильно понял проблему)

 ///////////////////////////////
 я понял иначе
 10.08.11 г. 100 ед. по 10000 грн.
 11.08.11 г. 1 ед. по 30 грн.
 /////////////////////////////////////
 12.08.11 г. списываем 101, движения будут
 -100 по 10000
 -1 по 30 .. в условиях задачи сказано, что списание идет по партиям ..
Название: Re: 1.6
Отправлено: kow1976 от Июль 26, 2011, 08:26:09 pm
Да отрицательные пока не будет возможности их закрыть. При наличии ДатыПоступления все доже самое только решает пользователь когда сторнировать.

 По партиям от срока годности
 Нет откуда сто нет такого расхода
 Расход 11ед
Название: Re: 1.6
Отправлено: Kolobrod от Июль 29, 2011, 08:43:40 pm
Решал данную задачу на экзамене 2 билет.Задача несколько упрощена.Без регистра продаж и учетной политики, остальное тоже самое.Сделал обычное списание по срокам годности ,если остался остаток то в минус без себестоимости и срока годности.В отчете просто видим минусы.Погашения отриц.остатков не делал. Экзаменатор ничего не сказал и замечаний по задаче не было.Нужно ли морочиться с приходной?
Название: Re: 1.6
Отправлено: mavlad от Август 26, 2011, 09:50:47 am
А у моего возникли:
 по типа решения Sada минус партии - решение не верное, результат
 "проверка проданного "В минус" товара сделана неверно, не учитываются сроки годности и количество товара в приходной накладной"
 Итог - оценка 2 (еще по БУ ошибка с балансовым признаковым РБ и УФ с картинкой)

 проверил в задачнике есть условие "Запрет продажи товара с «отрицательными остатками» или разрешение определяется учетной политикой организации, которая может меняться только в начале года." -- в билете такого не было...
Название: Re: 1.6
Отправлено: Toxicoff от Сентябрь 08, 2011, 09:54:56 pm
Покритикуйте плз, сделал по своему, партии списываются при оприходовании, никаких дат нету...
Название: Re: 1.6
Отправлено: Gyd от Сентябрь 09, 2011, 08:54:49 am
Quote (Toxicoff)
Покритикуйте плз, сделал по своему, партии списываются при оприходовании, никаких дат нету.

 А где ваше решение?
Название: Re: 1.6
Отправлено: DoctorRoza от Сентябрь 09, 2011, 06:30:59 pm
Как в фильме.
 -Суслика видишь?
 -Нет
 -А он там есть .. smile
Название: Re: 1.6
Отправлено: Toxicoff от Сентябрь 11, 2011, 11:15:06 pm
я балбес) не прикрепил smile
Вложения:
toxicoff_1.6.dt
Название: Re: 1.6
Отправлено: bonig от Сентябрь 30, 2011, 03:04:16 pm
Toxicoff, подход интересный - приходная определяет остатки с пустыми партиями, списывает их и записывает движения с заполненными партиями. Вот только прокатит ли это на экзамене, непонятно. Кто бы заценил....
 Есть описки ( движение приход в списании). Если на пустой базе попытаться провести расходную - получим деление на ноль (это серьезно).

 В моем решении используется дата поступления в приходной (как у многих). Но дополнительно в расходной может быть установлен (при отр. остатках) реквизит "Перепроведение". Собственно говоря, на этом можно было бы и закончить, так как в условии прямо сказано, что можно открыть документ и перепровести. То есть, после каждого запоздавшего прихода перепроводим документы с этой галочкой и все.
 Если будет время на экзамене (шутка), то добавлю маленькую процедурку перепроведения.
 Вобщем, получилось компактно. Это решение для таких тугодумов как я, имеющих привычку зависать над клавиатурой biggrin
Вложения:
1_06_bonig.dt
Название: Re: 1.6
Отправлено: facedancer от Октябрь 05, 2011, 01:20:01 pm
Мой вариант решения: в приходную добавляем реквизит «Дата поступления», пишем подписку на событие ОбработкаПроведения, которая (если дата поступления отличается от даты ввода документа) ищет все расходные между датой поступления и моментом времени с такой же номенклатурой и просто их перепроводит.

 Прокатит ли такой вариант на экзамене? Лично мне он кажется наиболее простым и логичным, т.к. перепроводятся только те документы, которые нужно, и не образуется бардака в движениях.
Вложения:
facedancer_1-6.dt
Название: Re: 1.6
Отправлено: SUBALady от Октябрь 08, 2011, 09:06:05 pm
Мое решение второго билета...
 Задача 1.6 решена до конца, сдавала в УЦ№1 30.09.11...получила ХОР, но потому что не решила последнюю, на упр. формы...
 А так замечаний ни одного не было...
Вложения:
7674896.dt
Название: Re: 1.6
Отправлено: Toxicoff от Октябрь 09, 2011, 01:09:54 am
bonig,
 вообще тут ссылочка где то болтается, где преподаватель из 1с на форуме пишет, что необходимо сторнировать старый документ в момент проведения приходной... прочел -сделал так)

 + SUBAlady тоже так сделала)

 Поздравляю)
Название: Re: 1.6
Отправлено: cheetah от Октябрь 11, 2011, 12:04:58 pm
SUBALady, спасибо!
Название: Re: 1.6
Отправлено: par_62 от Октябрь 15, 2011, 08:04:21 pm
Долго думал родил только это.
 Прошу глянуть.
 Если просто сторнировать -куча проблем,Например сказано что документ может перепроводится
Вложения:
_2.dt
Название: Re: 1.6
Отправлено: fancy от Октябрь 19, 2011, 09:14:18 am
Посмотрел базу SUBAlady касательно задчи оперативного учета - попробовал сначала провести документ расходная накладная от 10.01 а потом уже провел приходную от 05.01 в итоге движения расходной не сторнировались, документ приходная просто провелся в обычном режиме -считаю поставленная задача не реализована.
 Есть видео по решению этой задачи на сайте http://see1c.ru - там в момент проведения приходного документа происходит сторнирование всех "расходных" записей с момента Дата поступления товара (указывается в приходной) по момент времени Приходной накладной и дальнейшее списание товаров уже с учетом введеного документ Поступления (фактически перепроведение тех расходных документов, введеных в этот интервал времени)
Название: Re: 1.6
Отправлено: chilli от Октябрь 25, 2011, 12:41:47 am
fancy,
Quote (fancy)
Есть видео по решению этой задачи на сайте http://see1c.ru

 если не влом, кинь в меня ссылочкой на видео.

 вот моё скромное творчество...
Вложения:
chili_1_6.dt
Название: Re: 1.6
Отправлено: bonig от Октябрь 25, 2011, 12:53:25 pm
par_62, очень сложное решение. Насколько я понял, вы попытались реализовать решение в условиях оперативного проведения и перепроведения. Однако, в задаче не сказано, что документы должны перепроводиться оперативно.
 Здесь на форуме неоднократно отмечалось, что на экзамене оперативное проведение не проверяется. Я думаю, чтобы не порождать тупиковых ситуаций.
 Возьмем цепочку: приход, расход, оперативное перепроведение прихода. В результате время прихода сдвигается и на завтра невозможно перепровести расход (при запрете отрицательных остатков). Это касается и вашего решения, и почти всех на этом форуме. И не исправляется ничем, только ручным вмешательством. Интересно, что это касается и примера решения от компании 1С. В нем нет никаких Очистить(), Записывать(), только МоментВремени().

 Мелочи, которые могут испортить оценку на экзамене. Бросается в глаза транзакция внутри обработки проведения. Но обработка проведения сама по себе запускает транзакцию. Перед функцией Записать() совсем необязательно устанавливать флаг Записывать. Читается набор движений, а потом очищается. Но ведь он и так изначально пустой.
Название: Re: 1.6
Отправлено: van_za от Октябрь 29, 2011, 08:09:46 pm
спасибо SUBAlady !!!!
 wink
Название: Re: 1.6
Отправлено: gosn1ck от Ноябрь 23, 2011, 03:51:25 pm
SUBALady, спасибо за решение, но при сторнировании в приходной накладной при движении в "+" надо убрать партию и срок годности, а то регистр в 0 не выводится
Название: Re: 1.6
Отправлено: gosn1ck от Ноябрь 23, 2011, 06:32:29 pm
и кстати почему большинство засовывает новый ресурс себестоимости в регистр продажи?
Вложения:
gosn1ck_1-06.dt
Название: Re: 1.6
Отправлено: kol_118 от Декабрь 02, 2011, 07:20:44 pm
мой вариант решения
Вложения:
kol118_task_1_6.dt
Название: Re: 1.6
Отправлено: scorp7mix от Декабрь 12, 2011, 08:16:04 pm
посмотрите плиз мою..

 
Quote (gosn1ck)
и кстати почему большинство засовывает новый ресурс себестоимости в регистр продажи?

 чтобы проще строить отчет, вроде как..
Вложения:
scorp7mix_1_6.dt
Название: Re: 1.6
Отправлено: gavrikprog от Декабрь 21, 2011, 01:45:32 pm
удалить
Название: Re: 1.6
Отправлено: par_62 от Январь 11, 2012, 08:05:42 pm
Учел замечания по производительности.Решил решить по новой.Думаю что "изюминка " этой задачи в том,что указывать дату прихода как раз не надо(где то здесь уже на экзамене упоминали сто это неверно).Зная приколы составителей и то что указывает Белоусов о том что реальная жизнь это одно, а экзамен другое,Почему то вылилось такое решение.
 Основное чего не увидел у многих здесь в модуле Приходной в запросе где остатки с пустыми сроками годности являются как
 бы табличной частью а данные документа остатками.
 Вобщем гляньте - буду рад критике.
 Задача в составе 2 билета
Вложения:
7833401.dt
Название: Re: 1.6
Отправлено: tan1c от Январь 18, 2012, 09:13:42 pm
После долгих размышлений biggrin , пришел к выводу, что факт запрета или разрешения продаж в минус, не влияет на логику работы ( кроме очевидного, не учитывать минусы при проведении расходной). Смысла в сторнировании тоже не вижу. Если можно продавать в минус, продаем без контроля, недостача на пустую партию и срок. При проведении приходной у которой дата регистрации больше даты прихода, приходуем по дате прихода, выбираем все расходные за данный интервал и данной номенклатурой и последовательно перепроводим. Так как отчета по продажам с учетом срока годности вроде нет, то оборотный регистр (изм.номенклатура, ресурсы-кол и сум), все равно в расходной нет информ. о сроках годности (что по жизни глупо biggrin (на складе 100 просроченного кефира, а в учете все свежее) ), то при любом расчете возможны погрешности. Если отчет понадобится, то пусть все расчеты будут там biggrin . Потестил вроде все сходится. Непонятно почему все против использования последовательности, удобный механизм, тем более авт. перемещение границы можно отключить, и имеем таблицу где необходимые нам ссылки на расходные, упорядоченные по оси времени причем в разрезе номенклатуры. Сам правда вытянул эти ссылки из регистра biggrin . P.S. Здесь на сайте интерес волнами, первые три прошли :D, причем сортировка по убыванию biggrin .
Вложения:
1.6.dt
Название: Re: 1.6
Отправлено: SergTH000 от Январь 20, 2012, 04:24:53 pm
tan1c,
Quote
Смысла в сторнировании тоже не вижу

 Ну удачи тебе защитить решение...xD
 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567334
Название: Re: 1.6
Отправлено: tan1c от Январь 22, 2012, 08:15:53 pm
Quote (SergTH000)
Ну удачи тебе защитить решение...xD
 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567334


 Мнение Павла Белоусова от 05.10.2010 могло изменится biggrin
 По крайней мере на разных его курсах всего через месяц, по некоторым вопросам были разные варианты. biggrin
 Более того, он часто сам говорил, что многие вещи можно реализовывать по разному, главное потом объяснить почему именно так. biggrin
 Например, (это я от себя) в проведении приходной, можно заполнить из табличной части (так быстрее на экзамене biggrin ), а можно запросом сгруппировать, отсечь услуги. За первое решение можно сказать, что оно лучше обеспечивает синхронизацию данных документа и регистра, и если вдруг happy , понадобиться информация о всех(не сгруппированных записях) , то их можно получить из регистра не просматривая все документы. А за второе, что сгруппированные записи уменьшают объем и время обработки, а информация о дублях несущественна. biggrin
 А потом, мы не вводим документ задним числом, приходная фиксируется датой ввода (требование задачи выполнено), а запись в регистре делается на дату поступления, как раз тот случай когда дата документа и записи в регистре отличаются. biggrin

Добавлено (22.01.2012, 20:02)
---------------------------------------------
Кстати как при сторнировании быть в таком случае. Минус в декабре. Частичный Приход по нему в январе след. года.
 Политика - в прошлом году отрицательные остатки разрешены, в новом запрещены. Итог - приходная не проводится. cry

Добавлено (22.01.2012, 20:15)
---------------------------------------------
Также при таком сторнировании (сторнируем расходные датой приходной и расходуем тоже на её момент времени), вся месячная отчетность кривая (если смещение в следующий месяц).

Название: Re: 1.6
Отправлено: kow1976 от Январь 23, 2012, 12:27:33 am
tan1c,
 В вашем решении есть одно слабое место. Это то, что вы перепроводите все документы в цикле. А это запросы транзакции блокировки. (в табличной части яблоко в минусе а перепроводить будете всю табличную часть, а там товара может быть не мало )

 Получите все данные в одном запросе отсортируйте их и спишите за один раз.
Название: Re: 1.6
Отправлено: tan1c от Январь 23, 2012, 09:46:07 pm
Quote (kow1976)
tan1c,
 В вашем решении есть одно слабое место. Это то, что вы перепроводите все документы в цикле. А это запросы транзакции блокировки. (в табличной части яблоко в минусе а перепроводить будете всю табличную часть, а там товара может быть не мало )

 Получите все данные в одном запросе отсортируйте их и спишите за один раз.


 Спасибо, что посмотрели решение. biggrin
 Но вопрос, не в том как реализовать, а в логике решения. Можно старые документы не трогать. А работать только с наборами записей регистра, в качестве регистратора брать приходную.
 Вопрос в какие даты использовать.
 1) Приход внести на дату приходной накладной или на дату поступления товара (реквизит в котором фиксируется реальная дата прихода товара).
 2)Сторнировать и вводить новые записи по списанию датами расходных, или тоже датой приходной.
 Если использовать везде дату приходной накладной получается полный абсурд biggrin .
 По жизни за такую автоматизацию по головке не погладят.

 Использовал перепроведение для упрощения, основное, что все даты брал по реальным движениям товара. Неважно, что информация о них поступала позже.
Название: Re: 1.6
Отправлено: kow1976 от Январь 23, 2012, 10:07:47 pm
На мой взгляд, можно обойтись и без даты прихода
 1.   Получаем всю номенклатуру ,по которой есть отрицательные остатки
 2.   Получаем все движения этой номенклатуры от даты возникновения отрицательных остатков до даты вводимой приходной накладной
 3.   Сторнируем все движения по полученной номенклатуре (приводим учет в состояние до возникновения отрицательных остатков на дату приходной накладной)
 4.   Списываем согласно заданию по стандартной процедуре.

 При перепроведении мы теряем информацию о том когда и какие были отрицательные остатки.
Название: Re: 1.6
Отправлено: tan1c от Январь 23, 2012, 10:55:31 pm
Quote (kow1976)
На мой взгляд, можно обойтись и без даты прихода

 дело же не только в отрицательных остатках.
 Дело в том что расчет себестоимости и в тех накладных, где хватило товара, рассчитан неверно.

 И если сторнировать на дату приходной (дату ввода приходной), то возникают уже описанные мною выше проблемы перехода декабрь - январь, если меняется политика по отрицательным остаткам.

 А смысл информации о неправильно проведенной расходной, которая искажает реальное положение дел?
Название: Re: 1.6
Отправлено: kow1976 от Январь 23, 2012, 11:20:38 pm
Quote (tan1c)
Дело в том что расчет себестоимости и в тех накладных, где хватило товара, рассчитан неверно.

 Приведите пример?
 
Quote (tan1c)
А смысл информации о неправильно проведенной расходной, которая искажает реальное положение дел?

 Вы оперируете показателем Дата поступления в задаче нет такого показателя. За то есть факт отгрузки в минус. И это не неправильные накладные, а реальное положение учета на заданную дату.
Название: Re: 1.6
Отправлено: tan1c от Январь 23, 2012, 11:33:21 pm
Есть реальность biggrin . Пришло 2 партии одного товара по разной себестоимости и сроками годности.Из за того, что одну накладную потеряли (завалилась biggrin ). В учете списывали (могли списывать, как повезет), не по правилам учетной политики, пока даже не идет речь о минусах, товара полно. Месяц закрыли барыши подсчитали, премии раздали biggrin . в следующем месяце нашли старую накладную, а там себестоимость в разы выше или ниже (для образности), и срок годности меньше. А на складе люди работали как часы, т.е. действовали в соответствии политикой партии, сначала отгружали с меньшим сроком годности, а при одинаковых сроках-по большей себестоимости. Еще хуже если переход на конец года... А минусы, они только усугубляют, ведь у них себестоимость 0.
Название: Re: 1.6
Отправлено: kow1976 от Январь 24, 2012, 06:08:41 am
Не вижу проблемы
 01.01
 1 Сторнируем все движения по номенклатуре из наклад до даты накладной
 2. Оформляем поступление 01.01
 3. Списываем все еще раз 01.01. (приводим состояние учет к его фактическому положению).

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

 
Quote (tan1c)
Месяц закрыли барыши подсчитали, премии раздали

 А инвентаризацию в конце месяца проводить не надо? Как это получили премия, если у вас на остатках одно а в базе другое. Тут не премии а трудовые надо выдавать.
Название: Re: 1.6
Отправлено: tan1c от Январь 24, 2012, 02:38:17 pm
Quote (kow1976)
Не вижу проблемы
 01.01
 1 Сторнируем все движения по номенклатуре из наклад до даты накладной
 2. Оформляем поступление 01.01
 3. Списываем все еще раз 01.01. (приводим состояние учет к его фактическому положению).


 1.Если не использовать дату фактического прихода, придется сторнировать за все предыдущие 20 лет, сотни тысяч позиций... biggrin (использование этой даты существенно ограничит это сторнирование )

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

 ИМХО Если так важны накосяченные накладные, сохраните базу на этот момент, а рабочую следует привести в "рабочее" состояние. Цель учета не в накоплении ошибок, а в их отсутствии, учет должен соответствовать реальному положению дел.
 А факт, что накладная была введена позже итак сохраняется в базе.

Добавлено (24.01.2012, 14:38)
---------------------------------------------
P.S. Вообще смысл слова сторнировать - отменить какую-то операцию, причем остается информация какую именно (дата прежней операции и т.д.). А при отмене нескольких разных операций (разные даты) , одной (с одной датой) , это уже не сторнирование, а произвольное изменение в учете, причем ИМХО ничем не обоснованное.

Название: Re: 1.6
Отправлено: kow1976 от Январь 24, 2012, 07:28:03 pm
Давайте рассуждать так( по задаче)
 Остатки по номенклатуре яблоко ушли в минус
 Остатки по номенклатуре груша остались в плюсе(себестоимость рассчитана)

 Приход
 Яблоко и груша.

 Так вот по яблоку проводим сторнирование и расчет себестоимости, а по груше нет (она пришла сегодня датой накладной).
 Причем процесс сторнирования и восстановления стоимости нужно начинать если прихода по яблоку больше всего расхода.

 Если есть «Завалящая накладная» она вводится датой поступления (это пользовательская проблема) и нужно осуществлять перепроведение в штатном режиме.

 Можно конечно добавить дату поступления в шапку, можно в табличную часть каждой номенклатурной позиции. Но этого в ТЗ нет. Это самодеятельность.

 Вы в своем решение продублировали штатную процедуру восстановление последовательности.
Название: Re: 1.6
Отправлено: tan1c от Январь 24, 2012, 11:30:11 pm
Идея добавить в шапку реквизит "реальная дата прихода", не моя, но мне нравится biggrin . Она есть в большинстве решений данной задачи. И запрета на ее добавление в ТЗ нет. Там говорится, как я понимаю, о дате приходной, стандартном реквизите документа (фраза -документы задним числом не вводятся).
 Также в ТЗ указана процедура списания, и если не учитывать "реальную дату прихода", то она будет проведена неверно.
 Возможно, имеет смысл на экзамене уточнить, что важнее. Так как цель сдать экзамен, а не правильно автоматизировать biggrin . Важно мнение конкретного экзаменатора.
Название: Re: 1.6
Отправлено: kow1976 от Январь 25, 2012, 06:07:55 am
Абсолютно с вами согласен решений множество. Прочтений тоже может быть много. Нужно уточнять на экзамене или писать комментарий если такой возможности нет.

 Добавлено (25.01.2012, 06:07)
 ---------------------------------------------
 Пример
 Остатки
 Яблоко (-10) шт. 0грн
 Груша 5шт 100грн.

 Приходная №55
 Яблоко (4) шт. 20 грн
 Груша 1шт 3грн.

 //Сторнирование и расчет себестоимости не выполняем
 Приход Яблоко Приходная №55 4 шт 20грн
 Приход Груша Приходная №55 1 шт 3грн

 Приходная №56
 Яблоко (4) шт. 24 грн
 Груша 1шт 4грн.

 //Сторнирование и расчет себестоимости не выполняем
 Приход Яблоко Приходная №56 4 шт 24грн
 Приход Груша Приходная №56 1 шт 4грн

 Приходная №57
 Яблоко (5) шт. 35 грн
 Груша 1шт 6грн.

 //Сторно запись
 Расход Яблоко (-10) 0 грн.
 //Себестоимость
 Расход Яблоко Приходная №55 4шт 20грн
 Расход Яблоко Приходная №56 4шт 24грн
 Расход Яблоко Приходная №57 2шт 14грн
 //Приходуем остаток
 Приход Яблоко Приходная №57 3 шт 21грн
 Приход Груша Приходная №57 1 шт 6грн

 Все датами документа. Себестоимость по ФИФО и абсолютно правильно. При этом не нужны "ДатыПоступления" .

 Хотя с датами поступления я так понял решения задач засчитывают.

 Это всего лишь вариант решения, а как правильно решит тот кто проверяет.
Название: Re: 1.6
Отправлено: SergTH000 от Январь 25, 2012, 03:41:48 pm
tan1c,
Quote
Например, (это я от себя) в проведении приходной, можно заполнить из табличной части (так быстрее на экзамене ), а можно запросом сгруппировать, отсечь услуги. За первое решение можно сказать, что оно лучше обеспечивает синхронизацию данных документа и регистра, и если вдруг , понадобиться информация о всех(не сгруппированных записях) , то их можно получить из регистра не просматривая все документы. А за второе, что сгруппированные записи уменьшают объем и время обработки, а информация о дублях несущественна.

 OMG, это facepalm xDDD: услуги должны отсекаться в поступлении на момент ввода пользователем (в форме документа), а не в обработке проведения а это
Quote
лучше обеспечивает синхронизацию данных документа и регистра
кому нужна эта синхронизация? регистры (накопления) и нужны для того чтобы иметь максимально сгруппированные записи..
 
Quote
понадобиться информация о всех(не сгруппированных записях) , то их можно получить из регистра не просматривая все документы

 Конечно пользователь полезет в регистр смотреть все записи всех документов, отборы там наверное будет делать по регистратору...
 По поводу того что мнение Белоусова могло измениться - ну да: человек составил задачу для сборника, принимал по ней экзамен, комментировал на форуме имея ввиду такое видение решения задачи, а потом подумал: не-е, не правильное это решение..хаха конечно

 Добавлено (25.01.2012, 15:41)
 ---------------------------------------------
 
Quote
Важно мнение конкретного экзаменатора.


 
Quote
Мнение Павла Белоусова от 05.10.2010 могло изменится


 cool Наверное экзаменаторам нужно постоянно обновлять/повторять свои "мнения"
Название: Re: 1.6
Отправлено: tan1c от Январь 25, 2012, 06:07:52 pm
Про услуги в приходной, погорячился biggrin , имел ввиду расходную.
 Суть в том, группировать записи (тогда запрос), или как есть конструктором (что быстрее).

 А про синхронизацию, это вы зря. Именно Павел обращал на это наше внимание. Одна из проблем платформы (и нашей) это обеспечить синхронизацию документов и регистров, чтобы данные были достоверными. Ведь регистры это лишнее звено, добавлены искусственно для облегчения жизни компа biggrin , в реальной модели их нет.

 А по поводу изменения мнений, многие формулировки задач уже изменились, некоторые еще будут меняться, ошибки или опечатки составителей (а это не только Павел) признаются (сам читал сообщения на форуме от Павла "это ошибка" biggrin ).

Добавлено (25.01.2012, 18:07)
---------------------------------------------
kow1976, в своем примере вы сильно упростили себе жизнь, пока не закрыли минус, у вас только приходные biggrin . А также не рассматриваете то, что есть периоды отчетности месяц, квартал, год. Если у вас данные разнесены по периодам, то отчетность в них тоже нарушена. ИМХО суть документа, привязка ко времени (по реальным событиям), а здесь сбой. biggrin

Название: Re: 1.6
Отправлено: SergTH000 от Январь 25, 2012, 08:31:33 pm
tan1c,
 
Quote
А про синхронизацию, это вы зря. Именно Павел обращал на это наше внимание. Одна из проблем платформы (и нашей) это обеспечить синхронизацию документов и регистров, чтобы данные были достоверными. Ведь регистры это лишнее звено, добавлены искусственно для облегчения жизни компа biggrin , в реальной модели их нет.

 Оо по этому и пред. твоим постам следует что при обходе ТЧ в цикле для записи в регистр данные будут более достоверными? Это значит если данные получать запросом и группировать они менее достоверны? Достоверность данных к данному разговору вообще отношения не имеет.

 
Quote
Про услуги в приходной, погорячился biggrin , имел ввиду расходную.

 Да причем тут услуги? если говорить про расходную у тебя там все равно запрос, блин да даже если не запрос а тоже обход ТЧ, что при обходе цикла нельзя отсечь услуги?

 
Quote
А по поводу изменения мнений, многие формулировки задач уже изменились, некоторые еще будут меняться, ошибки или опечатки составителей (а это не только Павел) признаются (сам читал сообщения на форуме от Павла "это ошибка" biggrin ).

 Формулировка этой задачи абсолютно такая же как в 8.1,а это еще более старый сборник. Да причем тут опечатки и ошибки? в той ссылке которую я тебе написал, Белоусов конкретно соглашается с прложенной схемой решения задачи, блин, кароче ты походу любитель поспорить ни о чем, но самое главное я на 100% уверен что ты последовательностью решать задачу на экзамене не будешь, хотя здесь конечно можно с пеной у рта защищать свое решение. Мне первый раз попалась эта задача и я решал именно через последовательность - мне ее не защитали. НЕ Белоусов.
Название: Re: 1.6
Отправлено: tan1c от Январь 26, 2012, 01:48:18 am
По поводу достоверности. Любая группировка, это упрощение (уменьшение) входной информации, независимо нужна она или нет. Если в приходе одна деталь вбита несколько раз, то после группировки информация о этом исчезнет, т.е. в документе есть эта информация, в регистре уже нет.

 На экзамене естественно, я выясню у экзаменатора biggrin .
 Ну и действительно, здесь полностью согласен, что мы постепенно приближаемся к флуду. Извини если не отвечу biggrin .
Название: Re: 1.6
Отправлено: Альберт от Январь 26, 2012, 07:05:47 pm
Quote (SergTH000)
блин да даже если не запрос а тоже обход ТЧ, что при обходе цикла нельзя отсечь услуги?


 SergTH000, в этом случае Вы создадите хоть и неявный, но запрос в цикле smile
Название: Re: 1.6
Отправлено: SergTH000 от Январь 26, 2012, 10:10:24 pm
Альберт, Вы, уважаемый Альберт, чрезвычайно проницательны. Хотя бы сначала прочитали нашу переписку, если собрались ее комментировать. Я никому не предлагаю отсекать услуги в цикле обхода тч (как раз наоборот). Представьте себе, как это ни странно, я знаю, что в этом случае произойдет неявный запрос.
Название: Re: 1.6
Отправлено: Gyd от Январь 26, 2012, 10:16:32 pm
SergTH000, c вашим опытом уже пора избавиться от "синдрома третьеразрядника"... вот всё жду этого момента, но никак не дождусь sad
Название: Re: 1.6
Отправлено: SergTH000 от Январь 27, 2012, 08:31:33 am
Gyd, Че? Че за синдром третьеразрядника?
Название: Re: 1.6
Отправлено: Gyd от Январь 27, 2012, 09:10:53 pm
Успешность программиста заключается не только в отличном знании матчасти, но в умении корректно выражать свои мысли. Даже если хочется ругаться smile Будьте успешны, SergTH000!
Название: Re: 1.6
Отправлено: SergTH000 от Январь 29, 2012, 09:44:07 am
Gyd, Иди СПР порешай, успешный, ЛОЛ.
Название: Re: 1.6
Отправлено: Gyd от Январь 29, 2012, 11:40:36 am
SergTH000, что помешало здесь написать то, что вы мне в личку написали? Или вы из тех людей которые смелые только на форумах?

 П.С. Извините, за термин. Зря я его использовал, вы конечно с ним незнакомы. Скажу по-простому: уважайте других участников форума. И подбирайте фразы для выражения своих мыслей, здесь не "гоха.ру".
Название: Re: 1.6
Отправлено: ТатьянаЯ от Январь 29, 2012, 12:26:24 pm
а закидайте помидорами мою мысль! tongue
 я думаю в тех приходных накладных, у которых заполнена дата фактического поступления товара, движения прихода делать не на дату документа а на дату фактического поступления. И запросом в разрезе регистратора получать список документов расходная накладная с даты фактического поступления до даты документа приходная накладная. Выводить их в отдельное окно и предлагать пользователю их сразу провести. Ведь в задании сказано, что документы можно открывать и перепроводить. Я так думаю, для того чтобы выровнять себестоимость по "неправильно" проведенным расходным.
Название: Re: 1.6
Отправлено: SergTH000 от Январь 29, 2012, 02:55:44 pm
Gyd,
Quote
что помешало здесь написать то, что вы мне в личку написали? Или вы из тех людей которые смелые только на форумах?

 Все очень просто - здесь модераторы и пост могли удалить до того как ты прочитаешь.

Добавлено (29.01.2012, 14:55)
---------------------------------------------
Как это сделали с пред постом Альберту

Название: Re: 1.6
Отправлено: Gyd от Январь 29, 2012, 05:35:56 pm
Ок, продолжим общение в личке.
 И не забудьте друзей побольше собрать, если решитесь на встречу. По опыту знаю что такие парни как вы - одни никуда не ходят smile
Название: Re: 1.6
Отправлено: SergTH000 от Январь 30, 2012, 05:37:55 am
Gyd,
Quote
По опыту знаю что такие парни как вы - одни никуда не ходят smile

 Печальный у тебя опыт. Я жду.
Название: Re: 1.6
Отправлено: Gyd от Январь 30, 2012, 08:22:00 pm
SergTH000, вы меня разочаровываете всё больше. Про маты в личку я молчу, но изменение репутации со второго аккаунта - это сильно :))))))) заведите еще несколько аккаунтов - процесс пойдёт быстрее)))))
Название: Re: 1.6
Отправлено: SergTH000 от Январь 30, 2012, 08:52:07 pm
Gyd, Я подумаю
Название: Re: 1.6
Отправлено: Gyd от Январь 30, 2012, 09:38:03 pm
Не обижусь если "загоните" меня в минус ))))
Название: Re: 1.6
Отправлено: Альберт от Февраль 02, 2012, 12:16:20 pm
Объясните мне, пожалуйста, если решать эту задачу без применения дополнительного реквизита ДатаПоступления, то чем будет плохо подобное решение при условии, что документы в нем делают следующие движения:

 
Вложения:
s3828037.png
Название: Re: 1.6
Отправлено: tan1c от Февраль 05, 2012, 02:31:46 pm
Альберт, Здесь проблема в трактовке условий задачи и исходных данных. В вашем примере срок годности в последней приходной (№3) выбран удачно biggrin , а если взять срок годности у товара из (№3) меньше (например 09.02.2012), чем у товара из расходных накладных (№1 и 2), то списание себестоимости расх. №1 проведено неверно. По условиям первым списывается товар с меньшим сроком. Т.е. расходная №1 в вашем примере сначала должна списать 10 шт. с себест. 100р/шт из приходной №3, которая пришла до 31.01.2012, но была вбита позже.
Название: Re: 1.6
Отправлено: max_osodoev от Февраль 15, 2012, 11:46:11 am
проверьте не очень понял задачу, мозг можно сломать
Вложения:
1.6_max_osodoev.dt
Название: Re: 1.6
Отправлено: old_guest от Февраль 26, 2012, 03:49:23 pm
Коллеги, насколько корректно использовать измерение типа дата. Не лучше ли создать измерение ссылочного типа и Справочник "Серии" с реквизитом СрокГодности.
 Придираются на экзамене к не ссылочным измерениям???

Добавлено (26.02.2012, 15:49)
---------------------------------------------
max_osodoev, в моём задачнике нужно сделать отчёт ведомость по товарам и продажи. И везде присутствует срок годности!!! У Вас задачник какой редакции?

 У меня редакция 3 июнь 2010. Есть подозрение, что с этим отчётом по Продажам составители погорячились. В принципе решить это можно создав измерение СрокГодности в регистре "Продажи" и распределять сумму продажи по документу пропорционально количеству списанному по каждому сроку годности.

Название: Re: 1.6
Отправлено: raisa от Февраль 29, 2012, 09:19:54 pm
safer, я тоже думаю, они погорячились. но, видимо, наконец снизошли до нас -простых смертных и, говорят, отчета по продажам в разрезе сроков годности на экзамене нет. Иначе, если решать, как sada (и это правильно, что подтверждает Белоусов, хотя из постановки задачи в сборнике совершенно не очевидно), то сумму продажи действительно надо распределять, получается очень много работы для экзамена- не представляю, как можно уложиться.
Название: Re: 1.6
Отправлено: Roman от Март 06, 2012, 05:27:20 pm
А кто сможет подсказать возможны ли следующие исходные данные?
 И если да, то как их стоило бы обрабатывать (на данный момент интересует списание себестоимости)?

 РН №1 от 10.01(январь) Товар1 15шт.

 РН №2 от 20.01 Товар1 4шт.

 ПН №1 от 20.02 (дата поступления товара 16.01) Товар1 5шт. СГ(срок годности) - 01.02

 ПН №2 от 25.02 (ДП 05.01) Товар1 20шт. СГ - 05.02
Название: Re: 1.6
Отправлено: vallerikk от Март 10, 2012, 12:22:21 am
Roman, На мой взгляд любые комбинации возможны, только в Вашем случае рн не должна проводиться, если в учетной политике не разрешено продавать в минус, если разрешили, то сг, партия и себестоимость пустые, остальное по плану..
 потом 20.02 при оформлении пн №1 сторно записей рн №1 и №2, приход и расход 5 шт и т.д., если конечно номенклатура из пн есть в регистренакопления.остаткиноменклатуры.обороты
Название: Re: 1.6
Отправлено: Roman от Март 12, 2012, 12:12:36 am
vallerikk, спасибо за ответ, но smile
 
Quote (vallerikk)
потом 20.02 при оформлении пн №1 сторно записей рн №1 и №2, приход и расход 5 шт и т.д.,

 Сторнировать рн№1 нет смысла - приход актуален на 16.01, на дату рн№1 товара все ещё нет на складе (данные по нему ещё не введены).

 Прикол начинается при оформлении пн№2:
 1) сторнируем рн№1 и рн№2
 2) выбираем остатки с сортировками по СГ и стоимости
 3) списываем
 И получаем, что по первой расходной списали 5ед. Товара1 из пн№1 (СГ меньше) и 10ед. Товара1 из пн№2, а по второй - 4ед. Товара1 из пн№2.
 А это неправильно, поскольку, опять же, на 10.01 по данным приходных на складе только 20ед. Товара1 с СГ-05.02. Т.е. фактически после проведения пн№2 должна получиться следующая картина по списаниям и остаткам:

 РН№1: списано 15ед. Товара1, СГ-05.02
 РН№2: списано 4ед. Товара1, СГ-01.02
 Остатки:
 Товар1, СГ-05.02 5ед
 Товар1, СГ-01.02 1ед

 Насколько я понял и проверял выложенные здесь решения, они такой картинки не дадут (если ошибаюсь - буду рад за подсказку smile ). Сейчас мысли крутятся вокруг использования последовательности и записи движений в приходной задним числом. Но насколько это будет корректно (дата приходной - текущая, а дата движений по приходной - дата поступления товара)? Прокатит ли это при условии "документы задним числом вводить нельзя"? Или, если это некорректно для данной задачи, остается вариант с дублированием механизма получения остатков на определенную дату, что не кажется рациональным...
 Вот такие соображения :(. Поэтому и решил спросить на форуме.
Название: Re: 1.6
Отправлено: Gyd от Март 14, 2012, 11:53:39 am
Quote (Roman)
Сейчас мысли крутятся вокруг использования последовательности и записи движений в приходной задним числом.

 Roman, вы читали посты SergTH000 и ut2k5 в этой теме? Чем вас не устраивает их вариант решения?
Название: Re: 1.6
Отправлено: Gyd от Март 16, 2012, 12:10:32 pm
Мой вариант:
 1. Решение получилось достаточно простое, никаких МенеджеровВТ, доп.реквизитов, доп.регистров.
 2. Схема "сначала приход, потом расход" - тут стандартно, только с проверкой учетной политики и записью в регистр продажи себестоимости.
 3. Схема "сначала расход, потом приход" - расходная делает запись в регистр с суммой и количеством, потом при появлении прихода эти данные сторнируются (1) и делаются движения прихода (2) и расхода (3), а также запись в регистр продажи с себестоимостью (4).
 4. Есть возможность продавать товар без срока годности.
 5. Плюсы: просто. Минусы: нет реальной даты продажи, не знаю как относятся к проверке типа документа в запросе, в документе прихода может быть товар только с одним сроком годности (не знаю насколько это критично).
 6. Отчеты реализованы в требуемом виде.
Вложения:
Gyd_1_6.dt
Название: Re: 1.6
Отправлено: sv_mikh от Март 17, 2012, 07:38:17 am
Мое решение. Все вроде нормально, одно не понятно пока -- можно ли привести продажи к нормальному виду. И нужно ли?
 Т.е. у меня остаются строки фиктивных продаж в минус по пустому сроку годности
 --------------------------------------------------------------------------------------------------
 Считаю свое решение не законченным... Не решена задача корректировки продаж. Можно наверно упростить ее в плане при фиктивной реализации фиксировать продажи только того товара, который был в остатке, а по мере прихода дописывать... В принципе продажи без срока годности и сс -- с натяжкой можно считать нужными. Но есть такая мысль, реализовать которую не получилось пока: реализацию в минуса фиксировать партией самого документа реализация с пустым сроком годности. В приходе отрицательный остаток товара по партиям расходных накладных соединять с таблицей прихода. Получаем какие реализации закрываются какими строками прихода. А по док. реализации из рег.Продажи можно вытянуть сумму продажи. Получается у нас все будет для сторнирования продаж Номенклатура + СрокГодности+Количество+Себестоимость из Прихода, Продажную стоимость из рег.Продажи...
Вложения:
sv_mikh_01_06_2.dt
Название: Re: 1.6
Отправлено: java от Март 20, 2012, 11:54:57 am
Quote (sada)
В общем то, как я понял эту задачу, главное реализовать списание себестоимости в том виде, как сказано в условии, а именно: по партиям в зависимости от срока годности, внутри одного срока годности в первую очередь более дорогой.

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

 В связи с этим предлагаю добавить в документ «ПриходнаяНакладная» реквизит «Дата поступления». И при каждом поступлении проверять, не продавался ли данный товар, начиная с этой даты до момента текущего поступления, если продавался, то сторнировать все продажи этого товара и формировать новые с учетом этого поступления.

 а в минус он был списан или нет, какая разница, себестоимость должна корректироваться при любой реализации если после неё приходят документы с датой поступления более ранней.
 Прикрепления: 1Cv8_sada_1_06.dt(150Kb)


 Чего-то я застрял с этой базой. Добавил количества в реализацию (сделал 105 штук), ввёл ещё несколько поступлений.

 Из минусов вышло, но всё равно в движениях получается,:
 
Code
Период    Регистратор    Номер строки    Номенклатура    Срок годности    Партия    Количество    Сумма
 +10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    1    Big (капилярная)    03.01.2012    Приходная накладная 000000007 от 10.11.2010 12:00:00    20    320,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    2    Big (капилярная)    02.01.2011    Приходная накладная 000000001 от 01.01.2010 0:00:00    -5    -50,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    3    Big (капилярная)    01.01.2011    Приходная накладная 000000002 от 02.01.2010 0:00:00    -10    -100,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    4    Big (капилярная)    02.01.2011    Приходная накладная 000000005 от 01.11.2010 12:00:00    -20    -320,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    5    Big (капилярная)    02.01.2011    Приходная накладная 000000004 от 31.10.2010 20:45:55    -30    -400,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    6    Big (капилярная)    01.01.2011    Приходная накладная 000000004 от 31.10.2010 20:45:55    -30    -400,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    7    Big (капилярная)    02.01.2011    Приходная накладная 000000003 от 03.01.2010 12:00:00    -10    -150,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    8    Big (капилярная)    01.01.2011    Приходная накладная 000000004 от 31.10.2010 20:45:55    30    400,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    9    Big (капилярная)    01.01.2011    Приходная накладная 000000002 от 02.01.2010 0:00:00    10    100,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    10    Big (капилярная)    02.01.2011    Приходная накладная 000000005 от 01.11.2010 12:00:00    20    320,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    11    Big (капилярная)    02.01.2011    Приходная накладная 000000003 от 03.01.2010 12:00:00    10    150,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    12    Big (капилярная)    02.01.2011    Приходная накладная 000000004 от 31.10.2010 20:45:55    30    400,00
 -10.11.2010 12:00:00    Приходная накладная 000000007 от 10.11.2010 12:00:00    13    Big (капилярная)    02.01.2011    Приходная накладная 000000001 от 01.01.2010 0:00:00    5    50,00
 


 Проще говоря сторнирование работает даже когда уже не нужно (ушли в плюс, сроки годности более новые)
 отсортирую движения приходника и покажу последние колонки для понятности:
 -5   -50,00
 5   50,00
 -10   -100,00
 10   100,00
 -10   -150,00
 10   150,00
 -30   -400,00
 -30   -400,00
 30   400,00
 30   400,00
 -20   -320,00
 20   320,00
 20   320,00 - вот это вот сам приход, одна строчка, остальное - накопившиеся сторно

 Как всё это побороть? wacko
 Или так и нужно? Но регистр же растёт! Что-то мне подсказывает, что экзаменатор за такое зубами загрызёт!
 Особенно интересует поступление после расходной товара со сроком годности меньше или с тем же сроком, но большей ценой, чем в предыдущем приходе. Приходная начнёт сторнирование с перекидкой списанного на другую партию и пересписание заново! это правильно или нет? Может быть те, которые уже списаны по партиям - вообще не трогать, а перебрасывать только те которые пустые? Получается, что формально при этом будет нарушен порядок списания?
Название: Re: 1.6
Отправлено: Gyd от Март 20, 2012, 09:44:35 pm
java, а зачем у вас вот это:
 
Quote (java)
-10.11.2010 12:00:00 Приходная накладная 000000007 от 10.11.2010 12:00:00 2 Big (капилярная) 02.01.2011 Приходная накладная 000000001 от 01.01.2010 0:00:00 -5 -50,00
 -10.11.2010 12:00:00 Приходная накладная 000000007 от 10.11.2010 12:00:00 3 Big (капилярная) 01.01.2011 Приходная накладная 000000002 от 02.01.2010 0:00:00 -10 -100,00

 что этим достигается?
 А переброска для чего? Я правильно понял, если допустим расход списал несколько партий и еще сделал движения в минус, то при следующем приходе вы отмените все движения расхода и что-то заново там с ними сделаете? По-моему это как то чересчур сложно.
Название: Re: 1.6
Отправлено: java от Март 21, 2012, 10:18:38 am
Quote (Gyd)
А переброска для чего? Я правильно понял, если допустим расход списал несколько партий и еще сделал движения в минус, то при следующем приходе вы отмените все движения расхода и что-то заново там с ними сделаете? По-моему это как то чересчур сложно.

 Я сейчас сам делаю решение, хотел посмотреть готовое решение sada, которое здесь в теме активно обсуждали. И теперь даже не знаю как правильно.

 Там есть
 3 прихода
 прих№1 1.01.2011 10шт 100 руб срок годности 2.01.2011
 прих№2 2.01.2011 10шт 100 руб срок годности 1.01.2011
 прих№3 3.01.2011 10шт 150 руб срок годности 2.01.2011

 расходная 30.10.2011
 35 штук
 списывает сначала по партии док№2, потом № 3, потом№1, потом 5 штук висят без партии по 0 сумме

 новый приход №4 31.10.2011 срок годности 1.01.2011
 30 штук по 400
 так вот этот приход сторнирует не только 5 штук по 0, но также сторнирует списание по партиям (№1,2,3) и пересписывает так:
 1)сначала 30 штук по партии №4, потому что она по сроку годности (01.01.2011) и себестоимости (13.3) оказывается приоритетней, чем партия №2
 2) потом 5 штук по партии №2

 Вот что я имел в виду: если запоздалый приход оказывается впереди предыдущего за счёт более раннего срока годности . Нужно ли в таком случае сторнировать уже списанные партии и пересписывать заново, с учётом нужного нам порядка списания по срокам годности?
 Более того, в указанном решении сторно-записи будут попадать в каждый следующий документ поступления.

 Есть идея, что лучше оставить в покое уже списанное и списывать только висящие минуса с пустыми партиями - но тогда нарушится порядок списания, не является ли это нарушением условий задачи?
Название: Re: 1.6
Отправлено: Gyd от Март 21, 2012, 11:37:53 am
Quote (java)
Есть идея, что лучше оставить в покое уже списанное и списывать только висящие минуса с пустыми партиями - но тогда нарушится порядок списания, не является ли это нарушением условий задачи?

 Думаю sada усложнил задачу, если так глубоко копать то можно начать сторнировать списаное еще в позапрошлом году :), я бы остановился на варианте с минусами и пустыми партиями.
Название: Re: 1.6
Отправлено: java от Март 21, 2012, 01:23:21 pm
Quote (Gyd)
Думаю sada усложнил задачу, если так глубоко копать то можно начать сторнировать списаное еще в позапрошлом году :), я бы остановился на варианте с минусами и пустыми партиями.


 Я бы тоже на этом остановился. Вопрос в том, не расценит ли преподаватель (или тот кто проверяет дистанционные задания) это упрощением условия задачи? Вдруг сбросит баллы или не засчитает. sad

 Как там сказано:
 
Quote
Списание себестоимости товаров должно быть организовано по партиям, в
 зависимости от срока годности.


 С другой стороны, если не упростить таким образом - то вообще непонятно как делать wacko
Название: Re: 1.6
Отправлено: Gyd от Март 21, 2012, 03:54:05 pm
java, даже с этим "упрощением" она всё равно будет не простая smile

 Думаю условие "списывается в первую очередь более дорогой товар" создано для обычного порядка списания - "приход, потом расход" (аля ФИФО/ЛИФО).
Название: Re: 1.6
Отправлено: java от Март 23, 2012, 12:12:35 pm
А что делать с регистром продажи?
 1)С одной стороны товар уже продан и его надо записать в "продажи" для отчета.
 Но если расходником писать при продаже в минус в регистр "продажи", получается оборот с пустым сроком годности.
 В отчёте "продажи" будет висеть строчка с количеством, но нулевой себестоимостью (т.к. не поступило, а значит и прибыль покажет равную сумме. Может в этом случае вообще не выводить ни сумму, ни прибыль, ни себестоимость, а одно только количество?)

 2)С другой стороны хоть и продан, а не понятно с каким сроком годности,это станет известно позже.
 А что если не писать минус в "продажи" расходником, а записать приходником, уже после сторнирования остатков?
 Но тогда отчёт "Продажи" будет показывать не то что реально продано, а сколько получилось списать с нынешним остатком. А это уже не отражает сути отчёта, который показывает проданное, а не списанное.

 Как лучше поступить?
Название: Re: 1.6
Отправлено: Gyd от Март 23, 2012, 01:44:58 pm
java, вы не смотрели моё решение? Там реализовано то о чём вы спрашиваете. Посмотрите принцип.
Название: Re: 1.6
Отправлено: java от Март 26, 2012, 10:59:41 am
Quote (Gyd)
java, вы не смотрели моё решение? Там реализовано то о чём вы спрашиваете. Посмотрите принцип.


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

 Кстати, заметил в вашем решении:
 сторнирование идёт по пустым ссылкам в измерении "Партия", а расходная - партия ссылка, значит не выведет на ноль.
 проведение списание идёт не в порядке срока годности.
 Возможно вместо
 
Code
    |УПОРЯДОЧИТЬ ПО
        |    Ном,
        |    Цена УБЫВ,
        |    Партия
 

 стоит лучше задействовать что-то вроде :
Code
УПОРЯДОЧИТЬ ПО
       СрокГодности,
       Цена УБЫВ
 
Название: Re: 1.6
Отправлено: Gyd от Март 26, 2012, 07:42:48 pm
Quote (java)
Кстати, заметил в вашем решении:
 сторнирование идёт по пустым ссылкам в измерении "Партия", а расходная - партия ссылка, значит не выведет на ноль.

 Вы уверены что не выведет в ноль? smile Посмотрите внимательнее пожалуйста.

 
Quote (java)
проведение списание идёт не в порядке срока годности.

 С этим соглашусь.
Название: Re: 1.6
Отправлено: java от Март 27, 2012, 09:46:43 am
Quote (Gyd)
Вы уверены что не выведет в ноль?


 Я недавно начал снова готовится, мне надо медленно, на пальцах... smile
 Давайте рассмотрим:
 При списании в минус срабатывает:
 
Code
  Если НужноСписать > 0 Тогда
       Движение = Движения.ОстаткиНоменклатуры.Добавить();
       Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
       Движение.Период = Дата;
       Движение.Номенклатура = В2.Ном;
       Движение.Партия = Ссылка;
       Движение.Количество = НужноСписать;
       Движение.Сумма = Движение.Количество*В2.Сумма/В2.Количество;
      КонецЕсли;
 

 В партию пишет ссылку на расходник, срок годности пустой, сумма и количество- пишется не себестоимость, а сумма продажная (спасибо за идею, пришлось рисовать таблицу, чтобы понять как сторнировать biggrin )

 А теперь сторнирование:
Code

        Движение = Движения.ОстаткиНоменклатуры.Добавить();         //сторно
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период = Дата;
        Движение.Номенклатура = В.Ном;
        Движение.Количество = КоличествоСписываем;
        Движение.Сумма = СуммаСписываем;
 

 Сторнирует по пустой партии, пустому сроку годности, сумма продажная.

 Вывод: несводимость к нулю по Партии.
Название: Re: 1.6
Отправлено: sv_mikh от Март 27, 2012, 05:54:23 pm
Мне кажется я ее сделал! Ключевая идея: в остатки номенклатуры уходят в минуса по партии расходной накладной. В приходе появляется возможность вытянуть по расходной накладной сумму продажи и корректно отсторнировать продажи. Отчеты во всяком случае вроде красивые получаются. Кому не трудно -- забракуйте решение smile
Вложения:
sv_mikh_01_06_3.dt
Название: Re: 1.6
Отправлено: Gyd от Март 27, 2012, 08:32:01 pm
Quote (java)
Давайте рассмотрим:

 А вы третье движение забыли. Давайте на пальцах рассмотрим:
 Это было:
 - Яблоко-ПустаяПартия-10 шт.- 500 руб. ("-") - результат проведения расходной.

 Это появляется при проведении приходной:
 - Яблоко-ПустаяПартия-10 шт.- 500 руб. ("+") - это списываем расход сделанный ранее, чтобы вывести регистр в ноль. 500 - сумма продажи.
 - Яблоко-Партия 1 - 30 шт. - 300 руб. ("+") - это приходуем всё из документа.
 - Яблоко- Партия 1- 10 шт. - 100 руб. ("-") - это списываем то что якобы списалось ранее по расходной.

 Итого получается следующее:
 - Яблоко-ПустаяПартия-10 шт.- 500 руб. ("-")
 - Яблоко-ПустаяПартия-10 шт.- 500 руб. ("+")
 -------------------------схлопываются и получается 0-----------------------
 - Яблоко-Партия 1 - 30 шт. - 300 руб. ("+")
 - Яблоко- Партия 1- 10 шт. - 100 руб. ("-")
 ----------остаток 20 шт. с суммой 200 руб. по партии Партия 1--------------
 то есть у нас пришло 30 шт. и 10 из них списались по расходной.
Название: Re: 1.6
Отправлено: kow1976 от Март 27, 2012, 08:48:42 pm
sv_mikh, и Gyd,
 А меня еще в данной задаче беспокоит цена по которой продается товар который ушел в минус.
 sv_mikh,
 Уходить в минус он может по разной цене продажи. А приходовать вы его будете по средней цене
 
Code
|  
 ПродажиОбороты.СуммаОборот / ПродажиОбороты.КоличествоОборот КАК ЦенаПродажи,
 

 Соответственно у вас будет не правильная выручка по номенклатуре в разрезе срока годности.

Добавлено (27.03.2012, 20:48)
---------------------------------------------
Как узнать цену по которой продавалась номенклатура с заданным сроком годности. если при продаже срок годности не указывается. А выбирается исходя из ТЗ по остаткам которых еще нет. biggrin

Название: Re: 1.6
Отправлено: sv_mikh от Март 27, 2012, 09:02:41 pm
Quote (kow1976)
Соответственно у вас будет не правильная выручка по номенклатуре в разрезе срока годности.


 Можете привести обоснованный пример, демонстрирующий ошибку? Я не вижу ничего страшного расчета по среднему

 
Quote (kow1976)
Как узнать цену по которой продавалась номенклатура с заданным сроком годности. если при продаже срок годности не указывается. А выбирается исходя из ТЗ по остаткам которых еще нет.

 Я предлагаю это делать по регистратору.

Добавлено (27.03.2012, 21:02)
---------------------------------------------

Quote (kow1976)
Соответственно у вас будет не правильная выручка по номенклатуре в разрезе срока годности.


 Выручка будет правильно в целом по закрытым минусам. Если рассматривать каждый отдельный минус, то да, расчет по среднему. Но кто сказал, что это зло? В данном случае корректно все будет только в случае запрета отрицательных остатков. Пока Вы меня не убедили в ошибочности моего решения.
Название: Re: 1.6
Отправлено: kow1976 от Март 27, 2012, 09:43:53 pm
Quote (sv_mikh)
В данном случае корректно все будет только в случае запрета отрицательных остатков

 Получится так что если делать так:
 Приходуем потом продаем, не равно по выручке, операции продаем а потом приходуем. Но это только в разрезе сроков годности.
 А в разрезе номенклатуры выручки будут равные.

 
Quote (sv_mikh)
Пока Вы меня не убедили в ошибочности моего решения

 Это не ошибка. Это упрощение(причем вполне корректное на мой взгляд). Тем более в экзаменационном белеете этого отчета вроде нет.

 Просто хорошо когда видишь проблему. И осознанно принимаешь решение брать цену из регистратора или достаточно рассчитать среднею. Или может быть есть какой нибудь другой способ.
Название: Re: 1.6
Отправлено: sv_mikh от Март 27, 2012, 09:48:13 pm
Quote (kow1976)
Тем более в экзаменационном белеете этого отчета вроде нет.

 Это существенно упрощает задачу. Не может не радовать.

 
Quote (kow1976)
Приходуем потом продаем, не равно по выручке, операции продаем а потом приходуем.

 Но это Вы только предполагаете, или проверяли? Мне кажется должно быть равно.
Название: Re: 1.6
Отправлено: kow1976 от Март 27, 2012, 10:03:10 pm
Я не проверял но уверен на 99,(9). Средняя не может совпадать с единицей совокупности.
 Но в принципе давайте проверим.
Название: Re: 1.6
Отправлено: sv_mikh от Март 27, 2012, 10:10:59 pm
Quote (kow1976)
Я не проверял но уверен на 99,(9). Средняя не может совпадать с единицей совокупности.
 Но в принципе давайте проверим.


 Попробую порассуждать в чем проблема и есть ли она. Предположим мы продаем товар, которого заведомо нет.
 Пусть так: на складе есть 30 шт. некоего товара... Срока годности мы его не знаем, но предполагаем, что он разный и по разным ценам.
 Продаем его весь... 10 шт. по 10 руб за шт. 10 шт. по 20 руб. за шт., 10 шт. по 30 руб за шт. Сроков пока не знаем.

 Произошел приход 40 шт. нужно отсторнировать 30 шт. В моем варианте мы о нем знаем, что есть -30 шт. по цене 20 руб за шт. (средняя по регистратору).
 Мы будем сторнировать -10 шт. -200 руб. и приходовать/списывать по фактической. И так для каждой строки. Т.е.
 Средняя не попадает в фактические цифры отчета -- она полностью отсторнируется. Реальный приход сформирует реальную себестоимость. Ошибки тут быть кажется не должно.
Название: Re: 1.6
Отправлено: kow1976 от Март 27, 2012, 10:36:00 pm
Кажется получилось воспроизвести проблему.

Добавлено (27.03.2012, 22:36)
---------------------------------------------
Одни и те же наборы данных приходуем в разных годах в одинаковой последовательности.


Вложения:
test_sv_mikh_01.dt
Название: Re: 1.6
Отправлено: sv_mikh от Март 27, 2012, 11:00:53 pm
Quote (kow1976)
Кажется получилось воспроизвести проблему.

 Да, косяк есть. Нужно еще думать.
Название: Re: 1.6
Отправлено: kow1976 от Март 27, 2012, 11:05:54 pm
Я так и не нашел нормального решения. Решил если попадется эта задача на экзамене, встану и пойду домой.
Название: Re: 1.6
Отправлено: Gyd от Март 27, 2012, 11:20:02 pm
Quote (kow1976)
Решил если попадется эта задача на экзамене, встану и пойду домой.

 Сильно :)... думаю вы не пойдёте smile
Название: Re: 1.6
Отправлено: kow1976 от Март 27, 2012, 11:25:46 pm
biggrin
Название: Re: 1.6
Отправлено: sv_mikh от Март 28, 2012, 06:16:29 am
А я сейчас думаю, что тут не плохо бы еще один регистр сделать... Отложенное списание. Где бы фиксировал то, что продал без наличия... Т.е. с ОстатковНоменклатуры списывал то, что реально было оприходовано, то чего не было -- в этот регистр в количественной и стоимостной оценке по продаже. Gyd для этого использует сам регистр ОстаткиНоменклатуры, но это выглядит, как мне кажется не совсем логично. В приходе минуса смотрел на размер отложенного списания и соответственно сторнировал списание по пустому сроку и партии и списывал по приходованным. Продажи легко сторнировать по указанному регистру... В своем предыдущем решении регистратор в принципе не имеет большого смысла... Что средняя продажная по регистратору, что средняя по всему объему отложенного списания -- какая разница? При приходе вся эта масса будет все равно в той же оценке отсторнирована и заменена реальным приходом. Так я буду делать, если еще раз возьмусь за эту задачу. Но сейчас она уже не выглядит такой пугающей, если в принципе понимаешь как ее осилить. От указанного регистра в принципе можно обойтись каким образом: объем еще не сторнированных продаж можно вытянуть из самого регистра ОборотПродаж за период с начала деятельности до документа по пустому сроку годности (предполагаю, что он в любом случае должен быть заполнен)... Не знаю, насколько это не красиво, но тоже вариант.
Название: Re: 1.6
Отправлено: kow1976 от Март 28, 2012, 10:12:11 am
Gyd,
 Интересная идея в вашем решении. Но все таки регистр в ноль не выходит.
 По кефиру покупаете 50 шт. Продайте все пятьдесят и посмотрите в консоли по всем полям.

Добавлено (28.03.2012, 10:12)
---------------------------------------------
В приходной накладной

 Движение = Движения.ОстаткиНоменклатуры.Добавить();    //сторно
 Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
 Движение.Период = Дата;
 Движение.Номенклатура = В.Ном;
 Движение.Партия=В.Партия; //корекция
 Движение.Количество = КоличествоСписываем;
 Движение.Сумма = СуммаСписываем;

 И вроде тогда все работает.

Название: Re: 1.6
Отправлено: java от Март 28, 2012, 10:58:58 am
Quote (Gyd)
Это было:
 - Яблоко-ПустаяПартия-10 шт.- 500 руб. ("-") - результат проведения расходной.


 Это понятно. Спасибо.
 Я спрашивал, зачем в расходной вот это(выделено), в ссылке расходник, в сторно - пустая ссылка:

 
Quote
Если НужноСписать > 0 Тогда
     Движение = Движения.ОстаткиНоменклатуры.Добавить();
     Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
     Движение.Период = Дата;
     Движение.Номенклатура = В2.Ном;
     Движение.Партия = Ссылка;
     Движение.Количество = НужноСписать;
     Движение.Сумма = Движение.Количество*В2.Сумма/В2.Количество;
    КонецЕсли;
Название: Re: 1.6
Отправлено: java от Март 28, 2012, 02:40:43 pm
Кажется дорешал,и оно работаетЪ!

 Вроде все условия выполнил, надеюсь на экзамене будет проще вариант, а то писать долго... wacko
Вложения:
java_1_6.dt
Название: Re: 1.6
Отправлено: Gyd от Март 28, 2012, 09:08:21 pm
kow1976, java, спасибо! Вы правы, что-то я забыл что в расходнике партию записываю smile

 Исправленный вариант. Хотя сейчас тоже склоняюсь ко второму регистру, с ним проще будет.
Вложения:
Gyd_1_6_2.dt
Название: Re: 1.6
Отправлено: java от Март 29, 2012, 09:49:53 am
Уважаемые форумчане, пожалуйста посмотрите моё решение(выше), комментарии и критика очень сильно ожидаются!! smile

 
Quote (Gyd)
Вы правы, что-то я забыл что в расходнике партию записываю

 А я вообще расходник в партию не писал, всё равно минуса все в одной куче по пустой партии и сроку годности. У меня к ним прикручено сторнирование по партиям в порядке срока годности, чтобы эта куча по партиям расходилась нормально.
Название: Re: 1.6
Отправлено: sv_mikh от Март 29, 2012, 10:34:50 am
Quote (java)
А я вообще расходник в партию не писал, всё равно минуса все в одной куче по пустой партии и сроку годности. У меня к ним прикручено сторнирование по партиям в порядке срока годности, чтобы эта куча по партиям расходилась нормально.
 

 Тоже считаю, что партия там ни каким боком не улучшит ситуацию, только усложнит.
Название: Re: 1.6
Отправлено: sv_mikh от Апрель 12, 2012, 07:04:34 pm
Предлагаю еще одно решение. Как и предлагал, на доп. регистре "Отложенные продажи". На решение с отладкой ушел 1 ч 5 мин.
 Кратко в чем идея. Состав регистров накопления: ОстаткиНоменклатуры, Продажи, ОтложенныеПродажи (Номенклатура, Количество, Сумма);
 Если разрешены отрицательные остатки, то ОстаткиНоменклатуры в минуса не уходят, а списывается лишь то, что есть.
 Несписанное количество в ценах расходной накладной записываем в ОтложенныеПродажи. Продажи проходят без срока годности и себестоимости.
 В приходе соединяем ЛС остатки ОтложенныхПродаж с табличной частью и списываем ОстаткиНоменклатуры, ОтложенныеПРодажи, сторнируем Продажи с пустым сроком годности и пишем с реальным и реальной стоимостью.

 Бегло по цифрам и аналитике посмотрел -- вроде похоже.
Вложения:
sv_mikh_01_06_5.dt
Название: Re: 1.6
Отправлено: gosn1ck от Апрель 26, 2012, 12:34:33 pm
уважаемые коллеги, посмотрев многие решения возник вопрос: почему тот товар, которого вы не хватило вы приходуете, а не списываете? понятно, что в проверки на отрицательные остатки вы делаете отборы и т.д. но почему приходуете при списании, а не расходуете?
Название: Re: 1.6
Отправлено: LEOON от Апрель 26, 2012, 01:02:13 pm
gosn1ck,
 Не парьтесь, возьмите решение от sv_mikh'а, там все логично и вопросы отпадут. Вообще это не принципиально, но если это делается на одном регистре, то действительно не слишком красиво. Но иногда это может делаться(приход при списании или расход при приходе), сознательно ведь что бы сделать сторно прихода делают не расход, делают отрицательный приход(что бы не увеличивались обороты). так что или уточните что Вы имели ввиду(какое решение). Или довольствуйтесь моим супер абстрактным ответом ни о чем wacko
Название: Re: 1.6
Отправлено: gosn1ck от Апрель 26, 2012, 01:06:10 pm
спасибо, вы убедили меня остаться при своём мнении
Название: Re: 1.6
Отправлено: LEOON от Апрель 26, 2012, 01:13:09 pm
Про выше упомянутое решение от sv_mikh'а, я имел ввиду крайний его вариант. Как раз вчера просмотрел его, правда только структуру регистров т.к. решал сам. Но мне оно понравилось больше чем альтернатива от Sada. Тем более на экзамене оно становиться много проще т.к. не требуются партии и что более важно сторно продаж(и вобще продажи как таковые).
Название: Re: 1.6
Отправлено: AvalonE2010 от Май 03, 2012, 08:31:21 am
Друзья товарищи. А может быть такая ситуация что в одном ПТУ есть один и тот же товар с одинаковыми сроками годности но разной ценой?
Название: Re: 1.6
Отправлено: LEOON от Май 03, 2012, 11:52:38 am
Quote (AvalonE2010)
Друзья товарищи. А может быть такая ситуация что в одном ПТУ есть один и тот же товар с одинаковыми сроками годности но разной ценой?

 В большинстве задач это указывается явно, если не сказано иное то решение всегда на Ваше усмотрение. Т.е. да ведь не к чему еще обрабатывать запрет. Тем более, в сущности, это ни на что не влияет. Из регистра Вы получите их одной строкой по средней.
Название: Re: 1.6
Отправлено: AvalonE2010 от Май 04, 2012, 10:17:26 am
LEOON,ясно.Спасибо.
Название: Re: 1.6
Отправлено: Rizjiy от Июнь 22, 2012, 02:14:05 pm
Выкладываю свое решение. Себестоимость рассчитывается регламентной обработкой "Расчет себестоимости". Более менее приближено к реальности)
Вложения:
1.6_Rizjiy.dt
Название: Re: 1.6
Отправлено: darkxxx от Август 21, 2012, 05:15:11 pm
решал раньше так же регламентной обработкой, но теперь посмотрев другие решения подумал а как вы спишете себестоимость если по партиям на остатке этого товара еще нет, регламентная обработка в таком слчае мне кажется не подойдет, либо я уже забыл свое решение напрочь.

 Добавлено (21.08.2012, 17:14)
 ---------------------------------------------
 это та же шляпа как авансы и задолжность их тоже необходимо гасить и выдавать только не в разрезе сумм а в разрезе количества и сумм, это можно сказать что наверное потяжелее будет.

Добавлено (21.08.2012, 17:15)
---------------------------------------------
как говорится теперь смотрю на задачу с высоты прорешеных задач по всем разделам и вижу свои ошибки.

Название: Re: 1.6
Отправлено: Сергей1972 от Август 27, 2012, 02:24:00 pm
А почему нельзя использовать второй регистр
 для решения этой задачи?
Название: Re: 1.6
Отправлено: LivingStar от Октябрь 23, 2012, 03:20:29 pm
У кого все же из приведенных примеров решения задачи более верный вариант? Хочется на что то ориентироваться.

Добавлено (23.10.2012, 12:38)
---------------------------------------------
так я и не увидел ни у кого как считается себестоимость в этой задаче для отчета Продажи

Добавлено (23.10.2012, 15:20)
---------------------------------------------
посмотрел задачу sv_mikh_01_06_5.dt(162Kb)
 не сильно ли сложно?

Название: Re: 1.6
Отправлено: Pavlyk от Октябрь 23, 2012, 06:08:08 pm
Нормально
Название: Re: 1.6
Отправлено: semtesem от Ноябрь 02, 2012, 12:42:46 pm
Добрый день!

 Решил задачу, использовал отрицательные остатки на ОстаткиНоменклатура с пустой Партией
 1. С блокировками не уверен хотелось бы ясности
 нужно ли блокировать БлокировкаДанных по источнику.
 Если выше уже было БлокироватьДляИзменения = Истина;
 Или набор данных в СписокНоменклатура (источнике) может быть другим
 чем то что заблокировано при помощи БлокироватьДляИзменения = Истина;
 поправьте пожалуйста.
 2. Можно ли не использовать в отчете вычисляемое поле
 Строка(Номенклатура) + " "+ Формат(СрокГодности,"ДФ=dd.MM.yyyy")
 и с помощью компоновки это сделать.
Вложения:
1.06_semtesem.dt
Название: Re: 1.6
Отправлено: ДимокШ от Ноябрь 14, 2012, 02:55:24 pm
Quote (semtesem)
semtesem

 Почему в расходная накладная по пустой партии делает запись суммой?
Вложения:
s2825290.png
Название: Re: 1.6
Отправлено: ДимокШ от Ноябрь 14, 2012, 03:12:06 pm
Quote (semtesem)
2. Можно ли не использовать в отчете вычисляемое поле
 Строка(Номенклатура) + " "+ Формат(СрокГодности,"ДФ=dd.MM.yyyy")
 и с помощью компоновки это сделать.

Вложения:
3743642.png
Название: Re: 1.6
Отправлено: kkkkkkk от Февраль 21, 2013, 03:58:14 pm
Товарищи спецы, оцените решение. Оно вообще не замороченное, но вроде условиям задачи удовлетворяет. Фишка в том, что после прихода товара, расходная накладная(по отсутствующему товару или с недостающим количеством) перепроводится (возможность этого в задаче оговаривается, можно конечно автоматически сделать, но вроде  и так подходит по условиям), а вместо момента времени, в обработке проведения расходной накладной остатки смотрим по границе на текущую дату.
Вложения:
_1.6.dt
Название: Re: 1.6
Отправлено: loOwA от Май 01, 2013, 05:55:34 pm
Оцениваем мое решение
Вложения:
2777362.dt
Название: Re: 1.6
Отправлено: bilateral от Июнь 07, 2013, 04:28:56 pm
Мой вариант решения. Решил как предложил sv_mikh с третьим регистром. Списывает, приходует - все кошерно.
 Не смог настроить вид отчета В ТОЧНОСТИ как в задаче. Подскажите у кого получилось.

 И вцелом покритикуйте пожалуйста. Спасибо.

Добавлено (07.06.2013, 16:16)
---------------------------------------------
loOwA,
 1. отчета нет одного
 2. в конфигурации стоит режим блокировки автоматический
 3.почему только один регистр "Остатоки Номенклатуры"? А где продажи и все с ними связанное?

 ...Этого уже достаточно что бы не засчитать весь билет. Рекомендую перечитать всю ветку... да что там, с первой задачи начать smile
 Задача вообще не решена. Где вся соль надо которой тут бился народ ? smile

Добавлено (07.06.2013, 16:23)
---------------------------------------------
kkkkkkk,

 1.где отчеты? 
 2.почему в конфигурации стоит режим блокировки автоматический?
 3.почему нет подсистем??
 4.почему в формах документов не выведены регистры???
 5.допустим, у вас не было ничего, вы наперед продали 100 пар тапочек, они ушли в отрицательные продажи,
 затем вам на склад пришли 100 пар тапочек. Но вы то их уже продали!!!! Где это учитывается?
 Вы одни и те же тапки два раза можете продать получается.

 Задача не решена.

Добавлено (07.06.2013, 16:28)
---------------------------------------------
Пипец... посмотрел около 5ти вариантов решений, ни у кого отчеты не настроены так, как в задании. А за это вроде снижают баллы : \

 Ладно - буду дальше решать с отчетами уже в самом конце позаморачиваюсь


Вложения:
bilateral_upr_6.dt
Название: Re: 1.6
Отправлено: svsource от Июнь 17, 2013, 01:20:16 pm
Потерял уже с этой задачей дня 4. Прочитал тут все посты и конфы выложенные просмотрел.
 Вот что не могу понять.
  
 1. Разрешается ли приходовать в ОДНОЙ накладной одну и туже номенклатуру с разными сроками годности?
 я не просто так задаю этот вопрос. - Это действительно важно для модуля проведения приходной накладной.
 То, что если приходуется товар одинаковый несколькими строками но С ОДИНАКОВЫМ СРОКОМ ГОДНОСТИ - это не беда.
 Сворачиваем Количество и Стоимость по (Номенклатуре, СрокГодности) - получается одна запись на один товар с одной себестоимостью и ОДНИМ сроком годности. А вот если несколько строк с разными сроками годности ОДНОГО ТОВАРА - вот это вопрос...
  
 2.  Пример   1.1.2013 продажа  Ном1  1 шт X 10 руб = 10 руб
                    2.1.2013 продажа  Ном1  1 шт X 17 руб = 17 руб
                    3.1.2013 продажа  Ном1  1 шт X 20 руб = 20 руб
  
 итого на 5.1.2013  по продажам имеем Ном1  СГ="" 3 шт 47 руб.
 теперь..
                    5.1.2013 приход    Ном1  2 шт X 5   руб = 10 руб. СГ 10.1.2013
  
 понятно по остаткам товара   + Ном1 СГ=10.1.2013  2шт 10руб
                                              -  Ном1 СГ=10.1.2013  2шт 10руб
  
 Продажи...                                Ном1 СГ="" -2шт  -............. руб (если считать по средней то получается 47/3 * -2 = -31.33 ) 
                                                 (кстати такие решения и предложено выше)
 Но ведь должно быть     не - 31.22  а 27!!! 
 Короче получается если по "средней" долю считать для сторнирования продаж и восстановления - то по сумме регистр продаж не закрывается (Ресурс не выводится в 0!!!) - по количеству - да по сумме нет. И косяк этот будет висеть теперь уж навсегда если его не выправить каким нибудь документом "Корректировка продаж" - но это уж не для это задачи точно.
  
 3. Правильная мысль - ввести регистр "Продажи отложенные" - "Остатки". Всегда можем получить на МоментВремени по какой номенклатуре что не оприходовано (Регистр фиксирует ЧЕГО на СКОЛЬКО и на какую СУММУ не хватило на остатке при продаже ДОКУМЕНТОМ ПРОДАЖИ). Просто снять данные все не вычисляя через обороты. т.е. никакая доп дата не нужна в приходе. Вот только АБЫ не усреднять сумму продаж - Ввести еще одно измерение - Документ - это никто не написал (Тип- Док.Продажи) - позволит зафиксировать каким документом продажи на сколько продано - Это важно для правильного сторнирования продаж по СУММЕ продаж документом Приходная накладная.    
  
 Приходная - модуль проведения - вот изюминка этой задачи.
  
 В Расходной ничего необычного не вижу.
 Как и в отчетах собственно.
  
  
  

Добавлено (17.06.2013, 01:52)
---------------------------------------------
bilateral, отчеты я сделал. как в задании на компоновке. вот только п.1 не могу выяснить. хотелось бы сделать уж как следует и сразу выложить все сразу.

Добавлено (17.06.2013, 13:20)
---------------------------------------------
Ведь вообще то ситуация с приходом одного товара с разными сроками годности - задача часто встречается на практике. Касаемо задачи - если ТАКОГО вида приход запрещен - т.е. "ДУБЛЕЙ" номенклатуры из-за сроков действия нет - то задача решается отменно и красиво одним запросом, включая все возможные корректировки по продажам.

Название: Re: 1.6
Отправлено: Юрич от Июнь 17, 2013, 03:39:59 pm
Выскажусь насчет регистра "Продажи отложенные", вместо которого можно использовать регистр остатков.
 Если разрешены отрицательные остатки, то при проведении расходной накладной делаются проводки:
 - списывается все, что есть на остатках,
 - фиксируются продажи на это количество.
 - вводятся отрицательные остатки (без партии и срока годности) на недостающее количество и сумму продажи этого недостающего количества

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

 Как-то так.
Название: Re: 1.6
Отправлено: artfa от Июнь 17, 2013, 04:22:17 pm
мой вариант решения, единественное что не удалось - настроить отчет Ведомость по партиям товаров как в условиях задачи, хотя с отчетом Продажи это получилось: в регистре Продажи делаем измерение Номенклатура с типом Строка, при записи движения в регистр
Код
Движение.Номенклатура = Строка(ВыборкаНоменклатура.Номенклатура) + Строка(ГодностьДляПродаж);

Вложения:
8895447.dt
Название: Re: 1.6
Отправлено: svsource от Июнь 17, 2013, 04:40:36 pm
Цитата (Юрич)
Выскажусь насчет регистра "Продажи отложенные", вместо которого можно использовать регистр остатков.

  
  
 1. "Продажи отложенные" - регистр остатков это совершенно точно.
 2. Все это хорошо и делается одним запросом если в приходе не допускается 2-х и более позиций ОДНОГО и того же товара с РАЗНЫМИ СРОКАМИ ГОДНОСТИ. Даже уточню - не то чтобы нельзя это было - просто ситуация когда при проведении такого документа возникает потребность сразу в списании части или полностью прихода этим же документом - возникают вопросы по формированию записей в регистр продаж, сторнирование и восстановление (Это и правильный расчет СУММЫ продаж и СЕБЕСТОИМОСТИ продаж). Так как считают "По среднему" продажи во многих задачах - неверно. Я, конечно, выложу позднее свое решение этой задачи, но с условием #239 п.1  - как я уже писал. Может кто и модифицирует запрос из приходной накладной для нескольких сроков годности. Сделать то можно конечно - но выглядеть это будет не так красиво как хотелось бы. 
 а "цикл в запросе" или ТаблицаЗначений для хранения остатков - конечно же будут косяками на экземене. За первый - сразу -3 за второй -2. Т.е. дальше можно не проверять.:) 
  
 3. Отрицательные остатки я считаю недопустимыми тем более на партиях. Поэтому я за использование "Продажи отложенные". Кстати этот регистр фиксирует также нехватку товара с "пустым" сроком годности в количестве и сумме продаж конкретной расходной накладной.
Название: Re: 1.6
Отправлено: Юрич от Июнь 17, 2013, 04:58:37 pm
Я имел ввиду использовать вместо нового регистра "Продажи отложенные" регистр "Остатки номенклатуры"
Название: Re: 1.6
Отправлено: svsource от Июнь 17, 2013, 06:07:11 pm
Вот мое решение. С отчетами как в задачнике. 
 но с условием #239 п.1 - см. выше.
  
 Исходные данные - 4 ттн приходных и 3 расходных.
 Можно посмотреть, Провести 3 приходных первые по датам и потом 3 расходных
 4-ую приходную сделать непроведенной. т.е. схема - приход - продажа
  
 И наоборот Сделать непроведенными весь приход - потом провести 3 расходные
 и уже потом 4-ую приходную. т.е. схема - расход - потом приход (с восстановлением себестоимости в продажах)
  
 И сравнить результаты через отчеты задачи.
  
 С Уважением, Сергей.
  
  
  

Добавлено (17.06.2013, 18:07)
---------------------------------------------
artfa, не... не то. См. мой dt.
  
  
  


Вложения:
FS106.dt
Название: Re: 1.6
Отправлено: artfa от Июнь 17, 2013, 11:04:39 pm
#244 как ты в отчете склеил два поля Номенклатура и Срок годности, пока не пойму, объясни пож.

Добавлено (17.06.2013, 23:04)
---------------------------------------------
а все разобрался, на закладке НаборыДанных - Путь, а я все голову ломал, видно курс по СКД не внимательно смотрел

Название: Re: 1.6
Отправлено: fortune от Июнь 30, 2013, 05:53:56 pm
svsource, в вашем решении приходная накладная некорректно пишет данные в регистр: если распровести расходные накладные и оприходовать  в одном документе 2 одинаковых позиции номенклатуры с разными сроками годности - в регистр ОстаткиНоменклатуры запишется 1 сгруппированная позиция с максимальным сроком годности. 2) при списании себестоимости нужно делать проверку:, если КоличествоКСписанию=КоличествоВРегистре тогда  Сумма=СуммаВРегистре (мы списываем всю сумму из регистра ) Иначе  КоличествоКСписанию / КоличествоВРегистре * СуммаВРегистре. Это рекомендация 1С.
Название: Re: 1.6
Отправлено: svsource от Июнь 30, 2013, 07:26:00 pm
fortune, Вы выше прочитайте, что я написал про приход в ОДНОМ документе Одной номенклатуры с разными сроками годности - Я это прекрасно знаю и писал про это. Серьезно разбирался с задачей.
 А по п.2.  ясно это все... Только там еще проверка на 0 делается - все эти рекомендации мне известны - исправлю конечно. Просто не заморачивался. Вот с п.1 что делать?????????????????? Можете переписать запрос - пробуйте. - Я лично не смог. А в условии задачи нет ни слова про такую комбинацию. Просто на практике часто очень бывает - пришел один товар с разными сроками годности - например в супермаркете молоко продукты да и с лекарствами может быть.
Название: Re: 1.6
Отправлено: svsource от Июль 02, 2013, 12:26:47 am
1. Исправил п.2 (#246)
 2. Привел отчеты как в сборнике один к одному.
  
 Вопрос по п.1 - открыт...
Вложения:
3869570.dt
Название: Re: 1.6
Отправлено: dam от Июль 04, 2013, 08:20:06 am
Цитата (svsource)
Вопрос по п.1 - открыт...

 1. В чем вопрос то? Что страшного, если один и тоже товар с разными сроками годности? По моему все очевидно: если товар один и тот же и сроки одинаковы - сворачивается, если сроки разные - будет несколько записей.

 2. Коммент в приходной

 
Цитата
// !!! СБРОС НАБОРОВ ДАННЫХ НА ДИСК ПО ЗАВЕРШЕНИЮ ТРАНЗАКЦИИ


 Просто убил :)))

 3.

 
Цитата
Вот мое решение. С отчетами как в задачнике.
 но с условием #239 п.1 - см. выше.

 Исходные данные - 4 ттн приходных и 3 расходных.
 Можно посмотреть, Провести 3 приходных первые по датам и потом 3 расходных
 4-ую приходную сделать непроведенной. т.е. схема - приход - продажа

 И наоборот Сделать непроведенными весь приход - потом провести 3 расходные
 и уже потом 4-ую приходную. т.е. схема - расход - потом приход (с восстановлением себестоимости в продажах)

 И сравнить результаты через отчеты задачи.

 С Уважением, Сергей.

 Добавлено (17.06.2013, 18:07)
 ---------------------------------------------
 artfa, не... не то. См. мой dt.

 Ваше решение понравилось больше всего. Единственное:
 а) Со сроками годностями - косяк
 б) доки ввел, смоделировал ситуацию, и больше трогать нельзя (перепроводить), иначе регистры поплывут smile Интересно это должно быть учтено при решении задачи
Название: Re: 1.6
Отправлено: dam от Июль 04, 2013, 10:11:40 am
svsource

 Подправил приходную. Проблема со сроками + ОдинТовар_НесколькоСроковГодности - ушла. Движения по приходу надо делать не в верхней группировке, а в детальных записях.

 DTшник прикрепил.
Вложения:
svsource_v2.dt
Название: Re: 1.6
Отправлено: svsource от Июль 04, 2013, 11:48:26 pm
dam, 1. про "цитату" - имелось ввиду что по окончании транзакции наборы записей непустые с установленным флагом записывать  = Истина - запишутся на диск - (в БД).  2. можно было просто написать - FLASH. 3. В конце концов эта фраза с курсов 1С преподавателя - я лично присутствовал на них и специально ее записал. Ничего в ней зазорного не вижу. Ну да ладно
  
 теперь по конфигурации - НЕ ПРОКАТИТ ЭТО ВСЕ.
 Вот специально прикрепил модифицированную тобой мою конфу, которую ты изменил с моими данными из :
 (# 248) 
 ну и посмотри что получается если сначала продать (3 расходных проведено) и потом всего ОДНУ !!! позицию с ОДНИМ сроком годности оприходовать (одна накладная от 28.02.) - где уж там с двумя... т.е. приход позже расхода и посмотри отчет по остаткам товаров
 .... достаточно загрузить только базу и отчет запустить по остаткам... Без комментариев. Посмотри сам.
  
 Вообще я не то что не знаю как сделать эту задачу - я не знаю как сделать красиво или как бы сказать.. "академически правильно". А через       ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!           ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!           ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!           ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!      это я за 5 минут сработаю. Быстрее всех. И будет все работать. Но этот путь не для меня. Просто решая задачи из сборника я уже давно не ставлю перед собой задачу "КАК РЕШИТЬ" а ставлю задачу "КАК РЕШИТЬ КРАСИВО - ТЕХНИЧЕСКИ и МЕТОДОЛОГИЧЕСКИ ГРАМОТНО И ПРАВИЛЬНО". Чтобы решение не загнулось при активной работе с ним большого числа пользователей.
  
 Так что вопрос п.1 открыт.
  
 Конфу прикрепил.
 С Уважением, Сергей
  
  

Вложения:
1Cv8_v3.dt
Название: Re: 1.6
Отправлено: artfa от Июль 26, 2013, 11:41:52 pm
переделал решение, убрал все лишнее что нагородил в предыдущем варианте, работатет все четко, все условия задачи выполнеы и соблюдены
Вложения:
3851490.dt
Название: Re: 1.6
Отправлено: Lolkien от Август 18, 2013, 01:40:07 am
Прочитав первые несколько страниц темы, удивился, почему так много коллег стремятся списывать какие-то несуществующие отрицательные остатки по какой-то абсурдной партии "Приходная.ПустаяССылка()", мучая потом систему сторнированием и прочими развлечениями.

 На мой взгляд, все несколько иначе. Идея в следующем: если товар не оприходован, то и списывать его нечего, хотя продать можно. Спишем потом=)
 Нужно просто воспользоваться последовательностью, включив в нее Расходную накладную.
 Вместо отрицательных остатков я воспользовался нулевой себестоимостью, т.е. при списании в "-" расходная с остатков не списывает ничего, а в продажи пишет себестоимость = 0.
 При проведении приходной из ВТ продажиОбороты()  я узнаю, были ли вообще такие продажи, т.е. есть ли проданный, но не списанный товар. Если есть - остается восстановить последовательность расходных, и все.
 Отчет правда кривой, я еще не добрался до макетов СКД=)
Вложения:
1.6_Lolkien.dt
Название: Re: 1.6
Отправлено: Voyager от Сентябрь 21, 2013, 12:48:27 am
Продолжаю подготовку. Решил 2-ую по счету задачу. До этого с чужими решениями этой задачи не знакомился, но во многом она схожа с 1.1, с которой я разбирался до этого. Выкладываю решение, может быть, кто-то прокомментирует. Заранее спасибо.

Добавлено (21.09.2013, 00:48)
---------------------------------------------
Предостерегаю тех, кто захотел бы посмотреть мое решение. Решение не удовлетворяет всем условиям задачи, а именно: не учитывается случай, когда допускается продажа товара, отсутствующего на складе, более того, система в этом случае выдает ошибку. Это результат недостаточного анализа задачи перед ее решением. Как доработаю, выложу еще раз.


Вложения:
Voyager_1.6.dt
Название: Re: 1.6
Отправлено: zorky от Октябрь 28, 2013, 12:53:38 am
Не догоняю)). как ведомость такого вида получить в одном столбике и кол. и сумма, номенклатура и срок годности

 а так вроде решил на двух регистрах...остатки и ПродажиАвансом, куда записываем отгрузки не хватающего или не существуещего товара в системе на данный момент, с отчетом Продажи не стал парится и регистр Продажи тоже .
 может кто глянет а
Вложения:
zorky1_6.dt
Название: Re: 1.6
Отправлено: jeep от Ноябрь 08, 2013, 08:46:08 pm
Цитата Lolkien ()
При проведении приходной из ВТ продажиОбороты()  я узнаю, были ли вообще такие продажи, т.е. есть ли проданный, но не списанный товар. Если есть - остается восстановить последовательность расходных, и все.
Мне понравилось ваше решение, только вот у вас там косяк похоже. Там где вы в движениях датам приравниваете период из расхода(отгрузок) наверно это не совсем верно ? Наверно нужно все таки установить на секунду меньше, тк иначе у вас в границе документ поступления все же будет после расходной. Конечно, это не повлияет на расчет себестоимости при восстановлении последовательности и перепроведении, но все же.

Добавлено (08.11.2013, 13:36)
---------------------------------------------
Lolkien, + у вас проблема копеек. Думаю, что нужно накапливать распределенные суммы и, если после распределения у нас что-то осталось, то нужно из выборкаСрокГодности.Сумма-ТоЧтоОсталось приравнять сумме.

Добавлено (08.11.2013, 13:40)
---------------------------------------------
Lolkien, + наверно как-то не хорошо перепроводить документы просто так без страховки. Может быть их стоит заблокировать для изменения?

Добавлено (08.11.2013, 14:40)
---------------------------------------------
Lolkien, Думаю вот это 
 

Код
|   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) / ВЫБОР
    |      КОГДА ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) = 0
    |         ТОГДА 1
    |      ИНАЧЕ ОстаткиНоменклатурыОстатки.КоличествоОстаток
    |   КОНЕЦ КАК Себестоимость

 В РасходнойНакладной лишнее, тк Остатки либо есть либо нет в таблице остатков. Не будет там строк NULL.

Добавлено (08.11.2013, 14:44)
---------------------------------------------
Lolkien, Индексировать по Себестоимости и Партии тоже не нужно. Нужно индексирование проводить только по тем полям по которым в Виртуальной таблице будет проводится соединение. Индексирование ускоряет поиск нужного поля и увеличивает: размер таблицы,скорость записи в таблицу(в любой базе данных).

Добавлено (08.11.2013, 14:45)
---------------------------------------------
Lolkien, Короче идея какая-то есть, но реализовано как-то не очень конечно. Хотя я еще не спец и наверно не мне судить.

Добавлено (08.11.2013, 14:51)
---------------------------------------------
Lolkien, Ну и в Расходной вы не там движения добавляете в продажи и не считаете себестоимость номенклатуры. Те у вас нет ПолнаяСебестоимость, которую следует добавить в Продажи.

Добавлено (08.11.2013, 15:00)
---------------------------------------------
Lolkien, + думаю при отборе остатков следует фильтровать не только Номенклатуру из списка товаров расходуемых, но и срок годности. Мы ведь хотим списать Номенклатуру с определенным сроком годности.

Добавлено (08.11.2013, 16:23)
---------------------------------------------
Voyager, те задача не решена и точка.

Добавлено (08.11.2013, 20:46)
---------------------------------------------
Voyager, а это вообще нормально восстанавливать последовательность каждый раз когда приходная накладная заводится после продажи? А если там 100 документов? насколько этот процесс долгий?. 
 Народ у вас есть решение которое проверку при сдаче прошло? 
 Я так понял есть 2 метода решения через сторнирование и через последовательности?

Название: Re: 1.6
Отправлено: jeep от Ноябрь 13, 2013, 09:36:41 am
Итак, выкладываю 1.06 с выполненными отчетами. 
 Пожалуйста, критикуйте smile
Вложения:
201311130932__1.dt
Название: Re: 1.6
Отправлено: MorningStalker от Декабрь 10, 2013, 05:03:11 pm

 Уважаемые коллеги! Помогите пожалуйста победить СКД!!!

 Проблема в следующем: формирую отчет "Ведомость по партиям" Создаю группу, в которую включаю два поля (чтобы в отчете данные выводились в две строки количество/сумма).
 КАК объеденить заголовок? выводится и заголовок группы и заголовки входящих в группу полей.
 Я уже весь мозг сломал... Помогите плизз!
Вложения:
s4012710.jpeg
Название: Re: 1.6
Отправлено: IT_PROGRAMMIST от Декабрь 13, 2013, 04:25:19 pm
c помошью макета скд
Название: Re: 1.6
Отправлено: mikas-2008 от Декабрь 18, 2013, 12:22:15 am
Очень интересная задача. Не удивительно, что она вызвала столько откликов и решений. Вот честно, мне было лень читать 30-ть страниц топика, но я взял идею одного форумчанина:

 
Цитата
При расходе, когда уходим в минус при заданной учетной политике, мы излишки списываем на ПУСТУЮ ПАРТИЮ. Когда вводим новый документ прихода, то анализируем отрицательные остатки на пустой партии. Если они есть, то сторнируем их и проводим по расходной накладной, которая записала в минус. Таким образом регистр по пустышке идет в ноль, и мы записываем расход уже с реальной приходной накладной. Как-то так.  ;)
  
 Последовательности не использовал, хотя можно было и использовать, чтобы отслеживать изменения в регистрах и приходных, но по задаче этого не требуется, так как документы не вводятся задним числом, а только могут перепроводиться. 

 Выкладываю свое решение. Может быть кому пригодится. Буду благодарен, за комментарии.
Вложения:
mikas_1.06.dt
Название: Re: 1.6
Отправлено: MorningStalker от Декабрь 18, 2013, 09:46:36 am
способа решения вообще-то два (может больше, если знаете напишите, интересено будет посмотреть):
 1. через ПустаяПартия.
 2. создание дополнительного регистра - в одном пишутся данные по ФИФО/ЛИФО, в другом по средней.
Название: Re: 1.6
Отправлено: mikas-2008 от Декабрь 18, 2013, 10:27:44 am
Цитата MorningStalker ()
способа решения вообще-то два (может больше, если знаете напишите, интересено будет посмотреть): 1. через ПустаяПартия.
 2. создание дополнительного регистра - в одном пишутся данные по ФИФО/ЛИФО, в другом по средней.

 Простите, какой ФИФО и ЛИФО? Про это в данной задаче ни слова!!!
Название: Re: 1.6
Отправлено: Denver от Декабрь 18, 2013, 06:35:44 pm
в этой ветке нашел 3 способа:
 1. замороченное сторнирование с одним регистром
 2. не замороченное сторнирование, но с 2-мя регистрами
 3. через последовательность
 ..интересно какой более правильный
Название: Re: 1.6
Отправлено: mikas-2008 от Декабрь 18, 2013, 08:40:53 pm
Цитата Denver ()
..интересно какой более правильный

 Я когда еще был студентом - математиком, нам всегда говорили. Практически любая задача имеет несколько решений. Как минимум 2-ва. В данном случае, как мне кажется играет роль эффективность, как в использовании инструментов, так и в реализации алгоритмов, так как в реальной жизни пользователю далеко паралельно, что там внутри и как крутятся шестеренки. Ему важно нажать на кнопку и быстро получить результат.  wink А в нашем случае еще время реализации.

 На экзамене, чтобы сэкономить время, я б выбрал решение с 2-мя регистрами. Количество регистров особой роли не сиграет, а вот скорости разработки добавит.

 А еще есть мнение, что последовательности нужно избегать, так как они паралельную базу, делают последовательной, что не всегда хорошо сказывается на производительности, т.е. последовательности нужно использовать там, где без них не обойтись.
Название: Re: 1.6
Отправлено: Denver от Декабрь 18, 2013, 10:29:51 pm
да, я тут где то читал, что Белоусов не одобрил использование последовательности в этой задаче. Только это было давно, ближе к началу ветки
Название: Re: 1.6
Отправлено: MorningStalker от Декабрь 19, 2013, 06:12:18 am
Цитата mikas-2008 ()
Простите, какой ФИФО и ЛИФО? Про это в данной задаче ни слова!!!

 Точно, у меня от этих задач уже крыша едет. Это я с задачей 1-5 попутал.
Название: Re: 1.6
Отправлено: 32ops от Декабрь 31, 2013, 10:00:32 am
регистр остатков: номенклатура, партия, срок годности; количество, сумма
 расходная: по несуществующим остаткам пишем в регистр номенклатуру и количество, партия срок годности - пустые.
 приходная: если есть по данной номенклатуре пустая партия, то вычисляем количество которое можем списать и делаем движения в расход по партиям и срокам годности, а из пустой партии это количество убираем.
 кагтотаг.
 ПыСы Чет все мои проектные решения по сложным задачам отличаются от форума, то ли лыжи не едут,...)), а комментов пока не получил((
Название: Re: 1.6
Отправлено: 32ops от Январь 05, 2014, 12:48:25 pm
Фух, выдержал праздники))
Вложения:
1Cv8_1_6.dt
Название: Re: 1.6
Отправлено: MKIV от Март 02, 2014, 02:46:07 pm
вижу 2 решения этой задачи:
 1) сторнирование движений расхода регистра остатков  и последующее создание движений "правильного" расхода
 2) приход на дату поступления приходной накладной и последующее перепроведение(либо частичная замена записей в наборе записей) каждой расходной, которая попала в интервал дата поступления-дата приходной.

 у каждого из этих варинтов вижу свои минусы:
 1)_приходная накладная делает сторнирование, в результате чего появляются движения с видом расход, что, на мой взгляд, несколько противоестественно и усложняет дальнейший анализ движений  документов (обслуживание).
 _в случае если было несколько приходных накладных, в которых товар пересекается, то может произойти, н-р,  двойное сторнирование, т.е. будет происходить увеличение числа записей регистра в геометрической прогрессии
 2)в этом случае придется обращаться ко всему объему набора записей каждой накладной. даже если после обработки мы будем записывать только измененые записи набора (а не перепроводить весь набор), то все-равно набор придется читать весь и потом искать в нем нужные.

 первый варинт больше подходит для случая, если требуется большее быстродействие и случаев сторнирования/пересторнирования мало.
 второй вариант подойдет там, где важно легко понять что откуда взялось и возможно пересторнирование или объем сторнирования составляет значительную часть.

 выбор в пользу того или иного варианта должен быть сделан на основе специфики работы, но её нет и в этом трудность.
Название: Re: 1.6
Отправлено: SkaineT от Март 06, 2014, 07:05:35 pm
Решение задачи 1.6 для 8.2. Может кто нибудь посмотреть правильно ли решена задача?
Вложения:
_1.6.rar
Название: Re: 1.6
Отправлено: giotto от Март 25, 2014, 11:39:11 am
Коллеги, проясните момент, будте добры: срок годности - это что за реквизит? Это число или дата? А то уже ум за разум зашел
Название: Re: 1.6
Отправлено: MorningStalker от Март 25, 2014, 07:11:55 pm
Цитата giotto ()
Коллеги, проясните момент, будте добры: срок годности - это что за реквизит? Это число или дата? А то уже ум за разум зашел
1. Полагаю можно сделать и так и так.
 2. В таблицах отчета присутствует такой текст: Кефир 10.01.2010. Если судить по нему, то СрокГодности это Дата.
 3. Если сделать СрокГодности числом, то придется делать много лишних телодвижений при формировании запросов и алгоритмов.

 Резюмируя: я бы сделал Датой ( в принципе так и сделал когда решал :))
Название: Re: 1.6
Отправлено: YFred от Апрель 08, 2014, 04:40:06 pm
Посмотрите мое решение. Как себестоимость записывать в регистр продажи после проведения приходной не придумал. Есть идеи, кто как делал?
Вложения:
5003588.dt
Название: Re: 1.6
Отправлено: Demy от Апрель 15, 2014, 10:18:35 am
Всем доброго времени суток. Посмотрите мою реализацию. Ткните носом если что не так. Буду благодарен.

Добавлено (15.04.2014, 10:18)
---------------------------------------------
YFred, посмотрел твою конфигурацию, есть пара замечаний:
 1. Устанавливать БлокироватьДляИзменения не надо. БлокироватьДляИзменения используется только тогда, когда ты сначала пишешь в регистр потом контролируешь остатки. В противном случае нужно использовать БлокировкаДанных. Поэтому у тебя нужно оставить только объект БлокировкаДанных.
 2. В расходной накладной ?(Движение.Количество = Выборка.КоличествоОстаток,Выборка.СуммаОстаток,Движение.Количество*Выборка.СуммаОстаток/Выборка.КоличествоОстаток) можно сократить до Движение.Количество*Выборка.СуммаОстаток/Выборка.КоличествоОстаток.
 3. В расходной накладной можно изменить конструкцию в запросе:
     ВЫБОР
        КОГДА ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) = 0
           ТОГДА 0
        ИНАЧЕ ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) / ОстаткиНоменклатурыОстатки.КоличествоОстаток
     КОНЕЦ КАК ЦенаПрихода
 на такую
     ВЫБОР
        КОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток ЕСТЬ NULL
           ТОГДА 0
        ИНАЧЕ ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) / ОстаткиНоменклатурыОстатки.КоличествоОстаток
     КОНЕЦ КАК ЦенаПрихода

 Прошу поправить если я ошибаюсь.


Вложения:
Demy_1_6.dt
Название: Re: 1.6
Отправлено: MorningStalker от Апрель 15, 2014, 10:51:10 am
Цитата Demy ()
Ткните носом если что не так. Буду благодарен.
1. Не правильно наложены блокировки.

 моделируем ситуацию:
 на складе есть 5 табуреток. Документ №1 списывает все 5 штук. На складе остается 0.
 перепроводим документ.
 у тебя алгоритм следующий
 а) записываются пустые движения по документу:  Движения.ОстаткиНоменклатуры.Записать();  Т.е. после этой записи 5 табуреток снова будут на остатках.
 б) блокируется регистр.
 в) завершается транзакция, заново списывается 5 табуреток. Остаток на складе 0.

 я ввожу Документ №2, продаю 1 табуретку и накладываю свою блокировку в момент, когда у Документа №1 уже выполнилась строка а), но еще не выполнилась строка б) - могу это сделать, т.к. Документ №1 еще не заблокировал регистр.

 в результате если Документ №1 завершит транзакцию, то на складе будет -1 табуретка. Либо, если транзакция откатится назад, то на складе будут 4 табуретки, которые были проданы еще вчера.

 Отсюда вывод:
 сначала блокируем регистр, а потом записываем пустые движения.

 2.

 Движение.Партия       = Документы.ПриходнаяНакладная.ПустаяСсылка();
 Движение.СрокГодности = '00010101';

 вот это писать не нужно, попробуй просто опустить эти строки, и ты увидишь, что при отсутствии значения в эти поля автоматически запишутся пустые ссылки.

 3. я бы не стал замарачиваться с минусовыми движениями по регистру Продажи:

 В Р/Н:
 если осталось списать > 0 тогда пишем движения ТОЛЬКО по регистру Остатки и в качестве себестоимости указываем СУММУ ПРОДАЖИ.

 В П/Н:
 1. оприходуем товары из ТЧ.
 если есть минусовые остатки тогда:
 2   регистр ОстаткиНоменклатуры Расход (списываем обычные партии)
 регистр ОстаткиНоменклатуры Приход (выравниваем минусовые остатки - пустые партии)
 пишем движения по регистру Продажи: Количество - то что оприходовали, Себестоимость - то что оприходовали, Сумма - берем из минусовой себестоимости.

 понятно что количество будет Мин(Приход, МинусовойОстаток), ну и остальные данные тоже будут браться исходя из количества. :).

 4. не знаю насколько критично, но пакетными запросами я бы тоже не стал злоупотреблять. И в П/Н и в Р/Н запрос отлично управляется в 2 пакета: первый для ТЧ, второй для соединения ТЧ и регистра Остатки.
Название: Re: 1.6
Отправлено: Igor-pn от Апрель 15, 2014, 12:42:28 pm
Посмотрите для примера мой вариант
Вложения:
6292875.dt
Название: Re: 1.6
Отправлено: YFred от Апрель 15, 2014, 04:20:38 pm
Цитата: Demy;34516
1. Устанавливать БлокироватьДляИзменения не надо. БлокироватьДляИзменения используется только тогда, когда ты сначала пишешь в регистр потом контролируешь остатки. В противном случае нужно использовать БлокировкаДанных. Поэтому у тебя нужно оставить только объект БлокировкаДанных.

 БлокироватьДляИзменения по моему мнению нужно ставить, руководствовался статьей Чистова http://expert.chistov.pro/public/195591/ . Вполне возможно, что понял не правильно.

 
Цитата: Demy;34516
2. В расходной накладной ?(Движение.Количество = Выборка.КоличествоОстаток,Выборка.СуммаОстаток,Движение.Количество*Выборка.СуммаОстаток/Выборка.КоличествоОстаток) можно сократить до Движение.Количество*Выборка.СуммаОстаток/Выборка.КоличествоОстаток.

 Нельзя так сокращать. Это делается для того чтобы регистр выводился в 0 при полном списании (не зависали копейки).
Название: Re: 1.6
Отправлено: Demy от Апрель 15, 2014, 05:59:42 pm
MorningStalker, благодарю за советы.
 1. Довод очень логичной, но я опирался на конфигурацию 1С, которую мне с книжкой дали в качестве примера. У меня сделано как и там, то есть сначала запись потом блокировка. Думаю у них был повод так сделать. Возможно я опять что-то не так понял. Поэтому вопрос: ты уверен что так правильно?
 2. Разумно, но у меня привычка инициализировать все поля. Насколько это критично? Я думаю несколько лишних машинных тактов на скорости не сильно отразятся. С другой стороны конечно лишняя писанина.
 3. Да, это я перемудрил. Спасибо за замечание. Уже исправил.
 4. Что-то не до конца понял что значит "не злоупотреблять". Использовать вложенные запросы?

 
Цитата: YFred;34525
БлокироватьДляИзменения по моему мнению нужно ставить, руководствовался статьей Чистова http://expert.chistov.pro/public/195591/ . Вполне возможно, что понял не правильно.
Как раз из этой статьи я и вынес что БлокироватьДляИзменения используется при новой методике проведения. Т.е. когда ты сначала пишешь движения в регистр, а потом контролируешь не ушел ли в минус.

 
Цитата: YFred;34525
Нельзя так сокращать. Это делается для того чтобы регистр выводился в 0 при полном списании (не зависали копейки).

 Нет, проблемы копеек тут не возникнет. Возьмем пример: есть товар в количестве 1000 штук общей стоимостью 1 рубль (для примера :)). Нужно списать скажем 50. Также условимся что все числа имеют точность 2-а знака после запятой. Если при расчете стоимости списываемого товара мы будем выполнять сначала деление, тогда возникнет "проблема копеек". Т.е. :
 ОбщаяСтоимость / Количество * Списываем = 1.00 / 1000 * 50 = 0.00.
 Почему? Потому что при операции деления у нас потерялся разряд:
 1 / 1000 = 0.001, но так как у нас только два знака после запятой, то: 1 / 1000 = 0.00.
 Но если сначала выполнять операцию умножения:
 Списываем * ОбщаяСтоимость / Количество = 50 * 1.00 / 1000 = 0.05.
 Я оп крайней мере так понимаю эту проблему.
Вложения:
6498382.dt
Название: Re: 1.6
Отправлено: YFred от Апрель 15, 2014, 10:52:06 pm
Цитата: Demy;34528
Как раз из этой статьи я и вынес что БлокироватьДляИзменения используется при новой методике проведения.

 Прочитай статью внимательнее. Там есть такой пункт:
 "17. Устанавливаем свойство "БлокироватьДляИзменения". Это позволит заблокировать от чтения те данные которые сейчас будут удалены из регистра, вдруг транзакция будет отменена, не хотим чтобы кто-либо вместе с нами работал с этими данными.
 Подобное действие не помешает и при смене даты или времени документа, а не только при оперативном проведении."
Название: Re: 1.6
Отправлено: MorningStalker от Апрель 16, 2014, 04:20:17 am
Цитата Demy ()
1. Довод очень логичной, но я опирался на конфигурацию 1С, которую мне с книжкой дали в качестве примера. У меня сделано как и там, то есть сначала запись потом блокировка. Думаю у них был повод так сделать. Возможно я опять что-то не так понял. Поэтому вопрос: ты уверен что так правильно? 2. Разумно, но у меня привычка инициализировать все поля. Насколько это критично? Я думаю несколько лишних машинных тактов на скорости не сильно отразятся. С другой стороны конечно лишняя писанина.
 3. Да, это я перемудрил. Спасибо за замечание. Уже исправил.
 4. Что-то не до конца понял что значит "не злоупотреблять". Использовать вложенные запросы?
1. для себя я уверен, много всякого изучал по блокировкам - книги, интернет, реальное общение со специалистами 1С. про книжки могу уверенно сказать, что образцом для слепого подражания они не являются, и  информацию из них нужно сравнивать с информацией из других источников (хотя 99.99% информации является верной). 100% касается, например, методичек по курсам бухгалтерского, расчетного учета, мы там кучу ляпов находили.

 2. чем меньше кода - тем лучше. читабельней твой текст кода, легче проверяющим, меньше тебе телодвижений, экономия времени на экзамене и т.д. Хотя, конечно, это все не принципиально.

 4. чем меньше пакетов - тем лучше. Зачем делать 4 телодвижения там, где можно 2? посмотри мои запросы и определись для себя сам. Я ни в коем случае не настаиваю на идеальности своего решения!!!

 P.S. В конце концов, мы общаемся на этом форуме, выкладываем свои и смотрим чужие решения, для того чтобы найти как можно более идеальное решение! :). Так что сам делай выводы - нужны ли тебе элементы моего опыта или нет :).
Вложения:
_1-06.dt
Название: Re: 1.6
Отправлено: SkaineT от Апрель 16, 2014, 11:45:00 am
Буду рад критики, мой вариант решения
Вложения:
3930731.dt
Название: Re: 1.6
Отправлено: Demy от Апрель 20, 2014, 12:57:32 pm
Цитата MorningStalker ()
В конце концов, мы общаемся на этом форуме, выкладываем свои и смотрим чужие решения, для того чтобы найти как можно более идеальное решение! :). Так что сам делай выводы - нужны ли тебе элементы моего опыта или нет :).
Совершенно согласен. Я воспринимаю критику к своему решению ни как оскорбление в адрес своего гения :), но как возможность научиться чему-то новому и заполнить пробелы в знаниях. Поэтому каждое замечание для меня ценно. Но не являясь легковерным человеком я просто не могу не поспорить, так как в споре рождается истина. Теперь пройдемся по вопросам:
 1. Порылся в интернете и не нашел особых доводов в защиту решения 1С, но тем не менее сохраняя надежду на разумность решения предлагаю сойтись на следующем: запись пустых движений производим после блокировки регистра, так как это не помешает. smile
 2. Тут позволь не согласится. Меньше кода не всегда легче для чтения (могу привести код с++ :)). Я всегда пытаюсь инициализировать все поля значениями, зная при этом что они будут автоматически инициализированы этими же значениями, чтобы впоследствии другой программист читая мой код не подумал что я забыл про эти поля. Конечно на экзамене на это вряд ли обратят внимание. Но все равно спасибо.
 4. Совершенно согласен, с удовольствием посмотрю твое решение. Спасибо.

 
Цитата YFred ()
Прочитай статью внимательнее. Там есть такой пункт:
 "17. Устанавливаем свойство "БлокироватьДляИзменения". Это позволит заблокировать от чтения те данные которые сейчас будут удалены из регистра, вдруг транзакция будет отменена, не хотим чтобы кто-либо вместе с нами работал с этими данными.
 Подобное действие не помешает и при смене даты или времени документа, а не только при оперативном проведении."
Возможно, я на этот счет еще подумаю. Спасибо.

Добавлено (20.04.2014, 12:53)
---------------------------------------------
MorningStalker, посмотрел твое решение. Не знаю насколько это критично (кстати хотелось бы узнать :)), но мне так решать проще. Кстати можно было сделать так чтобы возвращалась либо таблица с остатками, либо таблица с недостающими товарами. Так мне кажется было бы даже лучше в плане загрузки сети (но конечно больше сервер напрягает). Кстати хотелось бы спросить:
 1. Почему все пишут такую конструкцию:
     ВЫБОР
         КОГДА ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) <> 0
             ТОГДА ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) / ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0)
         ИНАЧЕ 0
     КОНЕЦ КАК Себестоимость
 вместо такой:
     ВЫБОР
         КОГДА НЕ ОстаткиНоменклатурыОстатки.КоличествоОстаток ЕСТЬ NULL
             ТОГДА ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) / ОстаткиНоменклатурыОстатки.КоличествоОстаток
         ИНАЧЕ 0
     КОНЕЦ
 Может я чего-то не понимаю?
 2. В чем смысл конструкции:
     Запрос.УстановитьПараметр("Момент", ?(Режим = РежимПроведенияДокумента.Оперативный, Неопределено, МоментВремени()));
 тем более что регистр у нас и так заблокирован.
 3. Думаю YFred правильно писал что нужно использовать флаг ЗаблокороватьДляИзменения. Ведь номенклатура, которая была в движениях документа может отличаться от номенклатуры в новых движениях документа.

Добавлено (20.04.2014, 12:57)
---------------------------------------------
SkaineT, посмотрел твое решения, и сразу вопрос: в задаче написано что срок годности указывается при поступлении. Нигде не написано что срок годности нужно указывать в расходнике.


Вложения:
5053314.dt
Название: Re: 1.6
Отправлено: SeraFim1st от Апрель 23, 2014, 04:37:29 pm
Цитата Demy ()
2. В чем смысл конструкции:     Запрос.УстановитьПараметр("Момент", ?(Режим = РежимПроведенияДокумента.Оперативный, Неопределено, МоментВремени()));

 Регистр накопления (остатков) состоит из двух таблиц: таблицы движений и таблицы итогов. Таблица итогов содержит итоговые записи по каждому месяцу + актуальные итоги.
 Если рассчитываем остатки на конкретную дату - программа возьмет остатки за месяц и движения только за указанный месяц, и рассчитывает необходимые остатки.
 Если же мы проводим оперативно, то подразумеваем, что после этой даты ни одного движения нет. Так что можно взять актуальные итоги.
Название: Re: 1.6
Отправлено: Demy от Апрель 23, 2014, 05:02:01 pm
Цитата SeraFim1st ()
Регистр накопления (остатков) состоит из двух таблиц: таблицы движений и таблицы итогов. Таблица итогов содержит итоговые записи по каждому месяцу + актуальные итоги.Если рассчитываем остатки на конкретную дату - программа возьмет остатки за месяц и движения только за указанный месяц, и рассчитывает необходимые остатки.
 Если же мы проводим оперативно, то подразумеваем, что после этой даты ни одного движения нет. Так что можно взять актуальные итоги.
Другими словами запрос так отработает быстрей. Правильно?
Название: Re: 1.6
Отправлено: MorningStalker от Апрель 24, 2014, 05:23:12 am
Цитата Demy ()
Другими словами запрос так отработает быстрей. Правильно?
да, при чем намного. Система постоянно хранит итоги на 3 999 год, то есть если ты обратился к актуальным итогам - она взяла их и выложила.

 иначе она их будет высчитывать специально для тебя, что подразумевает увеличения времени и ресурсов на выполнение твоего запроса.
Название: Re: 1.6
Отправлено: Demy от Апрель 24, 2014, 08:58:37 am
MorningStalker, спасибо за подробное объяснение.
Название: Re: 1.6
Отправлено: Renegade от Май 05, 2014, 05:29:29 pm
Никак не могу разобраться с расчетом себестоимости, если в предыдущих задачах сним сложностей  нет, то тут почему то мозг тупит, тот же вариант sv_mikh'a

 http://imgur.com/9mINh7l

 не могли бы расшифровать строки с вопросом? Почему в одном из вариантов используется расчет по данным документа, а в других по данным регистра?

Добавлено (05.05.2014, 17:29)
---------------------------------------------
up вопросу

Название: Re: 1.6
Отправлено: ignsv от Июнь 20, 2014, 10:07:01 am
Разъясните пожалуйста, что делать с минусовыми продажами? они же потом в отчете продажи попадают с пустой себестоимостью и без срока годности.
 В приходе мы сторнируем минусовые остатки и списываем "правильно", а продажи продолжают висеть?
Название: Re: 1.6
Отправлено: MorningStalker от Июнь 20, 2014, 11:37:26 am
Я делал это следующим образом:

 1. При продаже отстутствующего товара, мы не пишем движения в регистр продажи, т.к. для этого у нас нет всех необходимых данных, а именно, срока годности.
 2. Пишем движения по регистру ОстаткиНоменклатуры, загоняя его в минус, при этом вместо себестоимости в ресурс Сумма мы записываем СУММУПРОДАЖИ.

 3. При оприходовании недостающего товара формируются недостающие записи по регистру Продажи, при этом количество и сумма берется из прихода, а сумма продажи берется из себестоимости минусовых записей по регистру ОстаткиНоменклатуры.

 При такой реализации Остатки выводятся в ноль, продажи формируются корректно.
Название: Re: 1.6
Отправлено: Lionelho от Июль 20, 2014, 10:33:40 pm
MorningStalker, я не видел твоего решения, но подозреваю что оно неверное.
 Ты пишешь: "При продаже отстутствующего товара, мы не пишем движения в регистр продажи, т.к. для этого у нас нет всех необходимых данных, а именно, срока годности."
 В этом случае в отчете "Продажи" мы не увидим ни каких данных на текущий момент, а это неверно. Мы должны видеть все продажи, даже если срока годности нет. Я так думаю. На счет твоих движений по регистру ОстаткиНоменклатуры не могу судить, описано непонятно.
Название: Re: 1.6
Отправлено: Lionelho от Июль 20, 2014, 10:38:55 pm
Выкладываю своё решение. Буду благодарен если просмотрите его. Может чего интересного найдете. Буду рад критике. Кстати, мой вариант отчета "Ведомость по партиям товаров" в точности повторяет требуемую структуру отчета из задачника.
Вложения:
4358916.dt
Название: Re: 1.6
Отправлено: mulradik от Август 05, 2014, 05:39:44 am
Прошу оценить моё решение.
 https://yadi.sk/d/GpwvWXF5Z6KQb
 Заранее благодарю.
Название: Re: 1.6
Отправлено: Zanzarchik от Август 06, 2014, 09:52:09 am
Всем привет! Объясните, зачем нужно делать сторно при проведении документа "Приходная накладная"? Если можно запросом отбирать обороты с пустой партией до регистратора и проводить регистратор. У нас же все равно приходная накладная благодаря реквизиту "Дата поступления" будет формировать приход на дату поступления, т.е. при проведении расходной накладной после даты поступления движения сами собой исправятся. Что в таком решении не правильно?
 https://drive.google.com/file/d/0B9LJWOvcTpy7TnpEN0lmbjhObzQ/edit?usp=sharing

Добавлено (06.08.2014, 09:52)
---------------------------------------------

Цитата: Lionelho;35533
Выкладываю своё решение. Буду благодарен если просмотрите его. Может чего интересного найдете. Буду рад критике. Кстати, мой вариант отчета "Ведомость по партиям товаров" в точности повторяет требуемую структуру отчета из задачника.

 1. Нужно устанавливать период:
    Запрос.УстановитьПараметр("Период",?(РежимПроведения = РежимПроведенияДокумента.Оперативный, Ссылка.МоментВремени(),Неопределено));
 2. Не могу понять, почему все делают сторно движения, причем в приходной, да потом еще и расход в приходной накладной, когда можно просто перепровести расходные с пустой партией?
Название: Re: 1.6
Отправлено: mulradik от Август 07, 2014, 11:32:32 am
Zanzarchik, а где в расходной вы увидели Дату поступления?
 Приходные по условию задачи могут вводиться гораздо позже Расходных, поэтому Расходная даже при проведении с учётом существования ПН не будет знать, какую партию ей брать.
Название: Re: 1.6
Отправлено: Zanzarchik от Август 08, 2014, 02:47:00 pm
Цитата: mulradik;35664
Zanzarchik, а где в расходной вы увидели Дату поступления?

 Ну, в расходной накладной ее и не будет. Реквизит будет в документе поступления. Период формирования проводки = "дата поступления". Н-р: расходная от 01.08.2014, приходная от 08.08.2014, но дата поступления = 01.01.2014, т.е. приход падает на 01.01.2014, потом отбираются расходные с пустой партией, перепроводятся с учетом этого поступления. Также, пользователь может и сам перепроводить доки.
Название: Re: 1.6
Отправлено: 7183847 от Август 14, 2014, 03:27:39 pm
Прошу оценить мое решение )
 https://drive.google.com/file/d/0B9FrJm4ndcNaUWtPNk13clZGUW8/edit?usp=sharing
Название: Re: 1.6
Отправлено: program1Cer от Август 22, 2014, 09:41:14 am
Хорошая задача, много времени ушло на понимание самого условия задачи и то как хотят видеть это проверяющие.
 Решение стандартное:
 1) Приходная накладная. Движения  - Приход.
 Если разрешены отрицательные остатки, то сторно движений Расходных накладных + формирование новых движений с учетом прихода.

 2) Расходная накладная. Движения - Расход. Списание по партиям с сортировкой по сроку годности и себестоимости за 1 ед продукции.

 Делал сам, реализация может сильно отличаться.
Вложения:
prog1Cer_1.6.dt
Название: Re: 1.6
Отправлено: program1Cer от Август 22, 2014, 10:14:53 am
Цитата Lionelho ()
Выкладываю своё решение. Буду благодарен если просмотрите его. Может чего интересного найдете. Буду рад критике. Кстати, мой вариант отчета "Ведомость по партиям товаров" в точности повторяет требуемую структуру отчета из задачника.Прикрепления: 4358916.dt(173Kb)

 Посмотрел твой вариант, неплохое решение. Вот только почему ты сторно делаешь только для тех позиций по которым отрицательные остатки? Ведь тут был пример с ответом Белоусова, где себестомость пересчитывалась для всех позиций документа.

 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567334

 Вот посмотри, а в твоем решении как я понял, по 3 рубля спишется только 5 штук.
Вложения:
9966905.dt
Название: Re: 1.6
Отправлено: Svetik_1704 от Август 25, 2014, 05:09:58 pm
а нужно ли пересчитывать списание по партиям (по расходным накладным) при поступлении со сроком годности, по которому уже было списание. Ведь в этом случае может быть ситуация, когда новый документ оприходовал товар с более высокой стоимость и его при последовательном вводе документов нужно было бы списывать в первую очередь, т.е. в этом случае была бы изменена себестоимость продаже.
Название: Re: 1.6
Отправлено: wtlz от Август 26, 2014, 12:14:36 am
Цитата: mulradik;35649
Прошу оценить моё решение.
 https://yadi.sk/d/GpwvWXF5Z6KQb
 Заранее благодарю.

 В приходной нет реквизита Дата поступления. Соответственно остатки берутся все до момента времени документа, а не за период...
Название: Re: 1.6
Отправлено: kzot от Август 28, 2014, 04:14:29 pm
Пересмотрел несколько решений и запутался немного, вспомнил про оccam's razor.

 Встал вопрос почему не сделать через вызов проведения расходной сформировавшей отрицательные остатки из приходного ? Т .е. в модуле приходной записываем движения приходного в остатки, проверяем на минусовые остатки, и при наличии получаем список расходных и проводим их передав новый параметр даты расходного.

 Какие минусы у данного решения и имеет ли оно право жить ?
Название: Re: 1.6
Отправлено: Ran от Август 29, 2014, 11:00:10 am
Просмотрел несколько решений. Почему никто не блокирует удаляемые старые движения документа?

 Если ориентироваться на _http://forum.chistov.pro/index.php?topic=1999.msg22182#msg22182, то при записи пустого набора нужно ставить БлокироватьДляИзменения = истина (на случай перепроведения с последующим откатом транзакции).

 Тот же вывод можно сделать из статьи Чистова _http://1c.chistov.pro/2013/07/blog-post_25.html
 
Цитата
//16
 Если Режим = РежимПроведенияДокумента.Оперативный Тогда     Движения.СтоимостьТоваров.Очистить(); //17
     Движения.СтоимостьТоваров.БлокироватьДляИзменения = Истина;     Движения.СтоимостьТоваров.Записать();
 КонецЕсли;
 //
 16. Проверяем оперативно ли проводится документ.
 17. Устанавливаем свойство "БлокироватьДляИзменения". Это позволит
 заблокировать от чтения те данные которые сейчас будут удалены из
 регистра, вдруг транзакция будет отменена, не хотим чтобы кто-либо
 вместе с нами работал с этими данными.


 Кто что думает?
Название: Re: 1.6
Отправлено: Gladkov79 от Сентябрь 22, 2014, 01:18:32 pm
Подготовил решение:
 При проведении реализации при формировании отрицательных остатков в партию пишем документ реализации, в сумму - сумму реализации.
 В этом случае отрицательные остатки будут содержать информацию о еще не закрытых приходами продажах с указанием документа реализации и еще не закрытой суммы реализации.

 При проведении прихода:
 1. Формируем движения "Приход"
 2. Сторнируем записи формирующие отрицательные остатки (датой реализации).
 3. Формируем движения "Расход" (датой реализации)
 4. Формируем движения "Продажи" (датой реализации)

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

 Подскажите плизз как на форме выложить свое решение. (Не нашел "Загрузить файл")
 В алгоритмах реализован
Название: Re: 1.6
Отправлено: Demy от Сентябрь 22, 2014, 05:30:38 pm
Цитата Gladkov79 ()
Подскажите плизз как на форме выложить свое решение. (Не нашел "Загрузить файл")
Внизу надпись "Прикрепить файл", кнопка "Обзор". Возможно тебе еще не дали соответствующие права. Насколько я понял они даются только за какое-то количество сообщений на форуме. По крайней мере у меня было так.
Название: Re: 1.6
Отправлено: Odines от Ноябрь 20, 2014, 11:02:13 am
Добрый день всем!!

Выкладываю свой вариант решения. Очень интересно услышать комментарии к решению, так как оно довольно простое и на мой взгляд правильное.

Промучился над задачей неделю! Прочитал много мнений по поводу решения, просмотрел разные решения, где-то делают сторно в приходной , где-то последовательности и тд.

Я считаю что решение не должно быть таким сложным как много вариантов решений в этой теме.
Плюс все сторно записи в ПН считаю неверными так как если перепровести РН то все движения собьются.
Считаю что движения по продажам и расходу должны быть сделаны только РН а не ПН.

Вообщем решил простым образом.
1. При проведении РН списывается все согласно задачи (и по остаткам и по продажам). Если не хватает партий то списывается без партий и без сроков.
2. При проведении ПН делается обычный приход с партиями и сроками на ДатуПоступления(реквизит ПН). Записи записываются, и потом перепроводятся все РН с датой между Дата ПН и ДатаПоступления(реквизит ПН) которые делали движения по номенклатуре из документа ПН.

Таким образом у приходных всегда будут движения по приходу, у расходных движения по расходу и продажам.
Отчеты легко построить так как все данные находятся в соответствующих регистрах.
Название: Re: 1.6
Отправлено: GROOVY от Ноябрь 20, 2014, 05:43:07 pm
А чем последовательности то не нравятся?
Название: Re: 1.6
Отправлено: Odines от Ноябрь 20, 2014, 07:11:40 pm
А чем последовательности то не нравятся?
Тем что нужно ее восстанавливать )) А так провел приход и все расходы пересчитались) как то так..)

Вы считаете что нужно задачу решать все-таки при помощи последовательности?
Название: Re: 1.6
Отправлено: Джангар от Ноябрь 24, 2014, 05:37:45 pm
Присоединяюсь к вопросу по поводу Последовательностей. Очень интересно какой будет корректнее, т.е. на экзамене какой будет предпочтительней?
Название: Re: 1.6
Отправлено: GROOVY от Ноябрь 27, 2014, 11:23:06 pm
Решение задачи. Очень подробное: http://1c.chistov.pro/2014/11/106-1.html
Название: Re: 1.6
Отправлено: AntonK от Ноябрь 28, 2014, 12:34:09 pm
Решение задачи. Очень подробное: http://1c.chistov.pro/2014/11/106-1.html

Спасибо!
Название: Re: 1.6
Отправлено: alextyumen от Ноябрь 28, 2014, 01:05:03 pm
Решение задачи. Очень подробное: http://1c.chistov.pro/2014/11/106-1.html
Спасибо, будем копать.
Название: Re: 1.6
Отправлено: Odines от Декабрь 01, 2014, 10:33:03 pm
Решение задачи. Очень подробное: http://1c.chistov.pro/2014/11/106-1.html
Спасибо большое.  Действительно через последовательность и красивее и правильней, а в фоне вообще!))

Один только вопрос к вашему руководству. В обработке проведения Приходной накладной я думаю нужно записать принудительно движения перед восстановлением последовательности!

Название: Re: 1.6
Отправлено: Tripi от Декабрь 16, 2014, 01:10:32 pm
Решение задачи. Очень подробное: http://1c.chistov.pro/2014/11/106-1.html

У меня вопрос по поводу регистра "ОстаткиТоваров", не будет ли на экзамене это считаться как создание лишнего объкта метаданных, т.к. остатки можно контролировать и по регистру с партиями?
Название: Re: 1.6
Отправлено: GROOVY от Декабрь 24, 2014, 05:43:15 pm
Партии - это документированная поставка. Остатки товаров - это фактические остатки.
Название: Re: 1.6
Отправлено: GROOVY от Декабрь 24, 2014, 05:49:30 pm
Решение задачи. Очень подробное: http://1c.chistov.pro/2014/11/106-1.html
Спасибо большое.  Действительно через последовательность и красивее и правильней, а в фоне вообще!))

Один только вопрос к вашему руководству. В обработке проведения Приходной накладной я думаю нужно записать принудительно движения перед восстановлением последовательности!

Вопроса не понял. И почему он к руководству?
Название: Re: 1.6
Отправлено: Odines от Декабрь 24, 2014, 06:33:03 pm
Решение задачи. Очень подробное: http://1c.chistov.pro/2014/11/106-1.html
Спасибо большое.  Действительно через последовательность и красивее и правильней, а в фоне вообще!))

Один только вопрос к вашему руководству. В обработке проведения Приходной накладной я думаю нужно записать принудительно движения перед восстановлением последовательности!

Вопроса не понял. И почему он к руководству?

Вопрос по следующей части из руководства:

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

    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.ОстаткиТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период = ДатаФактическогоПоступления;
        Движение.Товар = ТекСтрокаТовары.Товар;
        Движение.Количество = ТекСтрокаТовары.Количество;

        Движение = Движения.ОстаткиПартийТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период = ДатаФактическогоПоступления;
        Движение.Товар = ТекСтрокаТовары.Товар;
        Движение.СрокГодности = ТекСтрокаТовары.СрокГодности;
        Движение.Партия = Ссылка;
        Движение.Количество = ТекСтрокаТовары.Количество;
        Движение.Стоимость = ТекСтрокаТовары.Стоимость;
    КонецЦикла;

    Если НЕ Последовательности.ОстаткиТоваров.Проверить(МоментВремени()) Тогда
        ПараметрыФоновогоЗадания = Новый Массив(1);
        ПараметрыФоновогоЗадания[0] = МоментВремени();
        ФоновыеЗадания.Выполнить("СервисныеМеханизмы.ВосстановлениеПоследовательности", ПараметрыФоновогоЗадания);
    КонецЕсли;
КонецПроцедуры"

Сам собственно вопрос:
- Если мы перед проверкой последовательности принудительно не запишем записи в регистр, то последовательность и не сдвинется на
ДатуФактическогоПоступления
Название: Re: 1.6
Отправлено: GROOVY от Декабрь 24, 2014, 09:15:31 pm
Согласен. Не учел.
Название: Re: 1.6
Отправлено: AlexN от Январь 08, 2015, 03:56:03 pm
Немного смущает такой метод, на экзамене такое решение примут? Формально мы вводим новый документ, но фактически мы вводим документ задним числом, т.е. подменили реквизит документа "дата", на реквизит "дата фактического поступления" и все, да и все движения он формирует задним числом. Формально, да, дата документа текущая, но если представить, что движения задним числом разрешены, то это будет абсолютно такое же решение, только без реквизита "дата поступления товара". Опасаюсь не будет на экзамене это расцениваться как попытка надуть экзаменатора и вводить документы задним числом, используя вместо стандартного реквизита "дата" свой "дата фактического поступления"?
Название: Re: 1.6
Отправлено: GROOVY от Январь 09, 2015, 02:50:38 pm
Все требования задачи удволетварены. Предложите другое решение - обсудим.
Название: Re: 1.6
Отправлено: bro от Январь 15, 2015, 04:14:25 pm
Забыла прикрепить.<hr>Вложения:
<a href="./ucoz_attachments/9/2506449.dt">2506449.dt</a>
Можно ввести документ задним числом, в задании написано, что нужно запретить
Название: Re: 1.6
Отправлено: GROOVY от Январь 15, 2015, 06:05:32 pm
Не путайте. В задании сказано что документы не вводятся задним число, а о том чтобы реализовать запрет нет ничего.
Название: Re: 1.6
Отправлено: bro от Январь 17, 2015, 01:20:50 am
Я не могу понять, как вы реализовываете списание более дорогого товара при одинаковых сроках годности? Упорядочивание все делают по убыванию, но это означает, что всегда будет продаваться самый дорогой товар.
Название: Re: 1.6
Отправлено: GROOVY от Январь 17, 2015, 03:03:03 am
Сортировка по сроку годности и цене.
Не понял я видимо вопроса. УПОРЯДОЧИТЬ ПО и тут срок годности и цену с ключевым словом УБЫВ указываем.

В статье прямо написано:
|УПОРЯДОЧИТЬ ПО
    |   СрокГодности,
    |   Цена УБЫВ

Название: Re: 1.6
Отправлено: Evgeny от Январь 17, 2015, 06:05:14 pm
Подскажите пожалуйста, не понял как реализовать: Документ задним числом вводить нельзя, но можно открыть существующий документ и перепровести его.
Название: Re: 1.6
Отправлено: ksandr от Январь 17, 2015, 09:00:16 pm
Подскажите пожалуйста, не понял как реализовать: Документ задним числом вводить нельзя, но можно открыть существующий документ и перепровести его.
Если ЭтоНовый И НачалоДня(Док.Дата) <> НачалоДня(ТекущаяДата) Тогда  Отказ
Название: Re: 1.6
Отправлено: GROOVY от Январь 17, 2015, 10:21:44 pm
Подскажите пожалуйста, не понял как реализовать: Документ задним числом вводить нельзя, но можно открыть существующий документ и перепровести его.

Не надо это никак реализовывать.
Название: Re: 1.6
Отправлено: Odines от Январь 21, 2015, 07:07:32 pm
Подскажите пожалуйста, не понял как реализовать: Документ задним числом вводить нельзя, но можно открыть существующий документ и перепровести его.

Не надо это никак реализовывать.
А так не правильно?

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
   
   Если ЭтоНовый() И РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
      Если НачалоДня(ТекущаяДата()) > НачалоДня(Дата) Тогда
            Сообщить("Документы задним числом не вводятся!");
         Отказ = Истина;
      КонецЕсли;
   ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
      Если НачалоДня(ТекущаяДата())>НачалоДня(Дата)
          И Дата <> Ссылка.Дата Тогда
            Сообщить("Документы задним числом не вводятся!");
         Отказ = Истина;
      КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры
Название: Re: 1.6
Отправлено: program1Cer от Февраль 01, 2015, 02:28:02 pm
Немного смущает такой метод, на экзамене такое решение примут? Формально мы вводим новый документ, но фактически мы вводим документ задним числом, т.е. подменили реквизит документа "дата", на реквизит "дата фактического поступления" и все, да и все движения он формирует задним числом. Формально, да, дата документа текущая, но если представить, что движения задним числом разрешены, то это будет абсолютно такое же решение, только без реквизита "дата поступления товара". Опасаюсь не будет на экзамене это расцениваться как попытка надуть экзаменатора и вводить документы задним числом, используя вместо стандартного реквизита "дата" свой "дата фактического поступления"?

Не тебя одного смущает, здесь вся тема об этом моменте. Фактически это ввод в систему движений задним числом. Чем это отличается от ввода документов задним числом? Формулировкой? Придерутся или нет? Да здесь Павел Чистов может ответить, все условия соблюдены, если сдавать преподавателю, да еще удаленно, то так не ответишь. А вот если движения не вводить задним числом, то задача сразу приобретает сложность. И сторно в приходной накладной это один самых простых способов.
Название: Re: 1.6
Отправлено: GROOVY от Февраль 01, 2015, 05:03:44 pm
Я всегда готов обсудить нормально описанное решение.
Сделайте статью похожую по формату на мою и будем дискутировать.

Нули в стоимость писать нельзя - это неправильно даже с тупой точки зрения кладовика, он же материально ответственное лицо. Потом сторнировать что-то. Это не учет, а поделка программиста-стажера.

Я сейчас не в коем случае не хочу авторитетом давить, это просто мое мнение. И оно может быть ошибочным.
Название: Re: 1.6
Отправлено: program1Cer от Февраль 01, 2015, 06:49:12 pm
На статью конечно не претендую. Но при данном решении я исходил из следующих соображений:

Если отрицательные остатки разрешены, то кто запретит жить "неправильно", то есть сразу начать учет с РН? Данных по приходу нет, откуда взять стоимость? Она будет 0 и с этим стоит смириться. Дальше у меня было две мысли по "приходу" (поймите правильно =) ).

1. Через ДатуПоступления. В данном случае достаточно перепровести все РН начиная с Даты поступления. Способ реализации либо через последовательности, либо еще как-то.

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

В итоге вышло вот что:
Процедура СписаниеПоПартиям(ДатаОстатков, Документы, Период, ДвиженияОстаткиНоменклатуры, ДвиженияПродажи, Отказ) Экспорт

РазрешитьОтрицательныеОстатки = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Период).РазрешитьОтрицательныеОстатки;
Если РазрешитьОтрицательныеОстатки = Неопределено Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не установлена учетная политика!";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;


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


ЗапросДляБлокировки = Новый Запрос("ВЫБРАТЬ Номенклатура ИЗ ВТСписокНоменклатуры");
ЗапросДляБлокировки.МенеджерВременныхТаблиц = ЗапросСписокНомеклатуры.МенеджерВременныхТаблиц;
РезультатЗапроса = ЗапросДляБлокировки.Выполнить();

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

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ЗапросСписокНомеклатуры.МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура,
| ОстаткиНоменклатурыОстатки.СрокГодности,
| ОстаткиНоменклатурыОстатки.Партия,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток,
| ОстаткиНоменклатурыОстатки.СуммаОстаток,
| ОстаткиНоменклатурыОстатки.СуммаОстаток / ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК СебестомостьЗаЕдиницу
|ПОМЕСТИТЬ ВТПартии
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ
| ВТСписокНоменклатуры.Номенклатура
| ИЗ
| ВТСписокНоменклатуры)) КАК ОстаткиНоменклатурыОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТСписокНоменклатуры.Номенклатура КАК Номенклатура,
| ВТСписокНоменклатуры.Количество КАК Количество,
| ВТСписокНоменклатуры.Сумма КАК Сумма,
| ЕСТЬNULL(ВТПартии.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ВТПартии.СуммаОстаток, 0) КАК СуммаОстаток,
| ЕСТЬNULL(ВТПартии.СебестомостьЗаЕдиницу, 0) КАК СебестоимостьЗаЕдиницу,
| ВТПартии.Партия,
| ВТПартии.СрокГодности КАК СрокГодности
|ИЗ
| ВТСписокНоменклатуры КАК ВТСписокНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПартии КАК ВТПартии
| ПО ВТСписокНоменклатуры.Номенклатура = ВТПартии.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| СрокГодности,
| СебестоимостьЗаЕдиницу УБЫВ
|ИТОГИ
| МАКСИМУМ(Количество),
| МАКСИМУМ(Сумма),
| СУММА(КоличествоОстаток),
| СУММА(СуммаОстаток)
|ПО
| Номенклатура, СрокГодности";

Запрос.УстановитьПараметр("МоментВремени", ДатаОстатков);

РезультатЗапроса = Запрос.Выполнить();

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

Если НЕ РазрешитьОтрицательныеОстатки Тогда
Пока ВыборкаНоменклатура.Следующий() Цикл
Если ВыборкаНоменклатура.Количество > ВыборкаНоменклатура.КоличествоОстаток Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не хватает товара " + Строка(ВыборкаНоменклатура.Номенклатура) + " " +
Строка(ВыборкаНоменклатура.Количество - ВыборкаНоменклатура.КоличествоОстаток);
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли
КонецЦикла;
ВыборкаНоменклатура.Сбросить();
КонецЕсли;


Пока ВыборкаНоменклатура.Следующий() Цикл
КоличествоСписано = 0;
СуммаСписано =0;
СуммаПродано = 0;

ВыборкаСрокГодности = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСрокГодности.Следующий() Цикл
КоличествоСписаноПоСроку = 0;
СуммаСписаноПоСроку =0;

ВыборкаДетальныеЗаписи = ВыборкаСрокГодности.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() И КоличествоСписано <> ВыборкаДетальныеЗаписи.Количество Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
ОсталосьСписать = ВыборкаДетальныеЗаписи.Количество - КоличествоСписано;
КоличествоКСписанию = Мин(ОсталосьСписать, ВыборкаДетальныеЗаписи.КоличествоОстаток);
СуммаКСписанию = ?(КоличествоКСписанию = ВыборкаДетальныеЗаписи.КоличествоОстаток,
ВыборкаДетальныеЗаписи.СуммаОстаток,
КоличествоКСписанию*ВыборкаДетальныеЗаписи.СуммаОстаток/ВыборкаДетальныеЗаписи.КоличествоОстаток);

Если СуммаКСписанию и КоличествоКСписанию Тогда
Движение = ДвиженияОстаткиНоменклатуры.ДобавитьРасход();
Движение.Период = Период;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.СрокГодности = ВыборкаДетальныеЗаписи.СрокГодности;
Движение.Партия = ВыборкаДетальныеЗаписи.Партия;
Движение.Количество = КоличествоКСписанию;
Движение.Сумма = СуммаКСписанию;

КоличествоСписано = КоличествоСписано + КоличествоКСписанию;
СуммаСписано = СуммаСписано + СуммаКСписанию;

КоличествоСписаноПоСроку = КоличествоСписаноПоСроку + КоличествоКСписанию;
СуммаСписаноПоСроку = СуммаСписаноПоСроку + СуммаКСписанию;

КонецЕсли;
КонецЦикла;

СуммаКПродаже = ?(КоличествоСписано = ВыборкаНоменклатура.Количество,
ВыборкаНоменклатура.Сумма - СуммаПродано,
КоличествоСписаноПоСроку*ВыборкаНоменклатура.Сумма/ВыборкаНоменклатура.Количество);

Движение = ДвиженияПродажи.Добавить();
Движение.Период = Период;
Движение.Номенклатура = ВыборкаСрокГодности.Номенклатура;
Движение.СрокГодности = ВыборкаСрокГодности.СрокГодности;

Движение.Количество = КоличествоСписаноПоСроку;
Движение.Сумма = СуммаКПродаже;
Движение.Себестоимость = СуммаСписаноПоСроку;

СуммаПродано = СуммаПродано + СуммаКПродаже;
КонецЦикла;
Если РазрешитьОтрицательныеОстатки
И ВыборкаНоменклатура.КоличествоОстаток = КоличествоСписано
И ВыборкаНоменклатура.Количество > КоличествоСписано Тогда

Движение = ДвиженияОстаткиНоменклатуры.ДобавитьРасход();
Движение.Период = Период;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Количество = ВыборкаНоменклатура.Количество - КоличествоСписано;

Движение = ДвиженияПродажи.Добавить();
Движение.Период = Период;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Количество = ВыборкаНоменклатура.Количество - КоличествоСписано;
Движение.Сумма = ВыборкаНоменклатура.Сумма - СуммаПродано;

КонецЕсли;
КонецЦикла;
КонецПроцедуры


Реализуется тоже итеративно. Сначала обычное списание с контролем остатков, потом функционал позволяющий отрицательные остатки.
Громоздкий код, да. Что он дает?
Проведение РН элементарное:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)

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

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

СписокДокументов = Новый Массив();
СписокДокументов.Добавить(Ссылка);
ДатаОстатков = ?(РежимПроведенияДокумента.Оперативный = РежимПроведения, '00010101', МоментВремени());
Документы.РасходнаяНакладная.СписаниеПоПартиям(МоментВремени(), СписокДокументов, Дата,Движения.ОстаткиНоменклатуры, Движения.Продажи, Отказ);
КонецПроцедуры

Проведение ПН, чуть сложнее:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// Вставить содержимое обработчика.
Движения.ОстаткиНоменклатуры.Записывать = Истина;

РазрешитьОтрицательныеОстатки = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Дата).РазрешитьОтрицательныеОстатки;
Если РазрешитьОтрицательныеОстатки = Неопределено Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не установлена учетная политика!";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура,
| ПриходнаяНакладнаяСписокНоменклатуры.СрокГодности,
| &Ссылка КАК Партия,
| СУММА(ПриходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
| СУММА(ПриходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
|ИЗ
| Документ.ПриходнаяНакладная.СписокНоменклатуры КАК ПриходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| ПриходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура,
| ПриходнаяНакладнаяСписокНоменклатуры.СрокГодности";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
Движение = Движения.ОстаткиНоменклатуры.ДобавитьПриход();
Движение.Период = Дата;
ЗаполнитьЗначенияСвойств(Движение, ВыборкаДетальныеЗаписи);

КонецЦикла;

Движения.Записать();

РазрешитьОтрицательныеОстатки = Истина;

Если РазрешитьОтрицательныеОстатки Тогда


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


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОстаткиНоменклатурыОбороты.Регистратор,
| ОстаткиНоменклатурыОбороты.КоличествоОборот
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Обороты(, , Регистратор, Партия = ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)) КАК ОстаткиНоменклатурыОбороты
|ГДЕ
| ОстаткиНоменклатурыОбороты.КоличествоОборот < 0";

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

КонецЕсли;
КонецПроцедуры

Если разрешены отрицательные остатки, то по документу поступления определяем список номенклатуры, которую необходимо пересчитать, список документов РН, которые необходимо сторнировать и перезапустить расчет себестоимости.
Не используются последовательности, нет лишних блокировок системы.

И вот возникает вопрос, если в задаче явно не указано, что последовательности необходимо использовать, то надо ли? Как это будет оцениваться, что программист просто не умеет их использовать или наоборот умеет их не использовать? Диалектика.
Название: Re: 1.6
Отправлено: program1Cer от Февраль 03, 2015, 12:52:25 pm
Перечитал еще раз Вашу статью, статью из ИТС по последовательностям, там не рекомендуют двигать последовательности при проведении документов. У Вас в статье при проведении документа ПН, создается фоновое задание. 10 пользователей, каждый из них проводит ПН, будет 10 фоновых заданий?
Название: Re: 1.6
Отправлено: axel_work от Февраль 04, 2015, 01:37:05 pm
Добрый день всем!

Понравилось решение, опубликованное на сайте (с последовательностями). Эстетично :)

Но появилась пара вопросов по коду:

1. Движения.ОстаткиТоваров.Записывать = Истина;
Зачем мы выставляем это свойство, если мы далее записываем этот набор записей принудительно, получается запись 2 раза в регистр?

2. Движения.ОстаткиПартийТоваров.БлокироватьДляИзменения = Истина;
Зачем устанавливаем эту блокировку? Ведь чуть выше мы делаем блокировку через БлокировкаДанных, а второй момент - БлокироватьДляИзменения ведь используется для контроля данных после записи в регистр, но поскольку мы в этой ветке полностью очищаем набор, потом его записываем - ничего же не заблокируется по идее.
Название: Re: 1.6
Отправлено: ksandr от Февраль 04, 2015, 04:56:20 pm
1. Движения.ОстаткиТоваров.Записывать = Истина;
Зачем мы выставляем это свойство, если мы далее записываем этот набор записей принудительно, получается запись 2 раза в регистр?

2. Движения.ОстаткиПартийТоваров.БлокироватьДляИзменения = Истина;
Зачем устанавливаем эту блокировку? Ведь чуть выше мы делаем блокировку через БлокировкаДанных, а второй момент - БлокироватьДляИзменения ведь используется для контроля данных после записи в регистр, но поскольку мы в этой ветке полностью очищаем набор, потом его записываем - ничего же не заблокируется по идее.

Как там на сайте не видел, если имеется ввиду такой листинг
   Движения.ОстаткиНоменклатуры.Записывать = Истина;
   Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
   Движения.ОстаткиНоменклатуры.Записать();
то, 1-й строкой устанавливаем флаг записи в истину, 2-й строкой блокируем старые движения документа, чтоб если мы заменили товар и вдруг что-то пошло не так в это время никто не "спер":) наши старые товары, необходимо при установленной галочке в РН "Разрешить разделение итогов", где-то тут на форуме это уже обсуждалось, ну и 3-я строка просто очищает набор и включает блокировку для изменения.
Название: Re: 1.6
Отправлено: axel_work от Февраль 05, 2015, 09:28:14 am
Не совсем так, на сайте вот: http://1c.chistov.pro/2014/11/106-1.html

по 1-му пункту:


    Движения.ОстаткиТоваров.Записывать = Истина;

    Движения.ОстаткиТоваров.БлокироватьДляИзменения = Истина;

    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.ОстаткиТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Товар = ТекСтрокаТовары.Товар;
        Движение.Количество = ТекСтрокаТовары.Количество;
    КонецЦикла;

    Движения.Записать();


по 2-му :


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

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

Название: Re: 1.6
Отправлено: ksandr от Февраль 05, 2015, 11:54:09 am
Вот прочтите http://1c.chistov.pro/2013/07/blog-post_25.html
Название: Re: 1.6
Отправлено: axel_work от Февраль 05, 2015, 01:00:46 pm
Вот прочтите http://1c.chistov.pro/2013/07/blog-post_25.html

Спасибо, почитаю.
Название: Re: 1.6
Отправлено: Jones от Февраль 09, 2015, 01:56:51 pm
Уважаемый GROOVY!
Задача 1.06: http://1c.chistov.pro/2014/11/106-1.html (http://1c.chistov.pro/2014/11/106-1.html)
Если можно, поясните, пожалуйста, зачем устанавливается ВТОРАЯ БЛОКИРОВКА?
Или она, в принципе, не нужна, ведь записи регистра уже заблокированы ПЕРВОЙ БЛОКИРОВКОЙ?
 
//Установим блокировки
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиПартийТоваров");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Товар", "Товар");
    Блокировка.Заблокировать();                                                                             // ПЕРВАЯ БЛОКИРОВКА

    Если Режим = РежимПроведенияДокумента.Оперативный Тогда
        Движения.ОстаткиПартийТоваров.Очистить();
        Движения.ОстаткиПартийТоваров.БлокироватьДляИзменения = Истина;                                     // ВТОРАЯ БЛОКИРОВКА
        Движения.ОстаткиПартийТоваров.Записать();
    КонецЕсли;

    Движения.ОстаткиПартийТоваров.Записывать = Истина;
Название: Re: 1.6
Отправлено: ksandr от Февраль 09, 2015, 05:02:22 pm
Я не GROOVY, но отвечу, прочтите тоже статью по ссылке выше.
Название: Re: 1.6
Отправлено: Jones от Февраль 11, 2015, 11:27:05 am
Почтеннейший, ksandr  :)
Если Вам известен ответ - просветите, а посылать в статью не надо  :), это всего лишь говорит о том, что Вы ответа не знаете (без обид)
Естественно, эта сложная для понимания статья была мной прочитана, но зачем ставить блокировку второй раз, мне все равно не понятно ))
Поэтому и спрашиваю, вдруг здесь есть обладатель мощного интеллекта? ))
Название: Re: 1.6
Отправлено: GROOVY от Февраль 11, 2015, 12:51:22 pm
Почтеннейший, ksandr  :)
Если Вам известен ответ - просветите, а посылать в статью не надо  :), это всего лишь говорит о том, что Вы ответа не знаете (без обид)
Естественно, эта сложная для понимания статья была мной прочитана, но зачем ставить блокировку второй раз, мне все равно не понятно ))
Поэтому и спрашиваю, вдруг здесь есть обладатель мощного интеллекта? ))

Для ответа на Ваш вопрос достаточно ответить на 2 вопроса: что Вы блокируете и зачем?
Есть понимание что блокируется в описанном механизме? Там блокировка на разные данные устанавливается.
Название: Re: 1.6
Отправлено: ksandr от Февраль 12, 2015, 02:16:57 pm
Почтеннейший, ksandr  :)
Если Вам известен ответ - просветите, а посылать в статью не надо  :), это всего лишь говорит о том, что Вы ответа не знаете (без обид)
Естественно, эта сложная для понимания статья была мной прочитана, но зачем ставить блокировку второй раз, мне все равно не понятно ))
Поэтому и спрашиваю, вдруг здесь есть обладатель мощного интеллекта? ))
В этой сложной для понимания статье все расписано. В частности вот ответ на Ваш вопрос
"17. Устанавливаем свойство "БлокироватьДляИзменения". Это позволит заблокировать от чтения те данные которые сейчас будут удалены из регистра, вдруг транзакция будет отменена, не хотим чтобы кто-либо вместе с нами работал с этими данными.
Подобное действие не помешает и при смене даты или времени документа, а не только при оперативном проведении."
Название: Re: 1.6
Отправлено: Jones от Февраль 13, 2015, 06:07:48 pm
ksandr, GROOVY, спасибо! Разул глаза, подробоно изучил статью и понял смысл. Нашел пункт 17 и его обсуждение в статье, теперь все ясно:

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

    Если Режим = РежимПроведенияДокумента.Оперативный Тогда
        Движения.ОстаткиПартийТоваров.Очистить();
        Движения.ОстаткиПартийТоваров.БлокироватьДляИзменения = Истина;                                     // ВТОРАЯ БЛОКИРОВКА
        Движения.ОстаткиПартийТоваров.Записать();
    КонецЕсли;

    Движения.ОстаткиПартийТоваров.Записывать = Истина;

Первая блокировка блокирует записи по той "Номенклатуре", которя указана в ТЧ документа СЕЙЧАС,
а вторая - блокирует записи регистра по "номенклатуре", "партии" и "СрокуГодности", которые могут фигурировать в старых движениях.
Название: Re: 1.6
Отправлено: rusmosav от Март 12, 2015, 09:45:31 am
Прощу проверить.
Название: Re: 1.6
Отправлено: max1m1ch от Март 12, 2015, 10:42:29 am
как , согласно решению этой задачи Павлом, будет происходить списание по РН ОстаткиПартииТоваров при отключенном контроле остатков, если не было приходных накладных?
Название: Re: 1.6
Отправлено: Good_Smile от Март 13, 2015, 11:00:11 am
Прощу проверить.

не увидела каких то ошибок, всё было сделано по аналогии со статьей Павла
только в РН при обходе цикла по деталям нет проверки на количество списания, из-за этого в регистр ОстаткиНоменклатуры попадают лишние строчки
ещё нет отчетов, наверно делать было лень))

не знаю ошибка это или нет, но так получилось, что в РН получилась пустая строка, из-за этого вывалилась ошибка "Деление на 0" (во всём виновато такси)

и вопрос оправдан ли запрос в ПН к регистру ОтрицательныеОстатки? закомментировала, ничего по регистрам вроде не изменилось
Название: Re: 1.6
Отправлено: rusmosav от Март 13, 2015, 05:38:23 pm
только в РН при обходе цикла по деталям нет проверки на количество списания

и вопрос оправдан ли запрос в ПН к регистру ОтрицательныеОстатки?

верные замечания


Название: Re: 1.6
Отправлено: dolka103 от Апрель 15, 2015, 02:33:04 pm
В решении которое описано в статье П. Чистова не учтено, что регистр Продажи тоже ведется в разрезе Сроков Годности. А в условии это есть, по крайней мере в отчете по продажам есть срок годности.
Название: Re: 1.6
Отправлено: zorky от Сентябрь 07, 2015, 10:49:02 am
Появилось пару вопросов: как лучше с услугами быть, отсеивать их на форме? Иначе будет неявный запрос в цикле...

И кому попалась эта задача, подскажите  - решение Павла если использовали, были какие нибудь замечания?  Кто готовится, ау))
Название: Re: 1.6
Отправлено: alex1248 от Сентябрь 07, 2015, 01:03:39 pm
Появилось пару вопросов: как лучше с услугами быть, отсеивать их на форме? Иначе будет неявный запрос в цикле...
Я услуги обрабатываю в начале обработки проведения запросом (явным, зато одним  :) ) из ТЧ документа - отсеиваю либо просто дополнительно подтягиваю ВидНоменклатуры (когда необходимо вести учет продаж).
Название: Re: 1.6
Отправлено: zorky от Сентябрь 07, 2015, 02:56:44 pm
да, но кто-то писал что получается двойное обращение к базе в приходной - сперва Чтение данных, потом Запись данных. А когда конструктором  - читается из данных формы на клиенте, нету лишнего обращения к серверу. Поэтому выясняю как правильно, может через параметры выбора всё таки, кто сдавал и как делал? )) А терять 0.1 балл не хочется)
Название: Re: 1.6
Отправлено: titan6662000 от Октябрь 22, 2015, 03:24:58 pm
А вот мой вариант с разделением выручки по партиям, срокам годности и без этой них.
Название: Re: 1.6
Отправлено: HRom от Октябрь 23, 2015, 06:10:59 am
А вот мой вариант с разделением выручки по партиям, срокам годности и без этой них.

Я так понимаю этого задания нет в экзаменационных билетах.
Примеры билетов здесь:
http://forum.chistov.pro/index.php?topic=2670.0
Название: Re: 1.6
Отправлено: titan6662000 от Октябрь 23, 2015, 08:48:29 am
Закон подлости знаете? Сейчас вроде нет готовых билетов, а есть генератор билетов.
Название: Re: 1.6
Отправлено: titan6662000 от Октябрь 28, 2015, 10:16:53 am
где то тут прочитал )) сори что не помню где.
Название: Re: 1.6
Отправлено: CSiER от Март 09, 2016, 08:59:32 am
Здравствуйте. В статье - http://1c.chistov.pro/2014/11/106-1.html - в РН "Продажи" всегда попадает полная сумма продажи:
     Списано = МИН(Выборка.Количество, Выборка.КоличествоОстаток);
        Если Списано <> 0 Тогда
            Движение = Движения.Продажи.Добавить();
            Движение.Период = Дата;
            Движение.Товар = Выборка.Товар;
            Движение.Количество = Списано;
            Движение.Себестоимость = СебестоимостьВсего;
            Движение.Продажа = Выборка.Сумма;
        КонецЕсли;

Нужно ли здесь рассчитывать сумму продажи как "{цена за ед. продажная} * Списано"?
Название: Re: 1.6
Отправлено: alfalume от Август 17, 2016, 02:56:16 pm
мое решение
Название: Re: 1.6
Отправлено: jonik от Май 24, 2017, 11:00:15 am
Можно все-таки разъяснить вопрос про очистку движений при новом и старом методе списания? Т.к. в ветке http://forum.chistov.pro/index.php?topic=3879.0 говорится
Цитировать
НЕ ПИШИ ТАК НА ЭКЗАМЕНЕ!
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
   Движения.ОстаткиНоменклатуры.Записать();
пиши так:
     Движения.ОстаткиНоменклатуры.Записать();
Я уточнял!!!!Не делай мои ошибки )
а в решении на сайте http://1c.chistov.pro/2014/11/106-1.html
Цитировать
//Установим блокировки
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиПартийТоваров");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Товар", "Товар");
    Блокировка.Заблокировать();

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

    Движения.ОстаткиПартийТоваров.Записывать = Истина;

П.С. желательно услышать мнения автора последней статьи)
Название: Re: 1.6
Отправлено: jonik от Май 25, 2017, 04:59:53 pm
Сделал задачу по Чистову, отчеты идентичны приведенному заданию.
Название: Re: 1.6
Отправлено: MariaVG от Июнь 02, 2017, 03:38:11 pm
Думаю, что можно реализовать эту задачу, сделав отдельную обработку или команду для расчета стоимости списания за заданный пользователем период. При этом проверку корректности указания периода для расчета возложить на самого пользователя. Один из инструментов проверки корректности расчетов - отсутствие отрицательных остатков в отчете. А так, предполагается, что только сам пользователь может знать, по какой период уже введены все поступления.

Логика здесь следующая:
1) Если допускается списание без контроля остатков, значит, расходная накладная сама рассчитывать себестоимость не может.

3) Приходная накладная тоже не может корректно рассчитать себестоимость. Потому что она "не знает", будет ли после нее еще какая-нибудь другая приходная, также предшествующая по дате расходной накладной, но с более ранним сроком годности или с более дорогим товаром, чем текущая приходная с меньшей датой. А перепроверять в каждой следующей приходной, что там "навводила" предыдущая и исправлять - это непрозрачный (а значит, не очень надежный и сложный в поддержке, если смотреть шире) и неэффективный подход. Представьте, что подряд идут 100 приходных, а после них одна расходная. Получается, что 99 первых зря проделают свою работу.

Отсюда вывод, что корректно рассчитать стоимость списания можно только после ввода ВСЕХ приходных накладных, предшествующих расходным, для которых рассчитывается эта стоимость. Очевидно, что автоматически определить, все ли такие приходные уже введены, нельзя. Это может сделать только пользователь, который и должен запустить в нужный момент соответствующую обработку.

Про запрет ввода документов прихода задних числом, думаю, что это все-таки некорректно сформулированное условие, просто скопированное из других задач.

Скорее всего, достаточно будет одного складского регистра. Процедура расчета себестоимости будет выбирать все расходные накладные за заданный период и переформировывать их движения в данном регистре в порядке возрастания момента времени расходных.  Насчет последовательностей, вроде бы П.Белоусов говорил, что сейчас их использование на экзамене не требуется.
Название: Re: 1.6 мое решение
Отправлено: mxs89 от Август 10, 2017, 10:14:26 am
что скажете?  :o
Название: Re: 1.6
Отправлено: youalex от Август 13, 2017, 08:13:20 am
Можно все-таки разъяснить вопрос про очистку движений при новом и старом методе списания?

Условие "Если Режим = РежимПроведенияДокумента.Оперативный" - использовалось потому что, при Оперативном проведение - дата документа всегда увеличивается (до текущей). И, т.о. при получении остатков на МоментВремени() - гарантированно учитываются и движения текущего документа,  если, конечно, они есть.
Смысл этого условия  не в режиме проведения, а в том, что дата может быть сдвинута вперед.

Проблема в том, что при неоперативном проведении - дата может быть также быть сдвинута вперед, руками, -  и мы получим аналогичную ситуацию.  На дружественном ресурсе - я видел решение где анализируется, увеличилась ли Дата документа(в ПередЗаписью + ПриЗаписи), и, если увеличилась - то движения очищаются. Думаю, на сертификации нет смысла заморачиваться подобным образом, можно просто очищать безусловно.
Название: Re: 1.6
Отправлено: const86 от Сентябрь 02, 2017, 08:14:22 pm
Сторнировать расходную при проведении поступления не нужно. Кто против, готов поспорить. :)
Смотрите, по условию задачи, должна быть возможность продажи ещё неоприходованного товара, по сроку годности. Т.е. если физически он есть, но в системе не заведен. Всё равно должен быть продан товар с наименьшим сроком годности.
В случае если оказался оприходован товар с меньшим сроком годности, чем в движениях, при сторнировании нарушится логика задачи (первым списывается самый испорченный).  Иначе мы можем получить ситуацию, что физически на складе испорченного товара нет, а в программе он есть. И только перепроведение документов списания, будет гарантировать нам то, что испорченные товары и в программе и на складе не останутся.
Название: Re: 1.6
Отправлено: jonik от Ноябрь 24, 2017, 03:30:14 pm
Сделал задачу по Чистову, отчеты идентичны приведенному заданию.
Подкорректировал
Название: Re: 1.6
Отправлено: void127 от Октябрь 28, 2018, 02:00:44 pm
Начал готовиться к Спецу по платформе, наткнулся на пример решения задания 1.06
http://1c.chistov.pro/2014/11/106-1.html
Начал решать сам - заметил, что в решении Павла опущен подвох условия задания, что отчет по продажам нужен по измерениям "Номенклатура + Срок годности". Вилы в том, что у нас везде (документ реализации, остатки партий, обороты продаж) разные комбинации измерений и в отчет по продажам нормально (без возни с распределениями) не клеится себестоимость в заявленном разрезе, чтобы и продажи отразить и с ведомостью по партиям было сопоставимо. К Павлу, естественно, нет претензий (его статья ценна за иллюстрацию блокировок и общий мэйнстрим), но проверяющие могут и заминусовать за "упрощение".

Короче, вымутил вроде бы условно-непротиворечивое решение, которое обеспечивает проведение и с контролем остатков, и без контроля, при этом ведомость по продажам и ведомость по партиям сопоставимы в части себестоимости, а не обеспеченные остатками партий продажи (при отключенном контроле) пишутся в регистр продаж с пустым сроком годности ради отражения выручки по номенклатуре, что тоже имеет смысл (в отчете можно отбор сделать при надобности). Сумму продажи из ТЧ расходной накладной при проведении по регистру продаж распределяю пропорционально количеству проданного, относимому на сроки годности (вроде даже объехал проблему копеек при этом). На тестовом примере все закрылось по складу ровно и выручка в ведомости по продажам соответствует ТЧ документов.

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

Тема старенькая, да и в актуальных билетах не нашел этой задачки, но подвох в условиях ограниченного времени годный - прицеплю на всякий случай свой вариант решения.
P.S. Прикрутил ДатаДокСдвинутаВперед для анализа нужно ли записывать пустой набор по партиям при проведении расходной, чтобы не выхватить свои же движения в запросе. Что-то вошкотно выходит, так и до подписок с общими механизмами можно дойти - на экзамене это было бы, однако, перебор, ибо долго возиться.
Название: Re: 1.6
Отправлено: Евгений_нвкз от Сентябрь 09, 2020, 09:28:08 am
Всем привет. Мое решение на обозрение)
Название: Re: 1.6
Отправлено: Black_Corsair от Ноябрь 17, 2020, 03:39:46 pm
Всем привет, я тут решил проконсультироваться с коллегой, и он мне указал на такой момент что в задании ни где не написано что необходимо сделать обработку или какой то код для того чтобы документы перепроводились. Зато написано что можно открыть существующий документ и перепровести его, т.е. пользователь сам это сделает. Тогда получается что зачем себе усложнять жизнь, если на экзамене и так не сильно много времени
Название: Re: 1.6
Отправлено: koladen от Август 19, 2021, 12:23:46 pm
Мне кажется, указывать отдельную дату поступления в приходной - неверно. У меня такой вариант решения. При выключенном контроле остатков Расходная накладная может делать движения с пустой партией и сроком годности. Приходная накладная при проведении анализирует, какая расходная сделала первое движение по комбинации:
 Приходная.Номенклатура = ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура
И ОстаткиНоменклатурыОстаткиИОбороты.СрокГодности >= Приходная.СрокГодности
Берем дату этой расходной, и в приходной Период указываем равным этой дате. При проведении последовательность сдвигается на момент перед нужной расходной накладной. После восстановления последовательности и перепроведения расходных документов с этой даты, получаем корректный результат.
Название: Re: 1.6
Отправлено: mego от Ноябрь 02, 2021, 01:49:32 pm
Мне кажется, указывать отдельную дату поступления в приходной - неверно. У меня такой вариант решения. При выключенном контроле остатков Расходная накладная может делать движения с пустой партией и сроком годности. Приходная накладная при проведении анализирует, какая расходная сделала первое движение по комбинации:
 Приходная.Номенклатура = ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура
И ОстаткиНоменклатурыОстаткиИОбороты.СрокГодности >= Приходная.СрокГодности
Берем дату этой расходной, и в приходной Период указываем равным этой дате. При проведении последовательность сдвигается на момент перед нужной расходной накладной. После восстановления последовательности и перепроведения расходных документов с этой даты, получаем корректный результат.

Попробовал сначала провести расходную, затем приходную. Что то ничего не произошло))
Название: Re: 1.6
Отправлено: mego от Ноябрь 02, 2021, 01:55:14 pm
У меня вопрос к спецам, будет ли правильным при поступлении товара перепроводить документы РасходнойНакладной датой, большей от ПриходнойНакладной ?
А находить эти документы я буду по отрицательным остаткам, записывая их в отдельный регистр.
При перепроведении РН, лишние записи будут очищаться сами.
В условии задачи разрешено перепроводить.