-
Посмотрите, пожалуйста, кому не лень=)
Вложения:
1_5_tyes4.dt
-
Quote
//Проблема копеек
СуммаСписания = ?(Движение.Количество = Выборка.КоличествоОстаток,
Выборка.СуммаОстаток,
Выборка.СуммаОстаток / Выборка.КоличествоОстаток * Движение.Количество);
Можно так:
Code
СуммаСписания = Движение.Количество / Выборка.КоличествоОстаток * Выборка.СуммаОстаток
Не совсем понял зачем нужно это:
Quote
Движение.СуммаПродажи = Выборка.Цена*КоличествоСписания;
Почему нельзя было в запросе сразу выбрать сумму?
Но, в целом, вроде хорошо! Лично мне понравилось
-
На курсах особо обращали внимание на "проблему копеек", что всегда и везде, поэтому и написала =)
-
Вот оно, на мой скромный взгляд, идеальное решение!!! Шучу, но задача - отрыв башки........
Особую роль здесь играет восстановление последовательности, т.к. при перепроведении документа задним числом могут влегкую полететь все остатки, последовательное-же перепроведение всех документов ставит 1С с головы обратно на ноги))
P.S.Очень и очень прошу оставить свои комментарии, т.к. ошибки там стопроцентно есть, но я эту задачу уже видеть не хочу.... и искать там ошибки тоже, но если кто-то найдет, с огромным удовольствием исправлю!
Добавлено (21.07.2010, 11:03)
---------------------------------------------
Опять никого......
Да помогите-же вы человеку, посмотрите ДТ'шник, оставьте пару комментариев, это займет всего 10 минут)) Вам не сложно, а мне приятно
Вложения:
105_1CCoder.dt
-
сегодня посмотрю.
Только не поняла, зачем перепроводить доки задним числом?
Вообще, задачка широко обсуждалась и на этом форуме, и на одноэсовском форуме.
И, если не ошибаюсь, для 8.1 на инфостарте Павел выкладывал решение.
-
Quote (Bepa)
Только не поняла, зачем перепроводить доки задним числом?
Так сказано в условиях задачи, если учетная политика меняется задним числом (а по условию задачи это может быть сделано), то должны быть восстановлены все последующие движения
-
у меня сборник старый (новый возьму только завтра), так в нем нет ничего о том, что политика изменяется задним числом. Каждый день - да, но не задним.
-
Quote (Bepa)
у меня сборник старый (новый возьму только завтра), так в нем нет ничего о том, что политика изменяется задним числом. Каждый день - да, но не задним.
Вот выдержка из сборника 8.2
Quote
Считается, что документы задним числом не вводятся, но старые документы могут неоперативно проводится
А это выдержка из старого сборник 8.1
Quote
Считается, что документы задним числом не вводятся, но старые документы могут неоперативно проводится
Одно и тоже, хотя не исключено, что я не так понял смысл этой фразы, но поскольку уважаемая 1С не уточняет какие именно документы могут неоперативно проводится, то я сделал так, как оно есть сейчас))
-
Документы - расходные.
не надо усложнять ничего
-
Quote (Bepa)
Документы - расходные.
не надо усложнять ничего
Поясните почему Вы так уверены, что только расходные?Добавлено (17.08.2010, 16:29)
---------------------------------------------
Подскажите, пожалуйста, можно ли данный код
Quote
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
заменить предложением "ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.ОстаткиНоменклатуры.Остатки" в запросе?Добавлено (17.08.2010, 16:48)
---------------------------------------------
Ещё вопрос.
Проверять, что новый документ вводится задним числом, нужно в "ОбработкаПроверкиЗаполнения", или как все делают в "ПередЗаписью"?
-
Zhora_Vlg, имхо блокировку лучше в запросе делать.
-
Quote (Zhora_Vlg)
или как все делают
если все так делают, то это еще не значит что это правильно на самом деле, можешь делать там, где тебе удобно, главное чтобы правильно сработало и эффективно по ресурсоемкости
-
Решил так....Может кто проверит (интересует в основном списание по средней, там же партии все таки в одном регистре) . Спасибо заранее
Вложения:
3400157.dt
-
1C_CoderVamp, при проведении документа ИзменениеМетодаСписания когда делаешь приход по регистру остатков то лучше наверно группировать строки по номенклатуре ?
Добавлено (20.08.2010, 13:03)
---------------------------------------------
Code
Пока Выборка.Следующий() Цикл
Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход();
ЗаполнитьЗначенияСвойств(Движение,Выборка);
//Движение = Движения.ОстаткиНоменклатуры.ДобавитьПриход();
//ЗаполнитьЗначенияСвойств(Движение,Выборка);
//Движение.Партия = Ссылка;
КонецЦикла;
ТЗ = Движения.ОстаткиНоменклатуры.Выгрузить();
ТЗ.ЗаполнитьЗначения(Ссылка,"Партия");
ТЗ.Свернуть("Период, Партия, Номенклатура","Количество, Сумма");
Для Каждого Строка Из ТЗ Цикл
Движение = Движения.ОстаткиНоменклатуры.ДобавитьПриход();
ЗаполнитьЗначенияСвойств(Движение,Строка);
КонецЦикла;
-
napan, решение не верное, прикрепляю твою конфу, глянь отчет по остаткам на 20 августа
имхо надо делать как у вампкодера Добавлено (20.08.2010, 15:42)
---------------------------------------------
Только мне кажется, что не ссылку нужно в качестве партии прописывать, а пустую ссылку, чтобы потом все строки нормально сложились, и можно было списывать по средней.
На это можно сказать, что тогда это уже не будет партионным учетом, как якобы требуется в задаче, потому что какая партия может быть без даты? Но обращаю внимание на цитату Белоусова П. из ветки форума 1с по задаче 1.5:
Quote
В Вашем решении в один момент времени должен существовать или учет по партиям, или учет по средней с соответствующими данными регистра накопления.
Вложения:
napan15.dt
-
Вот мой вариант.
Вложения:
Zhora_Vlg-1.5.dt
-
а вот мой =)
Вложения:
1.5.dt
-
Quote (aworld)
а вот мой =)
В движения влияющие на последовательность необходимо включить регистр сведений "УчетнаяПолитика". Без этого если в имеющемся документе "ИзменениеУчетнойПолитики" изменить метод списания с ФИФО на ЛИФО или наоборот, граница последовательности не будет перемещена.
Добавлено (20.08.2010, 18:49)
---------------------------------------------
При приходовании товара Вы не учитываете учетную политику.
Добавлено (20.08.2010, 18:51)
---------------------------------------------
Quote
Движения.ОстаткиНоменклатуры.Очистить();
Движения.ОстаткиНоменклатуры.Записать();
Это лишнее, зачем Вы это делаете?Добавлено (20.08.2010, 18:57)
---------------------------------------------
В расходной наклодной по услугам у Вас не будет движений.
-
Quote
При приходовании товара Вы не учитываете учетную политику.
согласен. если УП = по средней тогда партия = пустая ссылка
Quote
Это лишнее, зачем Вы это делаете?
чтобы очистить набор записей. смотрел курсы Евгения Гилева по 8.2, там говорится что платформа 8.2 очищает движения сама только при отмене проведения
Quote
В расходной наклодной по услугам у Вас не будет движений.
да в продажи их следовало записать, но это мелочи жизни) Добавлено (20.08.2010, 21:33)
---------------------------------------------
По поводу последовательностей:
в чем разница когда я указываю в составе последовательности только документ, и когда я указываю документ и регистр?
-
Quote (aworld)
в чем разница когда я указываю в составе последовательности только документ, и когда я указываю документ и регистр?
Документы составляют последовательность, т.е. из этих документов будет состоять список правильной последовательности проведения документов.
А движения в указанных регистрах сдвигают границу последовательности назад, что и говорит что последовательность проведения нарушена с такого то момента.
Если документ из состава последовательности не затронет движения указанных регистров граница не сместится назад.
Так например при изменении метода списания с ФИФО на ЛИФО в документе "ИзменениеУчетнойПолитики" не приведет к движению в регистре "ОстаткиНоменклатуры", следовательно и граница последвательности не сместится назад, хотя в рамках учета должна смещаться. Ведь все документы проведены по ФИФО а в результате изменений должны быть по ЛИФО.
-
Zhora_Vlg, ясно . спасибо. А насчет очистки наборов что скажешь?
-
Quote (1C_CoderVamp)
Да помогите-же вы человеку, посмотрите ДТ'шник, оставьте пару комментариев, это займет всего 10 минут)) Вам не сложно, а мне приятно
Посмотрел Ваше решение. Мне понравилось. Красиво пишите
1. Восстановление для понта делали свое? Есть же стандартное
2. Док. расходная накладная блокировку делаете, но не блокируете (.Заблокировать()).
3. Док изменения УП. Принудительно устанавливаете на документ границу последовательности при изменении... А если граница была ранее?
А так - приятно было посмотреть. Глубже не копал пока.
-
aworld, вот выдержка из справки.
Quote
Удаление движений
Свойство доступно, если в свойстве "Проведение" выбрано "Разрешить". Оно задает автоматическое удаление всех записей при перепроведении или отмене проведения документа, которые документ записал в процессе проведения. Автоматическое удаление производится системой при выполнении повторного проведения уже проведенного документа (перед записью новых движений), при удалении документа и при отмене проведения документа.
-
Оно задает автоматическое удаление всех записей при перепроведении или отмене проведения документа
Если стоит режим "Удалять автоматически при отмене проведения", то при перепроведении удаляться движения не будут. Об этом написано у Радченко.
-
aworld, так если поставить "Удалять автоматически" все будет в порядке.
Но в нашем случае, вообще не важно были удалены движения или не были. "МоментВремени()" выдает позицию времени до движений документа. А в запросе мы получаем данные именно на "МоментВремени()"
-
верно
-
sv_mikh,
на первый и третий пункты были свои причины, а вот по поводу второго - ХЗ, забыл наверное)
Quote (sv_mikh)
А так - приятно было посмотреть. Глубже не копал пока.
копайте) объективная критика - это хорошо, хотя, как говорили великие умы - любая критика имеет право на жизнь
-
Quote (aworld)
А насчет очистки наборов что скажешь?
Делать Очистить() не надо! Это точно. Достаточно написать Движения.ОстаткиНоменклатуры.Записать(). Перед Блокировкой делаешь Движения.ОстаткиНоменклатуры.Записать() - создаешь чистую запись движения (тем самым ты уже очищаешь Движения по этому регистру для этого документа(регистратора)) и затем делаешь БлокировкуДанных, а потом запросом заполняешь движение....
Вот переделал списание по средней
Вложения:
0588822.dt
-
Quote (Zhora_Vlg)
Но в нашем случае, вообще не важно были удалены движения или не были. "МоментВремени()" выдает позицию времени до движений документа. А в запросе мы получаем данные именно на "МоментВремени()"
Что то, где то я тут не прав.
Как я только что заметил, при оперативном перепроведении учитываются движения текущего документа, если их не очистить.
А при неоперативном не учитываются.
Я так понял что это связано с тем, что при оперативном перепроведении меняется время документа на текущее, и "МоментВремени()" возвращает значение уже с новым временем. При этом движения имеют старое время и попадают в выбранный период.
-
1. А если сменить учетную политику с "По средней" на "ФИФО*ЛИФО", как решать проблему структурирования остатков по партиям? Вообще задачка интересненькая, хоть и небольшая. Я думаю, при переходе на политику "По средней" партию нужно оставлять пустой. Но тогда возвращаемся к вопросу № 1.
-
Подскажите для самообразования) Как правильней при старой методике проведения: сначала очищаем движения, потом накладываем блокировку (как обычно в примерах показывают) или сначала блокируем. Просто Если заблокировать не получится зачем очищать?
Добавлено (07.09.2010, 21:07)
---------------------------------------------
Сравнил три выложенные конфигурации (1.5.dt,3400157.dt,Zhora_Vlg-1.5.dt) и везде отличается математика списания в расходной накладной. napan В случае списания по средней берет общую себестоимость, но при этом может получиться что по этой партии поступила одна сумма, а списывается совсем другая - например пришло 10 на 100 р, потом списываем 9 и средняя допустим 15 р, то будет вычитаться 135. В решении Zhora_Vlg, списывается себестоимость по каждой партии, т.е. при списании по средней только приходная с пустой партией записывается и все. Может я что-то не уловил, поясните по возможности пожалуйста. Да в примере отчета остатков (задание) все партии заполнены, пустых партий нет.
-
1C_CoderVamp, в твоем решении метод списания стоит в измерении, надо бы его в ресурс - регистр сведений без измерений
на мой взгляд ошибочка....
и еще вопрос, а разве не будет ошибкой если два разных текста запроса в расходной?... в зависимости от метода списания
но с другой стороны одним запросом не реально, а если и реально, то громоздко...
-
люди, внимание, задача решается одним запросом в расходной накладной, если учесть расчет себестоимости просто на разных уровнях группировки... т.о. при средней партию списывать надо как при фифо, плиз покритикуйте...
Добавлено (10.09.2010, 15:13)
---------------------------------------------
ау..., народ Вы где, посмотрите мое решение плиз, очень интересны Ваши мнения...
Вложения:
Quest_1_5.dt
-
Quote (napan)
Вот переделал списание по средней
Прикрепления: 0588822.dt(223Kb)
1.какой смысл выделять в документе расходная накладная "списание по средней"? мне кажется, списание по средней корректно выполнялось бы той же самой процедурой "СписаниеЛИФО_ФИФО".
2. в документе "Учетная политика" установлен режим блокировки "автоматический". есть ли смысл тогда при его проведении использовать управляемые блокировки?
-
Mихаил, есть ли смысл тогда при его проведении использовать управляемые блокировки?
конечно есть, ведь у все конфигурации стоит "управляемый", следовательно у объекта это свойство игнорится, а не игнорится когда у всей конфы стоит "автоматический и управляемый"
-
Quote (napan)
Вот переделал списание по средней
Прикрепления: 0588822.dt(223Kb)
В документе "Учетная политика" есть кусок кода:
Code
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Я так понимаю, что блокировка в данном случае не сработает, так как не задан ни один элемент объекта "Блокировка".
В данном случае, наверно, регистр надо блокировать методом "ЗаблокироватьДанныеДляРедактирования()"..., может кто подскажет?
-
Quote (ut2k5)
и еще вопрос, а разве не будет ошибкой если два разных текста запроса в расходной?... в зависимости от метода списания
но с другой стороны одним запросом не реально, а если и реально, то громоздко...
решения, которые представляются на экзамене в принципе не могут быть оптимальными... к тому-же как мне сказал на экзамене преподаватель: "Если запрос большой, значит там что-то не так...", так что не стоит стремится сделать все супер оптимально, нужно сделать все супер быстро и чтобы работало
-
1C_CoderVamp, видимо этот преподаватель не видел запросов в типовых конфигах) особенно ЗУП )
там рука устает скроллить эти запросы)
-
Quote (aworld)
видимо этот преподаватель не видел запросов в типовых конфигах) особенно ЗУП )
там рука устает скроллить эти запросы)
нет, он все правильно говорит, если в документе на экзамене большой запрос, после которого готовые данные тупо выгружаются в регистр, то тут возможны 3 варианта:
1) у вас была куча времени, чтобы навоять его
2) вы супермутант и мегапостроитель запросов... шучу
3) там по-любому косяк К тому же, сравни объем данных, который хранится в типовом ЗУП'е и объем данных в задаче на экзамене, в ЗУП'овских запросах данные порой разбиваются на добрый десяток регистров, а на задаче для экзамена их всего десяток (и расчетных, и накоп., и сведений)
Проще говоря за то время, которое отводится на экзамене, гораздо проще сделать 2 запроса и небольшой расчет между ними, чем пытаться сделать все это одним запросом и еще неизвестно что будет оптимальнее, ведь не стоит забывать, что оптимальность - это не только количество обращений базе данных, но еще и суть этих обращений.
Поэтому, лично я считаю, не стоит заморачиваться на том сколько у вас запросов в модуле (1 или 2), если вы можете быстро составить большой и красивый запрос, то вперед, но если вы знаете, что с этим возникнут трудности, то оставьте, это не столь принципиально, преподавателю всегда можно будет объяснить свою точку зрения, НО, опять же, я говорю о выездном экзамене
-
Не могу понять свойство документа "Удаление движений": "Удалять автоматически при отмене проведения".
В теории это в частности означает, что движения не удаляются автоматически при перепроведении уже проведенного документа. Проверяю это свойство в каркасной конфигурации на примере документа "приходная накладная", значение указанного свойства "Удалять автоматически при отмене проведения".
Если прописать в модуле документа в процедуре проведения следующий текст:
Code
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура;
Движение.Партия = Ссылка;
Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество;
Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма;
КонецЦикла;
Документ перепроводится сколько угодно раз, и движения не задваиваются, не дублируются...
Видимо все-таки движения как-то удаляются, но почему и в какой момент?
Подскажите плиз где я заблуждаюсь, заранее спасибо
-
Quote (Mихаил)
Подскажите плиз где я заблуждаюсь, заранее спасибо
Движения не удаляются, они замещаются. Это надо понимать, так работает платформа. Документ записывает свои движения набором записей, новый набор замещает старый. Почему создается иллюзия, что все работает как надо: в 8.1, еще до обработки проведения, движения документа в регистре очищались, в 8.2 этого не происходит, т.е. если в 8.1 до твоего кода ты сделаешь: "Движения.ОстаткиНоменклатуры.Прочитать()", то ты получишь пустую таблицу, а в 8.2 (по новой методике) ты получишь движения документа выдранные из регистра.
Попробуй добавить строчку "Движения.ОстаткиНоменклатуры.Прочитать()" и ты увидишь что получится )
А потом попробуй сделать тоже самое по старой методике
-
1C_CoderVamp, у меня почему-то уже по-маленьку складывается мнение что на очном экзамене можно втолдычить экзаменатору что белое это черное, а черное это белое народ совершенно по-разному решает задачи, главное чтобы была какая-то логика в решении
-
Quote (aworld)
у меня почему-то уже по-маленьку складывается мнение что на очном экзамене можно втолдычить экзаменатору что белое это черное, а черное это белое народ совершенно по-разному решает задачи, главное чтобы была какая-то логика в решении
в смысле?Добавлено (20.09.2010, 18:31)
---------------------------------------------
Quote (aworld)
можно втолдычить экзаменатору что белое это черное, а черное это белое
так не получится, преподаватели далеко не дураки, на то они и преподаватели. Прокатить под дурачка тоже не получится, экзамен серьезный. Но есть понятие времени и скорости исполнения. По коду преподаватель прекрасно видит направление твоей мысли и поймет если тебе на какую-то фигню не хватит времени, а база будет сделана как надо. На экзамене проверяется не умение решать задачи из сборника, в котором практикуется большая часть обывателей сайта, а умение пользоваться механизмами платформы и, где-то, нестандартно мыслить. Не надо думать, что зазубрив запросы из сборника кто-то станет крутым спецом, нет, он просто станет специалистом по сборнику задач, реальные навыки программирования появляются только на практике, при работе с клиентом. Так что сарказм здесь не уместен. Но, вернемся к теме, подумай сам, у тебя 4 часа на экзамен и ты сию секунду не знаешь как решить все одним запросом, ну вот не знаешь и все, да, ты можешь это сделать, но на это уйдет много времени и 4х часов тебе не хватит... в то же время ты можешь сделать 2 запроса и решить задачу за вдвое короткое время. Когда преподаватель будет проверять можно объяснить, что времени не хватило сделать все красиво, но ты знаешь как можно сделать красиво и по пунктам расскажешь что для этого нужно сделать. Тогда он согласится и не снизит за это оценку
-
1C_CoderVamp, понял, спасибо
-
Mихаил,
всегда пожалуйста
-
1C_CoderVamp, всё что ты написал не противоречит моему посту, а только подтверждает его
Мне как-то говорил мой преподаватель, что если решение красиво, то оно скорее всего правильно И я с ним в этом согласен. Как мне кажется все задачи должны решаться наиболее простым и логичным путем, если тебе пришлось накодить большую кучу, значит полез не в ту степь, или учел подводные камни, на которые никто смотреть не будет. Об этом надо думать на этапе проектирования уже. Зачастую компактность и простота решения зависит от структуры базы.
но это всё оффтоп. надо заканчивать)
-
aworld,
с тем, что ты написал сейчас я абсолютно согласен, но пост выше говорит совсем о другом... хотя ты прав что это оффтоп, завязываем
-
Доброго времени суток, коллеги!
Я новичок, поэтому не серчайте на мои глупые вопросы.
Вот мне непонятно следующее: как отразить в конфе тот факт, что доки могут неоперативно перепроводиться?
Благодарствую заранее.
-
Мое решение.
Вложения:
1.05.dt
-
Исходя из условия задачи( сборник задач 3 редакция, 4 абзац 1 предложение) у меня такое видение решения этой задачи:
Учет товаров ведется также в разрезе партий, с партии списывается то или иное количество товара. А расчет стоимости будет производится с согласно учетной политике:
Если FIFO или LIFO формула для расчета
Стоимость = СписатьСПартии / КоличествоОстатокПоПартии * СтоимостьОстатокПоПартии.
Если по средней формула для расчета
Стоимость = СписатьСПартии / ОбщееКоличествоТовара * ОбщаяСтоимостьТовара; Думаю что при списании по средней порядок партий может любой, я бы поставил Автоупорядочивание в текст запроса, пусть система сама разбирается.
Вот такие мои соображения в теории. Что получится на практике выложу на суд общественности.
Что то я ерунду сморозил также регистр в ноль не закроется.
ps Правильно ли я понимаю решение проблемы копеек?
-
Насколько я видел в видеоуроке других преподавателей, для решения проблемы копеек нужно операции деления выносить в конец формулы, т.е. сначала нужно выполнять операции умножения.
Добавлено (21.10.2010, 16:11)
---------------------------------------------
Пересмотрел несколько примеров баз с форума поддержки 1С и базу 1C_CoderVamp . Также скачал с Инфостарта коллекцию решений Мананникова Вадима, (ник - manan). За исключением пары недочётов в рамках 8.2 самое адекватное решение - в базе 1C_CoderVamp. В рамках 8.1 самое адекватное решение, притом логически ясное и удобочитаемое - у manan. Единственный момент, который никак не обрабатывается программно в обоих решениях: если в тот же день, когда вводится новый документ смены учётной политики, уже были проведены один или несколько документов расхода. Я пробовал проводить эксперименты с данным условием и вот что получилось при перепроводке документов командой из меню "Все функции":
1. в базе 1C_CoderVamp себестоимость списания в таких документах начинаает меняться.
2. в базе manan себестоимость не плавает, но в регистр почему-то добавляется пустая строка по номенклатуре.
Поэтому мне кажется, что перед проводкой документа смены учётной политики следует проверять наличие проведённых расходных документов на эту дату. Если документы есть - выдавать отказ. По-хорошему, вероятно, следует хранить в документах прихода/расхода учётную политику и следить за тем, чтобы она была одинаковой во всех документах за произвольно выбранную дату.
Если не углубляться в описанные выше дебри, то, ИМХО, нужно просто взять решение manan и переписать его с учётом платформы 8.2. И не заниматься велосипедостроением.
-
detec, Велосипедостроением никто не занимается=) Больше пользы будет если попробовать решить задачу и выложить на суд, чем разобрать чужое решение, поэтому их здесь много (решений). Выложи решение манан если не сложно, интересно посмотреть=)
-
Выкладываю его конфу, платформа 8.1, задача 1.5.
Вложения:
1Cv8_manan_task.cf
-
Доброго время суток!
В тексте задания 1.5, сборнике задач для подготовке к экзамену «1С:Специалист» по
(8.2). редакция 3, июнь 2010. Цитата: «Списание себестоимости должно быть организовано по партиям, в зависимости от текущего значения принятого в учетной политике метода списания себестоимости (FIFO, по СРЕДНЕЙ или LIFO).
Как можно списывать себестоимость партий «ПО СРЕДНЕМУ» ?
-
detec,
решений одной и той-же задачи действительно много, но это то и хорошо
Все решают по-разному и у всех на это есть свои мотивы. Основной мотив - это объективная критика. Ты же нашел значительный косяк и нашел оптимальное, на твой взгляд, решение) но ведь его кто-то до этого выложил, если покопаешься получше, найдешь еще пару интересных решений, и, в итоге, поймешь что можешь лучше и выложишь свое.
Ну, и потом, это неплохая практика Добавлено (29.10.2010, 10:25)
---------------------------------------------
StepaCV,
Quote (StepaCV)
Как можно списывать себестоимость партий «ПО СРЕДНЕМУ» ?
ну так это ж самое простое) Берешь общую стоимость остатков и делишь на количество, без учета партий. Например:
Партия 1 - 10шт. по 100р.
Партия 2 - 10шт. по 200р.
Если тебе нужно списать 15 шт., то:
ФИФО
10шт. партия 1 по 100р и 5шт. партия 2 по 200р. (итого 2000р.)
ЛИФО
10шт. партия 2 по 200р и 5шт. партия 1 по 100р. (итого 2500р.)
По среднему
15шт. по 150р. ((100 * 10 + 200 * 10) / 20) без указания партий (итого 2250р.)
-
По среднему
15шт. по 150р. ((100 * 10 + 200 * 10) / 20) без указания партий (итого 2250р.) 1.Если я буду списывать без указания партий, то у меня регистры в ноль не выйдут.
2.Если подразумевается, что учетная политика один раз вводится, то зачем тогда в условии написано «УП может меняться каждый день, ее изменение фиксируется соответствующим документом»?
-
StepaCV, без указания партии, это партия пустая ссылка, на нее оприходуеш и с нее же списываеш, тогда выйдут в 0. , регламентный документ при смене учетной полтики должен все партии списать и оприходовать на пустую, при переходе на расчет по средней
-
Спасибо, Sada, вот с данной идеей я солидарен.
-
добрый вечер, смотрю ваши решения и у меня несколько вопросов:
1) вижу вот этот текст кода
Code
Блокировка = Новый БлокировкаДанных;
Элемент = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
Элемент.ИсточникДанных = СписокНоменклатуры;
Элемент.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();
ошибкой ли будет его не использовать?
2) обязательно ли тут использовать последовательность?
-
gosn1ck, что значит не использовать? а как ты собрался блокировать регистр?
вот у меня на экзамене в БУ параметр "Счет" был заблокирован, а субконто я решил, что не обязательно, в итоге: "блокировка на регистр при проведении документа отсутствует"...Добавлено (03.11.2010, 15:17)
---------------------------------------------
sada,
Quote
должен все партии списать и оприходовать на пустую, при переходе на расчет по средней
согласен,
а вот если уч. политика обратно поменяется на LIFO или Fifo , на какую партию оприходовать?
-
ut2k5, тогда не надо ничего переделывать, в этот момент все товары будут на пустой партии, с нее и начинать списывать если FIFO, если на LIFO перешли, то с пустой в последнюю очередь.
-
sada, т.о. пустая партия будет приоритетной для списания.., согласен, но может все таки добавить составной тип у измерения "партия" = "прих. накладная" и "регл. док"? хотя в целом, ничего не меняет, так как все равно в разрезе пустой партии будет такая же себестоимость как и в разрезе этого же регламентного документа, ок согласен
-
ut2k5, может и имеет смысл , пока не думал над этим, задачку пока эту тоже не решал :)
-
перерешал заново:
Добавлено (09.11.2010, 19:21)
---------------------------------------------
кто нибудь смотрел?...
Вложения:
0577210.dt
-
ut2k5,
1. зачем ставишь блокировку в приходной?
2. в документе Установка учетной политики ты только у остатков ставишь пустую партию. Если отменить проведение какой-либо расходной накладной, у которой дата меньше даты установки метода списания - по-среднему, тогда появится остаток с не пустой партией. => партии нужно "затирать" у всех записей => придется перепроводить все документы прихода и расхода.
-
Фраза "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно проводится", я так понимаю означает просто проверку перед записью проводится док сегодня или нет. Ни о каких последовательностях речь не идет.
-
Quote (Boris-Leleko)
"Считается, что документы задним числом не вводятся, но старые документы могут неоперативно проводится"
Если я правильно понимаю, эта фраза означает, что остатки в Расходной накладной мы должны получать на момент времени документа в не зависимости от оперативного/не оперативного проведения.
Последовательности здесь действительно не при чем.
Здесь пояснения к задаче дает Павел Белоусов http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=569477
-
Это просто говорится для того, чтобы было реализовано корректное неоперативное перепроведение документов, а не только использовались текущие итоги.
-
hapcher,
Quote
партии нужно "затирать" у всех записей
не надо ничего затирать документ задним числом мы не можем снять с проведения, по условию "документы задним числом не вводятся" само собой подразумевает, что старые документы мы можем ТОЛЬКО ПЕРЕПРОВОДИТЬ, ничего другого с ними делать низя...
-
ut2k5, вопрос №2 снят, разобралась и решила почти так же как ты.
А что по поводу вопр. №1 (зачем ставишь блокировку в приходной?)
-
В документе ИзменениеУчетнойПолитики при описании блокировки по идее необходимо заблокировать весь регистр ОстаткиНоменклатуры. Я так полагаю что тут блокировка должна выглядеть следующим образом:
Code
Блокировка=Новый БлокировкаДанных;
ЭлементБлокировки=Блокировка.Добавить("РегистраНакопления.ОстаткиНомерклатуры");
ЭлементБлокировки.Режим=РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Люди что вы думаете по этому поводу? ut2k5, действительно зачем в приходной делать блокировку?
Может быть имеет смысл проверку документов на старый/новый вывести в общий модуль, прописать ее один раз и вызывать в трех документах. Такой общий модуль должен исполняться на сервере?
-
Danan, мне тоже так кажется что надо заблокировать весь регистр, т.к. остатки мы переводим из одной партии в другую, используя весь регистр, Но с другой стороны мне что то смущает блокировать ВЕСЬ регистр.
-
моё решение
Вложения:
4487616.dt
-
Интересная задачка, даже очень. В случае если ПоСредней использовал пустую ссылку приходной.
1) Документ ИзменениеУчетнойПолитики: остается открытым вопрос о блокировке всего регистра.
2) Документ РасходнаяНакладная: кто то тут писал что можно использовать один текст запроса для всех методов списания. Я тоже так думаю.
3) Отчет и регистр Продажи: мне кажется тут есть одна хитрость заложенная в условиях задачи.
В предыдущих 4 задачах я для получения себестоимости в отчете использовал СтоимостьРасход и по оборотной таблице регистра ОстаткиНоменклатуры. В этой задаче расход по движениям регистра ОстаткиНоменклатуры осуществляют два документа, и только один из них формирует движения по регистру Продажи. Можно конечно в запросе наложить ограничения по регистратор = Расходная для получения СтоимостьРасход. Я думаю что в этой задаче целесообразно добавить в регистр Продажи ресурс Себестоимость.
Вложения:
Task_1_5..dt
-
Quote (AndreiPiter)
моё решение
не нашел где списание по средней делается...
-
Quote (Gyd)
не нашел где списание по средней делается...
непонял??? "Списание себестоимости должно быть организовано по партиям..."
-
Quote (AndreiPiter)
непонял??? "Списание себестоимости должно быть организовано по партиям..."
Ну да, по партиям. В соответствии с выбранным методом списания: ФИФО, ЛИФО или средняя. Я не нашел в коде место где видно по какому методу списывается.Добавлено (13.01.2011, 09:08)
---------------------------------------------
Quote (Danan)
В случае если ПоСредней использовал пустую ссылку приходной.
Использовать пустую ссылку - это неправильно. Партия должна быть заполнена.
Quote (Danan)
Документ ИзменениеУчетнойПолитики: остается открытым вопрос о блокировке всего регистра.
Этот документ нужен исключительно для ввода метода списания на текущий день (если метод меняется). Ничего блокировать не нужно. Попозже выложу свое решение.
-
Quote (Gyd)
Ну да, по партиям. В соответствии с выбранным методом списания: ФИФО, ЛИФО или средняя. Я не нашел в коде место где видно по какому методу списывается.
Ой, про среднее забыл
-
Quote (AndreiPiter)
Ой, про среднее забыл wink
в этом вся "фишка" задания... что-то у меня был вариант как сделать, но он оказался нерабочим, сейчас буду другой придумывать.Добавлено (14.01.2011, 09:45)
---------------------------------------------
Quote (AndreiPiter)
Ой, про среднее забыл wink
в этом вся "фишка" задания... что-то у меня был вариант как сделать, но он оказался нерабочим, сейчас буду другой придумывать.
-
исправил (добавил списание ПоСреднему)
Вложения:
AP_1.05_2.dt
-
Quote (Gyd)
Использовать пустую ссылку - это неправильно. Партия должна быть заполнена.
Почему?
Quote (Gyd)
Этот документ нужен исключительно для ввода метода списания на текущий день (если метод меняется). Ничего блокировать не нужно.
Также этот документ делает движения в регистре остатков, если произошла смена метода списания себестоимости с Fifo/Lifo на среднюю. В регистре списываются все партии товара и появляется одна партия товара с пустой ссылкой. В таком случае имеет ли смысл блокировать весь регистр накопления? Ведь будут проводится манипуляции со всеми номенклатурными позициями, которые находятся этом регистре.
-
Quote (Danan)
Также этот документ делает движения в регистре остатков
Вы правы, при этом решении блокировка регистра нужна, и пустая партия необходима. Я просто сначала несколько по другому представлял себе решение этой задачи, поэтому и высказался так. ---------------------------------------------
Quote (AndreiPiter)
исправил (добавил списание ПоСреднему)
в целом, понравилось только вот расходная у вас при перепроведении начинает ругаться на нехватку товара, может потому что регистр не очищается от движений перед запросом... что-то пока не пойму. возможно это и требуется в задаче, но проверка на ввод документа задним числом уж очень простая и легко обходится, достаточно создать документ сегодняшней датой, записать, а потом изменить дату на другую и провести.
Я наверное так бы сделал:
1. оставил ту проверку что есть (при вводе задним числом - отказ).
2. при проведении: если не проведен, проводим только сегодняшней датой и запоминаем дату; если проведен - разрешаем проведение только если не изменилась запомненная дата, либо изменилась на текущую.
Quote
|УПОРЯДОЧИТЬ ПО
| ОстаткиНоменклатурыОстатки.Партия.МоментВремени " +ПорядокПартий+ "
и еще один момент: как будет работать списание по ФИФО или ЛИФО, если до этого было списание по средней?
-
Quote (Gyd)
только вот расходная у вас при перепроведении начинает ругаться на нехватку товара, может потому что регистр не очищается от движений перед запросом... что-то пока не пойму.
нигде не удаляю движения, для корректного перепроведения думаю надо использовать "перепроведение в хронологическом порядке"
Quote (Gyd)
и еще один момент: как будет работать списание по ФИФО или ЛИФО, если до этого было списание по средней?
соответсвенно, то что было раньше по средней, то у нас на пустой партии, и тогда по ФИФО будет сортироваться вверху запроса и списыватья сначала, по ЛИФО будет наоборот.Добавлено (17.01.2011, 19:51)
---------------------------------------------
Quote (Gyd)
возможно это и требуется в задаче, но проверка на ввод документа задним числом уж очень простая и легко обходится, достаточно создать документ сегодняшней датой, записать, а потом изменить дату на другую и провести.
Я наверное так бы сделал:
1. оставил ту проверку что есть (при вводе задним числом - отказ).
2. при проведении: если не проведен, проводим только сегодняшней датой и запоминаем дату; если проведен - разрешаем проведение только если не изменилась запомненная дата, либо изменилась на текущую.
Я нонял. Но написано, что "документы задним числом не вводятся". Полагаю что "вводятся" имеется ввиду что не заводятся в базу (т.е не сохраняются). В противном случае было бы написано "проводятся". Тем более что дальше сказано "что старые документы могут неоперативно перепроводится"
И как правило, если что то получается сложно то что то не так.
-
Quote (AndreiPiter)
соответсвенно, то что было раньше по средней, то у нас на пустой партии, и тогда по ФИФО будет сортироваться вверху запроса и списыватья сначала, по ЛИФО будет наоборот.
Думаю не будет. У вас все пустые партии должны схлопнуться, потому что стоит группировка по Номенклатуре.
Quote (AndreiPiter)
нигде не удаляю движения, для корректного перепроведения думаю надо использовать "перепроведение в хронологическом порядке"
там нет коллизий, я просто опять взял последний документ и попытался его провести
Quote (AndreiPiter)
Я нонял. Но написано, что "документы задним числом не вводятся". Полагаю что "вводятся" имеется ввиду что не заводятся в базу (т.е не сохраняются). В противном случае было бы написано "проводятся".
Пожалуй вы правы. Если что, можно этот момент уже на экзамене выяснить.
-
Quote (Gyd)
Думаю не будет. У вас все пустые партии должны схлопнуться, потому что стоит группировка по Номенклатуре.
Так. Когда политика ПоСреднему всё приходуется на пустую партию, Потом когда переходим например на ФИФО, все начинает приходоватся по партиям. Когда списываем, номенклатура с пустой партией будет списыватся сначала (эта как раз та номенклатура которая приходила раньше, до изменения политики на ФИФО. и мы её не различали по партиям и это правильно). Если я не понял твою мысль, поясни.
-
Quote (AndreiPiter)
Когда политика ПоСреднему всё приходуется на пустую партию
Кажется понял что вы имели ввиду, если у нас есть несколько приходов Товара1 например, с пустыми ссылками в Партии, то при переходе на ФИФО, они у нас станут как бы одной партией (первой), так?
Я сначала думал что при переходе на другой метод списания нужно заменять пустые ссылки партиями, и наоборот. Усложнил задачу
-
Quote (Gyd)
Кажется понял что вы имели ввиду, если у нас есть несколько приходов Товара1 например, с пустыми ссылками в Партии, то при переходе на ФИФО, они у нас станут как бы одной партией (первой), так?
Да, именно так.
-
Zhora_Vlg,
Quote (Zhora_Vlg)
заменить предложением "ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.ОстаткиНоменклатуры.Остатки" в запросе?
В режиме управляемых блокировок, конструкция ДЛЯ ИЗМЕНЕНИЯ языка запросов не работает.
Quote (Zhora_Vlg)
Проверять, что новый документ вводится задним числом, нужно в "ОбработкаПроверкиЗаполнения", или как все делают в "ПередЗаписью"?
Фраза «документы задним числом не вводятся» , скорее говорит о том, что не требуется реализовывать механизмы восстановления последовательности, а не о том что необходимо ограничить возможность введения. т.е. скорее всего на эту проверку не обратят внимания.
-
Мой вариант решения задачи 1.05
Добавлено (21.01.2011, 21:01)
---------------------------------------------
AndreiPiter, Посмотрел решение , вроде всё верно :)
Вложения:
1Cv8_sada_1_05.dt
-
Мой Вариант
Особенно интерсуют комментарии по обработке проведения документа смены учетной политики:
Code
НаборЗаписей = РегистрыСведений.УчетнаяПолитика.СоздатьНаборЗаписей();
НаборЗаписей.Записывать = Истина;
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.Прочитать();
НоваяСТрока = НаборЗаписей.Добавить();
НоваяСТрока.Период = Дата;
НоваяСТрока.Политика = Политика;
НаборЗаписей.Записать();
Если Политика = Перечисления.УчетнаяПолитика.ПоСредней тогда
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура,
| ОстаткиНоменклатурыОстатки.Партия,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток,
| ОстаткиНоменклатурыОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки(&МоментВремени, ) КАК ОстаткиНоменклатурыОстатки
|
|ДЛЯ ИЗМЕНЕНИЯ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки";
Запрос.УстановитьПараметр("МоментВремени",МоментВремени());
1)Правильно ли сделана запись в регистр вседений
2)ПРи списании по средней затруднительно было сформировать объект БлокировкаДанных, поэтому блокировал регистр в запросе, это не ошибка?
3)Ну если всё таки кто нить будет смотреть базу - правильно ли настроена последовательность.
Вложения:
_1.05.dt
-
Gulf_Stream,
Quote (Gulf_Stream)
2)ПРи списании по средней затруднительно было сформировать объект БлокировкаДанных, поэтому блокировал регистр в запросе, это не ошибка?
думаю что ошибка, потому что на экзамене проверяют умение работать с управляемыми блокировками , а в режиме управлемых блокировок конструкция "ДЛЯ ИЗМЕНЕНИЯ" не работает.
-
Мое решение
Вложения:
5624265.dt
-
rus, тож проблемы с блокировками? =)
sada, хм, как должен выглядеть элемент БлокировкаДанных в случае если мы ворошим практически весь регистр? Без указания источника данных?
-
Если при переходе на расчет по среднему записываем пустые партии, а потом переходим на другой метод списания, то при сортировке по ФИФО и ЛИФО куда попадут остатки с пустой партией??? В начало или конец очереди?
Я сортирую по дате партии, поэтому возникает такой вопрос. На мой взгляд тогда есть такой выход: записывать не пустую партию, а в качестве документа партии записывать документ, изменяющий уч.политику.
-
Jer-Mark, Я думаю , что при методе списания по средней удобнее использовать пустую ссылку приходной. И сортировку делать прямо партии, поскольку ссылка содержит в себе дату, дата в пустой ссылке равна Дата(1,1,1). Тогда если фифо то пустая ссылка будет в начале, а если лифо то в конце. Для пущей убедительности это можно увидеть в консоли запросов или при отладке.
Gulf_Stream, я уже поднимал вопрос в этой теме, но ответ получил в ссылка на тему комментарии 15(2),16.
-
Спасибо, не сразу стало понятно, что у пустой ссылки тоже есть свои дата и время
-
Quote (Jer-Mark)
Спасибо, не сразу стало понятно, что у пустой ссылки тоже есть свои дата и время
Улыбнуло. Вообще-то, у пустой ссылки нет каких бы то ни было реквизитов, т.е. Дата в этом случае будет равна NULL.
-
Matcoder, Смотрел в консоли запросов - действительно дата у пустой ссылки NULL. Интересно почему тогда срабатывает упорядочивание(возр/убыв) как по партии, так и по Партия.Дата.
-
Quote (Danan)
Matcoder, Смотрел в консоли запросов - действительно дата у пустой ссылки NULL. Интересно почему тогда срабатывает упорядочивание(возр/убыв) как по партии, так и по Партия.Дата.
Потому что NULL - это самое минимальное значение, которое только может быть. Почитай "Правила сравнения значений" в Справке.Добавлено (09.03.2011, 19:51)
---------------------------------------------
Я бы даже сказал что NULL - это отсутствие значения. Так проще запомнить.
-
Скажите пожалуйста зачем в документе по формированию учетной политики делаются движения по регистру ОстаткиНоменклатуры ?
-
roslakov, все очень просто. Этот документ делает движения по регистру ОстаткиНоменклатуры лишь том случае если метод списания меняется на списание себестоимости по средней. Это делается для того чтобы списать все остатки со всех партий и записать эти же остатки на пустую ссылку документа приходная. Таким образом регистр ОстаткиНоменклатуры будет закрываться в ноль при списании номенклатуры по средней.
-
Посмотрите и по возможности прокомментируйте мой вариант решения.
Вложения:
antantait1_5.dt
-
Очень хотелось бы услышать комментарии к моему решению. Буду ждать.
Вложения:
garden_1-05.dt
-
Хотелось бу услышать комментарий, по поводу решения без сворачивания регистра "Остатки номенклатуры" при переходе на среднюю.
Вложения:
0229246.dt
-
valdu,
1) Если открыть регистр накопления Остатки номенклатуры можно увидеть странную картину в одной из строк количество равно 0 сумма равна 50.
2) Регистр накопления странно ведет себя.
Я ввел три партии по товару в каждой партии количество равно 10, суммы 10, 11, 12.
Сперва по фифо списал 15, затем по средней остальное. В регистре снова появилась подозрительная строка где количество равно, сумма равна 120.
Сформировал отчет по остаткам по одной из партии количество равно -10.
Могу выложить базу.
-
Danan,
1. Сумма без количества может зависать, когда средняя себестоимость меньше стоимости партии. Предполагается, что эти деньги уйдут при последующих списаниях.
2. Нашел ошибку в коде. Смоделировал Ваш пример. Сейчас вроде нормально. База прилагается.
Вложения:
1_5.dt
-
Quote (valdu)
Хотелось бу услышать комментарий
Code
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &Дата,...
....
Запрос.УстановитьПараметр("Дата", Дата);
Добавлено (21.06.2011, 15:16)
---------------------------------------------
Quote (valdu)
по поводу решения без сворачивания регистра "Остатки номенклатуры" при переходе на среднюю.
Идея интересная. Несмотря на записи с нулевым количеством, регистр в итоге в 0 выходит. А вот правильно ли это с точки зрения 1С - затрудняюсь ответить.
-
AndreiPiter, sada,
Коллеги! Посмотрел Ваши решения задачи 1.5 и лично мне они совсем не понятны! Объясните:
- При установке новой учетной политики - По среднему, при имеющихся любых движениях, Вы все партии списываете к 0 и отправляете в приход остатки на пустую партию.
- Если я поменяю политику на ФИФО или ЛИФО и буду что-нибудь списывать (и в наличие у меня что-нибудь будет), то, по Вашим решениям получается, что списывать я буду опять же с пустой партии!!! Но извините, политику я поменял, Себестоимость будет рассчитываться не верно, в ноль она не уйдет!!! Тем более, списать товар надо с партии, но у Вас они нулевые!!
Может я не уяснил замысел задачи, но в ней ясно написано, что учетная политика может меняться каждый день!! И вот ситуация, вчера - По Средней, сегодня - Списываю по ФИФО. Прошу помочь, что то ну никак не клеится!
-
Quote (DoctorRoza)
Посмотрел Ваши решения задачи 1.5 и лично мне они совсем не понятны! Объясните:
Например у вас были партии: №1, №2 и №3. Вы сделали их пустыми (ПрихНакл.ПустаяСсылка()). Начали списывать по средней. Потом поменяли метод списания на ФИФО или ЛИФО. В запросе у вас документы прихода выстроятся по очереди, первый - " " (бывшая партия №1), второй - " " (партия №2), третий - " " (партия №3). Или вот так: (№3-№2-№1). Вы соответственно по очереди списываете эти "пустые" партии.
-
Мое решение
Документ изменение учетной политики в момент перехода с ФИФО/ЛИФО на среднее становится партия образующим
Вложения:
1_5_lukashov.dt
-
У вас в регистре Остатков отрицательные остатки.
Добавлено (24.06.2011, 15:41)
---------------------------------------------
Вот скажите, я посмотрела некоторые варианты решений, у всех в принципе тестовые данные забиты, так, что по политика со средней меняется на партионный. Тут все понятно, в документе "смена учетной политике" зачищаем остатки по партиям. А когда наоборот: со средней на партионный, надо же по идее все пустые ссылки по партиям поменять на приходные. Если это тоже сделать в документе "смена учетной политики" - это не будет необоснованным увеличением количества записей в регистрах. По другому что то никак себе не представляю решение этой задачи. Может я не так условия понимаю? Кто-нибудь подскажите.
-
Quote (kravius)
А когда наоборот: со средней на партионный, надо же по идее все пустые ссылки по партиям поменять на приходные.
Зачем? Вот я уже описывал пример работы при переходе на партионный учет: http://forum.chistov.pro/index.php?topic=983.msg16199#msg16199
-
Quote (Gyd)
Зачем? Вот я уже описывал пример работы при переходе на партионный учет: http://forum.chistov.pro/index.php?topic=983.msg16199#msg16199
Приведите пожайлуста пример запроса.Добавлено (24.06.2011, 16:47)
---------------------------------------------
Как документы прихода выстроятся по очереди, если на момент списания мы берем остатки по "пустой" партии.
-
Quote (kravius)
по идее все пустые ссылки по партиям поменять на приходные
а как ты это сделаешь? получиться белеберда, как среднюю сумму раскинешь на партии. это на какую-то партию либо придется меньше ее фактической стоимости или наоборот завысишь, некорректно получиться, а так если уже в некий момент решили перейти на среднюю. то тут сформируется партия новая с новой ценой
не надо при переходе со средней пытаться восстановить партии, раскинуть конечно возможно воссоздав что за период за который было по среднему, распределить по ФИФО/ЛИФО движения, а во-вторых вопрос а по какому методу будешь воссоздавать по ФИФО или ЛИФО? в общем это лишнее, да и себестоимость воссоздав со партиям со среднеи уже не воткнешь корректно на партию
-
Дошло.
Добавлено (24.06.2011, 16:59)
---------------------------------------------
Просто видимо здесь некое допущение надо сделать, что "пустая партия" тоже является партией, и дальше все списывать исходя из этого. ПАСИБА
-
kravius, если будешь делать "пустая партия", как Документы.ПриходнаяНакладная.ПустаяСсылка() то не сможешь "пустую партию отсортировать по ФИФО, сделаи лучше в реквизит Партия регистра остатков составным ПриходнаяНакладная и документ ИзменениеУчетнойПолитики, тогда при проведении приходов когда по среднему просто будешь вытаскивать последний док сделавший движение учПолитика По среднему и его делать партией, меньше проблем с сортировкой и проверками
а допущение тут не пустая партия является партией а документ смены учетнои политики может быть партия образующим, когда сольет все партии в одну кучку и их стоимости
-
"Родила царица в ночь .. Не то сына, не то дочь" (А.С.Пушкин)
Вымучил .. мое решение задачи 1.5 .. Посмотрите пожалуйста ..
Вложения:
DoctorRoza_1_5.dt
-
что именно означает "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться"?
-
Quote (poritskiy)
что именно означает "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться"?
Это значит, что нужно контролировать какой датой Вы проводите новые документы! Нельзя осуществлять проводки новых документов "задним" числом. При этом уже созданные документы можно перепроводить. В задаче не сказано о каких именно документах идет речь .. по идее .. о расходной накладной.
-
Lukashov_as Если не очень напрягает, посмотрите пожайлуста. Как то стала доверять вашему мнению.
Вложения:
1_5_kravius.dt
-
kravius, спасибо конечно, но здесь обитают товарищи намного поумнее и придирчевее в проверках меня:)
1) Движения.XXX.Очистить();
Движения.XXX.Записать();
Зачем Очистить()? просто Записать() и так запишет пустой набор, не ошибка конечно но действие лишнее
2) Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| СменаУП.Ссылка
|ИЗ
| Документ.СменаУП КАК СменаУП
|ГДЕ
| СменаУП.МетодСписания = ЗНАЧЕНИЕ(перечисление.УчетнаяПолитика.ПоСредней)
|
|УПОРЯДОЧИТЬ ПО
| СменаУП.Дата УБЫВ";
почему не использовали Виртуальную Таблицу УчетнаяПолитика.СрезПоследних и не взяли Регистратор? у вас же настроен регистр сведении РежимЗаписи=ПодчиненРегистратору и берите регистратор
а то получается если базе будет ндцать лет еи придется выбрать все документы СменаУП где ПоСредней, упорядочить. я взять одну запись, мне кажется не оптимально. причем где то использован срез последних а тут как то упустили, или есть какаято мысль?
3) док.Расходная ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&момент, )
почему в параметрах не наложили ограничение на выбираемую номенклатуру? это приидется выбрать всю всю всю таблицу остатоков!!!! страшная ошибка! накажут жестоко за параметры в виртуальных таблицах
4) Если не отказ Тогда
Движения.ОстаткиНоменклатуры.Записывать = истина;
Движения.Продажи.Записывать = истина;
КонецЕсли;
не уверен в необходимости лишней проверки, если будет отказ = Истина то и так ничего не запишется
5) Если Выборка.КоличествоОстаток = осталосьсписать Тогда
тоже вариант но Павел Чистов в примерх решения предлагает метод попроще
СебестоимостьДляСписания = (СписываемоеКоличество / КоличествоОстатока) * СебестоимостьОстатока
http://forum.chistov.pro/index.php?topic=1563.msg1#msg1 <- это тут по обсуждали за копейки
6) Выборканом.номенклатура.услуга = ложь зачем 2 раза на услуги проверяете, может есть смысл проверить если неУслуга тогда зайти в если проделать проверку достаточности на складе и списать количество сразу? не нагружайте систему проверками
7) Выборканом.номенклатура.услуга 2/3/4 точки в семерке во всяком случае не реккомендовали делать темболее в цикле, да и в8 ке не думаю что это хорошо, с каждой точкой это новое обращение к базе
8) НомерСтроки в запросе по табличной части сделали и потом в группировке зачем? списывать вы все равно будете по партиям на остатке, если мысль была что может быть один товар 2 раза но по разнои продажной цене, так вы продажи не анализируете по цене продажи, в даннои задаче наоборот сгруппируйте по номенклатуре и все, я думаю не надо номер строки
9) Зачем в расходной разбили поСредней или по партиям? посмотрите в код у вас одно и тоже что по средней что по партиям, просто по средней при группировке по партиям будет только лишь одна партия содержашая как раз таки документ смены УП, и тогда и запрос не нужен будет на выборку документа сменыУП в расходной, он и так у вас уже в остатках сидит
тут в расходной вообще я так мыслю можно просто списывать по партиям, и какая разница что у вас будет например ФИФО или ПоСредней на данный момент вы уже подготовили регистр ОстаткиНоменклатуры к среднему в док СменаУП
удалите все в проведенеии расходной и сделаите только по партиям а эффект останется прежним
в общем пока так насмотрел
стараитесь делать код пооптимальнее, если уже обратились к регистру УчетнаяПолитика то заберите в нем что нужно один раз, не надо делать
Запрос = Новый Запрос("ВЫБРАТЬ
| УчетнаяПолитикаСрезПоследних.Метод
|ИЗ
| РегистрСведений.УчетнаяПолитика.СрезПоследних(&Дата, ) КАК УчетнаяПолитикаСрезПоследних");
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| СменаУП.Ссылка
|ИЗ
| Документ.СменаУП КАК СменаУП
|ГДЕ
| СменаУП.МетодСписания = ЗНАЧЕНИЕ(Перечисление.УчетнаяПолитика.ПоСредней)
|
|УПОРЯДОЧИТЬ ПО
| СменаУП.Дата УБЫВ"; <-Не надо, забрали бы Регистратор из РегистрСведений.УчетнаяПолитика все равно ж за методом списание к ней обращаетесь, как я писал тут вообще можно взять узнать фифо/лифо, а по среднему один черт куда сортировать все равно одна партия окажется
Самое страшное в Базах данных это обращение к базе данных, тут надо сокращать количество обращении, вы к мааааленькой таблице с 2мя данными умудрились обратится 2 раза в одном документе, оч нехорошо
Очень много излишних проверок, это не ошибка, но надо стремится к оптимизации кода, каждая проверка это время!!!
ну я думаю пока хватит, саму задачу честно признаюсь не запускал, но думаю вы ее и сами проверили
-
1-5) исправила, че то по запарке забыла про условия на вирт. табл.
6) не поняла. Я в запросе не проверяю услуга или нет. Для того, чтобы продажи двинуть по услугам тоже.
7)Номер строки просто для обработки сообщения об ошибке
8) Алгоритм по средней выношу, для того, чтобы в случае, если не перепровели влвремя документы, после смены партионного на средний, все равно списывалось по последней партии (СменаУП), иначе будет мешанина, и документ попросту не проведется, а так после восстановления последовательности все встанет на места. (правда не проверяла). Просто была такая мысль.Добавлено (28.06.2011, 16:14)
---------------------------------------------
Спасибо за потраченное время. Если честно я считаю, что работа над ошибками даже эффективнее, чем сама работа.
-
6) не в запросе, в цикле
стр 118 : Если Выборканом.КоличествоОстаток < ВыборкаНом.Количество и Выборканом.номенклатура.услуга = ложь тогда
стр 134: если Выборканом.номенклатура.услуга = истина тогда
7)НомерСтроки: ну наверно оправданно, но вы попадете с таким финтом на большую проблему если я ввиду один товар 2 раза, вы спишите по первой строке партии, а потом те же самые партии по второй, и приехалиДобавлено (28.06.2011, 16:27)
---------------------------------------------
Quote (kravius)
Алгоритм по средней выношу,
вот тут я в ступоре, а зачем перепроводить документы после смены на средний? на случай если продавали продавали а потом решили вечером сменить уч политику и надо за весь день перепровести доки?
мне кажется тут на момент времени дока надо зацепится и все, сменили началась новая жизнь, до ввода дока как по прошлому доку СменаУпДобавлено (28.06.2011, 16:32)
---------------------------------------------
kravius, уберите НомерСтроки от греха подальше, сообщениями заниматься будете потом, а сеичас помните про условие на экзамене что один товар может быть введен 2 раза, а сделать так чтоб и по номеру строки и правельно списался товар по партиям это надо запоминать те партии которые уже списали по первый раз когда встретился этот товар
-
Quote (Lukashov_as)
7)НомерСтроки: ну наверно оправданно, но вы попадете с таким финтом на большую проблему если я ввиду один товар 2 раза, вы спишите по первой строке партии, а потом те же самые партии по второй, и приехали
Ничего себе косячина! Спаисбо за подсказку. Убрала эту пакость.Добавлено (28.06.2011, 16:43)
---------------------------------------------
Quote (Lukashov_as)
вот тут я в ступоре, а зачем перепроводить документы после смены на средний? на случай если продавали продавали а потом решили вечером сменить уч политику и надо за весь день перепровести доки?
мне кажется тут на момент времени дока надо зацепится и все, сменили началась новая жизнь, до ввода дока как по прошлому доку СменаУп
Я тоже в ступоре ... теперь.
-
kravius,
предлагаю отказаться от подобного куска кода
Если Метод = Перечисления.УчетнаяПолитика.ЛИФО Тогда
Запрос2.Текст = Запрос2.Текст + "
|УПОРЯДОЧИТЬ ПО
| ПартияДата УБЫВ";
иначе
Запрос2.Текст = Запрос2.Текст + "
|УПОРЯДОЧИТЬ ПО
| ПартияДата ВОЗР";
КонецЕсли;
некогда будет на экзамене писаниной заниматься
вот как можно было бы одной строкой
Code
Запрос2.Текст = "ВЫБРАТЬ
| ВТТабЧать.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ВТТабЧать.Количество) КАК Количество,
| МАКСИМУМ(ВТТабЧать.Сумма) КАК Сумма,
| СУММА(ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0)) КАК КоличествоОстаток,
| СУММА(ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0)) КАК СуммаОстаток,
| ОстаткиНоменклатурыОстатки.Партия.Дата КАК ПартияДата,
| ОстаткиНоменклатурыОстатки.Партия,
| ВТТабЧать.НомерСтроки КАК НомерСтроки
|ИЗ
| ВТТабЧать КАК ВТТабЧать
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&момент, ) КАК ОстаткиНоменклатурыОстатки
| ПО ВТТабЧать.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ВТТабЧать.Номенклатура,
| ОстаткиНоменклатурыОстатки.Партия.Дата,
| О статкиНоменклатурыОстатки.Партия,
| ВТТабЧать.НомерСтроки
|
|УПОРЯДОЧИТЬ ПО
| ПартияДата "+ ?(Метод = Перечисления.УчетнаяПолитика.ЛИФО,"УБЫВ","ВОЗР")+"
|ИТОГИ
| МАКСИМУМ(Количество),
| МАКСИМУМ(Сумма),
| СУММА(КоличествоОстаток),
| СУММА(СуммаОстаток),
| М АКСИМУМ(НомерСтроки)
|ПО
| Номенклатура";
кажется так быстрее сделать, и для отладки не вырываете кусок упорядочивания, убрали строку отладили с упорядочиванием и вставили на место
Добавлено (28.06.2011, 16:48)
---------------------------------------------
kravius, и честное слово упорядочивать партии по дата
ОстаткиНоменклатурыОстатки.Партия.Дата
расстреляют на месте без суда и следствия, а куда дели ось времени внутри даты?
упорядочиваите по моменту времени документа, он состоит из даты/времени и самого дока
а придет один и тот же товар внутри одной даты 2мя разными доками, какой вы первый списывать станете с упорядочиванием по Дате
Добавлено (28.06.2011, 16:50)
---------------------------------------------
ОстаткиНоменклатурыОстатки.Партия.МоментВремени
вот по этои штуке уже упорядочивать не забываите что внутри даты как то ж там движутся товары/партии
-
Вышла из ступора, вы правы. Переделала, все в одном цикле, все гораздо проще. Все работает!
Добавлено (28.06.2011, 16:59)
---------------------------------------------
Quote (kravius)
предлагаю отказаться от подобного куска кода
Я тут поэкспериментировала с менеджером временных таблиц, просто для понимания его работы. Так то конечно удобнее все в одном запросе, с одним условием.
-
Lukashov_as, предлагаю отказаться от подобного куска кода
Quote
Если Метод = Перечисления.УчетнаяПолитика.ЛИФО Тогда
Запрос2.Текст = Запрос2.Текст + "
|УПОРЯДОЧИТЬ ПО
| ПартияДата УБЫВ";
иначе
Запрос2.Текст = Запрос2.Текст + "
|УПОРЯДОЧИТЬ ПО
| ПартияДата ВОЗР";
КонецЕсли;
Еще проще описать сначала текст запроса для ЛИФО:
ТекстЗапроса = ".......Упорядочить По УБЫВ.....";
А потом написать:
Запрос.Текст = ?(Метод=Перечисления.УчетнаяПолитика.ЛИФО, ТекстЗапроса,СтрЗаменить(ТекстЗапроса, "Убыв",""));
-
Quote (kravius)
ОстаткиНоменклатурыОстатки.Партия.МоментВремени
вот по этои штуке уже упорядочивать не забываите что внутри даты как то ж там движутся товары/партии
даже внимания раньше не обращала. Учла.
-
SergTH000, проще без спорно но блин это мы с тобой понимаем что такую штуку только для отладки интересно пользовать а прикинь кто нить за чистую монету примет, и будет так на практике делать, и запрос в несколько сотен строк, поиск по тексту строки будет грузить
-
ясно
-
Lukashov_as, kravius
Обратите внимание на вариант ..
1. Определяете политику (ЛИФО/ФИФО) .. да и вообще .. почему на русском языку пишут именно так!?
2. Добавляете в запрос упорядочивание УБЫВ
3. Перед выполнением запроса выполняете замену ..
Запрос.Текст = СТРЗАМЕНИТЬ(Запрос.Текст, "УБЫВ", УчетнаяПолитика)
И запрос не разделяется, и текст понятен ..
-
В процессе решения столкнулся с проблемой определения учетной политики при помощи метода:
РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Дата).Значение
Однозначно определить учетную политику не удается так как.
Запись в регистре сведений определяется ключам *Дата *Регистратор.
Регистратор - это ссылка на документ «Изменения учетной политики»
Сложность том, что в «Приходной накладной» и «Расходной накладной» нужно найти ссылку на документ «Изменения учетной политики», которая является актуальной для данной точки оси времени этих документов.
-
kow1976,
Учетная политика меняется крайне редко, изменять её в течении дня несколько раз нет смысла.
Установить периодичность регистра год или день (чтобы не детализировать записи до регистратора).
Еще есть хорошее свойство менеджера регистра сведений - «СрезПоследних»
-
Даже нужно запретить
Один день - один документ «Изменения учетной политики»
Регистр с периодичностью год взять не получиться по условию
Применяя метод ;
СрезПоследних(10.01.11).
Получаем список
Регистратор - МетодСписания
Изм Уч пол №3 02.01.11 - Лифо
Изм Уч пол №4 04.01.11 - Фифо
Изм Уч пол №5 08.01.11 - ПоСред
Все равно нужен регистратор
Не могу спозиционироваться на нужном : Изм Уч пол №5 08.01.11 - ПоСред
Можно конечно попробовать отсортировать по дате и взять первую запись, но мне, что то, не нравится это решение. Нужно получать пол регистра, а нужна только одна запись.
Должно быть лучше решение на уровне отбора параметров регистра по регистратору.
-
я не пойму в чем проблема.
Какие измерения у регистра?
чем не устраивает такой вариант:
РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).МетодСписания;
-
Quote
РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).МетодСписания;
айайай не хороший вариант!!! если результата не будет то ".МетодСписания" - вот эта штука сразу к ошибке приведётДобавлено (15.07.2011, 13:22)
---------------------------------------------
Quote
Изм Уч пол №5 08.01.11
Изм Уч пол №5 08.01.11 - а для чего там эта супер штука? она там вообще не нужна при решении задачи. Зачем заводить измерение??? я понимаю если например в разрезе организаций на каждую своя уч. политика, но в измерение пихать документ регистратор это что из книги по нестандартному секасу
-
sada,
Данный метод последние берет, по партии, а не по дате.
Он работает только если документы «Изменения учетной политики»
Идут по очереди 1, 2, 3 если 3 открыть и поменять дату чтоб был порядок так 3, 1, 2, (В док Изм Уч пол №5 08.01.11 дату поставить 01.01.11) то все счастья нет.Добавлено (15.07.2011, 13:36)
---------------------------------------------
mkanaev,
Насчет нестандартного секса наверно точно!!!
В условии задачи «Учетная политика, может меняться каждый день, ее изменения фиксируются соответствующим документом» соответственно у рег свед будет регистратор и период. И измерения по умолчанию *Дата *регистратор
Добавлено (15.07.2011, 14:50)
---------------------------------------------
sada,
Спасибо за помощь.
Открыл ваше решение протестировал.
И О чудо у вас все работает.
По ошибки у себя в решении МетодСписания в регистре сведений сделал измерением и теперь два дня не могу отладить решение.
-
Quote (mkanaev)
айайай не хороший вариант!!! если результата не будет то ".МетодСписания" - вот эта штука сразу к ошибке приведёт
Это уже другая тема :), надо ли проверять наличие записей и в какой момент.
-
Мой вариант решения задачи.
Требования: «Считается, что документы задним числом не вводиться, но старые документы могут неоперативно перепроводиться» реализовал так:
1. В свойствах формы поставил проводить только «Оперативно»
2. В процедуре передЗаписью проверяю версию создания объекта
Получился интересный эффект новый документ только оперативно а записанный только неоперативно.
Если не Объект.ВерсияДанных="" тогда
ПараметрыЗаписи.РежимПроведения =РежимПроведенияДокумента.Неоперативный;
КонецЕсли
Посмотрите, может, кто то, заметит ошибки.
Вложения:
kow19761.5.dt
-
Всем Добрый день)
А кто мне подскажет, почему у меня документы при проведении исправляются датой на момент проведения???
Т.е. например провела вчера документ, провожу его повторно сегодня, и он уже записывается сегодняшней датой...Ну где этот нюанс не учла??(((((((((
-
А базу выложите пожалуйста.
-
Спасибо)))
Никак не могу найти ошибки своей(((
Вложения:
1_5_.dt
-
У вас в ПН и РН
МетодСписания = РегистрыСведений.УчетнаяПолитики.ПолучитьПоследнее(МоментВремени()).Значение;
А надо
МетодСписания = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).Значение;
-
Ладно, это я итак исправлю))) при отладке))
спасибо))))
Помогите пожалуйста, что с проведением документов??? Почему даты меняются при проведении...((((
почему у меня документы при проведении исправляются датой на момент проведения???
Т.е. например провела вчера документ, провожу его повторно сегодня, и он уже записывается сегодняшней датой...Ну где этот нюанс не учла??(((((((((
-
А вы на документе ИзмУчетнойПолитики это видели? Создал документ, открыл, перепровёл - дата та же что и была.В какой момент у вас меняется дата, при открытии или при проведении? Попробуйте вот в этой базе открыть документ и перепровести.
Вложения:
1_5_2.dt
-
Quote (Gyd)
А вы на документе ИзмУчетнойПолитики это видели? Создал документ, открыл, перепровёл - дата та же что и была.В какой момент у вас меняется дата, при открытии или при проведении? Попробуйте вот в этой базе открыть документ и перепровести.
Прикрепления: 1_5_2.dt(169Kb)
А у меня при проведении док ИзмУчетполитики меняется дата...и время....
Дата меняется при ПРОВЕДЕНИИ...
А на той что Вы скинули нет...Что за полтергейств?????????
-
Quote (SUBALady)
А на той что Вы скинули нет...Что за полтергейств?????????
Я бы полтергейстом назвал вот это:
Quote (SUBALady)
при проведении док ИзмУчетполитики меняется дата...и время....
Время меняется при оперативном проведении, а вот чтобы дата менялась сама, без настроек - это очень интересно
-
Не, ну интересно конечно))))
я уже два раза начинала задачу в чистой карсканой конфе и два раза у меня это происходило))) т.е. менялось при проведении...
Сейчас объединила свою конфу с Вашей базой))) и опа, все работает))))
Вообщем спасибо))))
-
да не за что, я прислал вам вашу собственную базу
-
.
Добавлено (12.09.2011, 19:03)
---------------------------------------------
Своё решение 1.5 и 2.26 положил сюда:
http://forum.chistov.pro/index.php?topic=979.msg3#msg3#17707
Вроде бы учел все условия, но со стороны виднее
-
Quote (hobi)
Вроде бы учел все условия, но со стороны виднее
Не нашел как вы реализовали запрет проведение задним числом и разрешение на неоперативное проведение сохраненых документов задним числом. Если я этого не увидел то подскажите как реализовали.
-
Quote (loky30)
Не нашел как вы реализовали запрет проведение задним числом и разрешение на неоперативное проведение сохраненых документов задним числом. Если я этого не увидел то подскажите как реализовали.
В отчете "Продажи" отслеживается актуальность последовательности документов (в Остатках делать не стал, т.к. похоже). Если из-за неоперативного проведения последовательность документов нарушена, информация о нарушении появляется в отчете.
А запрет на проведение задним числом не делал, да.
-
sada, в твоем решение если использовать по средней а затем поменять на лифо или фифо то товар все равно списывается по средней... может я чего то не понимаю объясни плиз, решение мне понравилось очень простое я бы взял его на вооружение )
-
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=574528#574528
Quote
Re: Задача1.5 Оперативный учет 01.03.2011 22:04
Белоусов Павел, 1С
> нужно ли когда метод списания меняется на ЛИФО/ФИФО опять прописывать партии в регистр и каким образом, например перепровести все несписанные партии в количестве, которое осталось?
Конечно, да. А вот как это сделать Вы должны подумать сами. Могу только сказать, что если Вы собираетесь перепроводить документы с начала ведения учета, то это точно не правильно.
Кому-нибудь попадалась эта задача на экзамене?
-
Посмотрите, пожалуйста, решение.
Я сделал так, что если учетная политика не введена, то используется ФИФО.
Если за текущий день уже есть Расходные, то менять учетную политику нельзя.
Новые документы вводить неоперативно нельзя, а если у существуещего документа дату уменьшают, то это считается попыткой обойти систему.
Все остальное, вроде, стандартно.
Добавлено (22.09.2011, 12:50)
---------------------------------------------
Удалить сообщение здесь как-нибудь можно? а то сперва сделал задание, а потом увидел еще момент, которые точно не реализовал...видимо мозг не проснулся, когда начал читать задание
-
Вот, не увидел два небольших, но очень значимых слова "по средней". Не знаю, насколько мой вариант правильный, но мне кажется довольно логичным.
Посмотрите, пожалуйста.
Вложения:
1-05.cf
-
Всем добрый день! Решал задачу со следующими предположениями.
1) Документы задним числом не вводятся. Если ввели их проблемы
2) При переходе на списание по средней все партии из регистра накопления остатки должны быть очищены.
Отчеты вроде вааще простые.
Вложения:
1.5anton.dt
-
Добрый день!
Прикрепляю свой вариант решения. Буду признательна за комментарии!
Вложения:
6270663.dt
-
IrinaMIR, ваше решение интересное, но в корне неверное. Общепринято, что списание по-среднему и списание по партиям несовместимо. Причина - невозможность вывести в ноль все ресурсы регистра остатков, что является серьезной ошибкой не только на экзамене, но и в жизни, то есть при решении практических задач. Это очевидно, если списывать партии последовательно. Вы попытались решить проблему, списывая партии пропорционально их их количеству. И у вас это вроде получилось. Но если вы немного измените ваш пример, разобьете на две расходных с количеством списания 29 и 1, то получите в остатках зависшую сумму с нулевым количеством. Либо необходимо перейти к дробным количествам, что приводит к потере всякого смысла учета.
Для перехода к списанию по средней и наоборот используются разные подходы. Чтобы далеко не ходить, можете взять в качестве образца решение joky.Добавлено (08.10.2011, 19:25)
---------------------------------------------
joky, у тебя в запросах используется конструкция ДЛЯ ИЗМЕНЕНИЯ, которая в режиме управляемых блокировок не имеет смысла. См. http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=564536
-
Спасибо за комментарий!
А есть кто-нибудь кому попадалась такая задача на экзамене и решение ее было верно?
-
IrinaMIR, мне такая попалась на экзамене и сдал. Правда решение ваше не смотрел.
Добавлено (10.10.2011, 16:41)
---------------------------------------------
Я делал так создал последовательность и двигал ее при изменении метода списания. И при выборе по средней устанавливал партию = ПусатяСсылка.
-
"Считается, что документы задним числом не вводятся, но старые документы могут неоперативно проводиться."
Как это условие выполняется в задаче? В представленных здесь решениях каким механизмом это отрабатывается? Казалось бы должна быть проверка, что число заднее... что нить типа
Code
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если НачалоДня(ТекущаяДата())>НачалоДня(Дата) И ЭтоНовый() Тогда...
Или это более совершенно как то делается?
-
Вот мой вариант решения, я решил не использовать метод предложенный sada для перехода на списание по средней.
Если использовать его метод, то при использовании списания по средней не получиться получить такой же вид отчета по остаткам как в задачнике. Из за того что отчищаются партии.
Условие "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться."
Решил так, если документ новый и дата ровна текущей дате то он проводиться оперативно иначе не дает записать документ.
Если документ уже записан то его можно провести только не оперативно.
Вложения:
aveego_1_5_alt.dt
-
aveego,
если перейти к системе списания по средней, то указанный отчет в задаче не возможен, т.к. будет по средней и будут "пустые" значения партий.
смотрел ли ты видео sada к задаче 1.5? - он там объясняет почему сделал переход на списание по средней.
-
Кенгуру, ну я так и написал про отчет. В моем варианте можно формировать такой отчет. Допускаю что я не правильно понимаю что такое списание по средней. Разве нельзя вести партийный учет и списывать по средней при этом ?
Партии списываются по порядку но себестоимость у меня рассчитывается по среднему.
Во общем сам вопрос, если ведется партийный учет и списание по среднему, нужно списывать пропорционально с каждой партии (как же быть тогда с количеством) или можно по любому из порядков фифо лифо, главное что бы расчет был по среднему.
-
aveego,
Имхо, при списании по средней существует только одна партия на складе,
т.е. если мы переходим из фифо/лифо на по средней, то все надо сгрести в одну кучу .
Соответственно, хотя в задании сказано, что периодичность смены уч.пол. - день, по уму это должно происходить гораздо реже, т.к. процесс приведения к "по средней" необратим.
Буду рад, если меня поправят.
-
Кенгуру,
Quote (Кенгуру)
Имхо, при списании по средней существует только одна партия на складе,
т.е. если мы переходим из фифо/лифо на по средней, то все надо сгрести в одну кучу .
Нужно просто в документе "УчетнаяПолитика" сделать расход всех остатков на дату изменения политики на ПоСредней, и тут же приход всего этого "добра" но с <Партия> = <Документы.ПриходнаяНакладная.ПустаяСсылка()>
Как-то так)
-
john916,
Спасибо конечно, но как это сделать и так понятно вопрос в другом может ли вестись партийный учет при методе списания по средней =)
Я тоже был бы рад если кто нибудь пролил на это свет.
-
aveego, я думаю, что одновременно не могут вестись партионный учет и по средней. Если предположить, что такое может быть, то как при списании по средней вести партионный учет? Списывать по средней со склада или по методу фифо/лифо? Тогда партионный учет нарушается как таковой и данные, полученный на основе такого "партионного" учета не верны.
-
Спасибо Romdavid, Кенгуру,
был не прав.
-
john916, Romdavid,
согласен, нельзя одновременно и по средней и по фифо\лифо.
как-то так - обработка проведения документа ИзменениеУчетнойПолитики
Если МетодСписания = Перечисления.УчетнаяПолитика.ПустаяСсылка() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Укажите метод списания!!!";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
ПоСредней = Перечисления.УчетнаяПолитика.ПоСредней;
Движения.УчетнаяПолитика.Записывать = Истина;
Движение = Движения.УчетнаяПолитика.Добавить();
Движение.Период = Дата;
Движение.МетодСписания = МетодСписания;
Если МетодСписания<>ПоСредней Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатурыОстатки.Партия,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток,
| ОстаткиНоменклатурыОстатки.СтоимостьОстаток КАК СтоимостьОстаток
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
|ИТОГИ
| СУММА(КоличествоОстаток),
| СУММА(СтоимостьОстаток)
|ПО
| Номенклатура";
Результат = Запрос.Выполнить();
ВыборкаНоменклатура= Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Пока ВыборкаНоменклатура.Следующий() Цикл
Выборка = ВыборкаНоменклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Партия = Выборка.Партия;
Движение.Количество = Выборка.КоличествоОстаток;
Движение.Стоимость = Выборка.СтоимостьОстаток;
КонецЦикла;
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Партия = Документы.ПриходнаяНакладная.ПустаяСсылка();
Движение.Период = Дата;
Движение.Количество = ВыборкаНоменклатура.КоличествоОстаток;
Движение.Стоимость = ВыборкаНоменклатура.СтоимостьОстаток;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
КонецЦикла;
-
Самое простое решение )))
Вложения:
3664350.dt
-
Еще одно решение. В формах списков показаны движения и остатки по документам (это здорово помогает в отладке)
Вложения:
irmo-1.5.dt
-
Всем доброй ночи, выкладываю свой вариант задачи, не попадают услуги в движения по регистру продажи я исправлю, хочу услышать другие замечания по поводу моего решения. Заранее спасибо
Вложения:
8717415.dt
-
Quote
Если МетодСписания = Перечисления.УчетнаяПолитика.ПустаяСсылка() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Укажите метод списания!!!";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
ПоСредней = Перечисления.УчетнаяПолитика.ПоСредней;
Движения.УчетнаяПолитика.Записывать = Истина;
Движение = Движения.УчетнаяПолитика.Добавить();
Движение.Период = Дата;
Движение.МетодСписания = МетодСписания;
Если МетодСписания<>ПоСредней Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатурыОстатки.Партия,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток,
| ОстаткиНоменклатурыОстатки.СтоимостьОстаток КАК СтоимостьОстаток
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
|ИТОГИ
| СУММА(КоличествоОстаток),
| СУММА(СтоимостьОстаток)
|ПО
| Номенклатура";
Результат = Запрос.Выполнить();
ВыборкаНоменклатура= Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Пока ВыборкаНоменклатура.Следующий() Цикл
Выборка = ВыборкаНоменклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Партия = Выборка.Партия;
Движение.Количество = Выборка.КоличествоОстаток;
Движение.Стоимость = Выборка.СтоимостьОстаток;
КонецЦикла;
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Партия = Документы.ПриходнаяНакладная.ПустаяСсылка();
Движение.Период = Дата;
Движение.Количество = ВыборкаНоменклатура.КоличествоОстаток;
Движение.Стоимость = ВыборкаНоменклатура.СтоимостьОстаток;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
КонецЦикла;
Это при переходе с ЛИФО/ФИФО на среднюю будет адекватно обрабатывать, а если напиример при переходе со средней на ЛИФО/ФИФО, будет одна большая партия "пустая ссылка"!
я думаю что выход из ситуации такой:
1. при переходе на среднюю делать ничего не нужно, списание производить по партиям(порядок списания партий абсолютно безразници), но расчет делать по средней(по складу, организации... в зависимости от условия задачи), кстате в этом случае проще писать запрос в РН.
2. при переходе со средней на ЛИФО/ФИФО, находить среднюю себестоимость и устанавливать её для партий, таким образом во всех партиях будет одинаковая себестоимость(т.к. раньше расчет вёлся по средней) и останица преждним количество. В этом случае мы не потеряем партии...
Хотя оба варианта вроде как без последствий, но вот чтото "пустая партия" меня лично смущает.
-
mkanaev, партии в любом случае теряются
Добавлено (31.10.2011, 12:24)
---------------------------------------------
В данном случае более рационально списание на пустую партию
-
Добрый день, коллеги. наверно уже где-то писали, но не нашел, поэтому решил спросить тут.
готовился к экзамену на 8.1, но не сложилось (подготовку забросил) и решил подготовиться к экзамену сейчас, но на 8.1 никаких блокировок не было.
собственно у меня несколько вопросов:
1) надо ли устанавливать режим блокировок конфигурации в целом на управляемый и зачем
2) что даёт установки блокировок у регистра?
3) снижают ли баллы за то, что не заблокировал записи регистра при проведении документа?
спасибо Добавлено (22.11.2011, 20:06)
---------------------------------------------
и 4ый вопрос - блокировать записи надо все в регистре или обязательно только на тот список, который в документе расхода (понятно что лучше 2ой вариант, но не снимут ли баллы за 1ый) ?
-
gosn1ck,
1) надо, если режим "Автоматический", то управляемые блокировки работать не будут
2) блокировка регистра гарантирует вам актуальность полученных сведений (например, остатков) на момент формирования движений
3) снижают, прочитайте требования к экзамену на сайте 1С
4) нужно блокировать достаточное количество записей, а если блокируешь больше чем надо, то наверное это хороший повод для того чтобы снизить оценку
-
Romdavid,
спасибо, буду признателен, если проверите моё решение
решал с предварительной подглядкой других решений
Вложения:
gosn1ck_1.5.dt
-
gosn1ck, а где у вас списание по средней?
-
Romdavid, посмотрел разные решения. оказывается есть 2 подхода: 1) списывать партии и оприходовать пустые документом установки учетной политики 2) реализовывать другой алгоритм списания в документе расходной накладной. я так понимаю оба варианта верные?
-
gosn1ck, я думаю, что только вариант 1) верный
-
спасибо, пошёл решать 1.6 задачу
-
Профи, кто может объяснить.
В задаче 1.5 в принятом решение, на мой взгляд, есть проблема, если в день смены учетной политики с ФИФО на ПоСреднему, были проведенные документы (расходные по ФИФО), затем проводится документ УчетнаяПолитика и оставшиеся документы - посредней. Но у РС УчетнаяПолитика периодичность день, (реально на начало дня), следовательно при последующем неоперативном перепроведение любого документа данного дня, проведенного ранее до смены учетной политики (в задаче указано, что старые документы могут неоперативно перепроводится), они перепроведутся посредней (да и приходные перезапишутся на пустую ссылку). Что приведет к проблеме в регистре остатков (не будет сводиться в ноль по всем измерения -2 балла).
Как быть .
Можно при защите сказать, что либо документ УчетнаяПолитика должен быть первым проведенным документом в день смены УчетнойПолитики с любой на посредней и обеспечить это задача пользователя (на что могут сказать, что решение упрощено ), либо периодичность РС указать по позиции регистратора, а контроль за 1 изменением в день установить программно.
-
tan1c,
Например
2.01.11.00.00.00 - если до этой даты учетная политика фифо после по учетная политика по средней.
Если пользователь вводит док 2.01.11.00.00.01 в любом случае по средней.
По идее Док Учетная политика регламентный документ вводится до начала ввода торговых документов в этот день. Если в этот день были торговые документы они шли по фифо а в конце дня мы решили что в этот день все должно быть по средней. То для правильности учета все документы нужно перепроводить(восстанавливать последовательность).
-
kow1976,
Я рассматриваю тот случай, когда док УчетнаяПолитика вводится в середине дня и до него уже были проводки.
По поводу того, что документ УчетнаяПолитика должен вводиться в начале дня, ничего не сказано, это могут признать упрощением задачи.
Перепроведение не поможет, нужно отменить проведение более ранних документов данного дня, затем провести док УчетнаяПолитика, а затем последовательно все документы данного дня.
На мой взгляд, все эти проблемы снимает установка периодичности РС по позиции регистратора, и контроль за 1 изменением в день установить программно. Мы привязываемся не к началу дня, а к моменту времени док УчетнаяПолитика, к которому, кстати, привязаны все наши изменения в РН остатки.
Если рассматривать эту проблему издалека (с высот теории) , то на мой взгляд, она как раз и связана с привязкой к временной оси на разные точки РС и РН, хотя проводятся одним документом.
-
>Перепроведение не поможет
док УчетнаяПолитика обрабатывает Все движения фифо до 2.01.11.00.00.00.
А с 2.01.11.00.00.00. нужно делать перепроведение. Так как был ввод задним числом Док Учетная политика(например в конце дня).
Я думаю в рамках дня нельзя делать часть документов ФИФО часть по средней. Период действия по условию задачи один день. Закончился день можно сменить политику.
-
kow1976,
Почему, вроде по решению, он берет остатки РН на момент времени док УчетнаяПолитика.
По поводу отсутствия смысла в смене политики в середине дня согласен, но это учебная задача.
Обычно политика в регл. учете меняется раз в год, в упр. не чаще 1 раза в месяц.
-
Дело не в смысле и предметной логики а в постановке задачи "Учетная политика может меняться каждый день,".
Т. е. в рамках дня политика неизменна и перепроведение документов не создает проблем. Учетные данные теряют смысл только если были изменены данные в документах задним числом.
Quote (tan1c)
Почему, вроде по решению, он берет остатки РН на момент времени док УчетнаяПолитика.
Да остатки по всей номенклатуре и всем париям на заданную дату( если мы вводим Учетную политику 2.01.11.18.00.00 то остатки должны получаться все равно на 2.01.11.00.00.00 начала дня.
-
kow1976,
Еще раз посмотрел проведение док УчетнаяПолитика, там остатки берутся на момент времени документа.
Именно поэтому если неоперативно перепровести документы, проведенные в этот день до док. УчетнаяПолитика, то проведутся они уже поСредней, например для приходной было Фифо, затем ДокУП (УчетнаяПолитика) свел в ноль по партиям и перевел на пустую ссылку, перепроведение нарушит ноль по партиям в минус и удвоит данные на пустой ссылке.
-
Quote (tan1c)
там остатки берутся на момент времени документа.
Это где. Конечно тогда будут проблемы. Так зачем нам остатки на момент документа если нам нужны остатки на момент смены учетной политики.
-
kow1976,
В обработке проведения, в запросе к регистру остатков, параметр.
с другой стороны если после каждого перепроведения, перепроводить и ДокУП вроде все восстанавливается )
Кстати брать остатки на начало дня, возможно тоже вариант, но требует перепроведения всех документов за день
-
всем привет!
снова решила возобновить подготовку к экзаменам... что-то меня это "списание по среднему" вогнало в ступор. пока не прочитала всю эту тему, все, что тут написано по этому поводу, не могла въехать, что от меня хотят... в общем, посмотрите, кому не сложно )))
ЗЫ: проверку на ввод задним числом не делала
Вложения:
lubja_1_05.dt
-
Quote (lubja)
всем привет!
Посмотрел, но не тестировал.
По мелочи - зачем выносить в общий модуль получение данных из-регистра сведений, это
одна строчка метода ПолучитьПоследнее менеджера регистра.
Запрос в расходной выглядит устрашающе тяжелым, хотя если все работает, то это проблема проверяющего .
Пару настроек в отчеты, чтобы выглядели как в задании
Типа
Расположение полей группировок - отдельно и только в итогах,
Расположение общих итогов по вертикали - нет
Если интересно, вот мое решение для сравнения
Вложения:
1.5_tan1c.dt
-
tan1c,
Смутил меня "расход" при смене учетной политике. По идее "Расход" это продажа товара(наличие оборотов).
Получается вы продали по партии а купили без партий.
Если бы это была не партия а склад. То расход был бы понятен нужны остатки и обороты по складу.
Если бы надо было строить ведомость по остаткам товаров у вас бы не правильно считались обороты.
Хотя с точки зрения остатков все будет работать и так.
-
Смысл в том, что при смене учетной политики с ФИФО/ЛИФО на ПоСредней происходит свертка по партиям.
Как вариант перевести все остатки на пустую партию.
А по поводу оборотов отчета, легко обходится в запросе отчета.
-
Какие недочеты имеются в моем решении задачи 1.5?
Вложения:
2308496.dt
-
kow1976, Не вижу ошибки все остатки бросить на пустую партию при смене политики.
tan1c, Не понятно зачем использовал свойство "БлокироватьДляИзменения", если потом создавал блокировку). Вообще решение красивое, но не хватает четкости, в модуле расходной накладной Имхо легко можно было обойтись одним запросом и без "Копи-паста".
Вложения:
1.5_Rizjiy.dt
-
Rizjiy,
1 - если коротко , то для отключения режима разделения итогов, по "очищаемым" записям, на случай отката транзакции.
2 - Сама идея решения не моя, и нет предела совершенству .
-
tan1c,
Позволь с тобой не согласиться, Ведь управляемые блокировки, наложенные объектом "БлокировкаДанных" снимаются при окончании транзакции (завершения или отката - неважно), а метод "заблокировать()" данного объекта отключает режим разделения итогов(иначе теряется смысл управляемой блокировки). Свойство регистров накопления "БлокироватьДляИзменения =Истина" аналог методу "Заблокировать()", разница лишь в моменте исполнения и в том, что в первом случае блокировки будут наложены на все записываемые поля регистра :).Добавлено (08.02.2012, 12:10)
---------------------------------------------
И вообще разделение итогов предназначено только для параллельной записи в регистр, при чтении нужно читать все, и для этого нужно наложить управляемую блокировку. Но это уже не наша проблема
-
Rizjiy, у меня следующая информация.
установка св-ва РН БлокироватьДляИзменения в Истина само по себе никаких действий не производит, и срабатывает при вызове метода Записать() как набора записей, так и всей коллекции движений . Т.е. сами транзакционные блокировки устанавливаются именно вызовом метода и в момент их вызова (тоже для метода Заблокировать(), только метод Заблокировать() всегда отключает режим разделения итогов, а методам Записать() об этом надо указывать явно, именно через установку св-ва РН БлокироватьДляИзменения в Истина).
Вопрос зачем устанавливать блокировку дважды, связан с тем, что первая блокирует по очищаемым записям (при перепроведении), а вторая накладывается нами (обычно по табл. части док.), и они могут отличаться (внесли изменения в табл. часть, что-то удалили, что-то добавили), а так как мы очистили старые движения, то пока идет транзакция, кто-то может прочитать старые данные, в том случае если не было первой блокировки, (а их нет), затем откат транзакции (они вернулись ), и вот ситуации, что кто-то прочитал неверные данные (без учета старых движений).
Здесь важно, что когда мы пишем пустой набор, очищаем, накладывается блокировка не пустая, а по очищаемым (удаляемым) записям.
И вроде, методы Записать() всегда вызывают исключительный режим (запрет на чтение блокируемых данных), а в управляемой блокировке можно выбрать разделяемый режим (запрет только на изменение (запись)). Исключительный выбираем только если после чтения планируем делать запись в данный регистр, чтобы избежать взаимных блокировок.
-
tan1c, Все верно. Только есть один нюанс: при записи данных в транзакции, даже без указания св-ва "БлокироватьДляИзменения" накладываются неявные исключительные управляемые блокировки[Руководство разработчика Гл.9.3.4], С учетом разделения итогов. И считать в другой транзакции эти данные мы никак не сможем! Поэтому блокировка ручная накладывается перед чтением:
- ПоНовой: Блокироватьдляизменения=Истина, Записать(); - сработала блокировка, Производим чтение и контроль остатков
- ПоСтарому: Блокировать(); Производим чтение и запись в регистр.
В итоге, пока идет наша транзакция никто не сможет прочитать данные
Вот кстати здесь подробно обсуждалось http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=561820
-
Rizjiy, Все верно , без указания св-ва "БлокироватьДляИзменения" накладываются неявные исключительные управляемые блокировки[Руководство разработчика Гл.9.3.4], С учетом разделения итогов (а его надо не учитывать, отключить ). Для этого и устанавливают БлокироватьДляИзменения в Истина.
-
что такое метод списания по средней? к примеру есть 2 партии:
1) 1 ручка 10 руб,
2) 2 ручки 20 руб,
делаем расход на 2 ручки, что должно произойти? должны списаться сразу 2 ручки одной проводкой, если да то к какой партии их отнести?
-
max_osodoev,
При списании по средней не ведется партионный учет, т.е. и приход и расход происходят на пустую партию. А 2 ручки спишутся по средней, по цене 10 руб. за штуку.
-
понял спасибо тебе)
-
мое решение
Вложения:
1.5_Max_osodoev.dt
-
Мое решение.
Проведение документа "ИзменениеУчетнойПолитики" и механизм блокировки - спасибо tan1c
Вложения:
1.5__1.dt.zip
-
зачем при проведении приходной накладной, если текущая учетная политика ПоСреднему, мы не указываем партию? а если при списании будет другая учетная политика (ФИФО, допустим) и я захочу списать конкретно ту партию, а она не указана
почему нельзя просто при проведении расходной, в случае, если учетная политика стоит ПоСреднему, "занулять" партии? а в приходной не трогать их... объясните, пожалуйста. а то я вообще в ступоре
-
Одно из требований на экзамене звучит примерно так: "комбинация измерений при приходе должна быть равна комбинации движений при расходе". Иначе регистр не будет выходить в 0.
Если при приходе заполнять партии, а при расходе "занулять" (т.е. записывать пустую?) - то требование выше не выполнится...
-
а если при приходе политика была ФИФО или ЛИФО, то партия будет заполнена. допустим, при расходе политика будет ПоСреднему, то что с партией делать? не брать в расчет?
-
я была на курсах и спрашивала препода на счет этой задачи. он сказал, что при смене учетной политики нужно перепроводить документы (приходы и расходы) с момента последнего изменения учетной политики. на тот момент, когда слушала его, мне было все понятно, но теперь что-то не очень... может нужно проводить не все доки с прошлой смены политики, а только остатки? в общем, меня это уже не сильно волнует, т.к. я сдала экзамен, а готовящимся, возможно, поможет эта теория, точнее ее часть )))
-
Довольно простая задачка. Код небольшим получился. При изменении учетной политики на "По среднему", если до этого было ЛИФО или ФИФО, списываю все остатки по партиям и приходую общее количество и сумму на пустую ссылку. Если учетная политика меняется задним числом(документ об изменении перепроводится с другим значением УП), то сдвигаю границу последовательности. После восстановления последовательности все получается так, как нужно. Гонял на разных комбинациях, ошибок вроде нет. Чтобы отчет по Остаткам получился как в книжке, можно в регистре Остатки добавить справочный реквизит, в котором будет храниться условное название партии на данный момент. Т.е. если у нас ЛИФО или ФИФО, то там будет название партии, а если По среднему, то что-то типа "Учет для списания по средней". В отчете выводить это условное название. Отчет по продажам не писал, т.к. элементарный. Если кто-то заметит ошибки или будут конструктивные замечания, буду рад.
Вложения:
koladen1_5.dt
-
Quote (koladen)
Если учетная политика меняется задним числом(документ об изменении перепроводится с другим значением УП), то сдвигаю границу последовательности.
Интересно! А у меня никак не желает граница отпрыгивать назад при проведении задним числом. В чём секрет?
-
Чтобы граница последовательности перемещалась, должны быть указаны движения, влияющие на нее. В моем случае это регистры Остатки номенклатуры, Учетная политика и Продажи. Следовательно, если при проведении задним числом, возникают какие-то новые движения по этим регистрам(изменилось количество, добавилась номенклатура, новая учетная политика и т.п.), то граница переместится.
-
Посмотрел пару решений по поводу: "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться". В обоих идет сравнение с датой, например: "Если ЭтоНовый() и НачалоДня(ТекущаяДата())> Дата Тогда". Вопрос: а так можно - "Если ЭтоНовый() и РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда"?
-
Quote (dragon)
"Если ЭтоНовый() и НачалоДня(ТекущаяДата())> Дата Тогда". Вопрос: а так можно - "Если ЭтоНовый() и РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда"?
И то, и другое легко обходится: проводите оперативно или текущей датой, потом меняете дату - и документ введен задним числом.
-
Прошу посмотреть мой вариант, а также громить и критиковать.
Вернулся к подготовке после большого перерыва.
Ваш сайт недавно обнаружил.
Вложения:
java_1_5.dt
-
Quote (Gyd)
И то, и другое легко обходится: проводите оперативно или текущей датой, потом меняете дату - и документ введен задним числом.
А чем это противоречит условию задачи? И как поставить "жёсткий" запрет на такой обход?
-
Quote (dragon)
А чем это противоречит условию задачи? И как поставить "жёсткий" запрет на такой обход?
Ну если быть честным, то это полумера как поставить запрет? добавить к этому проверку менялась ли дата проведенного документа... как вариант.
-
Мое решение. Ничего не читал, времени жаль.
Вложения:
sv_mikh_01_05.dt
-
Коллеги! Покритикуйте, кому не жалко
Особенно блокировки и списание по средней)
Спасибо ! Добавлено (22.03.2012, 18:02)
---------------------------------------------
упс
Добавлено (22.03.2012, 18:02)
---------------------------------------------
http://narod.ru/disk/44179618001.ad120b16cd9e0b4a2eac0620578acc71/15.dt.html
-
Приветствую всех)
Коллеги! Покритикуйте, кому не жалко
....
http://narod.ru/disk/44179618001.ad120b16cd9e0b4a2eac0620578acc71/15.dt.html - попытался скачать, но что то не скачивается, пишет (Внутренняя ошибка сервиса).
Решил тоже выложить решение данной задачи, с отчетами.
Комментариям и отзывам буду чрезмерно рад)))
Не совсем понял (вернее совсем не понял) как можно запрограммировать следующее:
а)было списание себестоимости если по средней (измерения по партиям пропадают в приходе у РегистраНакопления.ОстаткиНоменклатуры),
б)и стало списание себестоимости по FIFO (LIFO).
Как вытащить "партии" для расчета себестоимости.
Вложения:
1Cv8-1_5-.dt
-
Завтра, точнее уже сегодня дорешаю выложу свой вариант. Мне кажется правильный, но голова еще в полночь превратилась в тыкву
Так что с утра проверю.
-
Обещал выложить, выкладываю.
////
1. При смене на среднюю, у Док "УстановкаУчетнойПолитики" если меняем на среднюю то просто списываю и приходую с пустой партией.
2. При смене на ФИФО/ЛИФО выбираю документы между текущим документом и последним с политикой отличной от средней. Проводим их(если это документ установки политики отменяем проведение чтобы не ломать партии).
Code
Пока Выборка.Следующий() Цикл
Документ = Выборка.Регистратор.ПолучитьОбъект();
Если ТипЗнч(Документ) = Тип("ДокументОбъект.УстановкаУчетнойПолитики") Тогда
Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения);// Нужно отменить все документы с учетной политикой ПоСредней
Иначе
Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
КонецЕсли;
КонецЦикла;
Для получения документов используется последовательность(Входящие документы: Приходная, Расходная, УстановкаПолитики; граница не используется)
---
П,С, Решал очень поздно так, что может чего и не учел. Замечания помогут поправить решение.
Если есть вопросы, задавайте.
Вложения:
LEOON_1_1.5-2.2.dt
-
Quote (LEOON)
2. При смене на ФИФО/ЛИФО выбираю документы между текущим документом и последним с политикой отличной от средней. Проводим их(если это документ установки политики отменяем проведение чтобы не ломать партии).
Code
Пока Выборка.Следующий() Цикл
Документ = Выборка.Регистратор.ПолучитьОбъект();
Если ТипЗнч(Документ) = Тип("ДокументОбъект.УстановкаУчетнойПолитики") Тогда
Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения);// Нужно отменить все документы с учетной политикой ПоСредней
Иначе
Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
КонецЕсли;
КонецЦикла;
Для получения документов используется последовательность(Входящие документы: Приходная, Расходная, УстановкаПолитики; граница не используется)
Мне кажется это все лишнее... Если сменилось Лифо/Фифо, то ничего с точки зрения существующих партий не меняется.
Последовательность применяется только в одной задаче по ОУ (1.7 вроде).
-
sv_mikh,
Раньше тоже не заморачивался, но решил вернуться к задаче и довести до ума. Может и не нужно, но вот по этой ссылке Белоусов настоятельно рекомендует http://devtrainingforum.v8.1c.ru/forum....dtype=0
(если что буду готов). А лояльность экзаменатора, это последнее на что стоит расчитывать!
Честно говоря, мой вариант кажется мне вполне логичным и весьма не сложным. В сравнении с простым списанием в пустую добавляем всего:
Code
ИначеЕсли ПредМетодСписания = Перечисления.УчетнаяПолитика.ПоСредней И МетодСписания <> ПредМетодСписания Тогда
// В ЭТОМ СЛУЧАЕ ПОЛУЧАЕМ ВСЕ ДОКУМЕНТЫ МЕЖДУ ТЕКУЩИМ И ПОСЛЕДНИМ С ПАРТИЯМИ
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УчетнаяПолитикаСрезПоследних.Регистратор.МоментВремени
|ПОМЕСТИТЬ ВТ
|ИЗ
| РегистрСведений.УчетнаяПолитика.СрезПоследних(&Граница, МетодСписания В (ЗНАЧЕНИЕ(Перечисление.УчетнаяПолитика.ФИФО), ЗНАЧЕНИЕ(Перечисление.УчетнаяПолитика.ЛИФО))) КАК УчетнаяПолитикаСрезПоследних
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Себестоимость.Регистратор,
| ВТ.РегистраторМоментВремени
|ИЗ
| Последовательность.Себестоимость КАК Себестоимость
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ
| ПО (ВЫБОР
| КОГДА ВТ.РегистраторМоментВремени ЕСТЬ NULL
| ТОГДА Себестоимость.МоментВремени < &МоментВремени
| ИНАЧЕ ВТ.РегистраторМоментВремени < Себестоимость.МоментВремени
| И Себестоимость.МоментВремени < &МоментВремени
| КОНЕЦ)";//Документы выбираем между последней
//установкой с политикой отличной от средней и текущей установкой(или от начала учета до текущей установки, если не по средней не было)
Запрос.УстановитьПараметр("Граница", Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
НачатьТранзакцию();
Пока Выборка.Следующий() Цикл
Документ = Выборка.Регистратор.ПолучитьОбъект();
Если ТипЗнч(Документ) = Тип("ДокументОбъект.УстановкаУчетнойПолитики") Тогда
Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения);// Нужно отменить все документы с учетной политикой ПоСредней
Иначе
Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
КонецЕсли;
Можно кстати и без последовательности обойтись, но так удобней.
-
В методичке 1С написано, что документы для перепроведения указывать те, которые:
а) выполняют при проведении движения по выбранным регистрам
б) при этом имеют "обусловленный" тип проведения. Т е при проведении опираются на данные регистров.
Эти условия должны выполняться одновременно.
В список Движения следует включить ОстаткиНоменклатуры и УчетнаяПолитика.
В список входящих Расходная Накладная, поскольку опирается на регистр ОстаткиНоменклатуры и УчетнаяПолитика,
и приходная накладная, поскольку опирается на регистр УчетнаяПолитика.
Выкладываю свой вариант решения.
В нем следующие особенности:
1. Поскольку в условиях задачи ничего не указано, как контролируется последовательность при неоперативном перепроведении, значит это на усмотрение экзаменуемого. Следовательно, в целях экономии времени восстановление последовательности возлагается на стандартную процедуру 1С - Проведение документов. То есть идеология аналогично идеологии конфигурации Управление Торговлей, когда восстановление нарушенных последовательностей производится вручную спец обработкой.
2. Форма отчетов приведена к виду, как задано в задачнике, т е заголовок вида "Продажи с 01.01.2010 по 31.03.2010 " и
"Остатки товаров на 01.01.2010" (а то никто этим не заморачивался в тех вариантах, которые я видел)
Вложения:
mybase.dt
-
У многих решений в Приходной накладной можно оприходовать услугу! Считаю это не правильным!!!! Никому интересно за это не сбавляли оценку?!
-
Quote (michail007)
У многих решений в Приходной накладной можно оприходовать услугу! Считаю это не правильным!!!! Никому интересно за это не сбавляли оценку?!
Думаю, что это от экзаменатора будет зависеть. В принципе скорее не снизят. Но обычно все же услуги фильтруют в приходе.
-
мое решение...
Вложения:
RoMeL_1.5.dt
-
RoMel
1. В приходной два неявных запроса в цикле
2. Расходная - индексируется по услуге (я думаю индексы влияют на соединение а не отбор)
-
Моё виденье билета. У меня документы задним числом перепроводятся, последовательностей нет.
Вложения:
1_5_Oliver.dt
-
Oliver, прочти http://forum.chistov.pro/index.php?topic=2005.msg22327#msg22327 п.8,9,12
-
Раз уж тут кто-то ещё чего-то смотрит, то вот принципиально новое решение (ну по крайней мере я не встретил похожего).
Для остатков сделал 2 регистра:
"ОстаткиНоменклатуры" (без партий) и "ПартииТоваров" (с партиями).
И приходная и расходная всегда делают движения по обоим (не зависимо от установленной политики).
Документ "УчетнаяПолитика" не делает никаких движений кроме установки метода списания.
В зависимости от установленного метода списания меняется отчет (остатки берутся из разных регистров).
Можно ли представить такое решение на экзамене или оно в корне методологически не правильное?
Вложения:
ivanzavr1.5.dt
-
Посмотрел решение koladen (сообщ 214)
Такой вопрос, а можно эти строки:
____________________________________________________________________________
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА УчетнаяПолитикаСрезПоследних.ЗначениеУчетнойПолитики = ЗНАЧЕНИЕ(Перечисление.Учетнаяполитика.ФИФО)
| ТОГДА ""ВОЗР""
| ИНАЧЕ ВЫБОР
| КОГДА УчетнаяПолитикаСрезПоследних.ЗначениеУчетнойПолитики = ЗНАЧЕНИЕ(Перечисление.Учетнаяполитика.ЛИФО)
| ТОГДА ""УБЫВ""
| ИНАЧЕ """"
| КОНЕЦ
| КОНЕЦ КАК ЗначениеУчетнойПолитики
|ИЗ
| РегистрСведений.УчетнаяПолитика.СрезПоследних(&Момент, ) КАК УчетнаяПолитикаСрезПоследних";
Запрос.УстановитьПараметр("Момент", Момент);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
УчетнаяПолитика = ВыборкаДетальныеЗаписи.ЗначениеУчетнойПолитики;
___________________________________________________________________________
заменить вот этими?
____________________________________________________________________________
УчетнаяПолитикаНаДатуПроведения = РегистрыСведений.УчетнаяПолитика.СрезПоследних(МоментВремени());
ПолучитьЗначениеУчетнойПолитики = УчетнаяПолитикаНаДатуПроведения[0].ЗначениеУчетнойПолитики;
Если ПолучитьЗначениеУчетнойПолитики = "FIFO" Тогда
УчетнаяПолитика = "ВОЗР";
Иначе
УчетнаяПолитика = "УБЫВ";
КонецЕсли;
_______________________________________________________________
на выходе одно и то же
-
раз результат тот же, значит можно, но стандартная писанина такая:
УчетнаяПолитикаНаДатуПроведения = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).ЗначениеУчетнойПолитики;
Предыдущее мое решение косячное, переделал расходную.
Вложения:
ivanzavr1.5-2.dt
-
ivanzavr, Посмотрел... В коде очень сильно не разбирался, просто протестировал на данных...
Ваше решение неверное, так как - Не может себестоимость товаров на остатке зависеть от смены учетной политики
Т.е. например сегодня Вы поменяли учетную политику, отчет на вчера и на завтра покажет разную стоимость товаров на остатке, а у Вашего решения
показивает и разное количество...
Посмотрите отчет в базе ...
Вложения:
ivanzavr1.5-2_R.dt
-
RoMeL, За отчет спасибо, сам тестировал на небольшом количестве данных, ошибок не увидел)
А вот насчет "Не может себестоимость товаров на остатке зависеть от смены учетной политики" - это еще как посмотреть.
Вот что вчера нарешал на листочке:
приходы с партиями:
+приходная1 10 шт 1000
+приходная2 10 шт 1200
+приходная3 10 шт 1400
расход 15 шт по ЛИФО:
-приходная3 10 шт 1400
-приходная2 5 шт 600
Итого на складе осталось 15 шт на сумму 1600
Меняем политику на СписаниеПоСредней и списываем остатки на пустую партию
далее, расход 10 шт, стоимость 1 шт = 106,7
-пустая 10 шт 1067
Итого на складе 5 шт на сумму 533
А теперь, уважаемые знатоки, внимание вопрос!
Нужно ли при смене УП на ФИФО/ЛИФО восстанавливать партии?
В теме несколько раз писали, что преподы говорят "нужно".
Т.е. если мы отменим проведение документа "ИзменениеУчетнойПолитики" и перепроведем расходную, как делал по-моему LEOON, то на остатке получим
5 шт на сумму 500.
Тогда моё решение похоже на правду.
Если партии восстанавливать не надо, как, например, в твоём решении, то у меня проблемы)
потому что "ресурсы регистра накопления не выводятся в ноль по всем измерениям"
-
RoMel,
Quote
прочти http://forum.chistov.pro/index.php?topic=2005.msg22327#msg22327 п.8,9,12
- я знаком с отчётом Gyd о курсе Белоусова.
Более того я сам на этом курсе был. и вот пример из кода Белоусова.
//Запрос в цикле
//Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма *ТекСтрокаСписокНоменклатуры.Договор.ПроцентВознаграждения;
Согласно этому: http://www.1c.ru/rus/partners/training/files/ATT82PL.zip
Ваша ошибка: Получение информации, хранящейся в информационной базе, (остатков, оборотов, данных базы, данных графика и т.п.) в цикле -2,0
P.S. Если я не смог убедить Вас, пожалуйста оставайтесь при своём мнении. Успехов в подготовке!
-
Oliver, ок, Спасибо
-
прокомментируйте пожалуйста ОбработкуПроведения документа РасходнаяНакладная
Code
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//
Движения.Продажи.Записать();
Движения.Продажи.Записывать = Истина;
Движения.ОстаткиНоменклатуры.Записать();
Движения.ОстаткиНоменклатуры.Записывать = Истина;
// получение метода сортировки
Метод = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).МетодСписания;
СОРТ = ?(Метод = Перечисления.МетодСписания.FIFO, "ВОЗР", "УБЫВ");
// блокировка записей регистра по позициям номенклатуры для получения остатков
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = Товары;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();
//
Запрос = новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
| СУММА(РасходнаяНакладнаяТовары.Сумма) КАК Сумма
|ПОМЕСТИТЬ ТабДок
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка
| И РасходнаяНакладнаяТовары.Номенклатура.Услуга = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТабДок.Номенклатура КАК Номенклатура,
| ОстаткиНоменклатурыОстатки.Партия КАК Партия,
| ТабДок.Количество КАК Количество,
| ТабДок.Сумма КАК Сумма,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток
|ИЗ
| ТабДок КАК ТабДок
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ
| ТабДок.Номенклатура
| ИЗ
| ТабДок)) КАК ОстаткиНоменклатурыОстатки
| ПО ТабДок.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| Партия "+СОРТ+"
|ИТОГИ
| МАКСИМУМ(Количество),
| МАКСИМУМ(Сумма),
| СУММА(КоличествоОстаток),
| СУММА(СуммаОстаток)
|ПО
| Номенклатура";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);
ВыборкаПоНоменклатуре = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоНоменклатуре.Следующий() Цикл
СписаноСебестоимость = 0;
Если ВыборкаПономенклатуре.КоличествоОстаток < ВыборкаПономенклатуре.Количество Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не хватает: " + ВыборкаПоНоменклатуре.КоличествоОстаток-ВыборкаПоНоменклатуре.Количество +
" штук по номенклатуре " + ВыборкаПоНоменклатуре.Номенклатура + "";
Сообщение.УстановитьДанные(Ссылка);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
// вывод сообщений по всем товарам по которым присутствует нехватка
Если Отказ Тогда
Продолжить;
КонецЕсли;
Себестоимость = 0;
НеобходимоСписать = ВыборкаПоНоменклатуре.Количество;
ВыборкаПоПартии = ВыборкаПоНоменклатуре.Выбрать();
Пока ВыборкаПоПартии.Следующий() и НеобходимоСписать > 0 Цикл
СписываемоеКоличество = МИН(НеобходимоСписать,ВыборкаПоПартии.КоличествоОстаток);
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаПоПартии.Номенклатура;
Движение.Партия = ВыборкаПоПартии.Партия;
Движение.Количество = СписываемоеКоличество;
Движение.Сумма = СписываемоеКоличество/ВыборкаПоПартии.КоличествоОстаток * ВыборкаПоПартии.СуммаОстаток;
Себестоимость = Себестоимость + Движение.Сумма;
НеоходимоСписать = НеобходимоСписать - СписываемоеКоличество;
КонецЦикла;
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаПоПартии.Номенклатура;
Движение.Количество = ВыборкаПоПартии.Количество;
Движение.Сумма = ВыборкаПоПартии.Сумма;
Движение.Себестоимость = Себестоимость;
КонецЦикла;
КонецПроцедуры
Добавлено (16.10.2012, 08:40)
---------------------------------------------
как в этой процедуре учитывать что списание LIFO, FIFO или ПоСредней ?
-
Quote (LivingStar)
|УПОРЯДОЧИТЬ ПО
| Партия "+СОРТ+"
Вот эта строка сортирует партии в запросе:
1. По возрастанию: 1,2,3,4,5... (FIFO)
2. По убыванию: ....5,4,3,2,1 (LIFO).
Соответственно, в выборке запроса, в цикле, партии перебираются согласно этого порядка.
По средней, насколько я заметил, списание не предусмотрено.
-
Gyd Посмотрите пожалуйста вот эту выгрузку ->
это решение задачи 1.5, по средней, регулируется другими документами, верно ли там всё?Добавлено (16.10.2012, 16:41)
---------------------------------------------
почему то не могу прикрепить
-
выгрузка :
Вложения:
1Cv8_LS_1_5.dt
-
Quote (LivingStar)
Посмотрите пожалуйста вот эту выгрузку
Ааа, это же 1.5... Очень детально не смотрел, а так вроде всё хорошо.
-
Quote (Gyd)
По средней, насколько я заметил, списание не предусмотрено.
А по средней без разницы УБЫВ или ВОЗР , у нас все равно одна партия будет
-
Quote (Pavlyk)
А по средней без разницы УБЫВ или ВОЗР , у нас все равно одна партия будет
Ага, я вспомнил об этом вчера, когда дтшник смотрел.
-
цитата "Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке"
т.е. исходя из условий задачи - услуги могут быть только в реализации. Конечно в поступлении можно и отфильтовывать, но это такая мелочь по сравнению с другими возможными косяками...
-
Всем доброго время суток.
Вернулся к подготовке после длительного перерыва, раньше решал эту задачу способом описанным здесь, с очисткой измерения регистра "Партия" при смене на учетную политику "По средней"(списанием всех партий и оприходованием) и не проставлению партии в обратном порядке (ну нет точного математического аппарата для восстановления партий, все равно в себестоимости партий окажется белеберда) с пустой партией считалось то же партией, и списывалось в дальнейшем либо в первую либо в последнею очередь(ФИФИ/ЛИФО), но тут я подумал, что в стандартной УТ (еще до 11, в 11 не буду врать не знаю) или УПП 1.3(это точно проверил только что, да и процедуры списания помню почти наизусть) списание партии товаров не меняется. Списание идет по методу ФМФО или ЛИФО а вот оприходование происходит с заполненным документом партии или нет(по средней), да и потом поковырявшись в консультанте нашел реальную рекомендацию как раз на такой переход.
Так вот теперь вопрос, если аргументировать статьей из консультанта и ПБУ 5/01, можно ли на экзамене отстоять такой способ списания?
-
Quote (Glime)
это точно проверил только что, да и процедуры списания помню почти наизусть
А можете привести пример такого списания?
-
Quote (Gyd)
Quote (Glime)
это точно проверил только что, да и процедуры списания помню почти наизусть
А можете привести пример такого списания?
В каком смысле? могу привести пример со "сринами" движения по партиям (РАУС в боевой не включен), могу конечно выдрать куски кода процедур проведения, но это будет очень длинно.
как тут скрины прицеплять?
-
Glime, интересует как у них реализовано выведение регистра в ноль при таком способе списания.
-
Quote (Gyd)
Glime, интересует как у них реализовано выведение регистра в ноль при таком способе списания.
Элементарно, всегда идет списания по партионному принципу(Всегда ФИФО если не указано ЛИФО). По средней влияет только на поступление (документ партии заполнен или нет), кусок кода из модуля "УправлениеЗапасамиПартионныйУчет" в который всегда при списание себестоимости заходит обработчик и формирует дерево партий
Code
| ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
причем о средний, замете, вообще не чего не говорится. Про среднею можно встретить только в поступление (устанавливать или нет Документ оприходование).
Так что они даже не замарачиваюся, просто списывают всегда партионно, формируя дерево с остатками партий. А все поступление пришедшие с пустой партией(по средний) являются так же партией как и с документом оприходования.
-
Quote (Glime)
просто списывают всегда партионно
Из этого мы делаем вывод что списание по средней у них не реализовано
При решении задач, думаю вам лучше придерживаться классической модели списания по средней.
-
Quote (Gyd)
При решении задач, думаю вам лучше придерживаться классической модели списания по средней.
Its true
-
Доброго времени суток! (:
Я не местная, я вообще с женского форума и уже год на 1с-ке не программировала.
Для безболезненного выхода из дикрета хочу сдать этот экзамен. Сегодня начну подготовку с задачи 1.5.
Посмотрела, что билеты и правила игры поменялись. Если на следующей неделе скину какое-нибудь решение, скорей всего сборное из всего, что здесь найду и всего, что пойму, кто-нибудь его сможет посмотреть?
Только тапками сразу не закидывайте, а то я и так боюсь начинать подготовку к экзамену.
-
Quote (capix)
Только тапками сразу не закидывайте
Здесь это не принято только конструктивная критика.
-
capix Добрый день, рады Вам!
-
Вот мой вариант решения задачи.
ЗЫ:
Сделал, что партия учитывается при списании вне зависимости от выбранного метода списания себестоимости.
ЗЫ:
Посмотрите, пжл.
Вложения:
M.1.5_20121108-.dt
-
LivingStar
Quote
выгрузка :
Прикрепления: 1Cv8_LS_1_5.dt(59Kb)
В коде опечатка в модуле расходной.
В цикле списание по партиям вместо
НеоходимоСписать = НеобходимоСписать - СписываемоеКоличество;
нужно
НеобходимоСписать = НеобходимоСписать - СписываемоеКоличество;
ошибка в одной букве =)
иначе оно неправильно начинает списывать по FIFO и LIFO
Вложения:
1.5_LS_fxd.dt
-
Здравствуйте, форумчане!
Почитал что вы пишете, посмотрел некоторые представленные решения, скомпоновал из них правильное на мой взгляд решение. Единственное, не совсем уверен в необходимости последовательности, скорее всего она вообще не нужна из-за вот этого условия задачи:
"Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться.". Вопрос в том, можно ли изменять старые документы (например, количество номенклатуры), или же только перепроводить? Если только перепроводить, то последовательность не нужна, иначе она нужна, чтобы сдвигать границу актуальности.
Вложения:
1_5_majestic.dt
-
LivingStar,
в запросе в обработке проведения расходной накладной надо индексировать по номенклатуре (это вроде как рекомендации),
Код
Движение.Сумма = СписываемоеКоличество * ВыборкаПоПартии.СуммаОстаток/ВыборкаПоПартии.КоличествоОстаток;
деление в конце - проблемы копеек,
а в остальном все в норме
-
Цитата
Движение.Сумма = СписываемоеКоличество * ВыборкаПоПартии.СуммаОстаток/ВыборкаПоПартии.КоличествоОстаток;
Это не есть решение проблемы копеек. Решение только одно: если количество списываемого равно количеству партии тогда списывать всю сумму партии.
-
Мой вариант. Реализовал только списание по среднгей, т.к. все остальное аналогично реализовал в 1.4
Вложения:
1-5.dt
-
Разъясните такой момент:
1. Завели метод списания ФИФО.(документ по регистру остатков движений не делал)
2. Сделали приход.(записали приход в регистр остатков по партии)
3. На следующий день меняем метод списания на "По среднему". Документ делает расход с партией и приход на пустую партию в регистр остатков.
4. Теперь если перепровести приход(задним числом), то в регистре остатков появятся записи с минусом по партии -- это ведь не правильно !?
-
Цитата (M0narch)
Теперь если перепровести приход(задним числом), то в регистре остатков появятся записи с минусом по партии -- это ведь не правильно !?
Приходная получает метод списания на дату документа, и при перепроведении приходной движения документа не должны измениться никак.
-
Еще одно решение
Вложения:
ivanovnm1.5.dt
-
решение, идею подглядел у кого-то с этой ветки
Вложения:
6148469.dt
-
Задачу решил,но есть непонятный момент.Никак не могу понять - когда провожу документ "Учетная политика" с видом списания "по средней" документ в регистре ОстаткиНоменклатуры пишет в расход номенклатуру с партиями и приходует их заново без партий свернуто.Но если я перепровожу этот документ с видом списания Фифо\Лифо - у меня восстанавливаются партии в регистре ОстаткиНоменклатуры.Откуда берутся партии и как такое происходит?
Вложения:
7056125.dt
-
Добрый день форумчане!
При решении этой задачи возникло много вопросов, прочитав сообщения этой ветки увидил много разных решений. Какое из них правильное так и не понял, одни говорят что нужно списывать по партиям вне зависимости Метода Списания, некоторые говорят что нужно устанавливать партии при переходе на ФИФО с ПоСредней. Проведение документа УчетнаяПолитика подсмотрел у sv_mikh.
Кому не сложно посмотрите пожалуйста! Жду критику!Добавлено (27.06.2013, 15:34)
---------------------------------------------
Посмотрел таблицу билетов собранных RoMel, и сравнил их с задачами в сборнике за 2011 год(редакция 3) они немного отличаются в том числе и задача 1.5, кто может подсказать какие более актуальные? Я так понимаю актуальные билеты собранные RoMel, они же и выдавались на экзамене.
Вложения:
3_1.5_Jester.dt
-
Гляньте, пожалуйста. Когда уже начну головой думать
Вложения:
Runner_01_05.dt
-
исправленное
Добавлено (26.07.2013, 16:06)
---------------------------------------------
Цитата (fortune)
Задачу решил,но есть непонятный момент.Никак не могу понять - когда провожу документ "Учетная политика" с видом списания "по средней" документ в регистре ОстаткиНоменклатуры пишет в расход номенклатуру с партиями и приходует их заново без партий свернуто.Но если я перепровожу этот документ с видом списания Фифо\Лифо - у меня восстанавливаются партии в регистре ОстаткиНоменклатуры.Откуда берутся партии и как такое происходит?
это происходит потому что старые движения замещаются на новые, т.е. если перепровести документ "Учетная политика", то движения сделанные последним удаляются
Вложения:
7428652.dt
-
Всем привет. Выкладываю свое решение, и хочу спросить - Почему идут разговоры о прекращении оприходования по партиям товара в результате выбора УП = ПоСредней ? Разве нельзя продолжать приходовать по партиям. Списывать тоже по партиям (фифо или лифо неважно), просто себестоимость при списании рассчитывать как среднюю по всем партиям (ведь только об этом и говорится в задании)? Мне кажется, это более гармоничный вариант. Это реализовано в моем решении.
Вложения:
dudell_1.5.dt
-
Цитата (dudell)
Это реализовано в моем решении
у вас остатки не выходят в ноль, есть нулевое количество при отрицательной стоимости
-
Цитата (artfa)
у вас остатки не выходят в ноль, есть нулевое количество при отрицательной стоимости
Да, это и есть ответ на мой вопрос, почему нужно оприходовать все на пустую партию при выборе УП = ПоСредней.
Исправленное решение прилагается.
artfa - мимоходом глянул решение - сразу бросилось в глаза, проблему копеек не решаешь.
Вложения:
05.dt
-
Собственно, мое решение.
Я не стал делать как большинство коллег здесь, используя для учета по средней партию "пустаяСсылка()"
Задача решена на 3 регистрах:
1)Продажи - комментарии излишни,
2)ОстаткиНоменклатуры - учет по средней,
3)ОстаткиНоменклатурыПартионный - Учет по партиям,
По регистру "средних" делаются + и - движения, если на момент проведения приходной или расходной действует соответствующая учетная политика.
Аналогично, по регистру "Партий".
После проведения регламентного документа, если учетная политика изменилась, то, с помощью последовательности за период (ОТ "сбитой" этим проведением границы ДО Границы с исключением следующего документа "регистрация учетной политики") происходит соответствующий "переброс" приходных и расходных движений на другой регистр - свернуто, без партий на РН ОстаткиНоменклатуры или развернуто, с партиями, на РН ОстаткиНоменклатурыПартионный в соответствии с изменившейся учетной политикой ФИФО, ЛИФО или по Средней.
Таким образом, в конфе сосуществует партионный учет и учет по средней. Если изменить учетную политику задним числом, то происходит соответствующая "трансформация" движений за период действия этой учетной политики.
Отчет по остаткам получен объединением ВТ регистров ОстаткиНоменклатуры и ОстаткиНоменклатурыПартионный.
П.С. есть мелкие недостатки, типа неоптимально смещения границы последовательности, но исправлять лень, отлаживать тоже надоело, так что буду рад конструктивной критике.
Спасибо за внимание.
Вложения:
1.5_Lolkien.dt
-
Смотрел многие решения - попадались правильные, вроде, но при переходе на "ПоСредней" многие списывают на пустую партию ВСЕ приходки с самого начала учёта. Что по ходу не есть правильно, нужно найти момент времени самой ранней партионной политики(фифо или лифо), возможно до него уже была политика "ПоСредней", и там итак была одна пустая партия...
Посмотрите, покритикуйте если не трудно, все вымерли как будто)
Вложения:
zorky1_5-25-.dt
-
Цитата zorky (
)
многие списывают на пустую партию ВСЕ приходки с самого начала учёта
Ну это не совсем так, ведь в запросе ты отбираешь только партии с ненулевыми остатками, соответственно, даже если и была раньше политика "по средней", она у тебя остатки по партиям вывела в ноль. Т.е. в результате будут присутствовать ТОЛЬКО записи, которые необходимо списать на Пустую партию. Так что эту проверку считаю не нужной.
В запросе по расходной накладной суммируешь номер строки, мелочь конечно, но сообщение о нехватке будет выводиться неверноДобавлено (27.10.2013, 17:12)
---------------------------------------------
единственное, что можно проверить, что если это пустая партия, то нет необходимости ничего делать, т.е. в запросе отбирать только те партии, которые не равны пустой ссылке
-
SanjaKaiser, ага, я че то перемудрил, спасибо)
1.6 выложил, думаю сильно на мелочи не заморачиваца, защиты от дурака и т.д. слишком много времени на идеальное решение уходит, главное суть уловить и модель рабочую сделать, как тут кто-то сказал у sv_mikh - канонические решения, ориентироваться на них, не забывать про время...Я ж недавно начал готовится, решать - время много уходит сейчас, а в начале и того больше! а надо за час накодить))
-
в видеокурсах Павел Чистов тоже советует не заморачиваться на защиту от дурака. Сам только начал готовиться, так что тебя прекрасно понимаю, тоже времени уходит немерено, но главное руку набить
-
где-то на этом форуме я видел следующее "препод сказал что в идеале эта задача решается на двух регистрах".
вобщем решил на двух регистрах - Себестоимость, ОстаткиНоменклатуры.
суть решения, при продаже (если ЛИФО или ФИФО) списываю себестомость по партии где сумму на единицу товара расчитываю из регистра сведений Партии, если по средней то соответственно Себестоимость за ед. = ОбщаяСебестоимость/ОбщееКоличество,
в результате может возникнуть ситуация, когда например:
Приход -
Партия 1 - 10шт. по цене 100руб.,
Партия 2 - 10шт. по цене 10руб.
Расход -
ПоСредней 10шт. по цене (10*100+10*10)/20=55руб.
итого в остатках -
Всего 10 шт. общей стоимостью 10*55руб.=550руб.,
в то же время у нас в отчете нужно указывать стоимость партии
По партиям
Партия 2 - 10шт. общей стоимостью 100руб.
плюс такого решения - не нужно делать перепроведение при смене учетной политики,
минус - в отчете отражаются данные не понятные с первого взгляда, не удалось до конца настроить отчет.
Вложения:
1.5_v2.dt
-
Приветствую всех страждущих сертификата 1С спец. Все же решил положить в общую копилку и своих 5-ть копеек. Интересная задача. По началу даже было не понятно, для чего документ ИзменениеУчетнойПолитики должен был перепроводить остатки на пустую партию, но потом разобрался. :-) Выкладываю свое решение. Буду признателен, если кто его посмотрит и укажет на косяки.
Вложения:
1.05_mikas.dt
-
Добавляю свою
Вложения:
Denver1.5v1.dt
-
Заметил ошибку, с услугами не разобрался. Исправленный вариант:
Добавлено (18.12.2013, 05:40)
---------------------------------------------
Заметил еще пару ошибок, исправилДобавлено (18.12.2013, 05:44)
---------------------------------------------
mikas-2008, у вас тоже недочет нашел, в приходной в цикле обхода табличной части строите неявный запрос к перечислениям..надо бы вынести за цикл
Вложения:
Denver1.5v3.dt
-
imho
при списании по средней - списывать партию, а разницу в стоимости ложить в специально отведенную пустую партию (если все время будет по средней, то в итоге при списании всех партий в пустой партии окажется 0)
при списании по фифо/лифо - сначала списывать разницу из пустой партии, потом по стандарту.
никаких телодвижений при изменении политики.
все выводиться в ноль.
регистр один.
Опровергайте)))
-
Че-то как-то вяло(( НГ поди
Вложения:
1Cv8_1_5.dt
-
ой, налажал. не учел, что пустую партию тоже надо учитывать при расчете себестоимости по среднему. Ещё помидорко.
Вложения:
1029426.dt
-
вроде теперь все
Вложения:
1926788.dt
-
Прошу проверить
Вложения:
8476249.dt
-
Ну в принципе задача 1.5 одна из самых легких, вот выкладываю свой вариант, как мне кажется, вообще классический - ни прибавить, ни убавить (на мой скромный взгляд). Там, правда, нужно учетную политику документом менять, а я из-за лени вручную сделал, но это и все, а остальное вроде бы тика в тику.
Вложения:
__1.5.dt
-
Цитата giotto (
)
Ну в принципе задача 1.5 одна из самых легких, вот выкладываю свой вариант, как мне кажется, вообще классический - ни прибавить, ни убавить (на мой скромный взгляд). Там, правда, нужно учетную политику документом менять, а я из-за лени вручную сделал, но это и все, а остальное вроде бы тика в тику.
1. Условие про Услуги вообще не реализовано.
2. Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Движения.ОстаткиНоменклатуры.Записать();
Иначе
МоментВремени = МоментВремени();
КонецЕсли;
Вот этот фортель я вообще не понял: если проводим документ в Оперативном режиме, тогда записываем пустой набор, для того чтобы затереть старые движения, тем самым получая актуальные данные для запроса. А если Неоперативный режим: вчера мы продали 10 табуреток - на складе осталась 1, сегодня перепроводим документ - поскольку старые записи мы не затираем, то он запрос покажет, что на складе табуретка 1, а реально мы имеем 11.
Либо я вообще Вашу логику не уловил. Поясните плизз...
3. Если НадоСписать = 0 Тогда
Себестоимость = 0;
ИначеЕсли НадоСписать = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
Себестоимость = ВыборкаДетальныеЗаписи.СтоимостьОстаток;
Иначе
Себестоимость = НадоСписать / ВыборкаДетальныеЗаписи.КоличествоОстаток * ВыборкаДетальныеЗаписи.СтоимостьОстаток;
КонецЕсли;
Длинно, некрасиво, рекомендую использовать:
Движение.Стоимость = ?(НадоСписать = ВыборкаДетальныеЗаписи.КоличествоОстаток, ВыборкаДетальныеЗаписи.СтоимостьОстаток, НадоСписать * ВыборкаДетальныеЗаписи.СтоимостьОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток);
4. Ну и последнее, самое важное :). В задаче есть вот такая строчка: Учетная политика можетменяться каждый день, ее изменение фиксируется соответствующим документом.
Не обнаружил в Вашем решении этого документа, а ведь вся изюмина как раз в нем и зарыта.
P.S. если списание ФИФО / ЛИФО то все очевидно, а если по средней?
-
MorningStalker, спасибо за вдумчивый анализ. Ну и прямо по пунктам:
1. Про Услуги, блин, забываю все время, это плохо, нужно до автоматизма доводить.
2. Тут, собственно, условие Иначе вообще можно было не писать, а сразу установить параметр МоментВремени(). А по поводу что покажет 1 табуретку, так тут все просто: документ будет считывать записи на момент проведения (если неоперативно), причем его движения учитываться не будут. Ну вот сейчас опять прогнал по тестовым данным, и оперативно, и неоперативно - все вроде верно считает.
3. Если верить Павлу Чистову (а как показывает опыт, ему можно верить), таковы требования 1С - явно указывать все условия, во всяком случае, я так понял из его курса по подготовке к Специалисту. Так что указываю от греха подальше. Ну, конечно, можно использовать и вашу конструкцию, согласен.
4. Ну документ сделать - дело нетрудное, а регистр у меня имеет периодичность "день", так что тут все почти верно))
А вот по ФИФО/ЛИФО - средняя, тут да, загадка. Я лично склоняюсь к такому варианту:сделать глобальное условие Если ФИФО \ ЛИФО Тогда... Иначе...КонецЕсли. Наверное, не совсем оптимально, нужно фактически дублировать расчет себестоимости и списание, зато каждое действие уже на автомате. Ну или вынести расчет в общий модуль, а в документе оставить списание.
А вы покажите свой вариант (если уже был выложен выше, то прошу прощения).
-
Цитата giotto (
)
А вы покажите свой вариант (если уже был выложен выше, то прошу прощения).
выкладываю, решал давно ее уже, но она встречается в билете №3, поэтому в голове хранится ее решение :).
Вложения:
_1-05.dt
-
MorningStalker, ну у меня к вам такой же вопрос))) списание по партиям я вижу, а списание по средней - нет. В строке "СортировкаПартий = ?(МетодСписания = Перечисления.УчетнаяПолитика.ЛИФО, " УБЫВ ", "")" мы ведь получаем только два варианта: или ЛИФО, или НЕ ЛИФО, а где отдельно выделенный метод "по средней"?
-
MorningStalker, вот здесь я вроде как усовершенствовал списание, добавил "по среднему", оказывается, все не так сложно, как вначале казалось.
Добавлено (26.03.2014, 09:52)
---------------------------------------------
но про Услуги опять только сейчас вспомнил, да что ж такое!!!
Вложения:
Spec_Platforma_.dt
-
Посмотрите пожалуйста мое решение, может что подскажете
заранее спасибо (отчет по продажам не делал пока)
Вложения:
4015999.dt
-
YFred, посмотрел ваше решение. Расходная неправильно списывает. Задаю списать 6-ть товара, а списывает 7-мь.
-
проверил, не нашел ошибок. Dеmy можешь выгрузить пример с ошибкой, где списывается 7 вместо 6ти?
Вложения:
5496938.dt
-
Конечно.
-
Вот держи. С первого раза файл не прикрепился.
Добавлено (11.04.2014, 16:19)
---------------------------------------------
YFred, нашел опечатку:
Движение.Количество = Мин(Выборка.КоличествоДок,Выборка.КоличествоОстаток)
а должно быть:
Движение.Количество = Мин(ОсталосьСписать,Выборка.КоличествоОстаток)
Вложения:
YFred_1_5.dt
-
А вот мой вариант. Проверьте кто сможет. Жду справедливой критики. Если ошибок нет тоже напишите, а то иногда не понятно или форум вымер или ошибок нет.
Вложения:
_1_5.dt
-
YFred, для регистра "ОстаткиНоменклатуры" не включено разрешения разделения итогов. В расходная накладная не позволяет проводить продажу услуги: нехватка.
Добавлено (13.04.2014, 15:01)
---------------------------------------------
А вот мой вариант. Проверьте кто сможет. Жду справедливой критики. Если ошибок нет тоже напишите, а то иногда не понятно или форум вымер или ошибок нет.
_______________________
Тоже расходная в регистр продажи услугу не пишет. В запросе в расходной накладной Установку порядка можно было сделать через ВЫБОР КОГДА ВТВсеОстатки.Партия = ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка) Тогда Порядок 0 Иначе Порядок 1 Конец. И тогда не нужно объединение делать.
-
Igor-pn, спасибо большое, запрос исправил. А вот по поводу услуги... проверил вроде все работает, в регистр продаж услугу пишет. Если не затруднит выгрузи базу с ошибкой. Заранее благодарен.
Вложения:
Demy_1_5.dt
-
Видимо, по ошибке, я посмотрел в регистр остатки. Посмотрел, документ пишет услугу в "Продажи". Нет блокировки регистра ОстаткиНоменклатуры в документе по смене учетной политики.
-
Igor-pn, премного благодарен. Еще раз исправил базу. Впредь постараюсь быть повнимательней. Пиши если еще что найдешь.
Вложения:
4271575.dt
-
Demy, не знаю почему ты выбрал именно такой способ решения, я решал как советовали сдающие эту задачу на экзамене: партия может быть либо документ поступления, либо документ смены учетной политики, в момент проведения документа учетной политики. если меняем значение УП по средней, то необходимо перевести все партии на партию документа учетной политики, тем самым расходная накладная будет стандартная, и никакая пустая партия не нужна. Это всего лишь мой метод решения, на нем я не настаиваю и в сто процентной правильности не ручаюсь.
-
letni88, метод решения с пустой партией мне показался более правильным, т.к. в случае когда партия может быть либо приходная накладная, либо документ смены учетной политики, тогда сложно решать такой случай: если при политике списания по средней будет проводится приходник, тогда откуда он возьмет документ смены учетной политики, который он должен поставить в партию? Тогда либо документ смены учетной политики необходимо хранить в регистре сведений, либо делать отдельный запрос. А пустое значение можно взять без всяких мучений. Может я где-то заблуждаюсь или чего-то не вижу? Если это так, то буду благодарен за разъяснения.
-
Demy, в приходной накладной ты делаешь запрос получая срез последних, не объектной моделью, "получитьПоследнее", а запросом, оттуда вытягиваешь регистратор, и если по средней то пипешь регистратор(документ смены учетной политики) в партию, если фифо, то стандартно, ссылку на приходную.
Добавлено (14.04.2014, 19:48)
---------------------------------------------
Demy, в приходной накладной ты делаешь запрос получая срез последних, не объектной моделью, "получитьПоследнее", а запросом, оттуда вытягиваешь регистратор, и если по средней то пипешь регистратор(документ смены учетной политики) в партию, если фифо, то стандартно, ссылку на приходную.
-
letni88, действительно, так даже лучше. Спасибо за замечание. Переделал, посмотрите, может еще замечания будут. Буду благодарен.
Вложения:
5423120.dt
-
Тоже начал готовиться.
Demy, посмотрел твоё решение. Вопросы:
1. Какой смысл делать пустую сортировку, если по умолчанию всё-равно сортировка по возрастанию?
Думается мне, что здесь достаточно ЛИФО и Иначе.
2. "СтрЗаменить(ТекстЗапроса" может и удобно для дальнейшей поддержки, но как-то не по мне. Как к этому относятся на экзамене?
3. Если Не РезультатыЗапроса[2].Пустой() Тогда
Выборка = РезультатыЗапроса[2].Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "По " + Выборка.Номенклатура + " осталось " + Выборка.Осталось + " требуется " + Выборка.Требуется + ".";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЦикла;
КонецЕсли;
Я так понимаю, пользователя уведомит только о нехватке по одной номенклатуре. А если не хватает по 2-м позициям? Пользователь об этом не узнает? Может вынести за цикл проверку на Отказ?
4. Запрос, конечно мудрёный. Надо оно тебе для экзамена? Или ты в личном порядке?
5. Индексирование в запросе тоже требуется для того, чтобы быстро сдать экзамен?
ps: я сам только начинаю готовится, так что могу быть неправ в каждом из пунктов).
-
Soul, спасибо за замечания. Отвечу на них:
1. Ты абсолютно прав, это не обязательно, но как мне кажется более наглядно. Ведь мы пишем код не для компьютера, а для людей (ссылаюсь на Макконела). Строчки:
ИначеЕсли УчетнаяПолитика = Перечисления.УчетнаяПолитика.Среднее Тогда
Сортировка = "";
как бы намекают что нам все равно какая сортировка будет в таком случае, и другой программист при изменении этого кода (а может и мы сами) не будет заморачиваться по этому поводу. Кстати забыл еще добавить строчки:
Иначе
Отказ = Истина;
Возврат;
они служат для того, чтобы когда добавят новую учетную политику, документ намекнул на ошибку если его не поправят. Думаю на экзамене это совсем не обязательно, тем более в такой простой конфигурации, но я просто привык так писать. Если есть возражения по этому поводу - с удовольствием выслушаю.
2. Честно говоря использую этот прием впервые. Даже не знаю что лучше: использовать "+" в запросе, или подстановкой текста. В обоих случаях есть плюсы и минусы, но на экзамене думаю это не будет играть какой-либо роли.
3. Ты прав, просто ступил. Спасибо, уже исправил.
4. Возможно, но у меня как-то не было времени его оттачивать. Да и вроде у остальных где-то такие же.
5. Где-то читал что индексация на помешает. Не знаю как к этому относятся на экзамене.
Кстати по рекомендациям MorningStalker изменил порядок блокировки и записи пустых движений, но как быть с документом смены учетной политики я еще подумаю, когда будет время.
Вложения:
7966601.dt
-
Для задачи устойчиво закрепилось решение созданием движений прихода и расхода остатков на момент смены учетной политики. Никого не смущает, что, при таком решении, отчет по продажам за период включающий такую смену политики становится мало информативным?
-
а эту проверьте пожалуйста
Вложения:
5183604.dt
-
evil18, посмотрел свое решение. Замечания:
1. (замечание) Общее. Нет форматирования, проверять тяжело.
2. (замечание) Приходная накладная. Регистратор можно установить перед циклом, и не проверять каждый раз условие.
3. (замечание) Смена учетной политики. В твоем решении все движения переписываются на текущий документ если новой политикой является списание по средней. Но если до этого также была эта политика, то переписывать все движения на текущий документ думаю лишнее.
4. (ошибка) Расходная накладная. Первый пакет запросов вообще не понятен. Нужно в первом запросе просто выбрать данные документа и поместить во временную таблицу, а во втором выбрать учетную политику. Зачем выполнять лишнее объединение?
5. (ошибка) Отчет продажи. Он не реализован. Возможно у тебя другой текст задачи, но у меня по условию требуется реализовать отчет по остаткам и отчет по продажам.
А в целом решение понравилось.
-
4. а зачем лишний запрос?
Добавлено (29.06.2014, 02:15)
---------------------------------------------
Demy, спасибо)
отчет перепишу, но в пункте 4 я уверена
2.согласна
3. я так поняла нужна проверка и не проводить документ.
а насчет форматирования шифт+альт+А и он сам поправит красиво))
5. я брала отчет из билетов https://docs.google.com/documen....b3t4zqn , решила из них с начало попробовать если пойдет. а там руку другими набить.
-
Цитата evil18 (
)
4. а зачем лишний запрос?
Ну во-первых для хранения поля "МетодСписания" будет выделено дополнительное место в памяти, причем столько раз сколько разных номенклатурных позиций в документе. Во-вторых все это также будет дольше передаваться по сети, хотя на глаз это не видно, но 1С помешаны на производительности. :)Цитата evil18 (
)
3. я так поняла нужна проверка и не проводить документ.
Нет. Надо проверять сменилась ли учетная политика на "Списание по среднему" и только тогда переводить все остатки на документ смены учетной политики, если учетная политика и до этого была "Списание по среднему", то документ нужно провести, но остатки на него переводить не надо (по крайней мере я так думаю).Цитата evil18 (
)
а насчет форматирования шифт+альт+А и он сам поправит красиво))
Экзаменатору тоже так скажешь? :)))Цитата evil18 (
)
А какой билет?
-
Demy, а лишний запрос? тоже время нужно. да ладно это не так думаю критично
3. тогда у меня списание не средней работать не будет. тк окажется 2 док с разными себестоимостью. а вообще зачем нужен вторая учетная политика по средней если она уже действует. так что отказ и извините написать
я ни как не скажу. тк если буду сдавать то удаленно) ну если только в конце написатьДобавлено (29.06.2014, 03:03)
---------------------------------------------
билет 3 вроде
-
Цитата evil18 (
)
Demy, а лишний запрос? тоже время нужно. да ладно это не так думаю критично
Лишний запрос не будет считывать данные с диска, поэтому времени это займет не так много, а вот экономия памяти может оказаться полезной в том числе и серверу.Цитата evil18 (
)
3. тогда у меня списание не средней работать не будет. тк окажется 2 док с разными себестоимостью.
Вот это не понял. Все должно работать так же.Цитата evil18 (
)
а вообще зачем нужен вторая учетная политика по средней если она уже действует.
Обычно пользователь не спрашивает зачем, он просто делает.
-
Demy, у меня получится 2 партии. 1 первая уч политика и 2-я учетня политика №2
а вот пользователю я и скажу что не надо менять тк учет политика уже по средней
-
Выкладываю своё решение. Не рассматривал вариант, при котором учетная политика меняется со значения "по-средней" на значение "ФИФО/ЛИФО". Ибо это ерунда полная.
Если кто-то найдет ошибки, буду благодарен.
Вложения:
9937845.dt
-
Присоединяюсь к предыдущему посту и выкладываю свое решение. Сразу оговорюсь писал не совсем сам, в основном лепил из разных источников, так что накопилось много вопросов. Буду благодарен за ответы на них. Ну и конечно же ,критика...больше критики по решению).
Вложения:
5692720.dt
-
Demy, посмотрел твое решение.
Если 5 числа перейти с "ЛИФО" на "По средней", 6 числа перейдем обратно на партионный учет, но ни одной приходной накладной не будет, а 7 числа вернемся к "средней", то по сути будут сделаны лишние движения по перебросу остатков с
документы от 5 числа на документ 7 числа.
А в случае с пустой ссылкой такой необходимости не будет.
Добавлено (14.08.2014, 13:36)
---------------------------------------------
Решение на основе Demy, добавил последовательности, изменил немного проведение документа ИзменениеУчетнойПолитики (пустая партия при переходе к средней, очистка движений).
Добавлено (14.08.2014, 15:25)
---------------------------------------------
jonik_joker, посмотрел твое решение, замечаний много.
Это только основные:
1. Неправильно списание даже в простейшем варианте. Сформируй отчет на 31.01.2014, сумма есть, количества нет.
2. В запросах используешь "ДЛЯ ИЗМЕНЕНИЯ" хотя в этом смысла уже нет.
3. Не используешь последовательности, а как будешь узнавать точку отсчета для перепроведения документов?
Вложения:
prog1Cer_1.5.dt
-
Что использовать в качестве пустой ссылки при смене политики на метод по средней: Неопределено или пустую ссылку на какой либо документе (Приходная/ИзменениеучетнойПолитики)?
-
Добрый день!
Решил присоединиться к участникам этого форума и внести своё решение на обозрение...
Вот моё решение: http://my-files.ru/b8vd3c
Буду презнателен за комментарии..
p.s.: что-то я не смог найти как тут прикрепить файл((
-
Доброй ночи, форумчане!
Подключаюсь к данной задачке. Пришлось устроить мозгам взбучку, чтобы до конца понять в чем тут суть.
На самом деле все не так уж сложно, если до конца через себя все это пропустить.
Единственное что может сконфузить - это фраза "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться". На мой взгляд это ровным счетом одно и то же(ввод документа задним числом и неоперативное проведение старых доков). Открыв в старый документ, я могу скорректировать количество или вовсе добавить новые строки. Еще один конфуз был с тем, включать ли документ изменения учетной политики в последовательность. Исходя из вышесказанного, стоит включить его от греха подальше, его перепроведение при восстановлении последовательности может потребоваться в некоторых ситуациях(но так же надо двигать границу вручную в некотрых ситуациях)
в общем вот мое решение http://rghost.ru/57950514
Если кому интересно, буду рад критике
----------------
Забыл в расходной накладной блокировку перед выполнением запроса:
Эл = Блок.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
Эл.ИсточникДанных = СписокНоменклатуры;
Эл.ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");
Блок.Заблокировать();
-
Единственное что может сконфузить - это фраза "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться". На мой взгляд это ровным счетом одно и то же(ввод документа задним числом и неоперативное проведение старых доков). Открыв в старый документ, я могу скорректировать количество или вовсе добавить новые строки.
"старые документы могут неоперативно перепроводиться"
Эта фраза означает, что документы могут быть перепроведены неоперативно, и при этом никаких ошибок или изменений не должно произойти.
А "задним числом не вводятся" как раз означает, что документы задним числом не вводятся и существующие "старые" документы не корректируются.
-
Подскажите пожалуйста, на сколько критично, если сделать ещо один регистр накопление по остатках без партий и тогда в зависимости от методоа списание использывать той или иной. По сути ето решит все вопросы с перепроведением доков задним числом и на любой метод списания.
-
Подскажите пожалуйста, на сколько критично, если сделать ещо один регистр накопление по остатках без партий и тогда в зависимости от методоа списание использывать той или иной. По сути ето решит все вопросы с перепроведением доков задним числом и на любой метод списания.
Я думаю это будет расценено как избыточность данных.
-
Всем Добрый день!
Посмотрите пожалуйста мой вариант решения задачи, какие ошибки недочеты и вообще правильно ли я ее решил?
ссылка на файл:
https://onedrive.live.com/embed?cid=ACA233F112CD3FC2&resid=ACA233F112CD3FC2%211048&authkey=AHNTBS0ytUSzhgg (https://onedrive.live.com/embed?cid=ACA233F112CD3FC2&resid=ACA233F112CD3FC2%211048&authkey=AHNTBS0ytUSzhgg)
На форум залить не смог так как размер слишком большой.
-
Покритикуйте мое решение задачи. заранее благодарен!
-
Покритикуйте мое решение задачи. заранее благодарен!
В целом все норм. Но если нужны замечания, то у меня такие:
1) Конструкция
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Граница = Неопределено;
Иначе
Граница = Новый Граница(МоментВремени() ,ВидГраницы.[color=red]Включая[/color]);
КонецЕсли;
Надо "Исключая" ведь мы не хотим прочитать движения созданные документом ранее.
2) Если ВыборкаНоменклатура.КолДок = ВыборкаНоменклатура.КолОст Тогда
СебестоимостьПродажи = ВыборкаНоменклатура.СуммаОст;
Иначе
СебестоимостьПродажи = ВыборкаНоменклатура.КолДок/ВыборкаНоменклатура.КолОст*ВыборкаНоменклатура.СуммаОст;
КонецЕсли;
Здесь не помешает проверка знаменателя на ноль.
3) Я вообще считаю, что правильней устанавливать признак у регистра накопления "Разрешить разделение итогов", раз мы используем установки блокировок.
4) Совсем не понимаю, что вы хотели сказать модулем в документе "Учетная политика" :)
Зачем вы делаете движения по регистру "ОстаткиНоменклатуры" ?
Это не логично чтобы установка учетной политики, что-то корректировала и, скорей всего, это явное усложнение задачи. Снизят, наверняка, баллы..
5) Ситуация с приходной накладной тоже непонятна. Зачем опираться на учетную политику при проведении этого документа? Т.е. конструкция "Если" не нужна:
Если НЕ Средняя Тогда
Движение.Партия = Ссылка;
КонецЕсли;
Партии лучше записывать всегда, они не помешают.
-
Покритикуйте мое решение задачи. заранее благодарен!
4) Совсем не понимаю, что вы хотели сказать модулем в документе "Учетная политика" :)
Зачем вы делаете движения по регистру "ОстаткиНоменклатуры" ?
Это не логично чтобы установка учетной политики, что-то корректировала и, скорей всего, это явное усложнение задачи. Снизят, наверняка, баллы..
спасибо Вам огромное, за внимание. Вы мне очень помогаете в подготовке!
Скажите а если при методе ПоСредней не свернуть партии в одну пустую, и списывать их без указания партий, остатки не зависнут по партиям?
-
И скажите пжл, из какого раздела задачи сложнее? Хочется надеяться что из оперативного, так как уже столкнулся и как-то сложновато идет.
-
По некому общему мнению вообщем-то из раздела оперативного учета сложнее всего задачи, но лично мне кажется следующее (по трем разделам):
Легче всего бух;
По опер учету на мой взгляд можно набить руку и голову, как мне показалось. Т.е. легче вкуриться, нежели в расчетные задачи. И решаются они потом быстрее.
Расчетные задачи решать скучнее. Одну задачу решаю от одного до нескольких дней, или просто уже смотрю решения от бессилия)
Но, возможно, для вас будет иначе)
-
Покритикуйте мое решение задачи. заранее благодарен!
4) Совсем не понимаю, что вы хотели сказать модулем в документе "Учетная политика" :)
Зачем вы делаете движения по регистру "ОстаткиНоменклатуры" ?
Это не логично чтобы установка учетной политики, что-то корректировала и, скорей всего, это явное усложнение задачи. Снизят, наверняка, баллы..
спасибо Вам огромное, за внимание. Вы мне очень помогаете в подготовке!
Скажите а если при методе ПоСредней не свернуть партии в одну пустую, и списывать их без указания партий, остатки не зависнут по партиям?
Аха! Прошу прощения за спешную критику, наверное в этом то фишка документа "Учетная политика"! Однако все равно мне кажется странным, что учетная политика меняет движения. Возможно по такой логике надо бы через последовательности делать, но ваш вариант, кажется, проще. Чтобы лишний раз не ломать голову наверное надо останавливаться на более простом, а то затянется процесс обучения..
-
Всем Доброго Времени суток!
Прокомментируйте пожалуйста мое решение, буду очень признателен.
-
Такс... Задача засела у меня в голове с прошлого раза, и наткнувшись в одной ветке на один комментарий
...
Я делал способом описанным здесь на формуме. Для смены учетной политики я сделал месячный регистр сведений. Оказалось не совсем правильно, поскольку учетная политика меняется раз в месяц, но кто сказал, что она должна меняться именно первого числа в начале дня . Упрощение - раз. Далее - не факт, что именно в эту секунду не будет сделан приход или расход. В общем выход один - сделать так, чтобы учетная политика могла устанавливаться на определенный момент времени и меняться хоть сто раз в день. Условие, что учетная политика может меняться раз месяц - это ограничение пользователей. Дополнительных проверок не нужно делать. (Тоже самое касается и бухгалтерского учета, переплат и авансов нет, и проверять это не нужно в программе, это ограничение в самом вводе, контролировать не нужно.)
Краткое описание как я сделал - один регистр ОстаткиНоменклатуры - два измерения - Номенклатура, Партия - два ресурса - Количество, Сумма.
Я сделал так - приход в зависимости от метода списания - приход делается либо по пустой партии, либо в партию идет документ прихода. При списании я сделал два алгоритма - либо по среденей, либо по партиям. Получение метода, далее простое условие, если по средней, то один алгоритм и выборка, иначе - другой. Преподаватель сказал, что я сделал лишнюю работу, потерял время, так как можно было сделать одно партионное списание, но баллы не снял.
Нужно было делать так - списание чисто по партиям. Регистр учетная политика - подчинен регистратору документу СменаУчетной политики и определяется на каждый момент времени (а не даты). Далее основная идея - нет никаких пустых партий в регистре. При переходе на учетную политику по средней документ СменаУчетнойПолитики должен закрывать все партии, а делать приход на себя. То есть Партия - это документ оприходования или же документ смена учетной политики. Вот так. При проведении приходной накладной, она смотрит установленное значение метода списания, если по партиям- пишет в партию себя(ссылку), если же по средней - то из регистра получает, какой документ поставил эту учетную политику, и ставить его. Проведение - по партиям. Всё оказалось просто и легко, работает для любого момента времени, даже если документы были в одной секунде. Можно менять учетную политику много раз в любой интервал времени.
...
...
я таки решил разобраться с ней полностью, чтоб она не терроризировала мозг в дальнейшем.
1. Во вложениях решение с ключевыми комментариями в модулях.
2. Убрал лишние метаданные для удобства просмотра
3. Вид отчетов как в задании
4. Все "нужные" галочки установлены.
5. Постарался соблюсти оптимальность модулей.
Odines
Я использовал вашу базу для допиливания задачи до окончательного ума и, кстати, обнаружил, что в отчете остатков вы использовали в выражении "Период" - КонецПериода(&Период,"День")
интересно это зачем?
Tiger_x
Я бы прокомментировал, но думаю вам быстрей и понятней будет заглянуть в мое решение) (но я его посмотрел)
Кстати если кто чего найдет вдруг с неточностями, буду признателен.
-
Есть маленький нюанс.... Конструкция:
ДвижОст = Движения.ОстаткиНоменклатуры;
ДвижОст.Очистить();
// В зависимости от режима проведеняи устанавливаем "МоментИтогов" для получения остатков из регистров
// и блокируем очищаемые данные при оперативном проведении (например на случай отмены транзакции)
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
ДвижОст.БлокироватьДляИзменения = Истина;
ДвижОст.Записать();
не отработает, так как набор пустой и собственно блокировать будет нечего......
-
Чтобы было понятно, то вот всеполезная ссылка ;)
http://1c.chistov.pro/2013/07/blog-post_25.html
-
Да, все верно прав на все 100%. И я теперь более детально разобрался что да как.
-
Odines
Я использовал вашу базу для допиливания задачи до окончательного ума и, кстати, обнаружил, что в отчете остатков вы использовали в выражении "Период" - КонецПериода(&Период,"День")
интересно это зачем?
Что бы остатки получались на конец выбранной даты а не на начало. Если пользователь установит период 31.03.2010 то без этой конструкции остатки будут получены на 31.03.2010 00:00:00 а с этой конструкцией на 31.03.2010 23:59:59
-
Odines
Я использовал вашу базу для допиливания задачи до окончательного ума и, кстати, обнаружил, что в отчете остатков вы использовали в выражении "Период" - КонецПериода(&Период,"День")
интересно это зачем?
Что бы остатки получались на конец выбранной даты а не на начало. Если пользователь установит период 31.03.2010 то без этой конструкции остатки будут получены на 31.03.2010 00:00:00 а с этой конструкцией на 31.03.2010 23:59:59
Это конечно отдельная тема, но в таком случае необходимо передавать границу включая или плюс секунда. Если есть желание, то можете проверить введя несколько документов на 23:59:59 и получите, что остаток получается без учета движений документов с таким временем.
-
Что-то не воткну как правильно разрешить следующую ситуацию: в одной РасходнойНакладной 2 позиции номенклатуры по разной цене?
В таком случае МАКСИМУМ(Количество) в итогах по Номенклатуре на верхнем уровне выборки даёт неправильное количество. Если же сделать СУММА(Количество), то тоже будет неправильно, т.к. может быть несколько соединений.
-
У Вас видимо нет признака партии.
-
Почему нет? Есть. Только что это меняет?
-
А зачем Вам в расходной получать цену продажи?
-
Сама цена мне, конечно, не нужна. Из расходной мне нужна выручка, которая в свою очередь зависит от цены (да, у меня в расходной есть цена, на основе которой считается выручка).
Просто для контроля работоспособности отчета было лень заводить вторую расходную и я решил в одном документе расходовать две куртки по 200 и одну по 220 (что привело к ошибке). Расходование в рамках одной партии по разной цене противоречит партионности?
-
Выручка - это разница между суммой продажи и себестоимостью. Сумму можно запросом получить в результате группировке по номенклатуре.
-
Сумму можно запросом получить в результате группировке по номенклатуре.
Спасибо, кажется разобрался. Видимо, случайно выбрал в запросе цену, чем себя и запутал.
-
Смотрел несколько вариантов как делают эту задачу, везде ПустуяСсылку для партии, но каждый использует по-разному.
Представляю свой вариант для обсуждения, в этом варианте списание товара по средней использует реальную ссылку на партию, а не ПустуюСсылку. Необходимые строчки прокомментированы, чтобы понять мои действия.
В задаче есть условие ”Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться”.
1 – «Считается, что документы задним числом не вводятся», проверяем дату документа с текущей датой и если не совпадает, то документ не записываем.
2 – «но старые документы могут неоперативно перепроводиться», необходимо использовать последовательности или как то по-другому, так как если в старом документе мы удалим товар и перепроведем документ, это приведет к не актуальным остаткам.
Как сделать правильно, чтобы удовлетворить данное условие?
-
Оригинальное решение.
В моем решении (если можно так выразиться, ибо задача избита не одним человеком) тоже партии не пустые.
Кстати, почему ты блокируешь регистр после выполнения запроса?
В задаче есть условие ”Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться”.
1 – «Считается, что документы задним числом не вводятся», проверяем дату документа с текущей датой и если не совпадает, то документ не записываем.
2 – «но старые документы могут неоперативно перепроводиться», необходимо использовать последовательности или как то по-другому, так как если в старом документе мы удалим товар и перепроведем документ, это приведет к не актуальным остаткам.
Как сделать правильно, чтобы удовлетворить данное условие?
Если я не ошибаюсь, то все довольно просто:
1) Когда говориться считается, то это означает, что как раз таки контроль и не надо реализовывать. Т.е. условно за этим следит пользователь. В ином случае было бы сказано типа "Документы вводить задним числом нельзя". На мой взгляд реализовывать простейший контроль на экзамене глупо, никаких знаний он не проверяет, а отнимает время.
2) Здесь я понимал так, что нужно организовать корректное проведение задним числом. Изменения в документе не описывается, только перепроведение. Так что не стоит, я думаю, усложнять последовательностями. Если только вдруг найдется простое лаконичное решение для этого. Хотя если подумать, условие с подвохом.
-
Есть вопрос про блокировку, насколько критично на экзамене использовать такую конструкцию:
ЭлеменБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлеменБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();
, т.е. не получать запросом, а напрямую брать таблицу.
О всех тонкостях я понимаю, интересует экзамен, меня за это накажут минус балы, спросят почему так или будет все равно?
Мое решение ниже, буду рад любым комментариям. Спасибо.
-
Есть вопрос про блокировку, насколько критично на экзамене использовать такую конструкцию:
ЭлеменБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлеменБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();
, т.е. не получать запросом, а напрямую брать таблицу.
О всех тонкостях я понимаю, интересует экзамен, меня за это накажут минус балы, спросят почему так или будет все равно?
Без разницы. Для экономии времени лучше получать указывая таблицу. Но никто не мешает блеснуть оптимальным вариантом)
-
Прошу прокомментировать и мое решение Задачи 1.5.
База заполнена данными из задачи, так удобнее проверять =)
Списание По средней учел, документом Партии могут быть как ПриходнаяНакладная, так и ИзменениеУчетнойПолитики (в зависимости от действующего МетодаСписания) + все списание через партионный учет.
-
Коллеги, будьте добры, посмотрите? Очень много вопросов возникло при решении этой задачи, хотелось бы обсудить с гуру 1С ;)
Пожалуйста...спать не могу теперь спокойно
-
program1Cer посмотрел ваш вариант и у меня вопрос, почему в расходной накладной
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
момент времени не включает движения документа, разве не должно ли быть новый граница(моментВремени(), ВидГраницы.Включая)
?
И еще вопрос, какой отчет у задачи 1.5 должен быть, как здесь: https://docs.google.com/document/d/19Cv6COjMRcN_qDLbiWmYwp686IXpxE9GHHzQkpa2rME/edit?pli=1#heading=h.z35lh02j0fou или как в сборнике
-
Всем привет! Подскажите, а сколько должно быть регистров для решения этой задачи? Посмотрела в комментах сдававших. И там кто как пишет. Кто на одном делает, кто на 2-х. Я сделала на 2-х. Первый РН ОстаткиНоменклатуры. Изм. Номенклатура, Партия. Рес. Количество, Стоимость. Второй РН Продажи. Оборотный. Изм. Номенклатура. Рес. Количество, Выручка, Себестоимость. Подсмотрела это решение вот по этой ссылке. http://v2.ax-online.ru/Exams/AttPlatf/Task-1.1.aspx
-
Приветствую!
Размещаю свой вариант решения 1.5 - посмотрите пожалуйста!
Обуревают меня сомнения по поводу количества регистров остатков и схемы решения.
я использовал три регистра - остатки, себестоимость(по партиям), продажи. Остатки используются для реализации проведения по новой методике. Хотя можно было обойтись и 2мя регистрами (ОстаткиПоПартиям и Продажи) и использовать старую методику. Правильно ли использовать три регистра?
Так же вопрос по отчету "Остатки товаров" в сборнике задач четко видно что итоги по номенклатуре выделены жирным шрифтом (или мне это только кажется?) - подскажите пожалуйста каким образом это реализовать на СКД.
-
Я вот так сделал
-
И еще один вариант решения!
-
Я вот так сделал
В обработке проведения документа "Приходная накладная" довольно интересное для меня решение с анализом метода списания и дальнейшей обработкой результата условия.
В обработке проведения документа "Изменения учетной политики":
1) в запросе строка "Для Изменения" довольно поучительна для меня, т.к. я в своем решении не обратил на это внимание.
2)там же в обработке проведения для чего вы устанавливаете в качестве партии ссылку документа "Изменение учетной политики"?
При списании по средней партионный учет фактически отсутствует, насколько мне известно.
3) довольно сложное условие МетодСписания = средняя ИЛИ Значение = Средняя И МетодСписания<>Значение
-
Не нашел ни одного полностью корректного решения.
Подготовил свой вариант, где решил данную задачу согласно всем требованиям.
-
Не нашел ни одного полностью корректного решения.
Подготовил свой вариант, где решил данную задачу согласно всем требованиям.
Солидарен с вашим вариантом (сделал почти все также как у вас за исключением проставления партии дока при политике по средней). До сих пор не могу понять это ошибка или нет... Если не указана партия, то все равно по фифо и лифо будет работать... и если политика изменятся станут добавляться партии..
И судя по статье Чистова при оперативном движение все же надо очищать движения
Или при записи они 100% очищаются???
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
// При оперативном проведении остатки получаются из таблицы итогов без исключения движений самого документа, поэтому их надо явно исключить
Движения.ОстаткиНоменклатуры.Записать();
КонецЕсли;
И еще заметил у вас в доке расходной накладной в запросе
|ИТОГИ
| МАКСИМУМ(Количество),
| СУММА(КоличествоОстаток),
| МАКСИМУМ(Сумма),
| МАКСИМУМ(Услуга)
не хватает
| СУММА(СуммаОстаток),
Но это уже лирика!
-
Господа, смотрите как реализован метод оценки МПЗ в типовых конфигурациях, к примеру УТ10 и УТ11 и делайте выводы касательно адекватности решения этой задачи.
-
Господа, смотрите как реализован метод оценки МПЗ в типовых конфигурациях, к примеру УТ10 и УТ11 и делайте выводы касательно адекватности решения этой задачи.
Ваш комментарий не о чем: учет себестоимости в УТ 10 (классический партионный учет) и УТ 11 (РАУЗ) отличаются кардинально.
Мое решение удовлетворяет требования задачи описанной в билете.
-
Kron,
Скажите, при изменении политики, почему сторно делали приходом с минусом, а не расходом? И как я понял, при переходе с среднего на фифо\лифо, партия остается только одна, такой вариант проходит на экзамене?
-
bad_wag,
1. Приход с минусом в данном случае является сторно (сторно остатков). Расходом закрывать остатки не корректно с точки зрения учета: расход означает списание, а у нас как такового списания нету.
2. Методически данная задача может решаться несколькими путями, и какой из них верный можно долго рассуждать. В своем решении я воспользовался подсказкой Белоусова Павла (представитель фирмы 1С) вот в этой ветке: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=551707#551707
-
Мое решение, покритикуйте пожалуйста.
-
Прохожу курсы по подготовке к аттестации специалиста по платформе.
Сделал решение на основании того, что преподают на данных курсах.
Буду рад конструктивной критике )
-
В отчете Продажи показано, что продано 3 замшевых куртки с себестоимостью 300.
Вопрос: как получилась эта цифра, если по 100 рублей курток всего две?
-
В отчете Продажи показано, что продано 3 замшевых куртки с себестоимостью 300.
Вопрос: как получилась эта цифра, если по 100 рублей курток всего две?
Курток две по 100 по состоянию на 01.01.2010. А отчет продажи за 1й квартал. Мало ли сколько курток и по какой цене пришло в феврале или в марте
-
И судя по статье Чистова при оперативном движение все же надо очищать движения
Или при записи они 100% очищаются???
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
// При оперативном проведении остатки получаются из таблицы итогов без исключения движений самого документа, поэтому их надо явно исключить
Движения.ОстаткиНоменклатуры.Записать();
КонецЕсли;
так это же ошибка?
НЕ ПИШИ ТАК НА ЭКЗАМЕНЕ!
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Движения.ОстаткиНоменклатуры.Записать();
пиши так:
Движения.ОстаткиНоменклатуры.Записать();
Я уточнял!!!!Не делай мои ошибки )
Все верно, движения очищать нужно всегда. Вне зависимости от оперативного или неоперативного проведения.
-
Посмотрите мое решение, единственное что смущает - при отмене проведения отказ=истина, т.к. если к примеру 25 числа мы ввели учетную политику по средней, а у нас есть расходная накладная за 24-ое число, и, если мы отменим проведение у данной расходной накладной и по новой проведем, то будет списан товар с приходных накладных, а не с учетной политики, как правильно в такой ситуации делать?
-
Всем привет. Долго "въезжал" в переход FIFO\LIFO - ПоСредней и обратно. Сделал через пустую партию
-
Решил задачу 1.5. Использовал 3 регистра. Насколько это правильно? Посмотрите решение. Жду критики
-
LEX_CH
Ни на что не претендую сам только учусь и вот что я думаю про ваше решение.
1) Для того чтобы очистить движения нужно перед записью писать
Движения.НазваниеРегистра.Очистить();
2) Можно не создавать каждый раз новый объект Запрос, а лишь менять его текст и выполнять(косметика)
3) Не понятно зачем в одном из запросов временную таблицу помещаете во временную таблицу
4) Я бы использовал УБЫВ в тексте запроса потому что если начать редактировать текст запроса в конструкторе то 1С упростит его убрав ВОЗР
5) Отказ = Истина из цикла бы вынес или выше или ниже просто чтобы оператор выполнился один раз а не несколько (косметика)
6) Заменил бы
Если ДополнительныеСвойства.Проведен тогда
Движения.СебестоимостьНоменклатуры.Очистить();
Движения.СебестоимостьНоменклатуры.БлокироватьДляИзменения=Истина;
Движения.СебестоимостьНоменклатуры.Записать();
КонецЕсли;
на
Движения.СебестоимостьНоменклатуры.Очистить();
Если ДополнительныеСвойства.Проведен тогда
Движения.СебестоимостьНоменклатуры.БлокироватьДляИзменения=Истина;
Движения.СебестоимостьНоменклатуры.Записать();
КонецЕсли;
Очищать на всякий случай все равно надо и чтобы 2 раза не писать вынес бы из условия
7) В самом начале бы писал так
Движения.ОстаткиНоменклатуры.Записывать=Истина;
Движения.ОстаткиНоменклатуры.Очистить();
...
запись движении по регистру
...
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения=Истина;
Движения.Записать();
То есть установил флаг записи на регистр остатков, на всякий случай установил флаг очистки движении, и если я не ошибаюсь заблокировал товары по "старым"(те что были в движениях до очистки) и "новым"(те что сейчас будут записаны в регистр) товарам.
И да выгрузку если можно версии по старее.
-
Все рассуждают, да вот ни кто не пишет как в действительно правильно (из результата сдачи экзамена). Хотя чисто теоретически правильно именно через пустую партию.
Т.к. рассмотрим такую ситуацию:
* Ведется учет по ФИФО или ЛИФО.
* Сегодня с утра решили перевести на ПоСреднему
* Товары продолжают списываться по партиям. Какие-то партии успевают списаться по количеству в 0, а сумма остается (положительная или отрицательная)
* На следующий день решают, что надо бы вернуться назад на допустим ФИФО.
* Товары продолжают списываться по партиям.
А теперь вопрос, что станется с оставшейся суммой? Они продолжат висеть, потому что количество на них 0. И логикой они должны пропускаться
Вести на разных регистрах количество и сумму не вариант, т.к. при списании количества будет браться одна партия, а при списании суммы - другая. В следствии чего будет не сходиться себестоимость.
Второй момент из прочитанного. Тут поднималась проблема копеек, при расчете себестоимости. Ответственно, товарищи, вам заявлю её нет. Нет абсолютно ни каких оснований делать проверку на равенство количества на продажу и количества остатков. Ибо формула: Количество*СуммаОстаток/КоличествоОстаток - стопроцентно гарантирует не возможность её возникновения. Т.к. это математика. А её законы как известно непоколебимы. Объясню. Приоритет операций умножения и деления одинаков. А следователь машина сначала умножит количество и сумму, а уже потом разделит на количество остаток. В случае их равенства (количество и количествоостаток), по правилам математики, они взаимоисключаются и в итоге мы получаем чистый суммаостаток.
Но если мы изменим порядок исполнения этой операции (СуммаОстаток / КоличествоОстаток * Количество), возникновение копеек возможен. Т.к. в данном случае мы сначала уменьшим результат а потом увеличим. В следствии чего может возникнуть ситуация погрешности округления.
А меня вот интересует вопрос, не оперативного проведения документов. Если мы перепроводим документ прошлой датой, нужно ли восстанавливать последовательность. И если да, как, собственно, это сделать.
-
Ребята, только учусь. Решение не совсем индивидуальное.
Взял в некоторых местах с разных решений рабочий код и добавил свои правки.
Может кому пригодиться.
-
Всем привет. Долго "въезжал" в переход FIFO\LIFO - ПоСредней и обратно. Сделал через пустую партию
Подкорректировал
-
Что-то я не понимаю, зачем пустая партия. Нельзя просто оставить также списывать кол по партиям при переходе на среднюю, а себестоимость считать по средней по итогам по номенклатуре из запроса без учета партии? Чем это плохо?
-
Привет всем, мое решение.
-
Здравствуйте. Смотрю давно никто не выкладывал и не делится. Меньше стало желающих?
По задаче как я понял два основных вопроса
1)Как обыграть условие "старые документы могут неоперативно проводиться"
2) Переход между способами списания
По п.1 мне понравилось решение,чтобы прописать условие, хотя технически обосновать для себя не смог т.е. и без этого работает корректно при перероведении старых документов. Может кто разъяснит?
Если Режим = РежимПроведенияДокумента.Оперативный ТОгда
Движения.ОстаткиНоменклатуры.Записать();
КонецЕсли;
По п.2. Здесь условие в двух местах.
а) В документе ИзменениеУчетнойПолитики в обработке проведения прописал условие - если метод списания Средняя, то списываем все партии какие есть до текущего момента, и приходуем соответствующие товары этих партий, но с указанием в качестве партии документа ИзменениеУчетнойПолитики.
б) При проведении РасходнаяНакладная проверяем - если ПоСредней, то себестоимость списания считаем на уровне итогово по номенклатуре в целом, а не по партии.
Выкладываю свое решение. Посмотрите кому интересно. Ну и если есть возможность конструктивно покритиковать :)
-
Привет всем, мое решение.
Спасибо за решение , по моему "ПриходнуюНакладную" не надо так усложнять , например излишне проверка Учетной политики, потому что знать какая политика нужно только при списании, а на момент принятия товара по моему без разницы какая политика списания, ведь товар все равно надо принять в любом случае хоть списание потом будет по СРЕЕДНЕЙ хоть по ФИФОЛИФО, если я не правильно размышляю то поправьте меня
-
В общем подумал и решил выложить свой вариант, все говорят о том что если на среднюю резко поменяется, так вот я решил что по среднему тоже списывается из определенных партий и поэтому указал их в качестве списания. чтобы если в будущем перешло на ФИФО, ЛИФО, то не получилось что партий больше чем необходимо
-
Привет всем, мое решение.
Спасибо за решение , по моему "ПриходнуюНакладную" не надо так усложнять , например излишне проверка Учетной политики, потому что знать какая политика нужно только при списании, а на момент принятия товара по моему без разницы какая политика списания, ведь товар все равно надо принять в любом случае хоть списание потом будет по СРЕЕДНЕЙ хоть по ФИФОЛИФО, если я не правильно размышляю то поправьте меня
Да, все верно, но если политика будет ПО СРЕДНЕЙ, то партия товаров должна указываться не документ поступления, а что-то общее (я взял документ, которым меняют учетную политику).
-
Что-то я не понимаю, зачем пустая партия. Нельзя просто оставить также списывать кол по партиям при переходе на среднюю, а себестоимость считать по средней по итогам по номенклатуре из запроса без учета партии? Чем это плохо?
В этом случае будет проблема копеек и регистр в ноль не выйдет. Тк будет списание каждой партии по средней себестоимости. Либо будет неверно посчитана себестоимость списания (в какой-то момент она будет сильно отличаться от средней).
А это ошибка. При переходе на среднюю весь остаток должен быть оприходован как одна партия.