Автор Тема: Билет 1. Спец по платформе V8  (Прочитано 256201 раз)

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

kvt500

  • Проверенный
  • ***
  • Сообщений: 159
  • ФИО: kvt500
Re: Билет 1. Спец по платформе V8
« Ответ #345 : Март 02, 2017, 12:46:32 pm »
Цитировать
Цитировать
в новом и от плана счетов не зависит, проблема в этом месте
       СуммаСебастоимость = ВыборкаСерия.СуммаОстаток * КолСписать / ВыборкаСерия.КоличествоОстаток;
Есть предложение решения проблемы копеек?

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

проблема осталась

olchik

  • Пользователь
  • **
  • Сообщений: 38
  • ФИО: Ольга
Re: Билет 1. Спец по платформе V8
« Ответ #346 : Март 02, 2017, 12:47:56 pm »
Цитировать
проблема осталась
Может тогда обратно выгрузку с примером скинете, с копейками )


kvt500

  • Проверенный
  • ***
  • Сообщений: 159
  • ФИО: kvt500
Re: Билет 1. Спец по платформе V8
« Ответ #347 : Март 02, 2017, 12:50:26 pm »
Цитировать
проблема осталась
Может тогда обратно выгрузку с примером скинете, с копейками )

olchik

  • Пользователь
  • **
  • Сообщений: 38
  • ФИО: Ольга
Re: Билет 1. Спец по платформе V8
« Ответ #348 : Март 02, 2017, 01:10:11 pm »
Не знаю на сколько это правильно и можно ли сделать лучше...



ОбщаяСуммаСписания = 0;
      Пока ВыборкаСерия.Следующий() и НеобходиомСписать>0 Цикл
         КолСписать = МИН(НеобходиомСписать,ВыборкаСерия.КоличествоОстатокПоСерии);
         Если КолСписать = ВыборкаНоменклатура.КоличествоОстаток Тогда
            СуммаСебастоимость =  ВыборкаНоменклатура.СуммаОстаток;
         Иначе   
             СуммаСебастоимость = Окр(КолСписать / ВыборкаСерия.КоличествоОстаток * ВыборкаСерия.СуммаОстаток, 2);         
         КонецЕсли;
         ОбщаяСуммаСписания = ОбщаяСуммаСписания + СуммаСебастоимость;
         Проводка = Движения.РегистрБухгалтерии.Добавить();
         Проводка.Период = Дата;
         Проводка.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
         Проводка.СчетКт = ПланыСчетов.Управленческий.Товары;
         Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
         Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
         Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Серия] = ВыборкаСерия.Серия;
         Проводка.КоличествоКт = КолСписать;
         Проводка.Сумма = СуммаСебастоимость;
         НеобходиомСписать = НеобходиомСписать - КолСписать;
      
      КонецЦикла;
      Если ВыборкаНоменклатура.КоличествоОстаток = ВыборкаНоменклатура.КоличествоОстатокПоСерии Тогда
         Копейка = ВыборкаНоменклатура.СуммаОстаток - ОбщаяСуммаСписания;
         Проводка.Сумма = Проводка.Сумма + Копейка;
      КонецЕсли;

Alyx Ruby

  • Пользователь
  • **
  • Сообщений: 72
  • ФИО: Alyx Ruby
Re: Билет 1. Спец по платформе V8
« Ответ #349 : Март 02, 2017, 02:54:37 pm »
Все правильно, проверка тоже правильна: Если КолСписать = КоличествоОстаток, то просто списываем СуммаОстаток, только это выражение:

 СуммаСебестоимость = Окр(КолСписать / ВыборкаСерия.КоличествоОстаток * ВыборкаСерия.СуммаОстаток, 2);
лучше писать так:

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

То есть из-за особенностей компьютерного округления сначала умножаем, потом делим. Округлять не обязательно, разрядность поля само позаботится об округлении.  :)
« Последнее редактирование: Март 02, 2017, 02:57:30 pm от Alyx Ruby »

kvt500

  • Проверенный
  • ***
  • Сообщений: 159
  • ФИО: kvt500
Re: Билет 1. Спец по платформе V8
« Ответ #350 : Март 02, 2017, 06:56:02 pm »
Все правильно, проверка тоже правильна: Если КолСписать = КоличествоОстаток, то просто списываем СуммаОстаток, только это выражение:

 СуммаСебестоимость = Окр(КолСписать / ВыборкаСерия.КоличествоОстаток * ВыборкаСерия.СуммаОстаток, 2);
лучше писать так:

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

То есть из-за особенностей компьютерного округления сначала умножаем, потом делим. Округлять не обязательно, разрядность поля само позаботится об округлении.  :)

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

olchik

  • Пользователь
  • **
  • Сообщений: 38
  • ФИО: Ольга
Re: Билет 1. Спец по платформе V8
« Ответ #351 : Март 03, 2017, 09:01:59 am »
Цитировать
Можете решить проблему копеек в прикрепленном примере в бухгалтерской задачи? там данные забиты. У меня не получилось.

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

ОбщаяСуммаСписания = 0;
      Пока ВыборкаСерия.Следующий() и НеобходиомСписать>0 Цикл
         КолСписать = МИН(НеобходиомСписать,ВыборкаСерия.КоличествоОстатокПоСерии);
         Если КолСписать = ВыборкаНоменклатура.КоличествоОстаток Тогда
            СуммаСебастоимость =  ВыборкаНоменклатура.СуммаОстаток;
         Иначе   
             СуммаСебастоимость = КолСписать * ВыборкаСерия.СуммаОстаток / ВыборкаСерия.КоличествоОстаток ;         
         КонецЕсли;
         ОбщаяСуммаСписания = ОбщаяСуммаСписания + СуммаСебастоимость;
         Проводка = Движения.РегистрБухгалтерии.Добавить();
         Проводка.Период = Дата;
         Проводка.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
         Проводка.СчетКт = ПланыСчетов.Управленческий.Товары;
         Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
         Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
         Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Серия] = ВыборкаСерия.Серия;
         Проводка.КоличествоКт = КолСписать;
         Проводка.Сумма = СуммаСебастоимость;
         НеобходиомСписать = НеобходиомСписать - КолСписать;
     
      КонецЦикла;
      Если ВыборкаНоменклатура.КоличествоОстаток = ВыборкаНоменклатура.КоличествоОстатокПоСерии Тогда
         Копейка = ВыборкаНоменклатура.СуммаОстаток - ОбщаяСуммаСписания;
         Проводка.Сумма = Проводка.Сумма + Копейка;
      КонецЕсли;

Kremlin

  • Пользователь
  • **
  • Сообщений: 37
Re: Билет 1. Спец по платформе V8
« Ответ #352 : Март 14, 2017, 12:22:31 pm »
Всем доброго дня! У меня проблема с выполнением бух.задачи - когда провожу Приходную накладную с одним товаром в виртуальную таблицу "УправленческийОстатки" на счет "Товары" создается одна запись. Хотя в плане счетов сделал "Признак учета субконто" суммовой и назначил его на Субконто1 "Номенклатура". За образец брал решение SAE, у него делается две записи в виртуальную таблицу - сумма падает на Субконто1 Номенклатура, а Количество на субконто2 "Серию". Подскажите, что может быть не так в моем решении? На всякий случай прикреплю выгрузку свою.

kvt500

  • Проверенный
  • ***
  • Сообщений: 159
  • ФИО: kvt500
Re: Билет 1. Спец по платформе V8
« Ответ #353 : Март 14, 2017, 01:27:07 pm »
сумма падает на Субконто1 Номенклатура, а Количество на субконто2 "Серию".

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

Kremlin

  • Пользователь
  • **
  • Сообщений: 37
Re: Билет 1. Спец по платформе V8
« Ответ #354 : Март 14, 2017, 01:33:36 pm »
сумма падает на Субконто1 Номенклатура, а Количество на субконто2 "Серию".

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

Прикрепил

kvt500

  • Проверенный
  • ***
  • Сообщений: 159
  • ФИО: kvt500
Re: Билет 1. Спец по платформе V8
« Ответ #355 : Март 14, 2017, 02:11:22 pm »
Прикрепил

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

Dmitri-Dmitrich

  • Пользователь
  • **
  • Сообщений: 20
Re: Билет 1. Спец по платформе V8
« Ответ #356 : Март 14, 2017, 03:16:12 pm »
Я решил проблему копеек в БУ немного по другому, просто из общей суммы вычитал сумму списания, а если списываем последнюю партию списывал результат вычитания. Прикрепляю решение. Кто может, посмотрите пожалуйста мое решение, найдите недочеты

xXeNoNx

  • Пользователь
  • **
  • Сообщений: 67
Re: Билет 1. Спец по платформе V8
« Ответ #357 : Март 14, 2017, 04:02:59 pm »
Тут много кто пишет о проблеме копеек. Можно поподробнее?
Пример:
Йогурт 20.03.17 - 10 шт цена 500,13
Йогурт 25.03.17 - 10 шт цена 700

СрокГодности 20.03.17
продаем 9 шт - по 50,01 = 450,12
остаток 1 шт - по 50,01

продаем еще 5 шт.
смотрим что у нас есть остаток ранней партии в размере 1шт, соответственно списываем остаточную себестоимость, т.е. 50,01(т.е. все что есть)
а так же списываем 4шт по 70 = 280

Вопрос: откуда проблемы с копейками?




olchik

  • Пользователь
  • **
  • Сообщений: 38
  • ФИО: Ольга
Re: Билет 1. Спец по платформе V8
« Ответ #358 : Март 14, 2017, 04:12:53 pm »
Тут много кто пишет о проблеме копеек. Можно поподробнее?
Пример:
Йогурт 20.03.17 - 10 шт цена 500,13
Йогурт 25.03.17 - 10 шт цена 700

СрокГодности 20.03.17
продаем 9 шт - по 50,01 = 450,12
остаток 1 шт - по 50,01

продаем еще 5 шт.
смотрим что у нас есть остаток ранней партии в размере 1шт, соответственно списываем остаточную себестоимость, т.е. 50,01(т.е. все что есть)
а так же списываем 4шт по 70 = 280

Вопрос: откуда проблемы с копейками?
Я тоже никак не могла смоделировать. Посмотрите выгрузки баз и какой там пример приведен.
Цитировать
проблема осталась
Может тогда обратно выгрузку с примером скинете, с копейками )

Dmitri-Dmitrich

  • Пользователь
  • **
  • Сообщений: 20
Re: Билет 1. Спец по платформе V8
« Ответ #359 : Март 14, 2017, 04:16:38 pm »
Тут много кто пишет о проблеме копеек. Можно поподробнее?
Пример:
Йогурт 20.03.17 - 10 шт цена 500,13
Йогурт 25.03.17 - 10 шт цена 700

СрокГодности 20.03.17
продаем 9 шт - по 50,01 = 450,12
остаток 1 шт - по 50,01

продаем еще 5 шт.
смотрим что у нас есть остаток ранней партии в размере 1шт, соответственно списываем остаточную себестоимость, т.е. 50,01(т.е. все что есть)
а так же списываем 4шт по 70 = 280

Вопрос: откуда проблемы с копейками?
Проблема с копейками возникает, т.к. суммовой учет ведется в разрезе всей номенклатуры, соответственно в регистре не хранятся данные о себестоимости конкретной партии. И соответственно мы не можем списать остаток по партии, т.к. нет данных для этого, а если списывать как (общая стоимость по номенклатуре)/(общее количество по нменклатуре)*(количествоСписания) то зависнут копейки из за округления. Соответственно нужно накапливать сколько осталось списать в отдельной переменной и списывать это, если партия последняя. Возможно я заблуждаюсь, но я решил эту проблему так. Пример можете посмотреть в выгрузке, прикрепленной к моему предыдущему сообщению
« Последнее редактирование: Март 14, 2017, 04:26:37 pm от Dmitri-Dmitrich »