1С Режим Конфигуратор



Дополнение - часть 6


// Здесь будет записана методика списания по-среднему

  КонецЕсли;

КонецПроцедуры

  • Начнем описание методик с FIFO;
  • Заместо строки "// Здесь будет записана методика списания по FIFO" напишем:

    // Здесь будет записана методика списания по FIFO

    ТабЗн1=СоздатьОбъект("ТаблицаЗначений");

    // временная таблица

    ТабЗн2=СоздатьОбъект("ТаблицаЗначений");

    // еще одна временная таблица

    ТабЗн2.НоваяКолонка("Партия","Документ.ПриходнаяНакладная");

    ТабЗн2.НоваяКолонка("КоличествоП","Число",14,2);

    ТабЗн2.НоваяКолонка("СуммаП","Число",19,2);

    ВыбратьСтроки();

    Пока ПолучитьСтроку() = 1 Цикл

      КолВыб=КолО;

      РегОст.УстановитьФильтр(Склад,Товар,Сорт);

      РегОст.ВыгрузитьИтоги(ТабЗн1,1,1);

    // см. операцию подбора

      ТабЗн1.Свернуть("4","5,6");

    // а здесь интересно: Структура ТабЗн1 после выгрузки будет аналогична

    // структуре регистра. Реквизит "Партия" в регистре стоит на 4-ой

    // позиции, значит и колонка "Партия" – 4-ая, Колонки "Количество"

    // и "СуммаП" – соответственно 5-ая и 6-ая

      ТабЗн1.ВыбратьСтроки();

      Пока ТабЗн1.ПолучитьСтроку()=1 Цикл

        Прт=ТабЗн1.Партия;

        Ост=ТабЗн1.Количество;

        Сум=ТабЗн1.СуммаП;

        Если Ост>0 Тогда // есть что проверять

          ТабЗн2.НоваяСтрока();

          ТабЗн2.Партия=Прт;

          ТабЗн2.КоличествоП=Ост;

          ТабЗн2.СуммаП=Сум;

        КонецЕсли;

      КонецЦикла;

    // Заполняем промежуточную таблицу

      ТабЗн1.Очистить();

    // Удаляем все записи и колонки из ТабЗн1

      ТабЗн2.Сортировать("1+",1);

    // Сортируем по документам в порядке возрастания даты (FIFO)

    // Более ранние партии вверху

      ТабЗн2.ВыбратьСтроки();

      Пока ТабЗн2.ПолучитьСтроку()=1 Цикл

        Ост=ТабЗн2.КоличествоП;

        Сум=ТабЗн2.СуммаП;




    Содержание  Назад  Вперед