8.х LIFO и FIFO расходная накладная, как?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Catsys, 24 мар 2011.

  1. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Как производится списание по LIFO FIFO?
    я так понимаю берем таб.часть расходной накладной, смотрим сумму, сортируем регистр накопления "СтоимостьТоваров" в зависимости от лифо, фифо , и поочередно списываем по одному товару, просматривая цену каждого по регистру, и так пока деньги не закончатся? я правильно понял?
  2. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Рекомендую сначала почитать литературу, ее полно.
  3. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    судя по литературе, так и получается
  4. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    только одно непонятно,если я спишу, токак мне отметить что позиция списана, и не начать вследующий раз списывать с нее же? припаивать к приходу реквизит "списано"?
  5. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Покажите код какой получился
  6. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    пока никакой, я только пытаюсь алгоритм построить, но непонимаю как списывать правильно, сылку на приход накл надо указывать , или как
  7. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
  8. Наташа
    Offline

    Наташа Опытный в 1С

    Регистрация:
    14 авг 2010
    Сообщения:
    1.442
    Симпатии:
    2
    Баллы:
    29
    Обычно в таких случаях в одном запросе объединяется табличная часть документа, по которому производится списание, и таблица остатков партий из нужного регистра.
    Выполнять запросы в цикле (списывать партии по одному товару, потом по другому, третьему..) категорически неверно!
    Если вы готовитесь к Спецу по платформе, рекомендую приобрести задачник, там на диске и в конце книги подробно расписан пример и приводится текст запроса.
  9. Тимон
    Offline

    Тимон Опытный в 1С

    Регистрация:
    30 ноя 2010
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    согласен с Натальей...в модуле проведения документа создаете запрос с ВЛоженным запросом по расходной накладной и виртуальную таблицу по регистру накопления остатка(не оборота!) с параметром Дата.Из вирт запрос берете товр,колво,из вирт таб кол.остаток и суммуостаток.Выгружаете результат в таблицу значений,создаете переменную Запись с сылкой на регистр сведений,условие с сортировкой и прописываете движение по регистру.Попробуйте сами,если не получится-пришлю пример.Я сейчас долюблюсь со средневзвешенной и ФИФО,мне приходится для записи вообще разные регистры создавать)))

    естесственно настройте в запросе связи...также можете связать по партиям еще...подробности в книгах и типовых примерах)
  10. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    А пример запроса можно? :angry:
  11. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    да, я туповат, для меня жестоко перейти с других языков программирования, на 1с, но помогите плиз, или дайте ссылку на литературу по запросам 1с
  12. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    да, я туповат, для меня жестоко перейти с других языков программирования, на 1с,многие фразы для меня просто дикие("в разрезе", "параметры вирт. таблиц", "соеденить таблицы"), но помогите плиз, покажите пример, желательно с комментами, где разрезы, где объединения, где выгрузки и тд), или дайте ссылку на литературу по запросам 1с
  13. Тимон
    Offline

    Тимон Опытный в 1С

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

    Тимон Опытный в 1С

    Регистрация:
    30 ноя 2010
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    ничего не тупой)кому что,я сам и года не кручусь в 1с и слышали бы вы мои дискуссии с шефом)))постарайтесь по запросу разобраться последовательность действий.ТП-табличное поле формы документа,куда я выгружал числовые значения по запросу для проверки правильност и поиска ошибок.ТЧ1-таб.значений для свертывания количественных значений по номенклатуре.Табличное поле с типом таблица значений.Ну и движения.Там попроще,хотя есть тонкости.
  15. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    спасибо на добром слове.пока разобрал только запрос, есть вопрос, а разве в расходной накладной, должа указыватся партия?
    Как я понял, мы списываем основываясь на приходной накладной ее мы и называем партия, а зачем нам просить пользователя указывать парию?
    Код:
    РасходнаяНакладнаяТЧ.Партия КАК Партия
    
    
  16. Тимон
    Offline

    Тимон Опытный в 1С

    Регистрация:
    30 ноя 2010
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Партия указывается или нет в зависимости от задания.Тут могут быть след вариации:1)списывается вся номенклатура по порядку списания и дате,в регистрах элементарно ведется списание по партиям для контроля количества товара по датам 2)списывается вся номенклатура по порядку списания,но клиенту необходимо указывать партию,с которого списывается товар,если товара не хватает в партии-выдается ошибка 3)списывается товар по указанной партии,если его не хватает,то идет списание по порядку исчисления.С этим пунктом я щас сам долблюсь, и оно куда сложнее)

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

    апршу прощения порядку списания конечно же*
  17. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    И всетаки мне не понятно, а как платформа определяет с какой партии сколько списано? или мы при выборке смотрим на это сами?
  18. Тимон
    Offline

    Тимон Опытный в 1С

    Регистрация:
    30 ноя 2010
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
  19. Тимон
    Offline

    Тимон Опытный в 1С

    Регистрация:
    30 ноя 2010
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    ЭтотОбъект.Ссылка*
  20. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    ок, мы установили партию, начинаем списывать, делаем проход, но нам же надо посмотреть была эта партия списана раньше, и сколько было списано. мы это делаем сами, выискивая расходные проводки с ссылкой на эту партию и считаем, или же платформа какимто образом сама отмечает сколько списали, и попросту сообщает при обращении к движению, что отсюда списано 3 хреновины? вот что меня интересует

    PS
    Я тоже както пролил чай на клаву, у меня и нажималость одновременно с пробелом, получалось чтото вроде "и того", со временем отпустило.

Поделиться этой страницей