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

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

Название: 1.5
Отправлено: tyes4 от Июль 12, 2010, 10:05:38 am
Посмотрите, пожалуйста, кому не лень=)
Вложения:
1_5_tyes4.dt
Название: 1.5
Отправлено: 1C_CoderVamp от Июль 16, 2010, 05:09:52 pm
Quote
//Проблема копеек
 СуммаСписания = ?(Движение.Количество = Выборка.КоличествоОстаток,
 Выборка.СуммаОстаток,
 Выборка.СуммаОстаток / Выборка.КоличествоОстаток * Движение.Количество);

Можно так:
 

Code
СуммаСписания = Движение.Количество / Выборка.КоличествоОстаток * Выборка.СуммаОстаток

Не совсем понял зачем нужно это:

Quote
Движение.СуммаПродажи = Выборка.Цена*КоличествоСписания;

Почему нельзя было в запросе сразу выбрать сумму?

Но, в целом, вроде хорошо! Лично мне понравилось wink

Название: 1.5
Отправлено: tyes4 от Июль 16, 2010, 05:18:46 pm
На курсах особо обращали внимание на "проблему копеек", что всегда и везде, поэтому и написала =)
Название: 1.5
Отправлено: 1C_CoderVamp от Июль 21, 2010, 11:03:27 am
Вот оно, на мой скромный взгляд, идеальное решение!!! cool Шучу, но задача - отрыв башки........

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

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

Добавлено (21.07.2010, 11:03)
---------------------------------------------
Опять никого...... sad

Да помогите-же вы человеку, посмотрите ДТ'шник, оставьте пару комментариев, это займет всего 10 минут)) Вам не сложно, а мне приятно wink


Вложения:
105_1CCoder.dt
Название: 1.5
Отправлено: Bepa от Июль 22, 2010, 04:33:37 pm
сегодня посмотрю.
 Только не поняла, зачем перепроводить доки задним числом?
 Вообще, задачка широко обсуждалась и на этом форуме, и на одноэсовском форуме.
 И, если не ошибаюсь, для 8.1 на инфостарте Павел выкладывал решение.
Название: 1.5
Отправлено: 1C_CoderVamp от Июль 22, 2010, 05:14:39 pm
Quote (Bepa)
Только не поняла, зачем перепроводить доки задним числом?

 Так сказано в условиях задачи, если учетная политика меняется задним числом (а по условию задачи это может быть сделано), то должны быть восстановлены все последующие движения
Название: 1.5
Отправлено: Bepa от Июль 22, 2010, 06:02:54 pm
у меня сборник старый (новый возьму только завтра), так в нем нет ничего о том, что политика изменяется задним числом. Каждый день - да, но не задним.
Название: 1.5
Отправлено: 1C_CoderVamp от Июль 22, 2010, 06:20:19 pm
Quote (Bepa)
у меня сборник старый (новый возьму только завтра), так в нем нет ничего о том, что политика изменяется задним числом. Каждый день - да, но не задним.

Вот выдержка из сборника 8.2
 

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

А это выдержка из старого сборник 8.1
 

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

Одно и тоже, хотя не исключено, что я не так понял смысл этой фразы, но поскольку уважаемая 1С не уточняет какие именно документы могут неоперативно проводится, то я сделал так, как оно есть сейчас))

Название: 1.5
Отправлено: Bepa от Июль 22, 2010, 06:36:07 pm
Документы - расходные.
 не надо усложнять ничего smile
Название: 1.5
Отправлено: Zhora_Vlg от Август 17, 2010, 04:48:09 pm
Quote (Bepa)
Документы - расходные.
 не надо усложнять ничего

 Поясните почему Вы так уверены, что только расходные?

Добавлено (17.08.2010, 16:29)
---------------------------------------------
Подскажите, пожалуйста, можно ли данный код      
 

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

 заменить предложением "ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.ОстаткиНоменклатуры.Остатки" в запросе?

Добавлено (17.08.2010, 16:48)
---------------------------------------------
Ещё вопрос.
 Проверять, что новый документ вводится задним числом, нужно в "ОбработкаПроверкиЗаполнения", или как все делают в "ПередЗаписью"?

Название: 1.5
Отправлено: old_guest от Август 17, 2010, 05:56:37 pm
Zhora_Vlg, имхо блокировку лучше в запросе делать.
Название: 1.5
Отправлено: 1C_CoderVamp от Август 17, 2010, 06:08:33 pm
Quote (Zhora_Vlg)
или как все делают

 если все так делают, то это еще не значит что это правильно wink

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

Название: 1.5
Отправлено: napan от Август 18, 2010, 10:29:13 pm
Решил так....Может кто проверит (интересует в основном списание по средней, там же партии все таки в одном регистре) . Спасибо заранее
Вложения:
3400157.dt
Название: 1.5
Отправлено: aworld от Август 20, 2010, 02:07:47 pm
1C_CoderVamp, при проведении документа ИзменениеМетодаСписания когда делаешь приход по регистру остатков то лучше наверно группировать строки по номенклатуре ?

Добавлено (20.08.2010, 13:03)
 ---------------------------------------------
 

Code
  Пока Выборка.Следующий() Цикл
       
     Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход();
     ЗаполнитьЗначенияСвойств(Движение,Выборка);
       
     //Движение = Движения.ОстаткиНоменклатуры.ДобавитьПриход();
     //ЗаполнитьЗначенияСвойств(Движение,Выборка);
     //Движение.Партия = Ссылка;
       
    КонецЦикла;
      
    ТЗ = Движения.ОстаткиНоменклатуры.Выгрузить();
    ТЗ.ЗаполнитьЗначения(Ссылка,"Партия");
    ТЗ.Свернуть("Период, Партия, Номенклатура","Количество, Сумма");
    Для Каждого Строка Из ТЗ Цикл
     Движение = Движения.ОстаткиНоменклатуры.ДобавитьПриход();
     ЗаполнитьЗначенияСвойств(Движение,Строка);
    КонецЦикла;
 
Название: 1.5
Отправлено: aworld от Август 20, 2010, 03:42:46 pm
napan, решение не верное, прикрепляю твою конфу, глянь отчет по остаткам на 20 августа
 имхо надо делать как у вампкодера smile

Добавлено (20.08.2010, 15:42)
 ---------------------------------------------
 Только мне кажется, что не ссылку нужно в качестве партии прописывать, а пустую ссылку, чтобы потом все строки нормально сложились, и можно было списывать по средней.
 На это можно сказать, что тогда это уже не будет партионным учетом, как якобы требуется в задаче, потому что какая партия может быть без даты? Но обращаю внимание на цитату Белоусова П. из ветки форума 1с по задаче 1.5:
 

Quote

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

Вложения:
napan15.dt
Название: 1.5
Отправлено: Zhora_Vlg от Август 20, 2010, 04:03:13 pm
Вот мой вариант.
Вложения:
Zhora_Vlg-1.5.dt
Название: 1.5
Отправлено: aworld от Август 20, 2010, 06:11:48 pm
а вот мой =)
Вложения:
1.5.dt
Название: 1.5
Отправлено: Zhora_Vlg от Август 20, 2010, 06:57:25 pm
Quote (aworld)
а вот мой =)

В движения влияющие на последовательность необходимо включить регистр сведений "УчетнаяПолитика". Без этого если в имеющемся документе "ИзменениеУчетнойПолитики" изменить метод списания с ФИФО на ЛИФО или наоборот, граница последовательности не будет перемещена.

Добавлено (20.08.2010, 18:49)
---------------------------------------------
При приходовании товара Вы не учитываете учетную политику.

Добавлено (20.08.2010, 18:51)
---------------------------------------------

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

 Это лишнее, зачем Вы это делаете?

Добавлено (20.08.2010, 18:57)
---------------------------------------------
В расходной наклодной по услугам у Вас не будет движений.

Название: 1.5
Отправлено: aworld от Август 20, 2010, 09:33:19 pm
Quote
При приходовании товара Вы не учитываете учетную политику.

 согласен. если УП = по средней тогда партия = пустая ссылка
 
Quote
Это лишнее, зачем Вы это делаете?

 чтобы очистить набор записей. смотрел курсы Евгения Гилева по 8.2, там говорится что платформа 8.2 очищает движения сама только при отмене проведения
 
Quote
В расходной наклодной по услугам у Вас не будет движений.

 да в продажи их следовало записать, но это мелочи жизни)

Добавлено (20.08.2010, 21:33)
 ---------------------------------------------
 По поводу последовательностей:
 в чем разница когда я указываю в составе последовательности только документ, и когда я указываю документ и регистр?

Название: 1.5
Отправлено: Zhora_Vlg от Август 21, 2010, 03:29:33 pm
Quote (aworld)
в чем разница когда я указываю в составе последовательности только документ, и когда я указываю документ и регистр?

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

Так например при изменении метода списания с ФИФО на ЛИФО в документе "ИзменениеУчетнойПолитики" не приведет к движению в регистре "ОстаткиНоменклатуры", следовательно и граница последвательности не сместится назад, хотя в рамках учета должна смещаться. Ведь все документы проведены по ФИФО а в результате изменений должны быть по ЛИФО.

Название: 1.5
Отправлено: aworld от Август 21, 2010, 03:44:32 pm
Zhora_Vlg, ясно . спасибо. А насчет очистки наборов что скажешь?
Название: 1.5
Отправлено: sv_mikh от Август 21, 2010, 05:35:38 pm
Quote (1C_CoderVamp)
Да помогите-же вы человеку, посмотрите ДТ'шник, оставьте пару комментариев, это займет всего 10 минут)) Вам не сложно, а мне приятно

 Посмотрел Ваше решение. Мне понравилось. Красиво пишите smile
 1. Восстановление для понта делали свое? Есть же стандартное
 2. Док. расходная накладная блокировку делаете, но не блокируете (.Заблокировать()).
 3. Док изменения УП. Принудительно устанавливаете на документ границу последовательности при изменении... А если граница была ранее?
 А так - приятно было посмотреть. Глубже не копал пока.
Название: 1.5
Отправлено: Zhora_Vlg от Август 22, 2010, 01:55:22 pm
aworld, вот выдержка из справки.
 
Quote
Удаление движений

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

Название: 1.5
Отправлено: aworld от Август 22, 2010, 02:10:29 pm
Оно задает автоматическое удаление всех записей при перепроведении или отмене проведения документа
 Если стоит режим "Удалять автоматически при отмене проведения", то при перепроведении удаляться движения не будут. Об этом написано у Радченко.
Название: 1.5
Отправлено: Zhora_Vlg от Август 22, 2010, 07:49:01 pm
aworld, так если поставить "Удалять автоматически" все будет в порядке.

Но в нашем случае, вообще не важно были удалены движения или не были. "МоментВремени()" выдает позицию времени до движений документа. А в запросе мы получаем данные именно на "МоментВремени()"

Название: 1.5
Отправлено: aworld от Август 22, 2010, 08:11:01 pm
верно
Название: 1.5
Отправлено: 1C_CoderVamp от Август 23, 2010, 10:30:35 am
sv_mikh,
 на первый и третий пункты были свои причины, а вот по поводу второго - ХЗ, забыл наверное)
 
Quote (sv_mikh)
А так - приятно было посмотреть. Глубже не копал пока.

 копайте) объективная критика - это хорошо, хотя, как говорили великие умы - любая критика имеет право на жизнь
Название: 1.5
Отправлено: napan от Август 23, 2010, 10:52:05 am
Quote (aworld)
А насчет очистки наборов что скажешь?

Делать Очистить() не надо! Это точно. Достаточно написать Движения.ОстаткиНоменклатуры.Записать(). Перед Блокировкой делаешь Движения.ОстаткиНоменклатуры.Записать() - создаешь чистую запись движения (тем самым ты уже очищаешь Движения по этому регистру для этого документа(регистратора)) и затем делаешь БлокировкуДанных, а потом запросом заполняешь движение....

Вот переделал списание по средней


Вложения:
0588822.dt
Название: 1.5
Отправлено: Zhora_Vlg от Август 23, 2010, 03:14:46 pm
Quote (Zhora_Vlg)
Но в нашем случае, вообще не важно были удалены движения или не были. "МоментВремени()" выдает позицию времени до движений документа. А в запросе мы получаем данные именно на "МоментВремени()"

Что то, где то я тут не прав.
 Как я только что заметил, при оперативном перепроведении учитываются движения текущего документа, если их не очистить.
 А при неоперативном не учитываются.

Я так понял что это связано с тем, что при оперативном перепроведении меняется время документа на текущее, и "МоментВремени()" возвращает значение уже с новым временем. При этом движения имеют старое время и попадают в выбранный период.

Название: 1.5
Отправлено: Andreich от Сентябрь 02, 2010, 09:17:30 pm
1. А если сменить учетную политику с "По средней" на "ФИФО*ЛИФО", как решать проблему структурирования остатков по партиям? Вообще задачка интересненькая, хоть и небольшая. Я думаю, при переходе на политику "По средней" партию нужно оставлять пустой. Но тогда возвращаемся к вопросу № 1. cool
Название: 1.5
Отправлено: User67 от Сентябрь 07, 2010, 09:07:01 pm
Подскажите для самообразования) Как правильней при старой методике проведения: сначала очищаем движения, потом накладываем блокировку (как обычно в примерах показывают) или сначала блокируем. Просто Если заблокировать не получится зачем очищать?

Добавлено (07.09.2010, 21:07)
---------------------------------------------
Сравнил три выложенные конфигурации (1.5.dt,3400157.dt,Zhora_Vlg-1.5.dt) и везде отличается математика списания в расходной накладной. napan В случае списания по средней берет общую себестоимость, но при этом может получиться что по этой партии поступила одна сумма, а списывается совсем другая - например пришло 10 на 100 р, потом списываем 9 и средняя допустим 15 р, то будет вычитаться 135. В решении Zhora_Vlg, списывается себестоимость по каждой партии, т.е. при списании по средней только приходная с пустой партией записывается и все. Может я что-то не уловил, поясните по возможности пожалуйста. Да в примере отчета остатков (задание) все партии заполнены, пустых партий нет.

Название: 1.5
Отправлено: ut2k5 от Сентябрь 09, 2010, 12:29:04 pm
1C_CoderVamp, в твоем решении метод списания стоит в измерении, надо бы его в ресурс - регистр сведений без измерений
 на мой взгляд ошибочка....
 и еще вопрос, а разве не будет ошибкой если два разных текста запроса в расходной?... в зависимости от метода списания
 но с другой стороны одним запросом не реально, а если и реально, то громоздко...
Название: 1.5
Отправлено: ut2k5 от Сентябрь 10, 2010, 03:13:12 pm
люди, внимание, задача решается одним запросом в расходной накладной, если учесть расчет себестоимости просто на разных уровнях группировки... т.о. при средней партию списывать надо как при фифо, плиз покритикуйте...

Добавлено (10.09.2010, 15:13)
---------------------------------------------
ау..., народ Вы где, посмотрите мое решение плиз, очень интересны Ваши мнения...


Вложения:
Quest_1_5.dt
Название: 1.5
Отправлено: Mихаил от Сентябрь 16, 2010, 01:32:57 pm
Quote (napan)
Вот переделал списание по средней
 Прикрепления: 0588822.dt(223Kb)

1.какой смысл выделять в документе расходная накладная "списание по средней"? мне кажется, списание по средней корректно выполнялось бы той же самой процедурой "СписаниеЛИФО_ФИФО".

2. в документе "Учетная политика" установлен режим блокировки "автоматический". есть ли смысл тогда при его проведении использовать управляемые блокировки?

Название: 1.5
Отправлено: ut2k5 от Сентябрь 16, 2010, 01:51:05 pm
Mихаил, есть ли смысл тогда при его проведении использовать управляемые блокировки?
 конечно есть, ведь у все конфигурации стоит "управляемый", следовательно у объекта это свойство игнорится, а не игнорится когда у всей конфы стоит "автоматический и управляемый"
Название: 1.5
Отправлено: Mихаил от Сентябрь 19, 2010, 07:25:56 pm
Quote (napan)
Вот переделал списание по средней
 Прикрепления: 0588822.dt(223Kb)

В документе "Учетная политика" есть кусок кода:

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

Я так понимаю, что блокировка в данном случае не сработает, так как не задан ни один элемент объекта "Блокировка".
 В данном случае, наверно, регистр надо блокировать методом "ЗаблокироватьДанныеДляРедактирования()"..., может кто подскажет?

Название: 1.5
Отправлено: 1C_CoderVamp от Сентябрь 19, 2010, 11:11:25 pm
Quote (ut2k5)
и еще вопрос, а разве не будет ошибкой если два разных текста запроса в расходной?... в зависимости от метода списания
 но с другой стороны одним запросом не реально, а если и реально, то громоздко...

 решения, которые представляются на экзамене в принципе не могут быть оптимальными... к тому-же как мне сказал на экзамене преподаватель: "Если запрос большой, значит там что-то не так...", так что не стоит стремится сделать все супер оптимально, нужно сделать все супер быстро и чтобы работало
Название: 1.5
Отправлено: aworld от Сентябрь 20, 2010, 01:39:53 am
1C_CoderVamp, видимо этот преподаватель не видел запросов в типовых конфигах) особенно ЗУП )
 там рука устает скроллить эти запросы)
Название: 1.5
Отправлено: 1C_CoderVamp от Сентябрь 20, 2010, 10:39:40 am
Quote (aworld)
видимо этот преподаватель не видел запросов в типовых конфигах) особенно ЗУП )
 там рука устает скроллить эти запросы)

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

К тому же, сравни объем данных, который хранится в типовом ЗУП'е и объем данных в задаче на экзамене, в ЗУП'овских запросах данные порой разбиваются на добрый десяток регистров, а на задаче для экзамена их всего десяток (и расчетных, и накоп., и сведений)

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

Поэтому, лично я считаю, не стоит заморачиваться на том сколько у вас запросов в модуле (1 или 2), если вы можете быстро составить большой и красивый запрос, то вперед, но если вы знаете, что с этим возникнут трудности, то оставьте, это не столь принципиально, преподавателю всегда можно будет объяснить свою точку зрения, НО, опять же, я говорю о выездном экзамене

Название: 1.5
Отправлено: Mихаил от Сентябрь 20, 2010, 05:14:02 pm
Не могу понять свойство документа "Удаление движений": "Удалять автоматически при отмене проведения".
 В теории это в частности означает, что движения не удаляются автоматически при перепроведении уже проведенного документа.

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

Если прописать в модуле документа в процедуре проведения следующий текст:

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

Документ перепроводится сколько угодно раз, и движения не задваиваются, не дублируются...
 Видимо все-таки движения как-то удаляются, но почему и в какой момент?

Подскажите плиз где я заблуждаюсь, заранее спасибо

Название: 1.5
Отправлено: 1C_CoderVamp от Сентябрь 20, 2010, 05:29:42 pm
Quote (Mихаил)
Подскажите плиз где я заблуждаюсь, заранее спасибо

 Движения не удаляются, они замещаются. Это надо понимать, так работает платформа. Документ записывает свои движения набором записей, новый набор замещает старый.

Почему создается иллюзия, что все работает как надо: в 8.1, еще до обработки проведения, движения документа в регистре очищались, в 8.2 этого не происходит, т.е. если в 8.1 до твоего кода ты сделаешь: "Движения.ОстаткиНоменклатуры.Прочитать()", то ты получишь пустую таблицу, а в 8.2 (по новой методике) ты получишь движения документа выдранные из регистра.

Попробуй добавить строчку "Движения.ОстаткиНоменклатуры.Прочитать()" и ты увидишь что получится )
 А потом попробуй сделать тоже самое по старой методике

Название: 1.5
Отправлено: aworld от Сентябрь 20, 2010, 05:55:28 pm
1C_CoderVamp, у меня почему-то уже по-маленьку складывается мнение что на очном экзамене можно втолдычить экзаменатору что белое это черное, а черное это белое smile народ совершенно по-разному решает задачи, главное чтобы была какая-то логика в решении smile
Название: 1.5
Отправлено: 1C_CoderVamp от Сентябрь 20, 2010, 06:31:12 pm
Quote (aworld)
у меня почему-то уже по-маленьку складывается мнение что на очном экзамене можно втолдычить экзаменатору что белое это черное, а черное это белое народ совершенно по-разному решает задачи, главное чтобы была какая-то логика в решении

 в смысле?

Добавлено (20.09.2010, 18:31)
---------------------------------------------

Quote (aworld)
можно втолдычить экзаменатору что белое это черное, а черное это белое

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

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

Название: 1.5
Отправлено: Mихаил от Сентябрь 20, 2010, 06:58:21 pm
1C_CoderVamp, понял, спасибо
Название: 1.5
Отправлено: 1C_CoderVamp от Сентябрь 20, 2010, 08:00:50 pm
Mихаил,
 всегда пожалуйста smile
Название: 1.5
Отправлено: aworld от Сентябрь 21, 2010, 09:39:42 am
1C_CoderVamp, всё что ты написал не противоречит моему посту, а только подтверждает его smile
 Мне как-то говорил мой преподаватель, что если решение красиво, то оно скорее всего правильно smile И я с ним в этом согласен. Как мне кажется все задачи должны решаться наиболее простым и логичным путем, если тебе пришлось накодить большую кучу, значит полез не в ту степь, или учел подводные камни, на которые никто смотреть не будет. Об этом надо думать на этапе проектирования уже. Зачастую компактность и простота решения зависит от структуры базы.
 но это всё оффтоп. надо заканчивать)
Название: 1.5
Отправлено: 1C_CoderVamp от Сентябрь 21, 2010, 12:34:00 pm
aworld,
 с тем, что ты написал сейчас я абсолютно согласен, но пост выше говорит совсем о другом... хотя ты прав что это оффтоп, завязываем smile
Название: 1.5
Отправлено: Незнайка от Сентябрь 23, 2010, 10:22:46 pm
Доброго времени суток, коллеги!
 Я новичок, поэтому не серчайте на мои глупые вопросы.
 Вот мне непонятно следующее: как отразить в конфе тот факт, что доки могут неоперативно перепроводиться?
 Благодарствую заранее.
Название: 1.5
Отправлено: Heckfy от Октябрь 01, 2010, 04:50:24 pm
Мое решение. smile
Вложения:
1.05.dt
Название: 1.5
Отправлено: Danan от Октябрь 15, 2010, 03:03:26 pm
Исходя из условия задачи( сборник задач 3 редакция, 4 абзац 1 предложение) у меня такое видение решения этой задачи:
 Учет товаров ведется также в разрезе партий, с партии списывается то или иное количество товара. А расчет стоимости будет производится с согласно учетной политике:
 Если FIFO или LIFO формула для расчета
 Стоимость = СписатьСПартии / КоличествоОстатокПоПартии * СтоимостьОстатокПоПартии.
 Если по средней формула для расчета
 Стоимость = СписатьСПартии / ОбщееКоличествоТовара * ОбщаяСтоимостьТовара;

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

Вот такие мои соображения в теории. Что получится на практике выложу на суд общественности.

Что то я ерунду сморозил также регистр в ноль не закроется.
 
 

ps Правильно ли я понимаю решение проблемы копеек?

Название: 1.5
Отправлено: detec от Октябрь 21, 2010, 04:11:41 pm
Насколько я видел в видеоуроке других преподавателей, для решения проблемы копеек нужно операции деления выносить в конец формулы, т.е. сначала нужно выполнять операции умножения.

Добавлено (21.10.2010, 16:11)
---------------------------------------------
Пересмотрел несколько примеров баз с форума поддержки 1С и базу 1C_CoderVamp . Также скачал с Инфостарта коллекцию решений Мананникова Вадима, (ник - manan). За исключением пары недочётов в рамках 8.2 самое адекватное решение - в базе 1C_CoderVamp. В рамках 8.1 самое адекватное решение, притом логически ясное и удобочитаемое - у manan. Единственный момент, который никак не обрабатывается программно в обоих решениях: если в тот же день, когда вводится новый документ смены учётной политики, уже были проведены один или несколько документов расхода. Я пробовал проводить эксперименты с данным условием и вот что получилось при перепроводке документов командой из меню "Все функции":

1. в базе 1C_CoderVamp себестоимость списания в таких документах начинаает меняться.

2. в базе manan себестоимость не плавает, но в регистр почему-то добавляется пустая строка по номенклатуре.

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

Если не углубляться в описанные выше дебри, то, ИМХО, нужно просто взять решение manan и переписать его с учётом платформы 8.2. И не заниматься велосипедостроением.

Название: 1.5
Отправлено: SergTH000 от Октябрь 21, 2010, 09:52:47 pm
detec, Велосипедостроением никто не занимается=) Больше пользы будет если попробовать решить задачу и выложить на суд, чем разобрать чужое решение, поэтому их здесь много (решений). Выложи решение манан если не сложно, интересно посмотреть=)
Название: 1.5
Отправлено: detec от Октябрь 22, 2010, 10:13:28 am
Выкладываю его конфу, платформа 8.1, задача 1.5.
Вложения:
1Cv8_manan_task.cf
Название: 1.5
Отправлено: StepaCV от Октябрь 28, 2010, 11:28:06 pm
Доброго время суток!
 В тексте задания 1.5, сборнике задач для подготовке к экзамену «1С:Специалист» по
 (8.2). редакция 3, июнь 2010. Цитата: «Списание себестоимости должно быть организовано по партиям, в зависимости от текущего значения принятого в учетной политике метода списания себестоимости (FIFO, по СРЕДНЕЙ или LIFO).
 Как можно списывать себестоимость партий «ПО СРЕДНЕМУ» ?
Название: 1.5
Отправлено: 1C_CoderVamp от Октябрь 29, 2010, 10:25:13 am
detec,
 решений одной и той-же задачи действительно много, но это то и хорошо smile
 Все решают по-разному и у всех на это есть свои мотивы. Основной мотив - это объективная критика. Ты же нашел значительный косяк и нашел оптимальное, на твой взгляд, решение) но ведь его кто-то до этого выложил, если покопаешься получше, найдешь еще пару интересных решений, и, в итоге, поймешь что можешь лучше и выложишь свое.
 Ну, и потом, это неплохая практика wink

Добавлено (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р.)
Название: 1.5
Отправлено: StepaCV от Октябрь 30, 2010, 12:58:34 pm
По среднему
 15шт. по 150р. ((100 * 10 + 200 * 10) / 20) без указания партий (итого 2250р.)

1.Если я буду списывать без указания партий, то у меня регистры в ноль не выйдут.
 2.Если подразумевается, что учетная политика один раз вводится, то зачем тогда в условии написано «УП может меняться каждый день, ее изменение фиксируется соответствующим документом»?

Название: 1.5
Отправлено: sada от Октябрь 30, 2010, 01:32:41 pm
StepaCV, без указания партии, это партия пустая ссылка, на нее оприходуеш и с нее же списываеш, тогда выйдут в 0. , регламентный документ при смене учетной полтики должен все партии списать и оприходовать на пустую, при переходе на расчет по средней
Название: 1.5
Отправлено: StepaCV от Октябрь 30, 2010, 01:51:36 pm
Спасибо, Sada, вот с данной идеей я солидарен.
Название: 1.5
Отправлено: gosn1ck от Ноябрь 02, 2010, 09:32:51 pm
добрый вечер, смотрю ваши решения и у меня несколько вопросов:
 1) вижу вот этот текст кода

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

 ошибкой ли будет его не использовать?
 2) обязательно ли тут использовать последовательность?
Название: 1.5
Отправлено: ut2k5 от Ноябрь 03, 2010, 03:17:52 pm
gosn1ck, что значит не использовать? а как ты собрался блокировать регистр?
 вот у меня на экзамене в БУ параметр "Счет" был заблокирован, а субконто я решил, что не обязательно, в итоге: "блокировка на регистр при проведении документа отсутствует"...

Добавлено (03.11.2010, 15:17)
---------------------------------------------
sada,

Quote
должен все партии списать и оприходовать на пустую, при переходе на расчет по средней
согласен,
 а вот если уч. политика обратно поменяется на LIFO или Fifo , на какую партию оприходовать?
Название: 1.5
Отправлено: sada от Ноябрь 03, 2010, 03:38:03 pm
ut2k5, тогда не надо ничего переделывать, в этот момент все товары будут на пустой партии, с нее и начинать списывать если FIFO, если на LIFO перешли, то с пустой в последнюю очередь.
Название: 1.5
Отправлено: ut2k5 от Ноябрь 03, 2010, 04:07:23 pm
sada, т.о. пустая партия будет приоритетной для списания.., согласен, но может все таки добавить составной тип у измерения "партия" = "прих. накладная" и "регл. док"? хотя в целом, ничего не меняет, так как все равно в разрезе пустой партии будет такая же себестоимость как и в разрезе этого же регламентного документа, ок согласен smile
Название: 1.5
Отправлено: sada от Ноябрь 03, 2010, 04:11:03 pm
ut2k5, может и имеет смысл , пока не думал над этим, задачку пока эту тоже не решал :)
Название: 1.5
Отправлено: ut2k5 от Ноябрь 09, 2010, 07:21:40 pm
перерешал заново:

Добавлено (09.11.2010, 19:21)
---------------------------------------------
кто нибудь смотрел?...


Вложения:
0577210.dt
Название: 1.5
Отправлено: hapcher от Ноябрь 30, 2010, 11:43:34 pm
ut2k5,
 1. зачем ставишь блокировку в приходной?
 2. в документе Установка учетной политики ты только у остатков ставишь пустую партию. Если отменить проведение какой-либо расходной накладной, у которой дата меньше даты установки метода списания - по-среднему, тогда появится остаток с не пустой партией. => партии нужно "затирать" у всех записей => придется перепроводить все документы прихода и расхода.
Название: 1.5
Отправлено: Boris-Leleko от Декабрь 01, 2010, 01:59:11 pm
Фраза "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно проводится", я так понимаю означает просто проверку перед записью проводится док сегодня или нет. Ни о каких последовательностях речь не идет.
Название: 1.5
Отправлено: hapcher от Декабрь 02, 2010, 10:38:55 pm
Quote (Boris-Leleko)
"Считается, что документы задним числом не вводятся, но старые документы могут неоперативно проводится"

 Если я правильно понимаю, эта фраза означает, что остатки в Расходной накладной мы должны получать на момент времени документа в не зависимости от оперативного/не оперативного проведения.
 Последовательности здесь действительно не при чем.
 Здесь пояснения к задаче дает Павел Белоусов http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=569477
Название: 1.5
Отправлено: InSurgent от Декабрь 03, 2010, 09:53:20 am
Это просто говорится для того, чтобы было реализовано корректное неоперативное перепроведение документов, а не только использовались текущие итоги.
Название: 1.5
Отправлено: ut2k5 от Декабрь 03, 2010, 02:17:03 pm
hapcher,
Quote
партии нужно "затирать" у всех записей

 не надо ничего затирать документ задним числом мы не можем снять с проведения, по условию "документы задним числом не вводятся" само собой подразумевает, что старые документы мы можем ТОЛЬКО ПЕРЕПРОВОДИТЬ, ничего другого с ними делать низя...
Название: 1.5
Отправлено: hapcher от Декабрь 06, 2010, 12:19:17 pm
ut2k5, вопрос №2 снят, разобралась и решила почти так же как ты.
 А что по поводу вопр. №1 (зачем ставишь блокировку в приходной?)
Название: 1.5
Отправлено: Danan от Декабрь 10, 2010, 10:54:09 am
В документе ИзменениеУчетнойПолитики при описании блокировки по идее необходимо заблокировать весь регистр ОстаткиНоменклатуры. Я так полагаю что тут блокировка должна выглядеть следующим образом:
 
Code
Блокировка=Новый БлокировкаДанных;
 ЭлементБлокировки=Блокировка.Добавить("РегистраНакопления.ОстаткиНомерклатуры");
 ЭлементБлокировки.Режим=РежимБлокировкиДанных.Исключительный;
 Блокировка.Заблокировать();

 Люди что вы думаете по этому поводу?

ut2k5, действительно зачем в приходной делать блокировку?

Может быть имеет смысл проверку документов на старый/новый вывести в общий модуль, прописать ее один раз и вызывать в трех документах. Такой общий модуль должен исполняться на сервере?

Название: 1.5
Отправлено: SINISTER_STAR от Декабрь 10, 2010, 12:17:24 pm
Danan, мне тоже так кажется что надо заблокировать весь регистр, т.к. остатки мы переводим из одной партии в другую, используя весь регистр, Но с другой стороны мне что то смущает блокировать ВЕСЬ регистр.
Название: 1.5
Отправлено: AndreiPiter от Декабрь 15, 2010, 12:46:24 pm
моё решение
Вложения:
4487616.dt
Название: 1.5
Отправлено: Danan от Декабрь 17, 2010, 10:50:43 am
Интересная задачка, даже очень. В случае если ПоСредней использовал пустую ссылку приходной.
 1) Документ ИзменениеУчетнойПолитики: остается открытым вопрос о блокировке всего регистра.
 2) Документ РасходнаяНакладная: кто то тут писал что можно использовать один текст запроса для всех методов списания. Я тоже так думаю.
 3) Отчет и регистр Продажи: мне кажется тут есть одна хитрость заложенная в условиях задачи.
 В предыдущих 4 задачах я для получения себестоимости в отчете использовал СтоимостьРасход и по оборотной таблице регистра ОстаткиНоменклатуры. В этой задаче расход по движениям регистра ОстаткиНоменклатуры осуществляют два документа, и только один из них формирует движения по регистру Продажи. Можно конечно в запросе наложить ограничения по регистратор = Расходная для получения СтоимостьРасход. Я думаю что в этой задаче целесообразно добавить в регистр Продажи ресурс Себестоимость.
Вложения:
Task_1_5..dt
Название: 1.5
Отправлено: Gyd от Январь 12, 2011, 06:44:03 pm
Quote (AndreiPiter)
моё решение

 не нашел где списание по средней делается...
Название: 1.5
Отправлено: AndreiPiter от Январь 12, 2011, 07:48:03 pm
Quote (Gyd)
не нашел где списание по средней делается...

 непонял??? "Списание себестоимости должно быть организовано по партиям..."
Название: 1.5
Отправлено: Gyd от Январь 13, 2011, 09:08:08 am
Quote (AndreiPiter)
непонял??? "Списание себестоимости должно быть организовано по партиям..."

 Ну да, по партиям. В соответствии с выбранным методом списания: ФИФО, ЛИФО или средняя. Я не нашел в коде место где видно по какому методу списывается.

Добавлено (13.01.2011, 09:08)
---------------------------------------------

Quote (Danan)
В случае если ПоСредней использовал пустую ссылку приходной.

 Использовать пустую ссылку - это неправильно. Партия должна быть заполнена.
 
Quote (Danan)
Документ ИзменениеУчетнойПолитики: остается открытым вопрос о блокировке всего регистра.

 Этот документ нужен исключительно для ввода метода списания на текущий день (если метод меняется). Ничего блокировать не нужно.

Попозже выложу свое решение.

Название: 1.5
Отправлено: AndreiPiter от Январь 13, 2011, 08:36:45 pm
Quote (Gyd)
Ну да, по партиям. В соответствии с выбранным методом списания: ФИФО, ЛИФО или средняя. Я не нашел в коде место где видно по какому методу списывается.

 Ой, про среднее забыл wink
Название: 1.5
Отправлено: Gyd от Январь 14, 2011, 09:45:20 am
Quote (AndreiPiter)
Ой, про среднее забыл wink

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

Добавлено (14.01.2011, 09:45)
---------------------------------------------

Quote (AndreiPiter)
Ой, про среднее забыл wink

 в этом вся "фишка" задания... что-то у меня был вариант как сделать, но он оказался нерабочим, сейчас буду другой придумывать.
Название: 1.5
Отправлено: AndreiPiter от Январь 14, 2011, 07:56:16 pm
исправил (добавил списание ПоСреднему)
Вложения:
AP_1.05_2.dt
Название: 1.5
Отправлено: Danan от Январь 17, 2011, 09:51:43 am
Quote (Gyd)
Использовать пустую ссылку - это неправильно. Партия должна быть заполнена.

 Почему?

Quote (Gyd)
Этот документ нужен исключительно для ввода метода списания на текущий день (если метод меняется). Ничего блокировать не нужно.

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

Название: 1.5
Отправлено: Gyd от Январь 17, 2011, 11:10:50 am
Quote (Danan)
Также этот документ делает движения в регистре остатков

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

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

Quote (AndreiPiter)
исправил (добавил списание ПоСреднему)

 в целом, понравилось smile только вот расходная у вас при перепроведении начинает ругаться на нехватку товара, может потому что регистр не очищается от движений перед запросом... что-то пока не пойму.

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

Quote
|УПОРЯДОЧИТЬ ПО
 |   ОстаткиНоменклатурыОстатки.Партия.МоментВремени " +ПорядокПартий+ "

и еще один момент: как будет работать списание по ФИФО или ЛИФО, если до этого было списание по средней? smile

Название: 1.5
Отправлено: AndreiPiter от Январь 17, 2011, 07:51:20 pm
Quote (Gyd)
только вот расходная у вас при перепроведении начинает ругаться на нехватку товара, может потому что регистр не очищается от движений перед запросом... что-то пока не пойму.

 нигде не удаляю движения, для корректного перепроведения думаю надо использовать "перепроведение в хронологическом порядке"

Quote (Gyd)
и еще один момент: как будет работать списание по ФИФО или ЛИФО, если до этого было списание по средней?

 соответсвенно, то что было раньше по средней, то у нас на пустой партии, и тогда по ФИФО будет сортироваться вверху запроса и списыватья сначала, по ЛИФО будет наоборот.

Добавлено (17.01.2011, 19:51)
---------------------------------------------

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

 Я нонял. Но написано, что "документы задним числом не вводятся". Полагаю что "вводятся" имеется ввиду что не заводятся в базу (т.е не сохраняются). В противном случае было бы написано "проводятся". Тем более что дальше сказано "что старые документы могут неоперативно перепроводится"
 И как правило, если что то получается сложно то что то не так. wink
Название: 1.5
Отправлено: Gyd от Январь 18, 2011, 04:27:07 pm
Quote (AndreiPiter)
соответсвенно, то что было раньше по средней, то у нас на пустой партии, и тогда по ФИФО будет сортироваться вверху запроса и списыватья сначала, по ЛИФО будет наоборот.

 Думаю не будет. У вас все пустые партии должны схлопнуться, потому что стоит группировка по Номенклатуре.
 
Quote (AndreiPiter)
нигде не удаляю движения, для корректного перепроведения думаю надо использовать "перепроведение в хронологическом порядке"

 там нет коллизий, я просто опять взял последний документ и попытался его провести smile
 
Quote (AndreiPiter)
Я нонял. Но написано, что "документы задним числом не вводятся". Полагаю что "вводятся" имеется ввиду что не заводятся в базу (т.е не сохраняются). В противном случае было бы написано "проводятся".

 Пожалуй вы правы. Если что, можно этот момент уже на экзамене выяснить.
Название: 1.5
Отправлено: AndreiPiter от Январь 18, 2011, 08:55:11 pm
Quote (Gyd)
Думаю не будет. У вас все пустые партии должны схлопнуться, потому что стоит группировка по Номенклатуре.

 Так. Когда политика ПоСреднему всё приходуется на пустую партию, Потом когда переходим например на ФИФО, все начинает приходоватся по партиям. Когда списываем, номенклатура с пустой партией будет списыватся сначала (эта как раз та номенклатура которая приходила раньше, до изменения политики на ФИФО. и мы её не различали по партиям и это правильно). Если я не понял твою мысль, поясни.
Название: 1.5
Отправлено: Gyd от Январь 20, 2011, 11:28:18 am
Quote (AndreiPiter)
Когда политика ПоСреднему всё приходуется на пустую партию

 Кажется понял что вы имели ввиду, если у нас есть несколько приходов Товара1 например, с пустыми ссылками в Партии, то при переходе на ФИФО, они у нас станут как бы одной партией (первой), так?
 Я сначала думал что при переходе на другой метод списания нужно заменять пустые ссылки партиями, и наоборот. Усложнил задачу smile
Название: 1.5
Отправлено: AndreiPiter от Январь 20, 2011, 08:11:04 pm
Quote (Gyd)
Кажется понял что вы имели ввиду, если у нас есть несколько приходов Товара1 например, с пустыми ссылками в Партии, то при переходе на ФИФО, они у нас станут как бы одной партией (первой), так?

 Да, именно так.
Название: 1.5
Отправлено: sada от Январь 21, 2011, 08:16:45 pm
Zhora_Vlg,
 
Quote (Zhora_Vlg)
заменить предложением "ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.ОстаткиНоменклатуры.Остатки" в запросе?

В режиме управляемых блокировок, конструкция ДЛЯ ИЗМЕНЕНИЯ языка запросов не работает.

Quote (Zhora_Vlg)
Проверять, что новый документ вводится задним числом, нужно в "ОбработкаПроверкиЗаполнения", или как все делают в "ПередЗаписью"?

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

Название: 1.5
Отправлено: sada от Январь 21, 2011, 09:01:35 pm
Мой вариант решения задачи 1.05

Добавлено (21.01.2011, 21:01)
---------------------------------------------
AndreiPiter, Посмотрел решение , вроде всё верно :)


Вложения:
1Cv8_sada_1_05.dt
Название: 1.5
Отправлено: Gulf_Stream от Январь 23, 2011, 04:41:47 pm
Мой Вариант

Особенно интерсуют комментарии по обработке проведения документа смены учетной политики:
 

Code

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

1)Правильно ли сделана запись в регистр вседений
 2)ПРи списании по средней затруднительно было сформировать объект БлокировкаДанных, поэтому блокировал регистр в запросе, это не ошибка?
 3)Ну если всё таки кто нить будет смотреть базу - правильно ли настроена последовательность.


Вложения:
_1.05.dt
Название: 1.5
Отправлено: sada от Январь 23, 2011, 08:23:49 pm
Gulf_Stream,
 
Quote (Gulf_Stream)
2)ПРи списании по средней затруднительно было сформировать объект БлокировкаДанных, поэтому блокировал регистр в запросе, это не ошибка?

думаю что ошибка, потому что на экзамене проверяют умение работать с управляемыми блокировками , а в режиме управлемых блокировок конструкция "ДЛЯ ИЗМЕНЕНИЯ" не работает.

Название: 1.5
Отправлено: rus от Январь 24, 2011, 07:55:03 am
Мое решение
Вложения:
5624265.dt
Название: 1.5
Отправлено: Gulf_Stream от Январь 24, 2011, 08:15:33 am
rus, тож проблемы с блокировками? =)

sada, хм, как должен выглядеть элемент БлокировкаДанных в случае если мы ворошим практически весь регистр? Без указания источника данных?

Название: 1.5
Отправлено: Jer-Mark от Март 09, 2011, 10:44:17 am
Если при переходе на расчет по среднему записываем пустые партии, а потом переходим на другой метод списания, то при сортировке по ФИФО и ЛИФО куда попадут остатки с пустой партией??? В начало или конец очереди?
 Я сортирую по дате партии, поэтому возникает такой вопрос. На мой взгляд тогда есть такой выход: записывать не пустую партию, а в качестве документа партии записывать документ, изменяющий уч.политику.
Название: 1.5
Отправлено: Danan от Март 09, 2011, 11:07:02 am
Jer-Mark, Я думаю , что при методе списания по средней удобнее использовать пустую ссылку приходной. И сортировку делать прямо партии, поскольку ссылка содержит в себе дату, дата в пустой ссылке равна Дата(1,1,1). Тогда если фифо то пустая ссылка будет в начале, а если лифо то в конце. Для пущей убедительности это можно увидеть в консоли запросов или при отладке.

Gulf_Stream, я уже поднимал вопрос в этой теме, но ответ получил в ссылка на тему комментарии 15(2),16.

Название: 1.5
Отправлено: Jer-Mark от Март 09, 2011, 12:10:24 pm
Спасибо, не сразу стало понятно, что у пустой ссылки тоже есть свои дата и время
Название: 1.5
Отправлено: Matcoder от Март 09, 2011, 06:46:38 pm
Quote (Jer-Mark)
Спасибо, не сразу стало понятно, что у пустой ссылки тоже есть свои дата и время

Улыбнуло. smile Вообще-то, у пустой ссылки нет каких бы то ни было реквизитов, т.е. Дата в этом случае будет равна NULL.

Название: 1.5
Отправлено: Danan от Март 09, 2011, 07:30:03 pm
Matcoder, Смотрел в консоли запросов - действительно дата у пустой ссылки NULL. Интересно почему тогда срабатывает упорядочивание(возр/убыв) как по партии, так и по Партия.Дата.
Название: 1.5
Отправлено: Matcoder от Март 09, 2011, 07:51:41 pm
Quote (Danan)
Matcoder, Смотрел в консоли запросов - действительно дата у пустой ссылки NULL. Интересно почему тогда срабатывает упорядочивание(возр/убыв) как по партии, так и по Партия.Дата.

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

Добавлено (09.03.2011, 19:51)
---------------------------------------------
Я бы даже сказал что NULL - это отсутствие значения. Так проще запомнить.

Название: 1.5
Отправлено: roslakov от Март 14, 2011, 10:34:29 am
Скажите пожалуйста зачем в документе по формированию учетной политики делаются движения по регистру ОстаткиНоменклатуры ?
Название: 1.5
Отправлено: Danan от Март 14, 2011, 03:07:52 pm
roslakov, все очень просто. Этот документ делает движения по регистру ОстаткиНоменклатуры лишь том случае если метод списания меняется на списание себестоимости по средней. Это делается для того чтобы списать все остатки со всех партий и записать эти же остатки на пустую ссылку документа приходная. Таким образом регистр ОстаткиНоменклатуры будет закрываться в ноль при списании номенклатуры по средней.
Название: 1.5
Отправлено: antantait от Май 19, 2011, 01:46:38 pm
Посмотрите и по возможности прокомментируйте мой вариант решения.
Вложения:
antantait1_5.dt
Название: 1.5
Отправлено: garden от Июнь 14, 2011, 10:07:50 am
Очень хотелось бы услышать комментарии к моему решению. Буду ждать. wink
Вложения:
garden_1-05.dt
Название: 1.5
Отправлено: valdu от Июнь 20, 2011, 09:27:57 am
Хотелось бу услышать комментарий, по поводу решения без сворачивания регистра "Остатки номенклатуры" при переходе на среднюю.
Вложения:
0229246.dt
Название: 1.5
Отправлено: Danan от Июнь 20, 2011, 05:16:12 pm
valdu,
 1) Если открыть регистр накопления Остатки номенклатуры можно увидеть странную картину в одной из строк количество равно 0 сумма равна 50.
 2) Регистр накопления странно ведет себя.
 Я ввел три партии по товару в каждой партии количество равно 10, суммы 10, 11, 12.
 Сперва по фифо списал 15, затем по средней остальное. В регистре снова появилась подозрительная строка где количество равно, сумма равна 120.
 Сформировал отчет по остаткам по одной из партии количество равно -10.

 Могу выложить базу.
Название: 1.5
Отправлено: valdu от Июнь 21, 2011, 12:01:35 pm
Danan,

 1. Сумма без количества может зависать, когда средняя себестоимость меньше стоимости партии. Предполагается, что эти деньги уйдут при последующих списаниях.
 2. Нашел ошибку в коде. Смоделировал Ваш пример. Сейчас вроде нормально. База прилагается.
Вложения:
1_5.dt
Название: 1.5
Отправлено: Gyd от Июнь 21, 2011, 03:16:46 pm
Quote (valdu)
Хотелось бу услышать комментарий


 
Code
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
 |    &Дата,...
 ....
 Запрос.УстановитьПараметр("Дата", Дата);
 


 Добавлено (21.06.2011, 15:16)
 ---------------------------------------------
 
Quote (valdu)
по поводу решения без сворачивания регистра "Остатки номенклатуры" при переходе на среднюю.

 Идея интересная. Несмотря на записи с нулевым количеством, регистр в итоге в 0 выходит. А вот правильно ли это с точки зрения 1С - затрудняюсь ответить.
Название: 1.5
Отправлено: DoctorRoza от Июнь 23, 2011, 09:43:54 pm
AndreiPiter, sada,
 Коллеги! Посмотрел Ваши решения задачи 1.5 и лично мне они совсем не понятны! Объясните:
 - При установке новой учетной политики - По среднему, при имеющихся любых движениях, Вы все партии списываете к 0 и отправляете в приход остатки на пустую партию.
 - Если я поменяю политику на ФИФО или ЛИФО и буду что-нибудь списывать (и в наличие у меня что-нибудь будет), то, по Вашим решениям получается, что списывать я буду опять же с пустой партии!!! Но извините, политику я поменял, Себестоимость будет рассчитываться не верно, в ноль она не уйдет!!! Тем более, списать товар надо с партии, но у Вас они нулевые!!
 Может я не уяснил замысел задачи, но в ней ясно написано, что учетная политика может меняться каждый день!! И вот ситуация, вчера - По Средней, сегодня - Списываю по ФИФО. Прошу помочь, что то ну никак не клеится! sad
Название: 1.5
Отправлено: Gyd от Июнь 24, 2011, 10:08:29 am
Quote (DoctorRoza)
Посмотрел Ваши решения задачи 1.5 и лично мне они совсем не понятны! Объясните:

 Например у вас были партии: №1, №2 и №3. Вы сделали их пустыми (ПрихНакл.ПустаяСсылка()). Начали списывать по средней. Потом поменяли метод списания на ФИФО или ЛИФО. В запросе у вас документы прихода выстроятся по очереди, первый - " " (бывшая партия №1), второй - " " (партия №2), третий - " " (партия №3). Или вот так: (№3-№2-№1). Вы соответственно по очереди списываете эти "пустые" партии.
Название: 1.5
Отправлено: Lukashov_as от Июнь 24, 2011, 12:23:20 pm
Мое решение
 Документ изменение учетной политики в момент перехода с ФИФО/ЛИФО на среднее становится партия образующим
Вложения:
1_5_lukashov.dt
Название: 1.5
Отправлено: kravius от Июнь 24, 2011, 03:41:43 pm
У вас в регистре Остатков отрицательные остатки.

Добавлено (24.06.2011, 15:41)
---------------------------------------------
Вот скажите, я посмотрела некоторые варианты решений, у всех в принципе тестовые данные забиты, так, что по политика со средней меняется на партионный. Тут все понятно, в документе "смена учетной политике" зачищаем остатки по партиям. А когда наоборот: со средней на партионный, надо же по идее все пустые ссылки по партиям поменять на приходные. Если это тоже сделать в документе "смена учетной политики" - это не будет необоснованным увеличением количества записей в регистрах. По другому что то никак себе не представляю решение этой задачи. Может я не так условия понимаю? Кто-нибудь подскажите.

Название: 1.5
Отправлено: Gyd от Июнь 24, 2011, 03:59:21 pm
Quote (kravius)
А когда наоборот: со средней на партионный, надо же по идее все пустые ссылки по партиям поменять на приходные.

 Зачем? Вот я уже описывал пример работы при переходе на партионный учет: http://forum.chistov.pro/index.php?topic=983.msg16199#msg16199
Название: 1.5
Отправлено: kravius от Июнь 24, 2011, 04:47:53 pm
Quote (Gyd)
Зачем? Вот я уже описывал пример работы при переходе на партионный учет: http://forum.chistov.pro/index.php?topic=983.msg16199#msg16199
Приведите пожайлуста пример запроса.

Добавлено (24.06.2011, 16:47)
---------------------------------------------
Как документы прихода выстроятся по очереди, если на момент списания мы берем остатки по "пустой" партии.

Название: 1.5
Отправлено: Lukashov_as от Июнь 24, 2011, 04:48:35 pm
Quote (kravius)
по идее все пустые ссылки по партиям поменять на приходные

 а как ты это сделаешь? получиться белеберда, как среднюю сумму раскинешь на партии. это на какую-то партию либо придется меньше ее фактической стоимости или наоборот завысишь, некорректно получиться, а так если уже в некий момент решили перейти на среднюю. то тут сформируется партия новая с новой ценой
 не надо при переходе со средней пытаться восстановить партии, раскинуть конечно возможно воссоздав что за период за который было по среднему, распределить по ФИФО/ЛИФО движения, а во-вторых вопрос а по какому методу будешь воссоздавать по ФИФО или ЛИФО? в общем это лишнее, да и себестоимость воссоздав со партиям со среднеи уже не воткнешь корректно на партию
Название: 1.5
Отправлено: kravius от Июнь 24, 2011, 04:59:01 pm
Дошло.

Добавлено (24.06.2011, 16:59)
---------------------------------------------
Просто видимо здесь некое допущение надо сделать, что "пустая партия" тоже является партией, и дальше все списывать исходя из этого. ПАСИБА

Название: 1.5
Отправлено: Lukashov_as от Июнь 24, 2011, 05:49:55 pm
kravius, если будешь делать "пустая партия", как Документы.ПриходнаяНакладная.ПустаяСсылка() то не сможешь "пустую партию отсортировать по ФИФО, сделаи лучше в реквизит Партия регистра остатков составным ПриходнаяНакладная и документ ИзменениеУчетнойПолитики, тогда при проведении приходов когда по среднему просто будешь вытаскивать последний док сделавший движение учПолитика По среднему и его делать партией, меньше проблем с сортировкой и проверками

 а допущение тут не пустая партия является партией а документ смены учетнои политики может быть партия образующим, когда сольет все партии в одну кучку и их стоимости
Название: 1.5
Отправлено: DoctorRoza от Июнь 25, 2011, 10:22:14 pm
"Родила царица в ночь .. Не то сына, не то дочь" (А.С.Пушкин)
 smile
 Вымучил .. мое решение задачи 1.5 .. Посмотрите пожалуйста ..
Вложения:
DoctorRoza_1_5.dt
Название: 1.5
Отправлено: poritskiy от Июнь 26, 2011, 01:56:12 pm
что именно означает "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться"?
Название: 1.5
Отправлено: DoctorRoza от Июнь 26, 2011, 02:52:34 pm
Quote (poritskiy)
что именно означает "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться"?


 Это значит, что нужно контролировать какой датой Вы проводите новые документы! Нельзя осуществлять проводки новых документов "задним" числом. При этом уже созданные документы можно перепроводить. В задаче не сказано о каких именно документах идет речь .. по идее .. о расходной накладной.
Название: 1.5
Отправлено: kravius от Июнь 28, 2011, 02:09:46 pm
Lukashov_as Если не очень напрягает, посмотрите пожайлуста. Как то стала доверять вашему мнению.
Вложения:
1_5_kravius.dt
Название: 1.5
Отправлено: Lukashov_as от Июнь 28, 2011, 02:56:04 pm
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) Зачем в расходной разбили поСредней или по партиям? посмотрите в код у вас одно и тоже что по средней что по партиям, просто по средней при группировке по партиям будет только лишь одна партия содержашая как раз таки документ смены УП, и тогда и запрос не нужен будет на выборку документа сменыУП в расходной, он и так у вас уже в остатках сидит

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

 удалите все в проведенеии расходной и сделаите только по партиям а эффект останется прежним tongue

 в общем пока так насмотрел

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

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

 Самое страшное в Базах данных это обращение к базе данных, тут надо сокращать количество обращении, вы к мааааленькой таблице с 2мя данными умудрились обратится 2 раза в одном документе, оч нехорошо

 Очень много излишних проверок, это не ошибка, но надо стремится к оптимизации кода, каждая проверка это время!!!

 ну я думаю пока хватит, саму задачу честно признаюсь не запускал, но думаю вы ее и сами проверили
Название: 1.5
Отправлено: kravius от Июнь 28, 2011, 04:14:33 pm
1-5) исправила, че то по запарке забыла про условия на вирт. табл. confused
 6) не поняла. Я в запросе не проверяю услуга или нет. Для того, чтобы продажи двинуть по услугам тоже.
 7)Номер строки просто для обработки сообщения об ошибке
 8) Алгоритм по средней выношу, для того, чтобы в случае, если не перепровели влвремя документы, после смены партионного на средний, все равно списывалось по последней партии (СменаУП), иначе будет мешанина, и документ попросту не проведется, а так после восстановления последовательности все встанет на места. (правда не проверяла). Просто была такая мысль.

Добавлено (28.06.2011, 16:14)
---------------------------------------------
Спасибо за потраченное время. Если честно я считаю, что работа над ошибками даже эффективнее, чем сама работа.

Название: 1.5
Отправлено: Lukashov_as от Июнь 28, 2011, 04:32:41 pm
6) не в запросе, в цикле
 стр 118 :    Если Выборканом.КоличествоОстаток < ВыборкаНом.Количество и Выборканом.номенклатура.услуга = ложь тогда
 стр 134: если Выборканом.номенклатура.услуга = истина тогда

 7)НомерСтроки: ну наверно оправданно, но вы попадете с таким финтом на большую проблему если я ввиду один товар 2 раза, вы спишите по первой строке партии, а потом те же самые партии по второй, и приехали

Добавлено (28.06.2011, 16:27)
---------------------------------------------

Quote (kravius)
Алгоритм по средней выношу,

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

Добавлено (28.06.2011, 16:32)
---------------------------------------------
kravius, уберите НомерСтроки от греха подальше, сообщениями заниматься будете потом, а сеичас помните про условие на экзамене что один товар может быть введен 2 раза, а сделать так чтоб и по номеру строки и правельно списался товар по партиям это надо запоминать те партии которые уже списали по первый раз когда встретился этот товар

Название: 1.5
Отправлено: kravius от Июнь 28, 2011, 04:43:49 pm
Quote (Lukashov_as)
7)НомерСтроки: ну наверно оправданно, но вы попадете с таким финтом на большую проблему если я ввиду один товар 2 раза, вы спишите по первой строке партии, а потом те же самые партии по второй, и приехали

 Ничего себе косячина! Спаисбо за подсказку. Убрала эту пакость.

Добавлено (28.06.2011, 16:43)
---------------------------------------------

Quote (Lukashov_as)
вот тут я в ступоре, а зачем перепроводить документы после смены на средний? на случай если продавали продавали а потом решили вечером сменить уч политику и надо за весь день перепровести доки?
 мне кажется тут на момент времени дока надо зацепится и все, сменили началась новая жизнь, до ввода дока как по прошлому доку СменаУп

 Я тоже в ступоре ... теперь.
Название: 1.5
Отправлено: Lukashov_as от Июнь 28, 2011, 04:50:29 pm
kravius,

 предлагаю отказаться от подобного куска кода

 Если Метод = Перечисления.УчетнаяПолитика.ЛИФО Тогда
 Запрос2.Текст = Запрос2.Текст + "
 |УПОРЯДОЧИТЬ ПО
 |   ПартияДата УБЫВ";
 иначе
 Запрос2.Текст = Запрос2.Текст + "
 |УПОРЯДОЧИТЬ ПО
 |   ПартияДата ВОЗР";
 КонецЕсли;

 некогда будет на экзамене писаниной заниматься

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

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

 Добавлено (28.06.2011, 16:48)
 ---------------------------------------------
 kravius, и честное слово упорядочивать партии по дата

 ОстаткиНоменклатурыОстатки.Партия.Дата
 расстреляют на месте без суда и следствия, а куда дели ось времени внутри даты?
 упорядочиваите по моменту времени документа, он состоит из даты/времени и самого дока
 а придет один и тот же товар внутри одной даты 2мя разными доками, какой вы первый списывать станете с упорядочиванием по Дате

 Добавлено (28.06.2011, 16:50)
 ---------------------------------------------
 ОстаткиНоменклатурыОстатки.Партия.МоментВремени
 вот по этои штуке уже упорядочивать не забываите что внутри даты как то ж там движутся товары/партии
Название: 1.5
Отправлено: kravius от Июнь 28, 2011, 04:59:44 pm
Вышла из ступора, вы правы. Переделала, все в одном цикле, все гораздо проще. Все работает!

Добавлено (28.06.2011, 16:59)
---------------------------------------------

Quote (kravius)
предлагаю отказаться от подобного куска кода
 
Я тут поэкспериментировала с менеджером временных таблиц, просто для понимания его работы. Так то конечно удобнее все в одном запросе, с одним условием.
Название: 1.5
Отправлено: SergTH000 от Июнь 28, 2011, 05:00:11 pm
Lukashov_as, предлагаю отказаться от подобного куска кода

 
Quote
Если Метод = Перечисления.УчетнаяПолитика.ЛИФО Тогда
 Запрос2.Текст = Запрос2.Текст + "
 |УПОРЯДОЧИТЬ ПО
 | ПартияДата УБЫВ";
 иначе
 Запрос2.Текст = Запрос2.Текст + "
 |УПОРЯДОЧИТЬ ПО
 | ПартияДата ВОЗР";
 КонецЕсли;


 Еще проще описать сначала текст запроса для ЛИФО:
 ТекстЗапроса = ".......Упорядочить По УБЫВ.....";
 А потом написать:
 Запрос.Текст = ?(Метод=Перечисления.УчетнаяПолитика.ЛИФО, ТекстЗапроса,СтрЗаменить(ТекстЗапроса, "Убыв",""));
Название: 1.5
Отправлено: kravius от Июнь 28, 2011, 05:05:43 pm
Quote (kravius)
ОстаткиНоменклатурыОстатки.Партия.МоментВремени
 вот по этои штуке уже упорядочивать не забываите что внутри даты как то ж там движутся товары/партии

 даже внимания раньше не обращала. Учла.
Название: 1.5
Отправлено: Lukashov_as от Июнь 28, 2011, 05:07:44 pm
SergTH000, проще без спорно biggrin но блин это мы с тобой понимаем что такую штуку только для отладки интересно пользовать tongue а прикинь кто нить за чистую монету примет, и будет так на практике делать, и запрос в несколько сотен строк, поиск по тексту строки будет грузить
Название: 1.5
Отправлено: kravius от Июнь 28, 2011, 05:12:30 pm
ясно
Название: 1.5
Отправлено: DoctorRoza от Июнь 28, 2011, 06:22:49 pm
Lukashov_as, kravius
 Обратите внимание на вариант ..
 1. Определяете политику (ЛИФО/ФИФО) .. да и вообще .. почему на русском языку пишут именно так!? smile
 2. Добавляете в запрос упорядочивание УБЫВ
 3. Перед выполнением запроса выполняете замену ..
 Запрос.Текст = СТРЗАМЕНИТЬ(Запрос.Текст, "УБЫВ", УчетнаяПолитика)

 И запрос не разделяется, и текст понятен .. wink
Название: 1.5
Отправлено: kow1976 от Июль 14, 2011, 10:53:31 pm
В процессе решения столкнулся с проблемой определения учетной политики при помощи метода:

 РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Дата).Значение

 Однозначно определить учетную политику не удается так как.
 Запись в регистре сведений определяется ключам *Дата *Регистратор.
 Регистратор - это ссылка на документ «Изменения учетной политики»
 Сложность том, что в «Приходной накладной» и «Расходной накладной» нужно найти ссылку на документ «Изменения учетной политики», которая является актуальной для данной точки оси времени этих документов.
Название: 1.5
Отправлено: sada от Июль 15, 2011, 08:37:41 am
kow1976,
 Учетная политика меняется крайне редко, изменять её в течении дня несколько раз нет смысла.
 Установить периодичность регистра год или день (чтобы не детализировать записи до регистратора).
 Еще есть хорошее свойство менеджера регистра сведений - «СрезПоследних»
Название: 1.5
Отправлено: kow1976 от Июль 15, 2011, 11:39:36 am
Даже нужно запретить
 Один день - один документ «Изменения учетной политики»
 Регистр с периодичностью год взять не получиться по условию

 Применяя метод ;

 СрезПоследних(10.01.11).

 Получаем список
 Регистратор - МетодСписания
 Изм Уч пол №3 02.01.11 - Лифо
 Изм Уч пол №4 04.01.11 - Фифо
 Изм Уч пол №5 08.01.11 - ПоСред

 Все равно нужен регистратор

 Не могу спозиционироваться на нужном : Изм Уч пол №5 08.01.11 - ПоСред

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

 Должно быть лучше решение на уровне отбора параметров регистра по регистратору.
Название: 1.5
Отправлено: sada от Июль 15, 2011, 12:36:26 pm
я не пойму в чем проблема.
 Какие измерения у регистра?
 чем не устраивает такой вариант:

 РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).МетодСписания;
Название: 1.5
Отправлено: mkanaev от Июль 15, 2011, 01:22:48 pm
Quote
РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).МетодСписания;

 айайай не хороший вариант!!! если результата не будет то ".МетодСписания" - вот эта штука сразу к ошибке приведёт

Добавлено (15.07.2011, 13:22)
---------------------------------------------

Quote
Изм Уч пол №5 08.01.11
Изм Уч пол №5 08.01.11 - а для чего там эта супер штука? она там вообще не нужна при решении задачи. Зачем заводить измерение??? я понимаю если например в разрезе организаций на каждую своя уч. политика, но в измерение пихать документ регистратор это что из книги по нестандартному секасу
Название: 1.5
Отправлено: kow1976 от Июль 15, 2011, 02:50:56 pm
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,

 Спасибо за помощь.
 Открыл ваше решение протестировал.
 И О чудо у вас все работает.
 По ошибки у себя в решении МетодСписания в регистре сведений сделал измерением и теперь два дня не могу отладить решение.

Название: 1.5
Отправлено: sada от Июль 15, 2011, 05:05:53 pm
Quote (mkanaev)
айайай не хороший вариант!!! если результата не будет то ".МетодСписания" - вот эта штука сразу к ошибке приведёт

 Это уже другая тема :), надо ли проверять наличие записей и в какой момент.
Название: 1.5
Отправлено: kow1976 от Июль 16, 2011, 09:35:50 am
Мой вариант решения задачи.
 Требования: «Считается, что документы задним числом не вводиться, но старые документы могут неоперативно перепроводиться» реализовал так:
 1. В свойствах формы поставил проводить только «Оперативно»
 2. В процедуре передЗаписью проверяю версию создания объекта
 Получился интересный эффект новый документ только оперативно а записанный только неоперативно.

 Если не Объект.ВерсияДанных="" тогда
 ПараметрыЗаписи.РежимПроведения =РежимПроведенияДокумента.Неоперативный;
 КонецЕсли

 Посмотрите, может, кто то, заметит ошибки.
Вложения:
kow19761.5.dt
Название: 1.5
Отправлено: SUBALady от Сентябрь 08, 2011, 07:40:08 am
Всем Добрый день)
 А кто мне подскажет, почему у меня документы при проведении исправляются датой на момент проведения???
 Т.е. например провела вчера документ, провожу его повторно сегодня, и он уже записывается сегодняшней датой...Ну где этот нюанс не учла??(((((((((
Название: 1.5
Отправлено: Gyd от Сентябрь 08, 2011, 09:15:42 am
А базу выложите пожалуйста.
Название: 1.5
Отправлено: SUBALady от Сентябрь 08, 2011, 10:14:04 am
Спасибо)))
 Никак не могу найти ошибки своей(((
Вложения:
1_5_.dt
Название: 1.5
Отправлено: kow1976 от Сентябрь 08, 2011, 11:29:05 am
У вас в ПН и РН
 МетодСписания = РегистрыСведений.УчетнаяПолитики.ПолучитьПоследнее(МоментВремени()).Значение;
 А надо
 МетодСписания = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).Значение;
Название: 1.5
Отправлено: SUBALady от Сентябрь 08, 2011, 12:20:11 pm
Ладно, это я итак исправлю))) при отладке))
 спасибо))))

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

 почему у меня документы при проведении исправляются датой на момент проведения???
 Т.е. например провела вчера документ, провожу его повторно сегодня, и он уже записывается сегодняшней датой...Ну где этот нюанс не учла??(((((((((
Название: 1.5
Отправлено: Gyd от Сентябрь 08, 2011, 01:53:57 pm
А вы на документе ИзмУчетнойПолитики это видели? Создал документ, открыл, перепровёл - дата та же что и была.В какой момент у вас меняется дата, при открытии или при проведении? Попробуйте вот в этой базе открыть документ и перепровести.
Вложения:
1_5_2.dt
Название: 1.5
Отправлено: SUBALady от Сентябрь 08, 2011, 02:29:39 pm
Quote (Gyd)
А вы на документе ИзмУчетнойПолитики это видели? Создал документ, открыл, перепровёл - дата та же что и была.В какой момент у вас меняется дата, при открытии или при проведении? Попробуйте вот в этой базе открыть документ и перепровести.
 Прикрепления: 1_5_2.dt(169Kb)


 А у меня при проведении док ИзмУчетполитики меняется дата...и время....
 Дата меняется при ПРОВЕДЕНИИ...

 А на той что Вы скинули нет...Что за полтергейств?????????
Название: 1.5
Отправлено: Gyd от Сентябрь 08, 2011, 03:41:15 pm
Quote (SUBALady)
А на той что Вы скинули нет...Что за полтергейств?????????

 Я бы полтергейстом назвал вот это:
 
Quote (SUBALady)
при проведении док ИзмУчетполитики меняется дата...и время....

 smile

 Время меняется при оперативном проведении, а вот чтобы дата менялась сама, без настроек - это очень интересно smile
Название: 1.5
Отправлено: SUBALady от Сентябрь 08, 2011, 04:33:45 pm
Не, ну интересно конечно))))
 я уже два раза начинала задачу в чистой карсканой конфе и два раза у меня это происходило))) т.е. менялось при проведении...

 Сейчас объединила свою конфу с Вашей базой))) и опа, все работает))))

 Вообщем спасибо))))
Название: 1.5
Отправлено: Gyd от Сентябрь 08, 2011, 05:22:12 pm
да не за что, я прислал вам вашу собственную базу smile
Название: 1.5
Отправлено: hobi от Сентябрь 12, 2011, 07:03:23 pm
.

Добавлено (12.09.2011, 19:03)
---------------------------------------------
Своё решение 1.5 и 2.26 положил сюда:
 http://forum.chistov.pro/index.php?topic=979.msg3#msg3#17707

 Вроде бы учел все условия, но со стороны виднее smile

Название: 1.5
Отправлено: loky30 от Сентябрь 15, 2011, 11:59:45 am
Quote (hobi)
Вроде бы учел все условия, но со стороны виднее

 Не нашел как вы реализовали запрет проведение задним числом и разрешение на неоперативное проведение сохраненых документов задним числом. Если я этого не увидел то подскажите как реализовали.
Название: 1.5
Отправлено: hobi от Сентябрь 16, 2011, 03:07:08 pm
Quote (loky30)
Не нашел как вы реализовали запрет проведение задним числом и разрешение на неоперативное проведение сохраненых документов задним числом. Если я этого не увидел то подскажите как реализовали.


 В отчете "Продажи" отслеживается актуальность последовательности документов (в Остатках делать не стал, т.к. похоже). Если из-за неоперативного проведения последовательность документов нарушена, информация о нарушении появляется в отчете.
 А запрет на проведение задним числом не делал, да.
Название: 1.5
Отправлено: Ruslan_Gamidov от Сентябрь 21, 2011, 01:46:36 am
sada, в твоем решение если использовать по средней а затем поменять на лифо или фифо то товар все равно списывается по средней... может я чего то не понимаю объясни плиз, решение мне понравилось очень простое я бы взял его на вооружение )
Название: 1.5
Отправлено: shv от Сентябрь 22, 2011, 11:04:03 am
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=574528#574528
 
Quote
Re: Задача1.5 Оперативный учет    01.03.2011 22:04
 Белоусов Павел, 1С

 > нужно ли когда метод списания меняется на ЛИФО/ФИФО опять прописывать партии в регистр и каким образом, например перепровести все несписанные партии в количестве, которое осталось?
 Конечно, да. А вот как это сделать Вы должны подумать сами. Могу только сказать, что если Вы собираетесь перепроводить документы с начала ведения учета, то это точно не правильно.

 Кому-нибудь попадалась эта задача на экзамене?
Название: 1.5
Отправлено: XSmilE от Сентябрь 22, 2011, 12:50:36 pm
Посмотрите, пожалуйста, решение.

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

 Добавлено (22.09.2011, 12:50)
 ---------------------------------------------
 Удалить сообщение здесь как-нибудь можно? а то сперва сделал задание, а потом увидел еще момент, которые точно не реализовал...видимо мозг не проснулся, когда начал читать задание
Название: 1.5
Отправлено: XSmilE от Сентябрь 22, 2011, 02:02:00 pm
Вот, не увидел два небольших, но очень значимых слова "по средней". Не знаю, насколько мой вариант правильный, но мне кажется довольно логичным.
 Посмотрите, пожалуйста.
Вложения:
1-05.cf
Название: 1.5
Отправлено: joky от Октябрь 06, 2011, 10:27:59 am
Всем добрый день! Решал задачу со следующими предположениями.
 1) Документы задним числом не вводятся. Если ввели их проблемы
 2) При переходе на списание по средней все партии из регистра накопления остатки должны быть очищены.
 Отчеты вроде вааще простые.
Вложения:
1.5anton.dt
Название: 1.5
Отправлено: IrinaMIR от Октябрь 07, 2011, 05:02:37 pm
Добрый день!
 Прикрепляю свой вариант решения. Буду признательна за комментарии! smile
Вложения:
6270663.dt
Название: 1.5
Отправлено: bonig от Октябрь 08, 2011, 07:25:50 pm
IrinaMIR, ваше решение интересное, но в корне неверное. Общепринято, что списание по-среднему и списание по партиям несовместимо. Причина - невозможность вывести в ноль все ресурсы регистра остатков, что является серьезной ошибкой не только на экзамене, но и в жизни, то есть при решении практических задач. Это очевидно, если списывать партии последовательно. Вы попытались решить проблему, списывая партии пропорционально их их количеству. И у вас это вроде получилось. Но если вы немного измените ваш пример, разобьете на две расходных с количеством списания 29 и 1, то получите в остатках зависшую сумму с нулевым количеством. Либо необходимо перейти к дробным количествам, что приводит к потере всякого смысла учета.
 Для перехода к списанию по средней и наоборот используются разные подходы. Чтобы далеко не ходить, можете взять в качестве образца решение joky.

Добавлено (08.10.2011, 19:25)
---------------------------------------------
joky, у тебя в запросах используется конструкция ДЛЯ ИЗМЕНЕНИЯ, которая в режиме управляемых блокировок не имеет смысла. См. http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=564536

Название: 1.5
Отправлено: IrinaMIR от Октябрь 10, 2011, 12:27:58 pm
Спасибо за комментарий!

 А есть кто-нибудь кому попадалась такая задача на экзамене и решение ее было верно?
Название: 1.5
Отправлено: vvvlad85 от Октябрь 10, 2011, 04:41:07 pm
IrinaMIR, мне такая попалась на экзамене и сдал. Правда решение ваше не смотрел.

Добавлено (10.10.2011, 16:41)
---------------------------------------------
Я делал так создал последовательность и двигал ее при изменении метода списания. И при выборе по средней устанавливал партию = ПусатяСсылка.

Название: 1.5
Отправлено: chilli от Октябрь 19, 2011, 03:29:53 pm
"Считается, что документы задним числом не вводятся, но старые документы могут неоперативно проводиться."
 Как это условие выполняется в задаче? В представленных здесь решениях каким механизмом это отрабатывается? Казалось бы должна быть проверка, что число заднее... что нить типа
 
Code
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
     Если НачалоДня(ТекущаяДата())>НачалоДня(Дата) И ЭтоНовый() Тогда...
 

 Или это более совершенно как то делается?
Название: 1.5
Отправлено: aveego от Октябрь 20, 2011, 12:23:43 pm
Вот мой вариант решения, я решил не использовать метод предложенный sada для перехода на списание по средней.
 Если использовать его метод, то при использовании списания по средней не получиться получить такой же вид отчета по остаткам как в задачнике. Из за того что отчищаются партии.
 Условие "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться."
 Решил так, если документ новый и дата ровна текущей дате то он проводиться оперативно иначе не дает записать документ.
 Если документ уже записан то его можно провести только не оперативно.
Вложения:
aveego_1_5_alt.dt
Название: 1.5
Отправлено: Кенгуру от Октябрь 20, 2011, 02:55:16 pm
aveego,
 если перейти к системе списания по средней, то указанный отчет в задаче не возможен, т.к. будет по средней и будут "пустые" значения партий.

 смотрел ли ты видео sada к задаче 1.5? - он там объясняет почему сделал переход на списание по средней.
Название: 1.5
Отправлено: aveego от Октябрь 20, 2011, 03:32:27 pm
Кенгуру, ну я так и написал про отчет. В моем варианте можно формировать такой отчет. Допускаю что я не правильно понимаю что такое списание по средней. Разве нельзя вести партийный учет и списывать по средней при этом ?
 Партии списываются по порядку но себестоимость у меня рассчитывается по среднему.

 Во общем сам вопрос, если ведется партийный учет и списание по среднему, нужно списывать пропорционально с каждой партии (как же быть тогда с количеством) или можно по любому из порядков фифо лифо, главное что бы расчет был по среднему.
Название: 1.5
Отправлено: Кенгуру от Октябрь 20, 2011, 04:10:40 pm
aveego,
 Имхо, при списании по средней существует только одна партия на складе,
 т.е. если мы переходим из фифо/лифо на по средней, то все надо сгрести в одну кучу .

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

 Буду рад, если меня поправят.
Название: 1.5
Отправлено: john916 от Октябрь 20, 2011, 04:19:28 pm
Кенгуру,
Quote (Кенгуру)
Имхо, при списании по средней существует только одна партия на складе,
 т.е. если мы переходим из фифо/лифо на по средней, то все надо сгрести в одну кучу .


 Нужно просто в документе "УчетнаяПолитика" сделать расход всех остатков на дату изменения политики на ПоСредней, и тут же приход всего этого "добра" но с <Партия> = <Документы.ПриходнаяНакладная.ПустаяСсылка()>
 Как-то так) cool
Название: 1.5
Отправлено: aveego от Октябрь 20, 2011, 04:22:55 pm
john916,
 Спасибо конечно, но как это сделать и так понятно вопрос в другом может ли вестись партийный учет при методе списания по средней =)
 Я тоже был бы рад если кто нибудь пролил на это свет.
Название: 1.5
Отправлено: Romdavid от Октябрь 20, 2011, 04:51:07 pm
aveego, я думаю, что одновременно не могут вестись партионный учет и по средней. Если предположить, что такое может быть, то как при списании по средней вести партионный учет? Списывать по средней со склада или по методу фифо/лифо? Тогда партионный учет нарушается как таковой и данные, полученный на основе такого "партионного" учета не верны.
Название: 1.5
Отправлено: aveego от Октябрь 20, 2011, 05:31:55 pm
Спасибо Romdavid, Кенгуру,
 был не прав.
Название: 1.5
Отправлено: Кенгуру от Октябрь 20, 2011, 05:32:09 pm
john916, Romdavid,
 согласен, нельзя одновременно и по средней и по фифо\лифо.

 как-то так - обработка проведения документа ИзменениеУчетнойПолитики

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

 ПоСредней = Перечисления.УчетнаяПолитика.ПоСредней;

 Движения.УчетнаяПолитика.Записывать = Истина;
 Движение = Движения.УчетнаяПолитика.Добавить();
 Движение.Период = Дата;
 Движение.МетодСписания = МетодСписания;

 Если МетодСписания<>ПоСредней Тогда
 Возврат;
 КонецЕсли;

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

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

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

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

 Пока ВыборкаНоменклатура.Следующий() Цикл

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

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

 КонецЦикла;
Название: 1.5
Отправлено: Ruslan_Gamidov от Октябрь 22, 2011, 05:35:03 am
Самое простое решение )))
Вложения:
3664350.dt
Название: 1.5
Отправлено: Irmo от Октябрь 27, 2011, 02:08:15 am
Еще одно решение. В формах списков показаны движения и остатки по документам (это здорово помогает в отладке)
Вложения:
irmo-1.5.dt
Название: 1.5
Отправлено: ErrorPro от Октябрь 30, 2011, 10:30:36 pm
Всем доброй ночи, выкладываю свой вариант задачи, не попадают услуги в движения по регистру продажи я исправлю, хочу услышать другие замечания по поводу моего решения. Заранее спасибо
Вложения:
8717415.dt
Название: 1.5
Отправлено: mkanaev от Октябрь 31, 2011, 09:22:19 am
Quote
Если МетодСписания = Перечисления.УчетнаяПолитика.ПустаяСсылка() Тогда
 Сообщение = Новый СообщениеПользователю;
 Сообщение.Текст = "Укажите метод списания!!!";
 Сообщение.Сообщить();
 Отказ = Истина;
 Возврат;
 КонецЕсли;

 ПоСредней = Перечисления.УчетнаяПолитика.ПоСредней;

 Движения.УчетнаяПолитика.Записывать = Истина;
 Движение = Движения.УчетнаяПолитика.Добавить();
 Движение.Период = Дата;
 Движение.МетодСписания = МетодСписания;

 Если МетодСписания<>ПоСредней Тогда
 Возврат;
 КонецЕсли;

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

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

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

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

 Пока ВыборкаНоменклатура.Следующий() Цикл

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

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

 КонецЦикла;

 Это при переходе с ЛИФО/ФИФО на среднюю будет адекватно обрабатывать, а если напиример при переходе со средней на ЛИФО/ФИФО, будет одна большая партия "пустая ссылка"!

 я думаю что выход из ситуации такой:

 1. при переходе на среднюю делать ничего не нужно, списание производить по партиям(порядок списания партий абсолютно безразници), но расчет делать по средней(по складу, организации... в зависимости от условия задачи), кстате в этом случае проще писать запрос в РН.
 2. при переходе со средней на ЛИФО/ФИФО, находить среднюю себестоимость и устанавливать её для партий, таким образом во всех партиях будет одинаковая себестоимость(т.к. раньше расчет вёлся по средней) и останица преждним количество. В этом случае мы не потеряем партии...

 Хотя оба варианта вроде как без последствий, но вот чтото "пустая партия" меня лично смущает.
Название: 1.5
Отправлено: Romdavid от Октябрь 31, 2011, 12:24:59 pm
mkanaev, партии в любом случае теряются

Добавлено (31.10.2011, 12:24)
---------------------------------------------
В данном случае более рационально списание на пустую партию

Название: 1.5
Отправлено: gosn1ck от Ноябрь 22, 2011, 08:06:13 pm
Добрый день, коллеги. наверно уже где-то писали, но не нашел, поэтому решил спросить тут.
 готовился к экзамену на 8.1, но не сложилось (подготовку забросил) и решил подготовиться к экзамену сейчас, но на 8.1 никаких блокировок не было.
 собственно у меня несколько вопросов:
 1) надо ли устанавливать режим блокировок конфигурации в целом на управляемый и зачем
 2) что даёт установки блокировок у регистра?
 3) снижают ли баллы за то, что не заблокировал записи регистра при проведении документа?
 спасибо smile

Добавлено (22.11.2011, 20:06)
---------------------------------------------
и 4ый вопрос - блокировать записи надо все в регистре или обязательно только на тот список, который в документе расхода (понятно что лучше 2ой вариант, но не снимут ли баллы за 1ый) ?

Название: 1.5
Отправлено: Romdavid от Ноябрь 22, 2011, 09:54:47 pm
gosn1ck,
 1) надо, если режим "Автоматический", то управляемые блокировки работать не будут
 2) блокировка регистра гарантирует вам актуальность полученных сведений (например, остатков) на момент формирования движений
 3) снижают, прочитайте требования к экзамену на сайте 1С
 4) нужно блокировать достаточное количество записей, а если блокируешь больше чем надо, то наверное это хороший повод для того чтобы снизить оценку
Название: 1.5
Отправлено: gosn1ck от Ноябрь 22, 2011, 11:06:05 pm
Romdavid,
 спасибо, буду признателен, если проверите моё решение smile
 решал с предварительной подглядкой других решений
Вложения:
gosn1ck_1.5.dt
Название: 1.5
Отправлено: Romdavid от Ноябрь 23, 2011, 08:17:16 am
gosn1ck, а где у вас списание по средней?
Название: 1.5
Отправлено: gosn1ck от Ноябрь 23, 2011, 09:21:01 am
Romdavid, посмотрел разные решения. оказывается есть 2 подхода: 1) списывать партии и оприходовать пустые документом установки учетной политики 2) реализовывать другой алгоритм списания в документе расходной накладной. я так понимаю оба варианта верные?
Название: 1.5
Отправлено: Romdavid от Ноябрь 23, 2011, 02:33:07 pm
gosn1ck, я думаю, что только вариант 1) верный
Название: 1.5
Отправлено: gosn1ck от Ноябрь 23, 2011, 04:32:38 pm
спасибо, пошёл решать 1.6 задачу smile
Название: 1.5
Отправлено: tan1c от Январь 01, 2012, 02:15:55 am
Профи, кто может объяснить.
 В задаче 1.5 в принятом решение, на мой взгляд, есть проблема, если в день смены учетной политики с ФИФО на ПоСреднему, были проведенные документы (расходные по ФИФО), затем проводится документ УчетнаяПолитика и оставшиеся документы - посредней. Но у РС УчетнаяПолитика периодичность день, (реально на начало дня), следовательно при последующем неоперативном перепроведение любого документа данного дня, проведенного ранее до смены учетной политики (в задаче указано, что старые документы могут неоперативно перепроводится), они перепроведутся посредней (да и приходные перезапишутся на пустую ссылку). Что приведет к проблеме в регистре остатков (не будет сводиться в ноль по всем измерения -2 балла).
 Как быть .
 Можно при защите сказать, что либо документ УчетнаяПолитика должен быть первым проведенным документом в день смены УчетнойПолитики с любой на посредней и обеспечить это задача пользователя (на что могут сказать, что решение упрощено biggrin ), либо периодичность РС указать по позиции регистратора, а контроль за 1 изменением в день установить программно.
Название: 1.5
Отправлено: kow1976 от Январь 01, 2012, 11:10:56 am
tan1c,
 Например
 2.01.11.00.00.00 - если до этой даты учетная политика фифо после по учетная политика по средней.
 Если пользователь вводит док 2.01.11.00.00.01 в любом случае по средней.

 По идее Док Учетная политика регламентный документ вводится до начала ввода торговых документов в этот день. Если в этот день были торговые документы они шли по фифо а в конце дня мы решили что в этот день все должно быть по средней. То для правильности учета все документы нужно перепроводить(восстанавливать последовательность).
Название: 1.5
Отправлено: tan1c от Январь 01, 2012, 08:49:37 pm
kow1976,
 Я рассматриваю тот случай, когда док УчетнаяПолитика вводится в середине дня и до него уже были проводки.

 По поводу того, что документ УчетнаяПолитика должен вводиться в начале дня, ничего не сказано, это могут признать упрощением задачи.

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

 На мой взгляд, все эти проблемы снимает установка периодичности РС по позиции регистратора, и контроль за 1 изменением в день установить программно. Мы привязываемся не к началу дня, а к моменту времени док УчетнаяПолитика, к которому, кстати, привязаны все наши изменения в РН остатки.
 
 Если рассматривать эту проблему издалека (с высот теории) biggrin , то на мой взгляд, она как раз и связана с привязкой к временной оси на разные точки РС и РН, хотя проводятся одним документом.
Название: 1.5
Отправлено: kow1976 от Январь 01, 2012, 09:04:42 pm
>Перепроведение не поможет
 док УчетнаяПолитика обрабатывает Все движения фифо до 2.01.11.00.00.00.

 А с 2.01.11.00.00.00. нужно делать перепроведение. Так как был ввод задним числом Док Учетная политика(например в конце дня).
 Я думаю в рамках дня нельзя делать часть документов ФИФО часть по средней. Период действия по условию задачи один день. Закончился день можно сменить политику.
Название: 1.5
Отправлено: tan1c от Январь 01, 2012, 09:07:01 pm
kow1976,
 Почему, вроде по решению, он берет остатки РН на момент времени док УчетнаяПолитика.

 По поводу отсутствия смысла в смене политики в середине дня согласен, но это учебная задача.
 Обычно политика в регл. учете меняется раз в год, в упр. не чаще 1 раза в месяц.
Название: 1.5
Отправлено: kow1976 от Январь 01, 2012, 09:26:19 pm
Дело не в смысле и предметной логики а в постановке задачи "Учетная политика может меняться каждый день,".
 Т. е. в рамках дня политика неизменна и перепроведение документов не создает проблем. Учетные данные теряют смысл только если были изменены данные в документах задним числом.

 
Quote (tan1c)
Почему, вроде по решению, он берет остатки РН на момент времени док УчетнаяПолитика.

 Да остатки по всей номенклатуре и всем париям на заданную дату( если мы вводим Учетную политику 2.01.11.18.00.00 то остатки должны получаться все равно на 2.01.11.00.00.00 начала дня.
Название: 1.5
Отправлено: tan1c от Январь 01, 2012, 09:39:08 pm
kow1976,
 Еще раз посмотрел проведение док УчетнаяПолитика, там остатки берутся на момент времени документа.
 Именно поэтому если неоперативно перепровести документы, проведенные в этот день до док. УчетнаяПолитика, то проведутся они уже поСредней, например для приходной было Фифо, затем ДокУП (УчетнаяПолитика) свел в ноль по партиям и перевел на пустую ссылку, перепроведение нарушит ноль по партиям в минус и удвоит данные на пустой ссылке.
Название: 1.5
Отправлено: kow1976 от Январь 01, 2012, 09:44:39 pm
Quote (tan1c)
там остатки берутся на момент времени документа.

 Это где. Конечно тогда будут проблемы. Так зачем нам остатки на момент документа если нам нужны остатки на момент смены учетной политики.
Название: 1.5
Отправлено: tan1c от Январь 01, 2012, 09:50:27 pm
kow1976,
 В обработке проведения, в запросе к регистру остатков, параметр.

 с другой стороны если после каждого перепроведения, перепроводить и ДокУП вроде все восстанавливается )

 Кстати брать остатки на начало дня, возможно тоже вариант, но требует перепроведения всех документов за день
Название: 1.5
Отправлено: lubja от Январь 12, 2012, 06:08:02 pm
всем привет!
 снова решила возобновить подготовку к экзаменам... что-то меня это "списание по среднему" вогнало в ступор. пока не прочитала всю эту тему, все, что тут написано по этому поводу, не могла въехать, что от меня хотят... в общем, посмотрите, кому не сложно )))
 ЗЫ: проверку на ввод задним числом не делала
Вложения:
lubja_1_05.dt
Название: 1.5
Отправлено: tan1c от Январь 23, 2012, 11:50:34 pm
Quote (lubja)
всем привет!

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

 Если интересно, вот мое решение для сравнения
Вложения:
1.5_tan1c.dt
Название: 1.5
Отправлено: kow1976 от Январь 24, 2012, 08:41:28 pm
tan1c,
 Смутил меня "расход" при смене учетной политике. По идее "Расход" это продажа товара(наличие оборотов).
 Получается вы продали по партии а купили без партий.
 Если бы это была не партия а склад. То расход был бы понятен нужны остатки и обороты по складу.

 Если бы надо было строить ведомость по остаткам товаров у вас бы не правильно считались обороты.
 Хотя с точки зрения остатков все будет работать и так.
Название: 1.5
Отправлено: tan1c от Январь 24, 2012, 11:18:29 pm
Смысл в том, что при смене учетной политики с ФИФО/ЛИФО на ПоСредней происходит свертка по партиям.
 Как вариант перевести все остатки на пустую партию.
 А по поводу оборотов отчета, легко обходится в запросе отчета. biggrin
Название: 1.5
Отправлено: Альберт от Январь 31, 2012, 08:56:58 pm
Какие недочеты имеются в моем решении задачи 1.5?
Вложения:
2308496.dt
Название: 1.5
Отправлено: Rizjiy от Февраль 07, 2012, 04:23:08 pm
kow1976, Не вижу ошибки все остатки бросить на пустую партию при смене политики.
 
 tan1c, Не понятно зачем использовал свойство "БлокироватьДляИзменения", если потом создавал блокировку). Вообще решение красивое, но не хватает четкости, в модуле расходной накладной Имхо легко можно было обойтись одним запросом и без "Копи-паста".
Вложения:
1.5_Rizjiy.dt
Название: 1.5
Отправлено: tan1c от Февраль 07, 2012, 08:43:29 pm
Rizjiy,
 1 - если коротко biggrin , то для отключения режима разделения итогов, по "очищаемым" записям, на случай отката транзакции.
 2 - Сама идея решения не моя, и нет предела совершенству biggrin .
Название: 1.5
Отправлено: Rizjiy от Февраль 08, 2012, 12:10:12 pm
tan1c,
 Позволь с тобой не согласиться, Ведь управляемые блокировки, наложенные объектом "БлокировкаДанных" снимаются при окончании транзакции (завершения или отката - неважно), а метод "заблокировать()" данного объекта отключает режим разделения итогов(иначе теряется смысл управляемой блокировки). Свойство регистров накопления "БлокироватьДляИзменения =Истина" аналог методу "Заблокировать()", разница лишь в моменте исполнения и в том, что в первом случае блокировки будут наложены на все записываемые поля регистра :).

Добавлено (08.02.2012, 12:10)
---------------------------------------------
И вообще разделение итогов предназначено только для параллельной записи в регистр, при чтении нужно читать все, и для этого нужно наложить управляемую блокировку. Но это уже не наша проблема cool

Название: 1.5
Отправлено: tan1c от Февраль 08, 2012, 01:47:08 pm
Rizjiy, у меня следующая информация.
 установка св-ва РН БлокироватьДляИзменения в Истина само по себе никаких действий не производит, и срабатывает при вызове метода Записать() как набора записей, так и всей коллекции движений . Т.е. сами транзакционные блокировки устанавливаются именно вызовом метода и в момент их вызова (тоже для метода Заблокировать(), только метод Заблокировать() всегда отключает режим разделения итогов, а методам Записать() об этом надо указывать явно, именно через установку св-ва РН БлокироватьДляИзменения в Истина).
 Вопрос зачем устанавливать блокировку дважды, связан с тем, что первая блокирует по очищаемым записям (при перепроведении), а вторая накладывается нами (обычно по табл. части док.), и они могут отличаться (внесли изменения в табл. часть, что-то удалили, что-то добавили), а так как мы очистили старые движения, то пока идет транзакция, кто-то может прочитать старые данные, в том случае если не было первой блокировки, (а их нет), затем откат транзакции (они вернулись biggrin ), и вот ситуации, что кто-то прочитал неверные данные (без учета старых движений).
 Здесь важно, что когда мы пишем пустой набор, очищаем, накладывается блокировка не пустая, а по очищаемым (удаляемым) записям.
 И вроде, методы Записать() всегда вызывают исключительный режим (запрет на чтение блокируемых данных), а в управляемой блокировке можно выбрать разделяемый режим (запрет только на изменение (запись)). Исключительный выбираем только если после чтения планируем делать запись в данный регистр, чтобы избежать взаимных блокировок.
Название: 1.5
Отправлено: Rizjiy от Февраль 08, 2012, 03:50:54 pm
tan1c, Все верно. Только есть один нюанс: при записи данных в транзакции, даже без указания св-ва "БлокироватьДляИзменения" накладываются неявные исключительные управляемые блокировки[Руководство разработчика Гл.9.3.4], С учетом разделения итогов. И считать в другой транзакции эти данные мы никак не сможем! Поэтому блокировка ручная накладывается перед чтением:
 - ПоНовой: Блокироватьдляизменения=Истина, Записать(); - сработала блокировка, Производим чтение и контроль остатков
 - ПоСтарому: Блокировать(); Производим чтение и запись в регистр.
 В итоге, пока идет наша транзакция никто не сможет прочитать данные biggrin

 Вот кстати здесь подробно обсуждалось http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=561820
Название: 1.5
Отправлено: tan1c от Февраль 09, 2012, 12:41:23 am
Rizjiy, Все верно biggrin , без указания св-ва "БлокироватьДляИзменения" накладываются неявные исключительные управляемые блокировки[Руководство разработчика Гл.9.3.4], С учетом разделения итогов (а его надо не учитывать, отключить biggrin ). Для этого и устанавливают БлокироватьДляИзменения в Истина.
Название: 1.5
Отправлено: max_osodoev от Февраль 13, 2012, 12:02:34 pm
что такое метод списания по средней? к примеру есть 2 партии:
 1) 1 ручка 10 руб,
 2) 2 ручки 20 руб,

 делаем расход на 2 ручки, что должно произойти? должны списаться сразу 2 ручки одной проводкой, если да то к какой партии их отнести?
Название: 1.5
Отправлено: Lazutin от Февраль 13, 2012, 12:10:08 pm
max_osodoev,
 При списании по средней не ведется партионный учет, т.е. и приход и расход происходят на пустую партию. А 2 ручки спишутся по средней, по цене 10 руб. за штуку.
Название: 1.5
Отправлено: max_osodoev от Февраль 14, 2012, 03:14:12 am
понял спасибо тебе)
Название: 1.5
Отправлено: max_osodoev от Февраль 14, 2012, 03:23:27 am
мое решение
Вложения:
1.5_Max_osodoev.dt
Название: 1.5
Отправлено: cska-fanat-kz от Февраль 17, 2012, 09:06:13 am
Мое решение.
 Проведение документа "ИзменениеУчетнойПолитики" и механизм блокировки - спасибо tan1c wink
Вложения:
1.5__1.dt.zip
Название: 1.5
Отправлено: zuzuka от Март 07, 2012, 09:31:11 am
зачем при проведении приходной накладной, если текущая учетная политика ПоСреднему, мы не указываем партию? а если при списании будет другая учетная политика (ФИФО, допустим) и я захочу списать конкретно ту партию, а она не указана wacko
 почему нельзя просто при проведении расходной, в случае, если учетная политика стоит ПоСреднему, "занулять" партии? а в приходной не трогать их... объясните, пожалуйста. а то я вообще в ступоре
Название: 1.5
Отправлено: cska-fanat-kz от Март 07, 2012, 10:27:22 am
Одно из требований на экзамене звучит примерно так: "комбинация измерений при приходе должна быть равна комбинации движений при расходе". Иначе регистр не будет выходить в 0.

 Если при приходе заполнять партии, а при расходе "занулять" (т.е. записывать пустую?) - то требование выше не выполнится...
Название: 1.5
Отправлено: zuzuka от Март 07, 2012, 11:00:28 am
а если при приходе политика была ФИФО или ЛИФО, то партия будет заполнена. допустим, при расходе политика будет ПоСреднему, то что с партией делать? не брать в расчет?
Название: 1.5
Отправлено: lubja от Март 07, 2012, 08:30:25 pm
я была на курсах и спрашивала препода на счет этой задачи. он сказал, что при смене учетной политики нужно перепроводить документы (приходы и расходы) с момента последнего изменения учетной политики. на тот момент, когда слушала его, мне было все понятно, но теперь что-то не очень... может нужно проводить не все доки с прошлой смены политики, а только остатки? в общем, меня это уже не сильно волнует, т.к. я сдала экзамен, а готовящимся, возможно, поможет эта теория, точнее ее часть )))
Название: 1.5
Отправлено: koladen от Март 09, 2012, 01:27:30 pm
Довольно простая задачка. Код небольшим получился. При изменении учетной политики на "По среднему", если до этого было ЛИФО или ФИФО, списываю все остатки по партиям и приходую общее количество и сумму на пустую ссылку. Если учетная политика меняется задним числом(документ об изменении перепроводится с другим значением УП), то сдвигаю границу последовательности. После восстановления последовательности все получается так, как нужно. Гонял на разных комбинациях, ошибок вроде нет. Чтобы отчет по Остаткам получился как в книжке, можно в регистре Остатки добавить справочный реквизит, в котором будет храниться условное название партии на данный момент. Т.е. если у нас ЛИФО или ФИФО, то там будет название партии, а если По среднему, то что-то типа "Учет для списания по средней". В отчете выводить это условное название. Отчет по продажам не писал, т.к. элементарный. Если кто-то заметит ошибки или будут конструктивные замечания, буду рад.
Вложения:
koladen1_5.dt
Название: 1.5
Отправлено: java от Март 13, 2012, 01:51:44 pm
Quote (koladen)
Если учетная политика меняется задним числом(документ об изменении перепроводится с другим значением УП), то сдвигаю границу последовательности.

 Интересно! А у меня никак не желает граница отпрыгивать назад при проведении задним числом. В чём секрет?
Название: 1.5
Отправлено: koladen от Март 13, 2012, 11:35:19 pm
Чтобы граница последовательности перемещалась, должны быть указаны движения, влияющие на нее. В моем случае это регистры Остатки номенклатуры, Учетная политика и Продажи. Следовательно, если при проведении задним числом, возникают какие-то новые движения по этим регистрам(изменилось количество, добавилась номенклатура, новая учетная политика и т.п.), то граница переместится.
Название: 1.5
Отправлено: dragon от Март 14, 2012, 09:25:19 pm
Посмотрел пару решений по поводу: "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться". В обоих идет сравнение с датой, например: "Если ЭтоНовый() и НачалоДня(ТекущаяДата())> Дата Тогда". Вопрос: а так можно - "Если ЭтоНовый() и РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда"?
Название: 1.5
Отправлено: Gyd от Март 14, 2012, 10:19:34 pm
Quote (dragon)
"Если ЭтоНовый() и НачалоДня(ТекущаяДата())> Дата Тогда". Вопрос: а так можно - "Если ЭтоНовый() и РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда"?

 И то, и другое легко обходится: проводите оперативно или текущей датой, потом меняете дату - и документ введен задним числом.
Название: 1.5
Отправлено: java от Март 15, 2012, 05:51:12 pm
Прошу посмотреть мой вариант, а также громить и критиковать. smile

 Вернулся к подготовке после большого перерыва. wacko
 Ваш сайт недавно обнаружил.
Вложения:
java_1_5.dt
Название: 1.5
Отправлено: dragon от Март 16, 2012, 09:01:52 pm
Quote (Gyd)
И то, и другое легко обходится: проводите оперативно или текущей датой, потом меняете дату - и документ введен задним числом.
А чем это противоречит условию задачи? И как поставить "жёсткий" запрет на такой обход?
Название: 1.5
Отправлено: Gyd от Март 16, 2012, 10:55:47 pm
Quote (dragon)
А чем это противоречит условию задачи? И как поставить "жёсткий" запрет на такой обход?

 Ну если быть честным, то это полумера smile как поставить запрет? добавить к этому проверку менялась ли дата проведенного документа... как вариант.
Название: 1.5
Отправлено: sv_mikh от Март 16, 2012, 11:16:23 pm
Мое решение. Ничего не читал, времени жаль.
Вложения:
sv_mikh_01_05.dt
Название: 1.5
Отправлено: Toxicoff от Март 22, 2012, 06:02:37 pm
Коллеги! Покритикуйте, кому не жалко smile

 Особенно блокировки и списание по средней)

 Спасибо ! smile

Добавлено (22.03.2012, 18:02)
---------------------------------------------
упс

Добавлено (22.03.2012, 18:02)
---------------------------------------------
http://narod.ru/disk/44179618001.ad120b16cd9e0b4a2eac0620578acc71/15.dt.html

Название: 1.5
Отправлено: TuMyP1985 от Апрель 10, 2012, 01:54:23 pm
Приветствую всех)

 Коллеги! Покритикуйте, кому не жалко
 ....
 http://narod.ru/disk/44179618001.ad120b16cd9e0b4a2eac0620578acc71/15.dt.html
- попытался скачать, но что то не скачивается, пишет (Внутренняя ошибка сервиса).

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

 Не совсем понял (вернее совсем не понял) как можно запрограммировать следующее:
 а)было списание себестоимости если по средней (измерения по партиям пропадают в приходе у РегистраНакопления.ОстаткиНоменклатуры),
 б)и стало списание себестоимости по FIFO (LIFO).
 Как вытащить "партии" для расчета себестоимости.
Вложения:
1Cv8-1_5-.dt
Название: 1.5
Отправлено: LEOON от Апрель 25, 2012, 03:54:25 am
Завтра, точнее уже сегодня дорешаю выложу свой вариант. Мне кажется правильный, но голова еще в полночь превратилась в тыкву biggrin
 Так что с утра проверю.
Название: 1.5
Отправлено: LEOON от Апрель 25, 2012, 12:48:15 pm
Обещал выложить, выкладываю.
 ////
 1. При смене на среднюю, у Док "УстановкаУчетнойПолитики" если меняем на среднюю то просто списываю и приходую с пустой партией.
 2. При смене на ФИФО/ЛИФО выбираю документы между текущим документом и последним с политикой отличной от средней. Проводим их(если это документ установки политики отменяем проведение чтобы не ломать партии).
 
Code
Пока Выборка.Следующий() Цикл
    Документ = Выборка.Регистратор.ПолучитьОбъект();
    Если ТипЗнч(Документ) = Тип("ДокументОбъект.УстановкаУчетнойПолитики") Тогда
     Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения);// Нужно отменить все документы с учетной политикой ПоСредней
    Иначе  
     Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
    КонецЕсли;
 КонецЦикла;

 Для получения документов используется последовательность(Входящие документы: Приходная, Расходная, УстановкаПолитики; граница не используется)
 ---
 П,С, Решал очень поздно так, что может чего и не учел. Замечания помогут поправить решение.
 Если есть вопросы, задавайте.
Вложения:
LEOON_1_1.5-2.2.dt
Название: 1.5
Отправлено: sv_mikh от Апрель 25, 2012, 01:43:03 pm
Quote (LEOON)
2. При смене на ФИФО/ЛИФО выбираю документы между текущим документом и последним с политикой отличной от средней. Проводим их(если это документ установки политики отменяем проведение чтобы не ломать партии).
 Code
 Пока Выборка.Следующий() Цикл
     Документ = Выборка.Регистратор.ПолучитьОбъект();
     Если ТипЗнч(Документ) = Тип("ДокументОбъект.УстановкаУчетнойПолитики") Тогда
      Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения);// Нужно отменить все документы с учетной политикой ПоСредней
     Иначе  
      Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
     КонецЕсли;
 КонецЦикла;

 Для получения документов используется последовательность(Входящие документы: Приходная, Расходная, УстановкаПолитики; граница не используется)
 


 Мне кажется это все лишнее... Если сменилось Лифо/Фифо, то ничего с точки зрения существующих партий не меняется.
 Последовательность применяется только в одной задаче по ОУ (1.7 вроде).
Название: 1.5
Отправлено: LEOON от Апрель 25, 2012, 01:56:50 pm
sv_mikh,
 Раньше тоже не заморачивался, но решил вернуться к задаче и довести до ума. Может и не нужно, но вот по этой ссылке Белоусов настоятельно рекомендует http://devtrainingforum.v8.1c.ru/forum....dtype=0
 (если что буду готов). А лояльность экзаменатора, это последнее на что стоит расчитывать! biggrin
 Честно говоря, мой вариант кажется мне вполне логичным и весьма не сложным. В сравнении с простым списанием в пустую добавляем всего:
 
Code
ИначеЕсли ПредМетодСписания = Перечисления.УчетнаяПолитика.ПоСредней И МетодСписания <> ПредМетодСписания Тогда
    // В ЭТОМ СЛУЧАЕ ПОЛУЧАЕМ ВСЕ ДОКУМЕНТЫ МЕЖДУ ТЕКУЩИМ И ПОСЛЕДНИМ С ПАРТИЯМИ
    Запрос = Новый Запрос;
    Запрос.Текст =   
    "ВЫБРАТЬ
    |    УчетнаяПолитикаСрезПоследних.Регистратор.МоментВремени
    |ПОМЕСТИТЬ ВТ
    |ИЗ
    |    РегистрСведений.УчетнаяПолитика.СрезПоследних(&Граница, МетодСписания В (ЗНАЧЕНИЕ(Перечисление.УчетнаяПолитика.ФИФО), ЗНАЧЕНИЕ(Перечисление.УчетнаяПолитика.ЛИФО))) КАК УчетнаяПолитикаСрезПоследних
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Себестоимость.Регистратор,
    |    ВТ.РегистраторМоментВремени
    |ИЗ
    |    Последовательность.Себестоимость КАК Себестоимость
    |  ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ
    |  ПО (ВЫБОР
    |    КОГДА ВТ.РегистраторМоментВремени ЕСТЬ NULL   
    |     ТОГДА Себестоимость.МоментВремени < &МоментВремени
    |    ИНАЧЕ ВТ.РегистраторМоментВремени < Себестоимость.МоментВремени
    |      И Себестоимость.МоментВремени < &МоментВремени
    |   КОНЕЦ)";//Документы выбираем между последней   
    //установкой с политикой отличной от средней и текущей установкой(или от начала учета до текущей установки, если не по средней не было)
    Запрос.УстановитьПараметр("Граница", Новый Граница(МоментВремени(),ВидГраницы.Исключая));
    Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
    Результат = Запрос.Выполнить();
      
    Выборка = Результат.Выбрать();
    НачатьТранзакцию();
    Пока Выборка.Следующий() Цикл
     Документ = Выборка.Регистратор.ПолучитьОбъект();
     Если ТипЗнч(Документ) = Тип("ДокументОбъект.УстановкаУчетнойПолитики") Тогда
      Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения);// Нужно отменить все документы с учетной политикой ПоСредней
     Иначе   
      Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
     КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
 КонецЕсли;

 Можно кстати и без последовательности обойтись, но так удобней.
Название: 1.5
Отправлено: aret от Апрель 26, 2012, 03:21:49 pm
В методичке 1С написано, что документы для перепроведения указывать те, которые:

 а) выполняют при проведении движения по выбранным регистрам
 б) при этом имеют "обусловленный" тип проведения. Т е при проведении опираются на данные регистров.

 Эти условия должны выполняться одновременно.

 В список Движения следует включить ОстаткиНоменклатуры и УчетнаяПолитика.
 В список входящих Расходная Накладная, поскольку опирается на регистр ОстаткиНоменклатуры и УчетнаяПолитика,
 и приходная накладная, поскольку опирается на регистр УчетнаяПолитика.

 Выкладываю свой вариант решения.
 В нем следующие особенности:
 1. Поскольку в условиях задачи ничего не указано, как контролируется последовательность при неоперативном перепроведении, значит это на усмотрение экзаменуемого. Следовательно, в целях экономии времени восстановление последовательности возлагается на стандартную процедуру 1С - Проведение документов. То есть идеология аналогично идеологии конфигурации Управление Торговлей, когда восстановление нарушенных последовательностей производится вручную спец обработкой.
 2. Форма отчетов приведена к виду, как задано в задачнике, т е заголовок вида "Продажи с 01.01.2010 по 31.03.2010 " и
 "Остатки товаров на 01.01.2010" (а то никто этим не заморачивался в тех вариантах, которые я видел)
Вложения:
mybase.dt
Название: 1.5
Отправлено: michail007 от Июль 25, 2012, 12:07:29 pm
У многих решений в Приходной накладной можно оприходовать услугу! Считаю это не правильным!!!! Никому интересно за это не сбавляли оценку?!
Название: 1.5
Отправлено: sv_mikh от Июль 25, 2012, 12:17:22 pm
Quote (michail007)
У многих решений в Приходной накладной можно оприходовать услугу! Считаю это не правильным!!!! Никому интересно за это не сбавляли оценку?!

 Думаю, что это от экзаменатора будет зависеть. В принципе скорее не снизят. Но обычно все же услуги фильтруют в приходе.
Название: 1.5
Отправлено: RoMeL от Июль 31, 2012, 08:02:08 pm
мое решение...
Вложения:
RoMeL_1.5.dt
Название: 1.5
Отправлено: Oliver от Август 14, 2012, 09:46:45 am
RoMel
 
Quote
мое решение...

 1. В приходной два неявных запроса в цикле
 2. Расходная - индексируется по услуге (я думаю индексы влияют на соединение а не отбор)
Название: 1.5
Отправлено: Oliver от Август 15, 2012, 02:08:02 am
Моё виденье билета. У меня документы задним числом перепроводятся, последовательностей нет.
Вложения:
1_5_Oliver.dt
Название: 1.5
Отправлено: RoMeL от Август 15, 2012, 11:35:54 am
Oliver, прочти http://forum.chistov.pro/index.php?topic=2005.msg22327#msg22327 п.8,9,12
Название: 1.5
Отправлено: ivanzavr от Август 16, 2012, 03:23:46 pm
Раз уж тут кто-то ещё чего-то смотрит, то вот принципиально новое решение (ну по крайней мере я не встретил похожего).

 Для остатков сделал 2 регистра:

 "ОстаткиНоменклатуры" (без партий) и "ПартииТоваров" (с партиями).

 И приходная и расходная всегда делают движения по обоим (не зависимо от установленной политики).

 Документ "УчетнаяПолитика" не делает никаких движений кроме установки метода списания.

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

 Можно ли представить такое решение на экзамене или оно в корне методологически не правильное?
Вложения:
ivanzavr1.5.dt
Название: 1.5
Отправлено: быдлокодер от Август 16, 2012, 03:48:49 pm
Посмотрел решение koladen (сообщ 214)

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

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

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

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

    ВыборкаДетальныеЗаписи.Следующий();
    УчетнаяПолитика = ВыборкаДетальныеЗаписи.ЗначениеУчетнойПолитики;

 ___________________________________________________________________________

 заменить вот этими?
 ____________________________________________________________________________
 УчетнаяПолитикаНаДатуПроведения = РегистрыСведений.УчетнаяПолитика.СрезПоследних(МоментВремени());
                 ПолучитьЗначениеУчетнойПолитики = УчетнаяПолитикаНаДатуПроведения[0].ЗначениеУчетнойПолитики;
                 Если ПолучитьЗначениеУчетнойПолитики = "FIFO" Тогда
                    УчетнаяПолитика = "ВОЗР";
                 Иначе
                    УчетнаяПолитика = "УБЫВ";
                 КонецЕсли;
 _______________________________________________________________

 на выходе одно и то же
Название: 1.5
Отправлено: ivanzavr от Август 16, 2012, 04:06:20 pm
раз результат тот же, значит можно, но стандартная писанина такая:
 
 УчетнаяПолитикаНаДатуПроведения = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).ЗначениеУчетнойПолитики;

 Предыдущее мое решение косячное, переделал расходную.
Вложения:
ivanzavr1.5-2.dt
Название: 1.5
Отправлено: RoMeL от Август 16, 2012, 11:03:12 pm
ivanzavr, Посмотрел... В коде очень сильно не разбирался, просто протестировал на данных...
 Ваше решение неверное, так как - Не может себестоимость товаров на остатке зависеть от смены учетной политики smile
 Т.е. например сегодня Вы поменяли учетную политику, отчет на вчера и на завтра покажет разную стоимость товаров на остатке, а у Вашего решения
 показивает и разное количество... wink
 Посмотрите отчет в базе ...
Вложения:
ivanzavr1.5-2_R.dt
Название: 1.5
Отправлено: ivanzavr от Август 17, 2012, 08:16:44 am
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.
 Тогда моё решение похоже на правду.

 Если партии восстанавливать не надо, как, например, в твоём решении, то у меня проблемы)
 потому что "ресурсы регистра накопления не выводятся в ноль по всем измерениям"
Название: 1.5
Отправлено: Oliver от Август 19, 2012, 11:24:59 am
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. Если я не смог убедить Вас, пожалуйста оставайтесь при своём мнении. Успехов в подготовке!

Название: 1.5
Отправлено: RoMeL от Август 20, 2012, 10:31:55 am
Oliver, ок, Спасибо
Название: 1.5
Отправлено: LivingStar от Октябрь 16, 2012, 08:40:53 am
прокомментируйте пожалуйста ОбработкуПроведения документа РасходнаяНакладная

 
Code

 Процедура ОбработкаПроведения(Отказ, РежимПроведения)
  //  
  Движения.Продажи.Записать();
  Движения.Продажи.Записывать             = Истина;
  Движения.ОстаткиНоменклатуры.Записать();
  Движения.ОстаткиНоменклатуры.Записывать = Истина;
  // получение метода сортировки
  Метод = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментВремени()).МетодСписания;
  СОРТ  = ?(Метод = Перечисления.МетодСписания.FIFO, "ВОЗР", "УБЫВ");
  // блокировка записей регистра по позициям номенклатуры для получения остатков
  Блокировка                       = Новый БлокировкаДанных;
  ЭлементБлокировки                = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
  ЭлементБлокировки.Режим          = РежимБлокировкиДанных.Исключительный;
  ЭлементБлокировки.ИсточникДанных = Товары;
  ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
  Блокировка.Заблокировать();
  //  
  Запрос       = новый Запрос;
  Запрос.Текст = "
   |ВЫБРАТЬ
   |    РасходнаяНакладнаяТовары.Номенклатура      КАК Номенклатура,
   |    СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
   |    СУММА(РасходнаяНакладнаяТовары.Сумма)      КАК Сумма
   |ПОМЕСТИТЬ ТабДок
   |ИЗ
   |    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
   |ГДЕ
   |    РасходнаяНакладнаяТовары.Ссылка                = &Ссылка
   |    И РасходнаяНакладнаяТовары.Номенклатура.Услуга = ЛОЖЬ
   |
   |СГРУППИРОВАТЬ ПО
   |    РасходнаяНакладнаяТовары.Номенклатура
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ТабДок.Номенклатура                    КАК Номенклатура,
   |    ОстаткиНоменклатурыОстатки.Партия                         КАК Партия,
   |    ТабДок.Количество                    КАК Количество,
   |    ТабДок.Сумма                    КАК Сумма,
   |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
   |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0)      КАК СуммаОстаток
   |ИЗ
   |    ТабДок КАК ТабДок
   |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
   |    &МоментВремени,
   |    Номенклатура В
   |     (ВЫБРАТЬ
   |      ТабДок.Номенклатура
   |     ИЗ
   |      ТабДок)) КАК ОстаткиНоменклатурыОстатки
   |  ПО ТабДок.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
   |
   |УПОРЯДОЧИТЬ ПО
   |    Партия "+СОРТ+"
   |ИТОГИ
   |    МАКСИМУМ(Количество),
   |    МАКСИМУМ(Сумма),
   |    СУММА(КоличествоОстаток),
   |    СУММА(СуммаОстаток)
   |ПО
   |    Номенклатура";
  Запрос.УстановитьПараметр("МоментВремени", МоментВремени());    
  Запрос.УстановитьПараметр("Ссылка",        Ссылка);
  ВыборкаПоНоменклатуре = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  Пока ВыборкаПоНоменклатуре.Следующий() Цикл
   СписаноСебестоимость = 0;
   Если ВыборкаПономенклатуре.КоличествоОстаток < ВыборкаПономенклатуре.Количество Тогда
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Не хватает: " + ВыборкаПоНоменклатуре.КоличествоОстаток-ВыборкаПоНоменклатуре.Количество +
          " штук по номенклатуре " + ВыборкаПоНоменклатуре.Номенклатура + "";
    Сообщение.УстановитьДанные(Ссылка);
    Сообщение.Сообщить();
    Отказ = Истина;
   КонецЕсли;
   // вывод сообщений по всем товарам по которым присутствует нехватка
   Если Отказ Тогда
    Продолжить;
   КонецЕсли;
   Себестоимость = 0;
   НеобходимоСписать = ВыборкаПоНоменклатуре.Количество;
   ВыборкаПоПартии  = ВыборкаПоНоменклатуре.Выбрать();
   Пока ВыборкаПоПартии.Следующий() и НеобходимоСписать > 0 Цикл
    СписываемоеКоличество = МИН(НеобходимоСписать,ВыборкаПоПартии.КоличествоОстаток);
    Движение              = Движения.ОстаткиНоменклатуры.Добавить();
    Движение.ВидДвижения  = ВидДвиженияНакопления.Расход;
    Движение.Период       = Дата;
    Движение.Номенклатура = ВыборкаПоПартии.Номенклатура;
    Движение.Партия       = ВыборкаПоПартии.Партия;
    Движение.Количество   = СписываемоеКоличество;
    Движение.Сумма        = СписываемоеКоличество/ВыборкаПоПартии.КоличествоОстаток * ВыборкаПоПартии.СуммаОстаток;
    Себестоимость         = Себестоимость + Движение.Сумма;
    НеоходимоСписать      = НеобходимоСписать - СписываемоеКоличество;
   КонецЦикла;
   Движение               = Движения.Продажи.Добавить();
   Движение.Период        = Дата;
   Движение.Номенклатура  = ВыборкаПоПартии.Номенклатура;
   Движение.Количество    = ВыборкаПоПартии.Количество;
   Движение.Сумма         = ВыборкаПоПартии.Сумма;
   Движение.Себестоимость = Себестоимость;
  КонецЦикла;
 КонецПроцедуры
 

Добавлено (16.10.2012, 08:40)
---------------------------------------------
как в этой процедуре учитывать что списание LIFO, FIFO или ПоСредней ?

Название: 1.5
Отправлено: Gyd от Октябрь 16, 2012, 02:57:04 pm
Quote (LivingStar)
|УПОРЯДОЧИТЬ ПО
 | Партия "+СОРТ+"

 Вот эта строка сортирует партии в запросе:
 1. По возрастанию: 1,2,3,4,5... (FIFO)
 2. По убыванию: ....5,4,3,2,1 (LIFO).
 Соответственно, в выборке запроса, в цикле, партии перебираются согласно этого порядка.

 По средней, насколько я заметил, списание не предусмотрено.
Название: 1.5
Отправлено: LivingStar от Октябрь 16, 2012, 04:41:30 pm
Gyd Посмотрите пожалуйста вот эту выгрузку ->
 это решение задачи 1.5, по средней, регулируется другими документами, верно ли там всё?

Добавлено (16.10.2012, 16:41)
---------------------------------------------
почему то не могу прикрепить

Название: 1.5
Отправлено: LivingStar от Октябрь 16, 2012, 05:11:48 pm
выгрузка :
Вложения:
1Cv8_LS_1_5.dt
Название: 1.5
Отправлено: Gyd от Октябрь 16, 2012, 06:19:28 pm
Quote (LivingStar)
Посмотрите пожалуйста вот эту выгрузку

 Ааа, это же 1.5... Очень детально не смотрел, а так вроде всё хорошо.
Название: 1.5
Отправлено: Pavlyk от Октябрь 16, 2012, 11:03:00 pm
Quote (Gyd)
По средней, насколько я заметил, списание не предусмотрено.
А по средней без разницы УБЫВ или ВОЗР , у нас все равно одна партия будет
Название: 1.5
Отправлено: Gyd от Октябрь 17, 2012, 11:30:23 am
Quote (Pavlyk)
А по средней без разницы УБЫВ или ВОЗР , у нас все равно одна партия будет

 Ага, я вспомнил об этом вчера, когда дтшник смотрел.
Название: 1.5
Отправлено: ДимокШ от Октябрь 19, 2012, 02:36:29 pm
цитата "Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке"
 т.е. исходя из условий задачи - услуги могут быть только в реализации. Конечно в поступлении можно и отфильтовывать, но это такая мелочь по сравнению с другими возможными косяками...
Название: 1.5
Отправлено: Glime от Октябрь 19, 2012, 07:53:31 pm
Всем доброго время суток.
 Вернулся к подготовке после длительного перерыва, раньше решал эту задачу способом описанным здесь, с очисткой измерения регистра "Партия" при смене на учетную политику "По средней"(списанием всех партий и оприходованием) и не проставлению партии в обратном порядке (ну нет точного математического аппарата для восстановления партий, все равно в себестоимости партий окажется белеберда) с пустой партией считалось то же партией, и списывалось в дальнейшем либо в первую либо в последнею очередь(ФИФИ/ЛИФО), но тут я подумал, что в стандартной УТ (еще до 11, в 11 не буду врать не знаю) или УПП 1.3(это точно проверил только что, да и процедуры списания помню почти наизусть) списание партии товаров не меняется. Списание идет по методу ФМФО или ЛИФО а вот оприходование происходит с заполненным документом партии или нет(по средней), да и потом поковырявшись в консультанте нашел реальную рекомендацию как раз на такой переход.

 Так вот теперь вопрос, если аргументировать статьей из консультанта и ПБУ 5/01, можно ли на экзамене отстоять такой способ списания?
Название: 1.5
Отправлено: Gyd от Октябрь 19, 2012, 08:55:02 pm
Quote (Glime)
это точно проверил только что, да и процедуры списания помню почти наизусть

 А можете привести пример такого списания?
Название: 1.5
Отправлено: Glime от Октябрь 21, 2012, 01:02:29 pm
Quote (Gyd)
Quote (Glime)
 это точно проверил только что, да и процедуры списания помню почти наизусть

 А можете привести пример такого списания?


 В каком смысле? могу привести пример со "сринами" движения по партиям (РАУС в боевой не включен), могу конечно выдрать куски кода процедур проведения, но это будет очень длинно.
 как тут скрины прицеплять?
Название: 1.5
Отправлено: Gyd от Октябрь 21, 2012, 09:16:51 pm
Glime, интересует как у них реализовано выведение регистра в ноль при таком способе списания.
Название: 1.5
Отправлено: Glime от Октябрь 22, 2012, 11:04:51 am
Quote (Gyd)
Glime, интересует как у них реализовано выведение регистра в ноль при таком способе списания.

 Элементарно, всегда идет списания по партионному принципу(Всегда ФИФО если не указано ЛИФО). По средней влияет только на поступление (документ партии заполнен или нет), кусок кода из модуля "УправлениеЗапасамиПартионныйУчет" в который всегда при списание себестоимости заходит обработчик и формирует дерево партий
 
Code
|    ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
причем о средний, замете, вообще не чего не говорится. Про среднею можно встретить только в поступление (устанавливать или нет Документ оприходование).
 Так что они даже не замарачиваюся, просто списывают всегда партионно, формируя дерево с остатками партий. А все поступление пришедшие с пустой партией(по средний) являются так же партией как и с документом оприходования.
Название: 1.5
Отправлено: Gyd от Октябрь 22, 2012, 02:42:11 pm
Quote (Glime)
просто списывают всегда партионно

 Из этого мы делаем вывод что списание по средней у них не реализовано smile

 При решении задач, думаю вам лучше придерживаться классической модели списания по средней.
Название: 1.5
Отправлено: Pavlyk от Октябрь 23, 2012, 12:36:47 am
Quote (Gyd)
При решении задач, думаю вам лучше придерживаться классической модели списания по средней.
Its true
Название: 1.5
Отправлено: capix от Ноябрь 02, 2012, 03:07:12 pm
Доброго времени суток! (:
 Я не местная, я вообще с женского форума и уже год на 1с-ке не программировала.
 Для безболезненного выхода из дикрета хочу сдать этот экзамен. Сегодня начну подготовку с задачи 1.5.
 Посмотрела, что билеты и правила игры поменялись. Если на следующей неделе скину какое-нибудь решение, скорей всего сборное из всего, что здесь найду и всего, что пойму, кто-нибудь его сможет посмотреть?
 Только тапками сразу не закидывайте, а то я и так боюсь начинать подготовку к экзамену.
Название: 1.5
Отправлено: Gyd от Ноябрь 02, 2012, 03:13:25 pm
Quote (capix)
Только тапками сразу не закидывайте

 Здесь это не принято smile только конструктивная критика.
Название: 1.5
Отправлено: crabzzy от Ноябрь 02, 2012, 09:35:59 pm
capix Добрый день, рады Вам!
Название: 1.5
Отправлено: GvH от Ноябрь 15, 2012, 03:01:15 pm
Вот мой вариант решения задачи.

 ЗЫ:
 Сделал, что партия учитывается при списании вне зависимости от выбранного метода списания себестоимости.

 ЗЫ:
 Посмотрите, пжл.
Вложения:
M.1.5_20121108-.dt
Название: 1.5
Отправлено: ssserg от Ноябрь 18, 2012, 12:37:45 pm
LivingStar
 
Quote

 выгрузка :
 Прикрепления: 1Cv8_LS_1_5.dt(59Kb)


 В коде опечатка в модуле расходной.
 В цикле списание по партиям вместо
          НеоходимоСписать = НеобходимоСписать - СписываемоеКоличество;
 нужно
          НеобходимоСписать = НеобходимоСписать - СписываемоеКоличество;
 ошибка в одной букве =)
 иначе оно неправильно начинает списывать по FIFO и LIFO
Вложения:
1.5_LS_fxd.dt
Название: 1.5
Отправлено: majestic от Ноябрь 26, 2012, 06:26:09 am
Здравствуйте, форумчане!
 Почитал что вы пишете, посмотрел некоторые представленные решения, скомпоновал из них правильное на мой взгляд решение. Единственное, не совсем уверен в необходимости последовательности, скорее всего она вообще не нужна из-за вот этого условия задачи:
 "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться.". Вопрос в том, можно ли изменять старые документы (например, количество номенклатуры), или же только перепроводить? Если только перепроводить, то последовательность не нужна, иначе она нужна, чтобы сдвигать границу актуальности.
Вложения:
1_5_majestic.dt
Название: 1.5
Отправлено: kol_118 от Январь 29, 2013, 03:19:08 am
LivingStar,
 в запросе в обработке проведения расходной накладной надо индексировать по номенклатуре (это вроде как рекомендации),

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


 деление в конце - проблемы копеек,
 а в остальном все в норме
Название: 1.5
Отправлено: Oliver от Январь 29, 2013, 03:35:33 am
Цитата
Движение.Сумма = СписываемоеКоличество * ВыборкаПоПартии.СуммаОстаток/ВыборкаПоПартии.КоличествоОстаток;

 Это не есть решение проблемы копеек. Решение только одно: если количество списываемого равно количеству партии тогда списывать всю сумму партии.
Название: 1.5
Отправлено: alex7six от Март 03, 2013, 06:57:32 pm
Мой вариант. Реализовал только списание по среднгей, т.к. все остальное аналогично реализовал в 1.4
Вложения:
1-5.dt
Название: 1.5
Отправлено: M0narch от Апрель 11, 2013, 06:34:36 pm
Разъясните такой момент:
 1. Завели метод списания ФИФО.(документ по регистру остатков движений не делал)
 2. Сделали приход.(записали приход в регистр остатков по партии)
 3. На следующий день меняем метод списания на "По среднему". Документ делает расход с партией и приход на пустую партию в регистр остатков.
 4. Теперь если перепровести приход(задним числом), то в регистре остатков появятся записи с минусом по партии   -- это ведь не правильно !?
Название: 1.5
Отправлено: fimanich от Апрель 12, 2013, 10:39:59 am
Цитата (M0narch)
Теперь если перепровести приход(задним числом), то в регистре остатков появятся записи с минусом по партии -- это ведь не правильно !?
Приходная получает метод списания на дату документа, и при перепроведении приходной движения документа не должны измениться никак.
Название: 1.5
Отправлено: ivanovnm от Май 22, 2013, 01:47:01 pm
Еще одно решение
Вложения:
ivanovnm1.5.dt
Название: 1.5
Отправлено: artfa от Июнь 16, 2013, 06:22:16 pm
решение, идею подглядел у кого-то с этой ветки
Вложения:
6148469.dt
Название: 1.5
Отправлено: fortune от Июнь 26, 2013, 11:32:30 am
Задачу решил,но есть непонятный момент.Никак не могу понять - когда провожу документ "Учетная политика" с видом списания "по средней" документ в регистре ОстаткиНоменклатуры пишет в расход номенклатуру с партиями и приходует их заново без партий свернуто.Но если я перепровожу этот документ с видом списания Фифо\Лифо - у меня восстанавливаются партии в регистре ОстаткиНоменклатуры.Откуда берутся партии и как такое происходит?
Вложения:
7056125.dt
Название: 1.5
Отправлено: _jester_ от Июнь 27, 2013, 03:34:47 pm
Добрый день форумчане!

 При решении этой задачи возникло много вопросов, прочитав сообщения этой ветки увидил много разных решений. Какое из них правильное так и не понял, одни говорят что нужно списывать по партиям вне зависимости Метода Списания, некоторые говорят что нужно устанавливать партии при переходе на ФИФО с ПоСредней. Проведение документа УчетнаяПолитика подсмотрел у sv_mikh.

 Кому не сложно посмотрите пожалуйста! Жду критику!

Добавлено (27.06.2013, 15:34)
---------------------------------------------
Посмотрел таблицу билетов собранных RoMel, и сравнил их с задачами в сборнике за 2011 год(редакция 3) они немного отличаются в том числе и задача 1.5, кто может подсказать какие более актуальные? Я так понимаю актуальные билеты собранные RoMel, они же и выдавались на экзамене.


Вложения:
3_1.5_Jester.dt
Название: 1.5
Отправлено: runner1 от Июль 24, 2013, 05:05:55 pm
Гляньте, пожалуйста. Когда уже начну головой думать cry
Вложения:
Runner_01_05.dt
Название: 1.5
Отправлено: artfa от Июль 26, 2013, 04:06:51 pm
исправленное

 Добавлено (26.07.2013, 16:06)
 ---------------------------------------------
 
Цитата (fortune)
Задачу решил,но есть непонятный момент.Никак не могу понять - когда провожу документ "Учетная политика" с видом списания "по средней" документ в регистре ОстаткиНоменклатуры пишет в расход номенклатуру с партиями и приходует их заново без партий свернуто.Но если я перепровожу этот документ с видом списания Фифо\Лифо - у меня восстанавливаются партии в регистре ОстаткиНоменклатуры.Откуда берутся партии и как такое происходит?

 это происходит потому что старые движения замещаются на новые, т.е. если перепровести документ "Учетная политика", то движения сделанные последним удаляются
Вложения:
7428652.dt
Название: 1.5
Отправлено: dudell от Август 06, 2013, 05:51:28 pm
Всем привет. Выкладываю свое решение, и хочу спросить - Почему идут разговоры о прекращении оприходования по партиям товара в результате выбора УП = ПоСредней ? Разве нельзя продолжать приходовать по партиям. Списывать тоже по партиям (фифо или лифо неважно), просто себестоимость при списании рассчитывать как среднюю по всем партиям (ведь только об этом и говорится в задании)? Мне кажется, это более гармоничный вариант.  Это реализовано в моем решении.
Вложения:
dudell_1.5.dt
Название: 1.5
Отправлено: artfa от Август 06, 2013, 10:52:22 pm
Цитата (dudell)
Это реализовано в моем решении

 у вас остатки не выходят в ноль, есть нулевое количество при отрицательной стоимости
Название: 1.5
Отправлено: dudell от Август 08, 2013, 06:45:09 pm
Цитата (artfa)
у вас остатки не выходят в ноль, есть нулевое количество при отрицательной стоимости
Да, это и есть ответ на мой вопрос, почему нужно оприходовать все на пустую партию при выборе УП = ПоСредней.
 Исправленное решение прилагается.
 artfa - мимоходом глянул решение - сразу бросилось в глаза, проблему копеек не решаешь.
Вложения:
05.dt
Название: 1.5
Отправлено: Lolkien от Август 16, 2013, 08:18:47 pm
Собственно, мое решение.
 Я не стал делать как большинство коллег здесь, используя для учета по средней партию "пустаяСсылка()"

 Задача решена на 3 регистрах:
 1)Продажи - комментарии излишни,
 2)ОстаткиНоменклатуры - учет по средней,
 3)ОстаткиНоменклатурыПартионный - Учет по партиям,
 По регистру "средних" делаются + и - движения, если на момент проведения приходной или расходной действует соответствующая учетная политика.
 Аналогично, по регистру "Партий".
 После проведения регламентного документа, если учетная политика изменилась, то, с помощью последовательности  за период (ОТ "сбитой" этим проведением границы ДО Границы с исключением следующего документа "регистрация учетной политики") происходит соответствующий "переброс" приходных и расходных движений на другой регистр - свернуто, без партий на РН ОстаткиНоменклатуры или развернуто, с партиями, на РН ОстаткиНоменклатурыПартионный в соответствии с изменившейся учетной политикой ФИФО, ЛИФО или по Средней.

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

 П.С. есть мелкие недостатки, типа неоптимально смещения границы последовательности, но исправлять лень, отлаживать тоже надоело, так что буду рад конструктивной критике.
 Спасибо за внимание.
Вложения:
1.5_Lolkien.dt
Название: 1.5
Отправлено: zorky от Октябрь 26, 2013, 04:13:29 pm
Смотрел многие решения - попадались правильные, вроде, но при переходе на "ПоСредней" многие списывают на пустую партию ВСЕ приходки с самого начала учёта. Что по ходу не есть правильно, нужно найти момент времени самой ранней партионной политики(фифо или лифо), возможно до него уже была политика "ПоСредней", и там итак была одна пустая партия...
 Посмотрите, покритикуйте если не трудно, все вымерли как будто)
Вложения:
zorky1_5-25-.dt
Название: 1.5
Отправлено: SanjaKaiser от Октябрь 27, 2013, 05:12:17 pm
Цитата zorky ()
многие списывают на пустую партию ВСЕ приходки с самого начала учёта
    Ну это не совсем так, ведь в запросе ты отбираешь только партии с ненулевыми остатками, соответственно, даже если и была раньше политика "по средней", она у тебя остатки по партиям вывела в ноль. Т.е. в результате будут присутствовать ТОЛЬКО записи, которые необходимо списать на Пустую партию. Так что эту проверку считаю не нужной.
     В запросе по расходной накладной суммируешь номер строки, мелочь конечно, но сообщение о нехватке будет выводиться неверно

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

Название: 1.5
Отправлено: zorky от Октябрь 28, 2013, 01:37:22 am
SanjaKaiser, ага, я че то перемудрил, спасибо)  
 1.6 выложил, думаю сильно на мелочи не заморачиваца, защиты от дурака и т.д.  слишком много времени на идеальное решение уходит, главное суть уловить и модель рабочую сделать, как тут кто-то сказал у sv_mikh  - канонические решения, ориентироваться на них, не забывать про время...Я ж недавно начал готовится, решать - время много уходит сейчас, а в начале и того больше! а надо за час накодить))
Название: 1.5
Отправлено: SanjaKaiser от Октябрь 28, 2013, 11:03:26 am
в видеокурсах Павел Чистов тоже советует не заморачиваться на защиту от дурака. Сам только начал готовиться, так что тебя прекрасно понимаю, тоже времени уходит немерено, но главное руку набить
Название: 1.5
Отправлено: artfa от Ноябрь 10, 2013, 09:44:56 pm
где-то на этом форуме я видел следующее "препод сказал что в идеале эта задача решается на двух регистрах".
 вобщем решил на двух регистрах - Себестоимость, ОстаткиНоменклатуры.
 суть решения, при продаже (если ЛИФО или ФИФО) списываю себестомость по партии где сумму на единицу товара расчитываю из регистра сведений Партии, если по средней то соответственно Себестоимость за ед. = ОбщаяСебестоимость/ОбщееКоличество,
 в результате может возникнуть ситуация, когда например:
 Приход -
 Партия 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
Отправлено: mikas-2008 от Декабрь 03, 2013, 02:35:42 pm
Приветствую всех страждущих сертификата 1С спец. Все же решил положить в общую копилку и своих 5-ть копеек. Интересная задача. По началу даже было не понятно, для чего документ ИзменениеУчетнойПолитики должен был перепроводить остатки на пустую партию, но потом разобрался. :-) Выкладываю свое решение. Буду признателен, если кто его посмотрит и укажет на косяки.  smile
Вложения:
1.05_mikas.dt
Название: 1.5
Отправлено: Denver от Декабрь 16, 2013, 11:22:20 pm
Добавляю свою
Вложения:
Denver1.5v1.dt
Название: 1.5
Отправлено: Denver от Декабрь 18, 2013, 05:44:11 am
Заметил ошибку, с услугами не разобрался. Исправленный вариант:

 Добавлено (18.12.2013, 05:40)
 ---------------------------------------------
 Заметил еще пару ошибок, исправил

Добавлено (18.12.2013, 05:44)
---------------------------------------------
mikas-2008, у вас тоже недочет нашел, в приходной в цикле обхода табличной части строите неявный запрос к перечислениям..надо бы вынести за цикл


Вложения:
Denver1.5v3.dt
Название: 1.5
Отправлено: 32ops от Декабрь 30, 2013, 05:12:02 pm
imho
 при списании по средней - списывать партию, а разницу в стоимости ложить в специально отведенную пустую партию (если все время будет по средней, то в итоге при списании всех партий в пустой партии окажется 0)
 при списании по фифо/лифо - сначала списывать разницу из пустой партии, потом по стандарту.

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

 Опровергайте)))
Название: 1.5
Отправлено: 32ops от Декабрь 30, 2013, 07:53:25 pm
Че-то как-то вяло(( НГ поди wink
Вложения:
1Cv8_1_5.dt
Название: 1.5
Отправлено: 32ops от Декабрь 30, 2013, 08:40:48 pm
ой, налажал. не учел, что пустую партию тоже надо учитывать при расчете себестоимости по среднему. Ещё помидорко.
Вложения:
1029426.dt
Название: 1.5
Отправлено: 32ops от Декабрь 31, 2013, 08:09:11 am
вроде теперь все
Вложения:
1926788.dt
Название: 1.5
Отправлено: Pro100KoT от Февраль 10, 2014, 10:07:43 am
Прошу проверить
Вложения:
8476249.dt
Название: 1.5
Отправлено: giotto от Март 25, 2014, 10:34:32 am
Ну в принципе задача 1.5 одна из самых легких, вот выкладываю свой вариант, как мне кажется, вообще классический - ни прибавить, ни убавить (на мой скромный взгляд). Там, правда, нужно учетную политику документом менять, а я из-за лени вручную сделал, но это и все, а остальное вроде бы тика в тику.
Вложения:
__1.5.dt
Название: 1.5
Отправлено: MorningStalker от Март 25, 2014, 07:36:56 pm
Цитата giotto ()
Ну в принципе задача 1.5 одна из самых легких, вот выкладываю свой вариант, как мне кажется, вообще классический - ни прибавить, ни убавить (на мой скромный взгляд). Там, правда, нужно учетную политику документом менять, а я из-за лени вручную сделал, но это и все, а остальное вроде бы тика в тику.
1. Условие про Услуги вообще не реализовано.

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

 Вот этот фортель я вообще не понял: если проводим документ в Оперативном режиме, тогда записываем пустой набор, для того чтобы затереть старые движения, тем самым получая актуальные данные для запроса. А если Неоперативный режим: вчера мы продали 10 табуреток - на складе осталась 1, сегодня перепроводим документ - поскольку старые записи мы не затираем, то он запрос покажет, что на складе табуретка 1, а реально мы имеем 11.
 Либо я вообще Вашу логику не уловил. Поясните плизз...

 3.  Если НадоСписать = 0 Тогда
         Себестоимость = 0;
     ИначеЕсли НадоСписать = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
         Себестоимость = ВыборкаДетальныеЗаписи.СтоимостьОстаток;
     Иначе
         Себестоимость = НадоСписать / ВыборкаДетальныеЗаписи.КоличествоОстаток * ВыборкаДетальныеЗаписи.СтоимостьОстаток;
     КонецЕсли;

 Длинно, некрасиво, рекомендую использовать:
     Движение.Стоимость = ?(НадоСписать = ВыборкаДетальныеЗаписи.КоличествоОстаток, ВыборкаДетальныеЗаписи.СтоимостьОстаток, НадоСписать * ВыборкаДетальныеЗаписи.СтоимостьОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток); 

 4. Ну и последнее, самое важное :). В задаче есть вот такая строчка: Учетная политика можетменяться каждый день, ее изменение фиксируется соответствующим документом.
 Не обнаружил в Вашем решении этого документа, а ведь вся изюмина как раз в нем и зарыта.

 P.S. если списание ФИФО / ЛИФО то все очевидно, а если по средней?
Название: 1.5
Отправлено: giotto от Март 25, 2014, 10:07:54 pm
MorningStalker, спасибо за вдумчивый анализ. Ну и прямо по пунктам:
 1. Про Услуги, блин, забываю все время, это плохо, нужно до автоматизма доводить.
 2. Тут, собственно, условие Иначе вообще можно было не писать, а сразу установить параметр МоментВремени(). А по поводу что покажет 1 табуретку, так тут все просто: документ будет считывать записи на момент проведения (если неоперативно), причем его движения учитываться не будут. Ну вот сейчас опять прогнал по тестовым данным, и оперативно, и неоперативно - все вроде верно считает.
 3. Если верить Павлу Чистову (а как показывает опыт, ему можно верить), таковы требования 1С - явно указывать все условия, во всяком случае, я так понял из его курса по подготовке к Специалисту. Так что указываю от греха подальше. Ну, конечно, можно использовать и вашу конструкцию, согласен.
 4. Ну документ сделать - дело нетрудное, а регистр у меня имеет периодичность "день", так что тут все почти верно))
 А вот по ФИФО/ЛИФО - средняя, тут да, загадка. Я лично склоняюсь к такому варианту:сделать глобальное условие Если ФИФО \ ЛИФО Тогда... Иначе...КонецЕсли. Наверное, не совсем оптимально, нужно фактически дублировать расчет себестоимости и списание, зато каждое действие уже на автомате. Ну или вынести расчет в общий модуль, а в документе оставить списание.

  А вы покажите свой вариант (если уже был выложен выше, то прошу прощения).
Название: 1.5
Отправлено: MorningStalker от Март 26, 2014, 06:14:00 am
Цитата giotto ()
А вы покажите свой вариант (если уже был выложен выше, то прошу прощения).
выкладываю, решал давно ее уже, но она встречается в билете №3, поэтому в голове хранится ее решение :).
Вложения:
_1-05.dt
Название: 1.5
Отправлено: giotto от Март 26, 2014, 09:06:48 am
MorningStalker, ну у меня к вам такой же вопрос))) списание по партиям я вижу, а списание по средней - нет. В строке "СортировкаПартий = ?(МетодСписания = Перечисления.УчетнаяПолитика.ЛИФО, " УБЫВ ", "")" мы ведь получаем только два варианта: или ЛИФО, или НЕ ЛИФО, а где отдельно выделенный метод "по средней"?
Название: 1.5
Отправлено: giotto от Март 26, 2014, 09:52:13 am
MorningStalker, вот здесь я вроде как усовершенствовал списание, добавил "по среднему", оказывается, все не так сложно, как вначале казалось.

Добавлено (26.03.2014, 09:52)
---------------------------------------------
но про Услуги опять только сейчас вспомнил, да что ж такое!!!


Вложения:
Spec_Platforma_.dt
Название: 1.5
Отправлено: YFred от Апрель 07, 2014, 05:20:30 pm
Посмотрите пожалуйста мое решение, может что подскажете
 заранее спасибо (отчет по продажам не делал пока)
Вложения:
4015999.dt
Название: 1.5
Отправлено: Demy от Апрель 11, 2014, 02:38:02 pm
YFred, посмотрел ваше решение. Расходная неправильно списывает. Задаю списать 6-ть товара, а списывает 7-мь.
Название: 1.5
Отправлено: YFred от Апрель 11, 2014, 03:56:00 pm
проверил, не нашел ошибок. Dеmy можешь выгрузить пример с ошибкой, где списывается 7 вместо 6ти?
Вложения:
5496938.dt
Название: 1.5
Отправлено: Demy от Апрель 11, 2014, 04:07:10 pm
Конечно.
Название: 1.5
Отправлено: Demy от Апрель 11, 2014, 04:19:29 pm
Вот держи. С первого раза файл не прикрепился. sad

Добавлено (11.04.2014, 16:19)
---------------------------------------------
YFred, нашел опечатку:

 Движение.Количество = Мин(Выборка.КоличествоДок,Выборка.КоличествоОстаток)

 а должно быть:

 Движение.Количество = Мин(ОсталосьСписать,Выборка.КоличествоОстаток)


Вложения:
YFred_1_5.dt
Название: 1.5
Отправлено: Demy от Апрель 13, 2014, 12:11:41 pm
А вот мой вариант. Проверьте кто сможет. Жду справедливой критики. Если ошибок нет тоже напишите, а то иногда не понятно или форум вымер или ошибок нет. smile
Вложения:
_1_5.dt
Название: 1.5
Отправлено: Igor-pn от Апрель 13, 2014, 03:01:23 pm
YFred, для регистра "ОстаткиНоменклатуры" не включено разрешения разделения итогов. В расходная накладная не позволяет проводить продажу услуги: нехватка.

Добавлено (13.04.2014, 15:01)
---------------------------------------------

Цитата: Demy;34453
А вот мой вариант. Проверьте кто сможет. Жду справедливой критики. Если ошибок нет тоже напишите, а то иногда не понятно или форум вымер или ошибок нет.

 _______________________
 Тоже расходная в регистр продажи услугу не пишет. В запросе в расходной накладной Установку порядка можно было сделать через ВЫБОР КОГДА ВТВсеОстатки.Партия = ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка) Тогда Порядок 0 Иначе Порядок 1 Конец. И тогда не нужно объединение делать.
Название: 1.5
Отправлено: Demy от Апрель 13, 2014, 04:41:12 pm
Igor-pn, спасибо большое, запрос исправил. А вот по поводу услуги... проверил вроде все работает, в регистр продаж услугу пишет. Если не затруднит выгрузи базу с ошибкой. Заранее благодарен.
Вложения:
Demy_1_5.dt
Название: 1.5
Отправлено: Igor-pn от Апрель 13, 2014, 08:48:38 pm
Видимо, по ошибке, я посмотрел в регистр остатки. Посмотрел, документ пишет услугу в "Продажи". Нет блокировки регистра ОстаткиНоменклатуры в документе по смене учетной политики.
Название: 1.5
Отправлено: Demy от Апрель 14, 2014, 09:00:49 am
Igor-pn, премного благодарен. Еще раз исправил базу. Впредь постараюсь быть повнимательней. Пиши если еще что найдешь.
Вложения:
4271575.dt
Название: 1.5
Отправлено: letni88 от Апрель 14, 2014, 01:44:16 pm
Demy, не знаю почему ты выбрал именно такой способ решения, я решал как советовали сдающие эту задачу на экзамене: партия может быть либо документ поступления, либо документ смены учетной политики, в момент проведения документа учетной политики. если меняем значение УП по средней, то необходимо перевести все партии на партию документа учетной политики, тем самым расходная накладная будет стандартная, и никакая пустая партия не нужна. Это всего лишь мой метод решения, на нем я не настаиваю и в сто процентной правильности не ручаюсь.
Название: 1.5
Отправлено: Demy от Апрель 14, 2014, 06:24:13 pm
letni88, метод решения с пустой партией мне показался более правильным, т.к. в случае когда партия может быть либо приходная накладная, либо документ смены учетной политики, тогда сложно решать такой случай: если при политике списания по средней будет проводится приходник, тогда откуда он возьмет документ смены учетной политики, который он должен поставить в партию? Тогда либо документ смены учетной политики необходимо хранить в регистре сведений, либо делать отдельный запрос. А пустое значение можно взять без всяких мучений. Может я где-то заблуждаюсь или чего-то не вижу? Если это так, то буду благодарен за разъяснения.
Название: 1.5
Отправлено: letni88 от Апрель 14, 2014, 07:48:32 pm
Demy, в приходной накладной ты делаешь запрос получая срез последних, не объектной моделью, "получитьПоследнее", а запросом, оттуда вытягиваешь регистратор, и если по средней то пипешь регистратор(документ смены учетной политики) в партию, если фифо, то стандартно, ссылку на приходную.

Добавлено (14.04.2014, 19:48)
---------------------------------------------
Demy, в приходной накладной ты делаешь запрос получая срез последних, не объектной моделью, "получитьПоследнее", а запросом, оттуда вытягиваешь регистратор, и если по средней то пипешь регистратор(документ смены учетной политики) в партию, если фифо, то стандартно, ссылку на приходную.

Название: 1.5
Отправлено: Demy от Апрель 14, 2014, 09:03:08 pm
letni88, действительно, так даже лучше. Спасибо за замечание. Переделал, посмотрите, может еще замечания будут. Буду благодарен.
Вложения:
5423120.dt
Название: 1.5
Отправлено: Soul от Апрель 15, 2014, 09:33:30 pm
Тоже начал готовиться.
 Demy, посмотрел твоё решение. Вопросы:
 1. Какой смысл делать пустую сортировку, если по умолчанию всё-равно сортировка по возрастанию?
 Думается мне, что здесь достаточно ЛИФО и Иначе.
 2. "СтрЗаменить(ТекстЗапроса" может и удобно для дальнейшей поддержки, но как-то не по мне. Как к этому относятся на экзамене?
 3.    Если Не РезультатыЗапроса[2].Пустой() Тогда
       
       Выборка = РезультатыЗапроса[2].Выбрать();
       Пока Выборка.Следующий() Цикл
          
          Сообщение = Новый СообщениеПользователю;
          Сообщение.Текст = "По " + Выборка.Номенклатура + " осталось " + Выборка.Осталось + " требуется " + Выборка.Требуется + ".";
          Сообщение.Сообщить();
          
          Отказ = Истина;
          Возврат;
          
       КонецЦикла;
       
    КонецЕсли;

 Я так понимаю, пользователя уведомит только о нехватке по одной номенклатуре. А если не хватает по 2-м позициям? Пользователь об этом не узнает? Может вынести за цикл проверку на Отказ?
 4. Запрос, конечно мудрёный. Надо оно тебе для экзамена? Или ты в личном порядке?
 5. Индексирование в запросе тоже требуется для того, чтобы быстро сдать экзамен? wink

 ps: я сам только начинаю готовится, так что могу быть неправ в каждом из пунктов).
Название: 1.5
Отправлено: Demy от Апрель 16, 2014, 11:49:58 am
Soul, спасибо за замечания. Отвечу на них:
 1. Ты абсолютно прав, это не обязательно, но как мне кажется более наглядно. Ведь мы пишем код не для компьютера, а для людей (ссылаюсь на Макконела). Строчки:
    ИначеЕсли УчетнаяПолитика = Перечисления.УчетнаяПолитика.Среднее Тогда
       Сортировка = "";
 как бы намекают что нам все равно какая сортировка будет в таком случае, и другой программист при изменении этого кода (а может и мы сами) не будет заморачиваться по этому поводу. Кстати забыл еще добавить строчки:
    Иначе
       Отказ = Истина;
       Возврат;
 они служат для того, чтобы когда добавят новую учетную политику, документ намекнул на ошибку если его не поправят. Думаю на экзамене это совсем не обязательно, тем более в такой простой конфигурации, но я просто привык так писать. Если есть возражения по этому поводу - с удовольствием выслушаю.
 2. Честно говоря использую этот прием впервые. Даже не знаю что лучше: использовать "+" в запросе, или подстановкой текста. В обоих случаях есть плюсы и минусы, но на экзамене думаю это не будет играть какой-либо роли.
 3. Ты прав, просто ступил. Спасибо, уже исправил.
 4. Возможно, но у меня как-то не было времени его оттачивать. Да и вроде у остальных где-то такие же.
 5. Где-то читал что индексация на помешает. Не знаю как к этому относятся на экзамене. smile

 Кстати по рекомендациям MorningStalker изменил порядок блокировки и записи пустых движений, но как быть с документом смены учетной политики я еще подумаю, когда будет время.
Вложения:
7966601.dt
Название: 1.5
Отправлено: EverEst от Июнь 10, 2014, 08:19:44 pm
Для задачи устойчиво закрепилось решение созданием движений прихода и расхода остатков на момент смены учетной политики. Никого не смущает, что, при таком решении, отчет по продажам за период включающий такую смену политики становится мало информативным?
Название: 1.5
Отправлено: evil18 от Июнь 28, 2014, 10:55:39 pm
а эту проверьте пожалуйста
Вложения:
5183604.dt
Название: 1.5
Отправлено: Demy от Июнь 29, 2014, 01:19:06 am
evil18, посмотрел свое решение. Замечания:
 1. (замечание) Общее. Нет форматирования, проверять тяжело.
 2. (замечание) Приходная накладная. Регистратор можно установить перед циклом, и не проверять каждый раз условие.
 3. (замечание) Смена учетной политики. В твоем решении все движения переписываются на текущий документ если новой политикой является списание по средней. Но если до этого также была эта политика, то переписывать все движения на текущий документ думаю лишнее.
 4. (ошибка) Расходная накладная. Первый пакет запросов вообще не понятен. Нужно в первом запросе просто выбрать данные документа и поместить во временную таблицу, а во втором выбрать учетную политику. Зачем выполнять лишнее объединение?
 5. (ошибка) Отчет продажи. Он не реализован. Возможно у тебя другой текст задачи, но у меня по условию требуется реализовать отчет по остаткам и отчет по продажам.

 А в целом решение понравилось.
Название: 1.5
Отправлено: evil18 от Июнь 29, 2014, 02:15:04 am
4. а зачем лишний запрос?

Добавлено (29.06.2014, 02:15)
---------------------------------------------
Demy, спасибо)
 отчет перепишу, но в пункте 4 я уверена
 2.согласна
 3. я так поняла нужна проверка и не проводить документ.
 а насчет форматирования шифт+альт+А и он сам поправит красиво))
 5. я брала отчет из билетов https://docs.google.com/documen....b3t4zqn , решила из них с начало попробовать если пойдет. а там руку другими набить.

Название: 1.5
Отправлено: Demy от Июнь 29, 2014, 02:29:41 am
Цитата evil18 ()
4. а зачем лишний запрос?
Ну во-первых для хранения поля "МетодСписания" будет выделено дополнительное место в памяти, причем столько раз сколько разных номенклатурных позиций в документе. Во-вторых все это также будет дольше передаваться по сети, хотя на глаз это не видно, но 1С помешаны на производительности. :)
Цитата evil18 ()
3. я так поняла нужна проверка и не проводить документ.
Нет. Надо проверять сменилась ли учетная политика на "Списание по среднему" и только тогда переводить все остатки на документ смены учетной политики, если учетная политика и до этого была "Списание по среднему", то документ нужно провести, но остатки на него переводить не надо (по крайней мере я так думаю).
Цитата evil18 ()
а насчет форматирования шифт+альт+А и он сам поправит красиво))
Экзаменатору тоже так скажешь? :)))
Цитата evil18 ()
5. я брала отчет из билетов https://docs.google.com/documen....b3t4zqn , решила из них с начало попробовать если пойдет. а там руку другими набить.
А какой билет?
Название: 1.5
Отправлено: evil18 от Июнь 29, 2014, 03:03:23 am
Demy, а лишний запрос? тоже время нужно. да ладно это не так думаю критично
 3. тогда у меня списание не средней работать не будет. тк окажется 2 док с разными себестоимостью. а вообще зачем нужен вторая учетная политика по средней если она уже действует. так что отказ и извините написать
 я ни как не скажу. тк если буду сдавать то удаленно) ну если только в конце написать

Добавлено (29.06.2014, 03:03)
---------------------------------------------
билет 3 вроде

Название: 1.5
Отправлено: Demy от Июнь 29, 2014, 03:37:50 am
Цитата evil18 ()
Demy, а лишний запрос? тоже время нужно. да ладно это не так думаю критично
Лишний запрос не будет считывать данные с диска, поэтому времени это займет не так много, а вот экономия памяти может оказаться полезной в том числе и серверу.
Цитата evil18 ()
3. тогда у меня списание не средней работать не будет. тк окажется 2 док с разными себестоимостью.
Вот это не понял. Все должно работать так же.
Цитата evil18 ()
а вообще зачем нужен вторая учетная политика по средней если она уже действует.
Обычно пользователь не спрашивает зачем, он просто делает. smile
Название: 1.5
Отправлено: evil18 от Июнь 29, 2014, 04:05:02 am
Demy, у меня получится 2 партии. 1 первая уч политика и 2-я учетня политика №2
 а вот пользователю я и скажу что не надо менять тк учет политика уже по средней
Название: 1.5
Отправлено: Lionelho от Июль 20, 2014, 05:27:27 pm
Выкладываю своё решение. Не рассматривал вариант, при котором учетная политика меняется со значения "по-средней" на значение "ФИФО/ЛИФО". Ибо это ерунда полная.
 Если кто-то найдет ошибки, буду благодарен.
Вложения:
9937845.dt
Название: 1.5
Отправлено: jonik_joker от Июль 28, 2014, 04:18:50 pm
Присоединяюсь к предыдущему посту и  выкладываю свое решение. Сразу оговорюсь писал не совсем сам, в основном лепил из разных источников, так что накопилось много вопросов. Буду благодарен за ответы на них. Ну и конечно же ,критика...больше критики по решению).
Вложения:
5692720.dt
Название: 1.5
Отправлено: program1Cer от Август 14, 2014, 03:25:20 pm
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
Название: 1.5
Отправлено: Svetik_1704 от Август 22, 2014, 08:37:09 am
Что использовать в качестве пустой ссылки при смене политики на метод по средней: Неопределено или пустую ссылку на какой либо документе (Приходная/ИзменениеучетнойПолитики)?
Название: 1.5
Отправлено: GPetr от Сентябрь 10, 2014, 08:11:45 am
Добрый день!
 Решил присоединиться к участникам этого форума и внести своё решение на обозрение...

 Вот моё решение: http://my-files.ru/b8vd3c

 Буду презнателен за комментарии..

 p.s.: что-то я не смог найти как тут прикрепить файл((
Название: 1.5
Отправлено: HitTheRoadJack от Сентябрь 10, 2014, 11:44:02 pm
Доброй ночи, форумчане!
 Подключаюсь к данной задачке. Пришлось устроить мозгам взбучку, чтобы до конца понять в чем тут суть.
 На самом деле все не так уж сложно, если до конца через себя все это пропустить.
 Единственное что может сконфузить - это фраза "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться". На мой взгляд это ровным счетом одно и то же(ввод документа задним числом и неоперативное проведение старых доков). Открыв в старый документ, я могу скорректировать количество или вовсе добавить новые строки. Еще один конфуз был с тем, включать ли документ изменения учетной политики в последовательность. Исходя из вышесказанного, стоит включить его от греха подальше, его перепроведение при восстановлении последовательности может потребоваться в некоторых ситуациях(но так же надо двигать границу вручную в некотрых ситуациях)

 в общем вот мое решение http://rghost.ru/57950514
 Если кому интересно, буду рад критике

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

 Забыл в расходной накладной блокировку перед выполнением запроса:

    Эл = Блок.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    Эл.ИсточникДанных = СписокНоменклатуры;
    Эл.ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");
    Блок.Заблокировать();
Название: 1.5
Отправлено: masenshi от Сентябрь 11, 2014, 03:21:04 am
Цитата: HitTheRoadJack;36069
Единственное что может сконфузить - это фраза "Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться". На мой взгляд это ровным счетом одно и то же(ввод документа задним числом и неоперативное проведение старых доков). Открыв в старый документ, я могу скорректировать количество или вовсе добавить новые строки.


 "старые документы могут неоперативно перепроводиться"
 Эта фраза означает, что документы могут быть перепроведены неоперативно, и при этом никаких ошибок или изменений не должно произойти.
 А "задним числом не вводятся" как раз означает, что документы задним числом не вводятся и существующие "старые" документы не корректируются.
Название: 1.5
Отправлено: vetalius от Сентябрь 25, 2014, 10:31:36 am
Подскажите пожалуйста, на сколько критично, если сделать ещо один регистр накопление по остатках без партий и тогда в зависимости от методоа списание использывать той или иной. По сути ето решит все вопросы с перепроведением доков задним числом и на любой метод списания.
Название: Re: 1.5
Отправлено: Tiger_x от Ноябрь 05, 2014, 07:28:56 am
Подскажите пожалуйста, на сколько критично, если сделать ещо один регистр накопление по остатках без партий и тогда в зависимости от методоа списание использывать той или иной. По сути ето решит все вопросы с перепроведением доков задним числом и на любой метод списания.

Я думаю это будет расценено как избыточность данных.
Название: Re: 1.5
Отправлено: Tiger_x от Ноябрь 05, 2014, 07:51:22 am
Всем Добрый день!
Посмотрите пожалуйста мой вариант решения задачи, какие ошибки недочеты и вообще правильно ли я ее решил?

ссылка на файл:
https://onedrive.live.com/embed?cid=ACA233F112CD3FC2&resid=ACA233F112CD3FC2%211048&authkey=AHNTBS0ytUSzhgg (https://onedrive.live.com/embed?cid=ACA233F112CD3FC2&resid=ACA233F112CD3FC2%211048&authkey=AHNTBS0ytUSzhgg)

На форум залить не смог так как размер слишком большой.
Название: Re: 1.5
Отправлено: Odines от Ноябрь 11, 2014, 12:17:34 pm
Покритикуйте мое решение задачи. заранее благодарен!
Название: Re: 1.5
Отправлено: Eufes от Ноябрь 11, 2014, 09:59:12 pm
Покритикуйте мое решение задачи. заранее благодарен!

В целом все норм. Но если нужны замечания, то у меня такие:

1) Конструкция

Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Граница = Неопределено;
Иначе
Граница = Новый Граница(МоментВремени() ,ВидГраницы.[color=red]Включая[/color]);
КонецЕсли;

Надо "Исключая" ведь мы не хотим прочитать движения созданные документом ранее.

2) Если ВыборкаНоменклатура.КолДок = ВыборкаНоменклатура.КолОст  Тогда
СебестоимостьПродажи =  ВыборкаНоменклатура.СуммаОст;
Иначе
СебестоимостьПродажи =  ВыборкаНоменклатура.КолДок/ВыборкаНоменклатура.КолОст*ВыборкаНоменклатура.СуммаОст;
КонецЕсли;

Здесь не помешает проверка знаменателя на ноль.

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

4) Совсем не понимаю, что вы хотели сказать модулем в документе "Учетная политика" :)
Зачем вы делаете движения по регистру "ОстаткиНоменклатуры" ?
Это не логично чтобы установка учетной политики, что-то корректировала и, скорей всего, это явное усложнение задачи. Снизят, наверняка, баллы..

5) Ситуация с приходной накладной тоже непонятна. Зачем опираться на учетную политику при проведении этого документа? Т.е. конструкция "Если" не нужна:
Если НЕ Средняя Тогда
Движение.Партия   = Ссылка;
КонецЕсли;

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

Название: Re: 1.5
Отправлено: Odines от Ноябрь 11, 2014, 10:27:06 pm
Покритикуйте мое решение задачи. заранее благодарен!

4) Совсем не понимаю, что вы хотели сказать модулем в документе "Учетная политика" :)
Зачем вы делаете движения по регистру "ОстаткиНоменклатуры" ?
Это не логично чтобы установка учетной политики, что-то корректировала и, скорей всего, это явное усложнение задачи. Снизят, наверняка, баллы..


спасибо Вам огромное, за внимание. Вы мне очень помогаете в подготовке!

Скажите а если при методе ПоСредней не свернуть партии в одну пустую, и списывать их без указания партий, остатки не зависнут по партиям?
Название: Re: 1.5
Отправлено: Odines от Ноябрь 11, 2014, 10:32:33 pm
И скажите пжл, из какого раздела задачи сложнее? Хочется надеяться что из оперативного, так как уже столкнулся и как-то сложновато идет.
Название: Re: 1.5
Отправлено: Eufes от Ноябрь 11, 2014, 10:49:02 pm
По некому общему мнению вообщем-то из раздела оперативного учета сложнее всего задачи, но лично мне кажется следующее (по трем разделам):

Легче всего бух;
По опер учету на мой взгляд можно набить руку и голову, как мне показалось. Т.е. легче вкуриться, нежели в расчетные задачи. И решаются они потом быстрее.
Расчетные задачи решать скучнее. Одну задачу решаю от одного до нескольких дней, или просто уже смотрю решения от бессилия)

Но, возможно, для вас будет иначе)
Название: Re: 1.5
Отправлено: Eufes от Ноябрь 11, 2014, 11:28:10 pm
Покритикуйте мое решение задачи. заранее благодарен!

4) Совсем не понимаю, что вы хотели сказать модулем в документе "Учетная политика" :)
Зачем вы делаете движения по регистру "ОстаткиНоменклатуры" ?
Это не логично чтобы установка учетной политики, что-то корректировала и, скорей всего, это явное усложнение задачи. Снизят, наверняка, баллы..


спасибо Вам огромное, за внимание. Вы мне очень помогаете в подготовке!

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

Аха! Прошу прощения за спешную критику, наверное в этом то фишка документа "Учетная политика"! Однако все равно мне кажется странным, что учетная политика меняет движения. Возможно по такой логике надо бы через последовательности делать, но ваш вариант, кажется, проще. Чтобы лишний раз не ломать голову наверное надо останавливаться на более простом, а то затянется процесс обучения..
Название: Прошу посмотреть мой метод
Отправлено: Tiger_x от Ноябрь 12, 2014, 06:04:53 am
Всем Доброго Времени суток!
Прокомментируйте пожалуйста мое решение, буду очень признателен.
Название: Re: 1.5
Отправлено: Eufes от Ноябрь 16, 2014, 06:44:11 pm
Такс... Задача засела у меня в голове с прошлого раза, и наткнувшись в одной ветке на один комментарий

...
Я делал способом описанным здесь на формуме. Для смены учетной политики я сделал месячный регистр сведений. Оказалось не совсем правильно, поскольку учетная политика меняется раз в месяц, но кто сказал, что она должна меняться именно первого числа в начале дня . Упрощение - раз. Далее - не факт, что именно в эту секунду не будет сделан приход или расход. В общем выход один - сделать так, чтобы учетная политика могла устанавливаться на определенный момент времени и меняться хоть сто раз в день. Условие, что учетная политика может меняться раз месяц - это ограничение пользователей. Дополнительных проверок не нужно делать. (Тоже самое касается и бухгалтерского учета, переплат и авансов нет, и проверять это не нужно в программе, это ограничение в самом вводе, контролировать не нужно.)
 Краткое описание как я сделал - один регистр ОстаткиНоменклатуры - два измерения - Номенклатура, Партия - два ресурса - Количество, Сумма.
 Я сделал так - приход в зависимости от метода списания - приход делается либо по пустой партии, либо в партию идет документ прихода. При списании я сделал два алгоритма - либо по среденей, либо по партиям. Получение метода, далее простое условие, если по средней, то один алгоритм и выборка, иначе - другой. Преподаватель сказал, что я сделал лишнюю работу, потерял время, так как можно было сделать одно партионное списание, но баллы не снял.
 Нужно было делать так - списание чисто по партиям. Регистр учетная политика - подчинен регистратору документу СменаУчетной политики и определяется на каждый момент времени (а не даты). Далее основная идея - нет никаких пустых партий в регистре. При переходе на учетную политику по средней документ СменаУчетнойПолитики должен закрывать все партии, а делать приход на себя. То есть Партия - это документ оприходования или же документ смена учетной политики. Вот так. При проведении приходной накладной, она смотрит установленное значение метода списания, если по партиям- пишет в партию себя(ссылку), если же по средней - то из регистра получает, какой документ поставил эту учетную политику, и ставить его. Проведение - по партиям. Всё оказалось просто и легко, работает для любого момента времени, даже если документы были в одной секунде. Можно менять учетную политику много раз в любой интервал времени.
...
...

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

1. Во вложениях решение с ключевыми комментариями в модулях.
2. Убрал лишние метаданные для удобства просмотра
3. Вид отчетов как в задании
4. Все "нужные" галочки установлены.
5. Постарался соблюсти оптимальность модулей.

Odines
Я использовал вашу базу для допиливания задачи до окончательного ума и, кстати, обнаружил, что в отчете остатков вы использовали в выражении "Период" - КонецПериода(&Период,"День")
интересно это зачем?

Tiger_x
Я бы прокомментировал, но думаю вам быстрей и понятней будет заглянуть в мое решение) (но я его посмотрел)

Кстати если кто чего найдет вдруг с неточностями, буду признателен.
Название: Re: 1.5
Отправлено: Zmey от Ноябрь 18, 2014, 04:58:30 pm
Есть маленький нюанс....   Конструкция:
ДвижОст = Движения.ОстаткиНоменклатуры;
ДвижОст.Очистить();

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

не отработает, так как набор пустой и собственно блокировать будет нечего......
Название: Re: 1.5
Отправлено: Eufes от Ноябрь 18, 2014, 10:02:58 pm
Чтобы было понятно, то вот всеполезная ссылка  ;)
http://1c.chistov.pro/2013/07/blog-post_25.html
Название: Re: 1.5
Отправлено: Zmey от Ноябрь 19, 2014, 12:23:27 am
Да, все верно прав на все 100%. И я теперь более детально разобрался что да как. 

Название: Re: 1.5
Отправлено: Odines от Декабрь 16, 2014, 12:46:19 pm

Odines
Я использовал вашу базу для допиливания задачи до окончательного ума и, кстати, обнаружил, что в отчете остатков вы использовали в выражении "Период" - КонецПериода(&Период,"День")
интересно это зачем?


Что бы остатки получались на конец выбранной даты а не на начало. Если пользователь установит период 31.03.2010 то без этой конструкции остатки будут получены на 31.03.2010 00:00:00 а с этой конструкцией на 31.03.2010 23:59:59
Название: Re: 1.5
Отправлено: Eufes от Декабрь 16, 2014, 07:39:58 pm

Odines
Я использовал вашу базу для допиливания задачи до окончательного ума и, кстати, обнаружил, что в отчете остатков вы использовали в выражении "Период" - КонецПериода(&Период,"День")
интересно это зачем?


Что бы остатки получались на конец выбранной даты а не на начало. Если пользователь установит период 31.03.2010 то без этой конструкции остатки будут получены на 31.03.2010 00:00:00 а с этой конструкцией на 31.03.2010 23:59:59

Это конечно отдельная тема, но в таком случае необходимо передавать границу включая или плюс секунда. Если есть желание, то можете проверить введя несколько документов на 23:59:59 и получите, что остаток получается без учета движений документов с таким временем.
Название: Re: 1.5
Отправлено: Soul от Январь 11, 2015, 06:38:20 pm
Что-то не воткну как правильно разрешить следующую ситуацию: в одной РасходнойНакладной 2 позиции номенклатуры по разной цене?
В таком случае МАКСИМУМ(Количество) в итогах по Номенклатуре на верхнем уровне выборки даёт неправильное количество. Если же сделать СУММА(Количество), то тоже будет неправильно, т.к. может быть несколько соединений.
Название: Re: 1.5
Отправлено: GROOVY от Январь 11, 2015, 08:11:51 pm
У Вас видимо нет признака партии.
Название: Re: 1.5
Отправлено: Soul от Январь 11, 2015, 08:19:57 pm
Почему нет? Есть. Только что это меняет?
Название: Re: 1.5
Отправлено: GROOVY от Январь 12, 2015, 01:19:23 am
А зачем Вам в расходной получать цену продажи?
Название: Re: 1.5
Отправлено: Soul от Январь 13, 2015, 01:03:32 pm
Сама цена мне, конечно, не нужна. Из расходной мне нужна выручка, которая в свою очередь зависит от цены (да, у меня в расходной есть цена, на основе которой считается выручка).
Просто для контроля работоспособности отчета было лень заводить вторую расходную и я решил в одном документе расходовать две куртки по 200 и одну по 220 (что привело к ошибке). Расходование в рамках одной партии по разной цене противоречит партионности?
Название: Re: 1.5
Отправлено: GROOVY от Январь 13, 2015, 02:25:15 pm
Выручка - это разница между суммой продажи и себестоимостью. Сумму можно запросом получить в результате группировке по номенклатуре.
Название: Re: 1.5
Отправлено: Soul от Январь 13, 2015, 02:49:33 pm
Сумму можно запросом получить в результате группировке по номенклатуре.
Спасибо, кажется разобрался. Видимо, случайно выбрал в запросе цену, чем себя и запутал.
Название: Re: 1.5
Отправлено: Sergey138 от Апрель 02, 2015, 10:48:41 pm
Смотрел несколько вариантов как делают эту задачу, везде ПустуяСсылку для партии, но каждый использует по-разному.

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

В задаче есть условие ”Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться”.
1 – «Считается, что документы задним числом не вводятся»,  проверяем дату документа с текущей датой и если не совпадает, то документ не записываем.
2 – «но старые документы могут неоперативно перепроводиться», необходимо использовать последовательности или как то по-другому,  так как если в старом документе мы удалим товар и перепроведем документ, это приведет к не актуальным остаткам.
Как сделать правильно, чтобы удовлетворить данное условие?
Название: Re: 1.5
Отправлено: Eufes от Апрель 03, 2015, 09:18:56 pm
Оригинальное решение.
В моем решении (если можно так выразиться, ибо задача избита не одним человеком) тоже партии не пустые.
Кстати, почему ты блокируешь регистр после выполнения запроса?

В задаче есть условие ”Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться”.
1 – «Считается, что документы задним числом не вводятся»,  проверяем дату документа с текущей датой и если не совпадает, то документ не записываем.
2 – «но старые документы могут неоперативно перепроводиться», необходимо использовать последовательности или как то по-другому,  так как если в старом документе мы удалим товар и перепроведем документ, это приведет к не актуальным остаткам.
Как сделать правильно, чтобы удовлетворить данное условие?


Если я не ошибаюсь, то все довольно просто:

1) Когда говориться считается, то это означает, что как раз таки контроль и не надо реализовывать. Т.е. условно за этим следит пользователь. В ином случае было бы сказано типа "Документы вводить задним числом нельзя". На мой взгляд реализовывать простейший контроль на экзамене глупо, никаких знаний он не проверяет, а отнимает время.

2) Здесь я понимал так, что нужно организовать корректное проведение задним числом. Изменения в документе не описывается, только перепроведение. Так что не стоит, я думаю, усложнять последовательностями. Если только вдруг найдется простое лаконичное решение для этого. Хотя если подумать, условие с подвохом.
Название: Re: 1.5
Отправлено: Sanek421 от Апрель 29, 2015, 02:17:46 pm
Есть вопрос про блокировку, насколько критично на экзамене использовать такую конструкцию:

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

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

Мое решение ниже, буду рад любым комментариям. Спасибо.
Название: Re: 1.5
Отправлено: Eufes от Май 10, 2015, 12:08:33 am
Есть вопрос про блокировку, насколько критично на экзамене использовать такую конструкцию:

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

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

Без разницы. Для экономии времени лучше получать указывая таблицу. Но никто не мешает блеснуть оптимальным вариантом)
Название: Мое решение Задачи 1.5
Отправлено: DmitryZzz от Июнь 28, 2015, 11:15:44 pm
Прошу прокомментировать и мое решение Задачи 1.5.

База заполнена данными из задачи, так удобнее проверять =)

Списание По средней учел, документом Партии могут быть как ПриходнаяНакладная, так и ИзменениеУчетнойПолитики (в зависимости от действующего МетодаСписания) + все списание через партионный учет.
Название: Re: 1.5
Отправлено: Region_64 от Август 05, 2015, 09:55:17 am
Коллеги, будьте добры, посмотрите? Очень много вопросов возникло при решении этой задачи, хотелось бы обсудить с гуру  1С ;)
Пожалуйста...спать не могу теперь спокойно
Название: Re: 1.5
Отправлено: smitog от Август 18, 2015, 01:57:46 pm
program1Cer посмотрел ваш вариант и у меня вопрос, почему в расходной накладной Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); момент времени не включает движения документа, разве не должно ли быть новый граница(моментВремени(), ВидГраницы.Включая) ?
И еще вопрос, какой отчет у задачи 1.5 должен быть, как здесь: https://docs.google.com/document/d/19Cv6COjMRcN_qDLbiWmYwp686IXpxE9GHHzQkpa2rME/edit?pli=1#heading=h.z35lh02j0fou или как в сборнике
Название: Re: 1.5
Отправлено: AlenkaInt от Октябрь 01, 2015, 05:59:18 pm
Всем привет! Подскажите, а сколько должно быть регистров для решения этой задачи? Посмотрела в комментах сдававших. И там кто как пишет. Кто на одном делает, кто на 2-х. Я сделала на 2-х. Первый РН ОстаткиНоменклатуры. Изм. Номенклатура, Партия. Рес. Количество, Стоимость. Второй РН Продажи. Оборотный. Изм. Номенклатура. Рес. Количество, Выручка, Себестоимость. Подсмотрела это решение вот по этой ссылке. http://v2.ax-online.ru/Exams/AttPlatf/Task-1.1.aspx
Название: Re: 1.5
Отправлено: romicus от Октябрь 16, 2015, 10:45:34 am
Приветствую!
Размещаю свой вариант решения  1.5 - посмотрите пожалуйста!
Обуревают меня сомнения по поводу количества регистров остатков и схемы решения.
я использовал три регистра - остатки, себестоимость(по партиям), продажи. Остатки используются для реализации проведения по новой методике. Хотя можно было обойтись и 2мя регистрами (ОстаткиПоПартиям и Продажи) и использовать старую методику. Правильно ли использовать три регистра?
Так же вопрос по отчету "Остатки товаров" в сборнике задач четко видно что итоги по номенклатуре выделены жирным шрифтом (или мне это только кажется?) - подскажите пожалуйста каким образом это реализовать на СКД.
Название: Re: 1.5
Отправлено: iipobaji от Ноябрь 02, 2015, 10:46:55 am
Я вот так сделал
Название: 1.5
Отправлено: Odin777 от Февраль 23, 2016, 11:57:03 pm
И еще один вариант решения!
Название: Re: 1.5
Отправлено: Odin777 от Февраль 24, 2016, 12:42:09 am
Я вот так сделал
В обработке проведения документа "Приходная накладная" довольно интересное для меня решение с анализом метода списания и дальнейшей обработкой результата условия.
В обработке проведения документа "Изменения учетной политики":
1) в запросе строка "Для Изменения" довольно поучительна для меня, т.к. я в своем решении не обратил на это внимание.
2)там же в обработке проведения для чего вы устанавливаете в качестве партии ссылку документа "Изменение учетной политики"?
При списании по средней партионный учет фактически отсутствует, насколько мне известно.
3) довольно сложное условие МетодСписания = средняя ИЛИ Значение = Средняя И МетодСписания<>Значение
Название: Re: 1.5
Отправлено: Kron от Март 08, 2016, 06:47:47 pm
Не нашел ни одного полностью корректного решения.

Подготовил свой вариант, где решил данную задачу согласно всем требованиям.
Название: Re: 1.5
Отправлено: flyerink от Март 10, 2016, 10:00:49 am
Не нашел ни одного полностью корректного решения.

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

И судя по статье Чистова при оперативном движение все же надо очищать движения
Или при записи они 100% очищаются???
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
      // При оперативном проведении остатки получаются из таблицы итогов без исключения движений самого документа, поэтому их надо явно исключить
      Движения.ОстаткиНоменклатуры.Записать();
КонецЕсли;


И еще заметил у вас в доке расходной накладной в запросе
|ИТОГИ
      |   МАКСИМУМ(Количество),
      |   СУММА(КоличествоОстаток),
      |   МАКСИМУМ(Сумма),
      |   МАКСИМУМ(Услуга)
не хватает
|   СУММА(СуммаОстаток),

Но это уже лирика!
Название: Re: 1.5
Отправлено: Bonaventura от Март 11, 2016, 09:26:34 pm
Господа, смотрите как реализован метод оценки МПЗ в типовых конфигурациях, к примеру УТ10 и УТ11 и делайте выводы касательно адекватности решения этой задачи.
Название: Re: 1.5
Отправлено: Kron от Март 18, 2016, 07:25:46 pm
Господа, смотрите как реализован метод оценки МПЗ в типовых конфигурациях, к примеру УТ10 и УТ11 и делайте выводы касательно адекватности решения этой задачи.

Ваш комментарий не о чем: учет себестоимости в УТ 10 (классический партионный учет) и УТ 11 (РАУЗ) отличаются кардинально.
Мое решение удовлетворяет требования задачи описанной в билете.
Название: Re: 1.5
Отправлено: bad_wag от Март 29, 2016, 02:08:14 pm
Kron,
Скажите, при изменении политики, почему сторно делали приходом с минусом, а не расходом? И как я понял, при переходе с среднего на фифо\лифо, партия остается только одна, такой вариант проходит на экзамене?
Название: Re: 1.5
Отправлено: Kron от Апрель 09, 2016, 09:16:16 pm
bad_wag,
1. Приход с минусом в данном случае является сторно (сторно остатков). Расходом закрывать остатки не корректно с точки зрения учета: расход означает списание, а у нас как такового списания нету.
2. Методически данная задача может решаться несколькими путями, и какой из них верный можно долго рассуждать. В своем решении я воспользовался подсказкой Белоусова Павла (представитель фирмы 1С) вот в этой ветке: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=551707#551707
Название: Re: 1.5
Отправлено: alfalume от Июнь 14, 2016, 01:08:13 pm
Мое решение, покритикуйте пожалуйста.
Название: Re: 1.5
Отправлено: master555 от Июль 12, 2016, 08:38:58 am
Прохожу курсы по подготовке к аттестации специалиста по платформе.

Сделал решение на основании того, что преподают на данных курсах.

Буду рад конструктивной критике )
Название: Re: 1.5
Отправлено: kuzyara от Сентябрь 30, 2016, 07:16:41 am
В отчете Продажи показано, что продано 3 замшевых куртки с себестоимостью 300.
Вопрос: как получилась эта цифра, если по 100 рублей курток всего две?
Название: Re: 1.5
Отправлено: GH0STexe от Сентябрь 30, 2016, 02:22:21 pm
В отчете Продажи показано, что продано 3 замшевых куртки с себестоимостью 300.
Вопрос: как получилась эта цифра, если по 100 рублей курток всего две?
Курток две по 100 по состоянию на 01.01.2010. А отчет продажи за 1й квартал. Мало ли сколько курток и по какой цене пришло в феврале или в марте
Название: Re: 1.5
Отправлено: kuzyara от Октябрь 11, 2016, 01:02:47 pm
И судя по статье Чистова при оперативном движение все же надо очищать движения
Или при записи они 100% очищаются???
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
      // При оперативном проведении остатки получаются из таблицы итогов без исключения движений самого документа, поэтому их надо явно исключить
      Движения.ОстаткиНоменклатуры.Записать();
КонецЕсли;
так это же ошибка?
НЕ ПИШИ ТАК НА ЭКЗАМЕНЕ!
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
   Движения.ОстаткиНоменклатуры.Записать();
пиши так:
     Движения.ОстаткиНоменклатуры.Записать();
Я уточнял!!!!Не делай мои ошибки )
Все верно, движения очищать нужно всегда. Вне зависимости от оперативного или неоперативного проведения.
Название: Re: 1.5
Отправлено: Головлев Владислав от Ноябрь 29, 2016, 08:23:47 am
Посмотрите мое решение, единственное что смущает - при отмене проведения отказ=истина, т.к. если к примеру 25 числа мы ввели учетную политику по средней, а у нас есть расходная накладная за 24-ое число, и, если мы отменим проведение у данной расходной накладной и по новой проведем, то будет списан товар с приходных накладных, а не с учетной политики, как правильно в такой ситуации делать?
Название: Re: 1.5
Отправлено: jonik от Май 19, 2017, 02:23:29 pm
Всем привет. Долго "въезжал" в переход FIFO\LIFO - ПоСредней и обратно. Сделал через пустую партию
Название: Re: 1.5
Отправлено: LEX_CH от Июль 03, 2017, 09:03:38 am
Решил задачу 1.5. Использовал 3 регистра. Насколько это правильно? Посмотрите решение. Жду критики
Название: Re: 1.5
Отправлено: bsn-chita от Июль 04, 2017, 02:47:15 pm
LEX_CH
Ни на что не претендую сам только учусь и вот что я думаю про ваше решение.
1) Для того чтобы очистить движения нужно перед записью писать
Движения.НазваниеРегистра.Очистить();
2) Можно не создавать каждый раз новый объект Запрос, а лишь менять его текст и выполнять(косметика)
3) Не понятно зачем в одном из запросов временную таблицу помещаете во временную таблицу
4) Я бы использовал УБЫВ в тексте запроса потому что если начать редактировать текст запроса в конструкторе то 1С упростит его убрав ВОЗР
5) Отказ = Истина из цикла бы вынес или выше или ниже просто чтобы оператор выполнился один раз а не несколько (косметика)
6) Заменил бы
Если ДополнительныеСвойства.Проведен тогда
Движения.СебестоимостьНоменклатуры.Очистить();
Движения.СебестоимостьНоменклатуры.БлокироватьДляИзменения=Истина;
Движения.СебестоимостьНоменклатуры.Записать();
КонецЕсли;
на
Движения.СебестоимостьНоменклатуры.Очистить();
Если ДополнительныеСвойства.Проведен тогда
Движения.СебестоимостьНоменклатуры.БлокироватьДляИзменения=Истина;
Движения.СебестоимостьНоменклатуры.Записать();
КонецЕсли;
Очищать на всякий случай все равно надо и чтобы 2 раза не писать вынес бы из условия
7) В самом начале бы писал так
Движения.ОстаткиНоменклатуры.Записывать=Истина;
Движения.ОстаткиНоменклатуры.Очистить();
...
запись движении по регистру
...
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения=Истина;
Движения.Записать();
То есть установил флаг записи на регистр остатков, на всякий случай установил флаг очистки движении, и если я не ошибаюсь заблокировал товары по "старым"(те что были в движениях до очистки) и "новым"(те что сейчас будут записаны в регистр) товарам.
И да выгрузку если можно версии по старее.
Название: Re: 1.5
Отправлено: const86 от Сентябрь 02, 2017, 02:48:18 pm
Все рассуждают, да вот ни кто не пишет как в действительно правильно (из результата сдачи экзамена). Хотя чисто теоретически правильно именно через пустую партию.
Т.к. рассмотрим такую ситуацию:
* Ведется учет по ФИФО или ЛИФО.
* Сегодня с утра решили перевести на ПоСреднему
* Товары продолжают списываться по партиям. Какие-то партии успевают списаться по количеству в 0, а сумма остается (положительная или отрицательная)
* На следующий день решают, что надо бы вернуться назад на допустим ФИФО.
* Товары продолжают списываться по партиям.
А теперь вопрос, что станется с оставшейся суммой? Они продолжат висеть, потому что количество на них 0. И логикой они должны пропускаться
Вести на разных регистрах количество и сумму не вариант, т.к. при списании количества будет браться одна партия, а при списании суммы - другая. В следствии чего будет не сходиться себестоимость.

Второй момент из прочитанного. Тут поднималась проблема копеек, при расчете себестоимости. Ответственно, товарищи, вам заявлю её нет. Нет абсолютно ни каких оснований делать проверку на равенство количества на продажу и количества остатков. Ибо формула: Количество*СуммаОстаток/КоличествоОстаток - стопроцентно гарантирует не возможность её возникновения. Т.к. это математика. А её законы как известно непоколебимы. Объясню. Приоритет операций умножения и деления одинаков. А следователь машина сначала умножит количество и сумму, а уже потом разделит на количество остаток. В случае их равенства (количество и количествоостаток), по правилам математики, они взаимоисключаются и в итоге мы получаем чистый суммаостаток.
Но если мы изменим порядок исполнения этой операции (СуммаОстаток / КоличествоОстаток * Количество), возникновение копеек возможен. Т.к. в данном случае мы сначала уменьшим результат а потом увеличим. В следствии чего может возникнуть ситуация погрешности округления.

А меня вот интересует вопрос, не оперативного проведения документов. Если мы перепроводим документ прошлой датой, нужно ли восстанавливать последовательность. И если да, как, собственно, это сделать.
Название: Re: 1.5
Отправлено: Bereza от Октябрь 03, 2017, 01:45:04 pm
Ребята, только учусь. Решение не совсем индивидуальное.
Взял в некоторых местах  с разных решений рабочий код и добавил свои правки.
Может кому пригодиться.

Название: Re: 1.5
Отправлено: jonik от Ноябрь 23, 2017, 02:33:08 pm
Всем привет. Долго "въезжал" в переход FIFO\LIFO - ПоСредней и обратно. Сделал через пустую партию
Подкорректировал
Название: Re: 1.5
Отправлено: Lenor_leroi от Июнь 24, 2018, 11:30:36 pm
Что-то я не понимаю, зачем пустая партия. Нельзя просто оставить также списывать кол по партиям при переходе на среднюю, а себестоимость считать по средней по итогам по номенклатуре из запроса без учета партии? Чем это плохо?
Название: Re: 1.5
Отправлено: Евгений_нвкз от Сентябрь 08, 2020, 06:42:22 am
Привет всем, мое решение.
Название: Re: 1.5
Отправлено: fobby от Сентябрь 27, 2020, 11:48:38 am
Здравствуйте. Смотрю давно никто не выкладывал и не делится. Меньше стало желающих?
По задаче как я понял два основных вопроса
1)Как обыграть условие "старые документы могут неоперативно проводиться"
2) Переход между способами списания

По п.1 мне понравилось решение,чтобы прописать условие, хотя технически обосновать для себя не смог т.е. и без этого работает корректно при перероведении старых документов. Может кто разъяснит?
 
Если Режим = РежимПроведенияДокумента.Оперативный ТОгда
Движения.ОстаткиНоменклатуры.Записать();
КонецЕсли;


По п.2. Здесь условие в двух местах.
   а) В документе ИзменениеУчетнойПолитики в обработке проведения прописал  условие - если метод списания Средняя, то списываем все партии какие есть до текущего момента, и приходуем соответствующие товары этих партий, но с указанием в качестве партии документа ИзменениеУчетнойПолитики.
    б) При проведении РасходнаяНакладная проверяем - если ПоСредней, то себестоимость списания считаем на уровне итогово по номенклатуре в целом, а не по партии.

Выкладываю свое решение. Посмотрите кому интересно. Ну и если есть возможность конструктивно покритиковать :)
Название: Re: 1.5
Отправлено: OurProgramist от Ноябрь 08, 2020, 03:50:02 am
Привет всем, мое решение.
  Спасибо за решение ,  по моему "ПриходнуюНакладную" не надо так усложнять , например излишне проверка  Учетной политики, потому что знать какая политика нужно только при списании, а на момент принятия товара по моему без разницы какая политика списания, ведь товар все равно надо принять в любом случае хоть списание потом будет по СРЕЕДНЕЙ хоть по ФИФОЛИФО, если я не правильно размышляю то поправьте меня
Название: Re: 1.5
Отправлено: Black_Corsair от Ноябрь 13, 2020, 11:50:25 am
В общем подумал и решил выложить свой вариант, все говорят о том что если на среднюю резко поменяется, так вот я решил что по среднему тоже списывается из определенных партий и поэтому указал их в качестве списания. чтобы если в будущем перешло на ФИФО, ЛИФО, то не получилось что партий больше чем необходимо
Название: Re: 1.5
Отправлено: Евгений_нвкз от Январь 29, 2021, 01:22:19 pm
Привет всем, мое решение.
  Спасибо за решение ,  по моему "ПриходнуюНакладную" не надо так усложнять , например излишне проверка  Учетной политики, потому что знать какая политика нужно только при списании, а на момент принятия товара по моему без разницы какая политика списания, ведь товар все равно надо принять в любом случае хоть списание потом будет по СРЕЕДНЕЙ хоть по ФИФОЛИФО, если я не правильно размышляю то поправьте меня
Да, все верно, но если политика будет ПО СРЕДНЕЙ, то партия товаров должна указываться не документ поступления, а что-то общее (я взял документ, которым меняют учетную политику).
Название: Re: 1.5
Отправлено: Холодный Тимофей от Март 15, 2021, 07:17:44 pm
Что-то я не понимаю, зачем пустая партия. Нельзя просто оставить также списывать кол по партиям при переходе на среднюю, а себестоимость считать по средней по итогам по номенклатуре из запроса без учета партии? Чем это плохо?
В этом случае будет проблема копеек и регистр в ноль не выйдет. Тк будет списание каждой партии по средней себестоимости. Либо будет неверно посчитана себестоимость списания (в какой-то момент она будет сильно отличаться от средней).
А это ошибка. При переходе на среднюю весь остаток должен быть оприходован как одна партия.