7.7 Вывод остатков ТМЦ по партиям

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем warayg, 14 июл 2011.

  1. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, есть отчет остатки ТМЦ, не могу сделать так, чтоб к остатку ТМЦ добить остатки по партиям. Конфигурация Бухгалтерия. Вот код отчета:

    Код:
    Процедура Сформировать()
    Таб = СоздатьОбъект("Таблица");
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,, 1);
    
    Если ПустоеЗначение(выбСклад)=0 Тогда
    Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,выбСклад, 2);
    КонецЕсли;
    Ит.ВыполнитьЗапрос(ВыбКонПериода,ВыбКонПериода,"281",,, 1,, "СК");
    Таб.ВывестиСекцию("Шапка");
    Ит.ВыбратьСубконто(1);
    Пока Ит.ПолучитьСубконто(1) = 1 Цикл
    Кво = Ит.СКД(3);
    Сумма = Ит.СКД(1);
    Ед = Ит.СКД(10);
    Цена = ? (Кво=0,0,Сумма/Кво);
    Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ВывестиСекцию("Дно");
    
    Таб.Опции(0,0,,);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать","");
    КонецПроцедуры
    
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Суда по коду счета - конфа для украины. Здесь мало кто знает ваш план счетов. На каком счете лежат партии?
  3. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Парти на 281 счете - Товары на складе, субконто -3

    Я сделал вот так:

    Код:
    Процедура Сформировать()
    Таб = СоздатьОбъект("Таблица");
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,, 1);
    Если ПустоеЗначение(выбСклад)=0 Тогда
    Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,выбСклад, 2);
    КонецЕсли;
    Ит.ИспользоватьСубконто(ВидыСубконто.Партии,,1);
    
    Ит.ВыполнитьЗапрос(ВыбКонПериода,ВыбКонПериода,"281",,, 1,, "СК");
    Таб.ВывестиСекцию("Шапка");
    Ит.ВыбратьСубконто(1);
    Пока Ит.ПолучитьСубконто(1) = 1 Цикл
    
    Кво = Ит.СКД(3);
    Сумма = Ит.СКД(1);
    Ед = Ит.СКД(10);
    Цена = ? (Кво=0,0,Сумма/Кво);
    Партия = Ит.Субконто(3);
    Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ВывестиСекцию("Дно");
    
    Таб.Опции(0,0,,);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать","");
    КонецПроцедуры
    
    Процедура ПриОткрытии()
    ВыбКонПериода = ТекущаяДата();
    КонецПроцедуры
    
    
    Но теперь выводятся товар, под ним только одна партия - первая, а количество в ней - сумма всех партий, и сумма также. Если в коде поменять

    Ит.ВыбратьСубконто(3);
    Пока Ит.ПолучитьСубконто(3) = 1 Цикл

    то выводятся все партии с повтором по товару
    [​IMG]
  4. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Сделал всё по другому, решил выводить не партии, а приходные накладные вот код:

    Код:
    Процедура Сформировать()
    
    Если Счет.Выбран() = 0 Тогда
    Предупреждение("Не указан счет!");
    Возврат;
    КонецЕсли;
    
    Если МХ.Выбран() = 0 Тогда
    Предупреждение("Не указан склад!");
    Возврат;
    КонецЕсли;			
    
    ДокПН=СоздатьОбъект("Документ.ПриходнаяНакладная");
    СпрПар=СоздатьОбъект("Справочник.Партии");
    
    Т = СоздатьОбъект("Таблица");
    Т.ИсходнаяТаблица("Таблица");
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Если Фирма.Выбран()=1 Тогда
    Ит.ИспользоватьРазделительУчета(Фирма);
    КонецЕсли;
    
    Если МХ.Выбран() = 1 Тогда
    Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,МХ,1,1);		
    КонецЕсли;			
    
    Если Товар.Выбран() = 0 Тогда
    Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ, ,1, 0);
    Иначе
    Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ,Товар,1,1);		
    КонецЕсли;
    
    Ит.ИспользоватьСубконто(ВидыСубконто.Партии, , 1, 0);
    Ит.ВыполнитьЗапрос(Дата1,Дата1,Счет);
    
    Т.ВывестиСекцию("Секция_0");
    Т.ВывестиСекцию("Секция_1");
    
    //Ит.ВыбратьСубконто(1);
    //Пока Ит.ПолучитьСубконто(1) = 1 Цикл
    
    Ит.ВыбратьСубконто(2);
    Пока Ит.ПолучитьСубконто(2) = 1 Цикл
    
    Если Ит.Субконто(2).ЭтоГруппа() = 1 Тогда
    Т.ВывестиСекцию("Секция_Г");
    Продолжить;
    КонецЕсли;
    
    Кво = (Ит.СНД(3)-Ит.СНК(3));
    Если Ит.СНД(3)-Ит.СНК(3) <> 0 Тогда
    ВХЦ1 = (Ит.СНД(1)-Ит.СНК(1))/(Ит.СНД(3)-Ит.СНК(3));
    Иначе
    ВХЦ1 = "";
    КонецЕсли;
    
    Т.ВывестиСекцию("Секция_2");
    
    Если кПарт = 1 Тогда       		
    
    Ит.ВыбратьСубконто(3);
    Пока Ит.ПолучитьСубконто(3) = 1 Цикл
    
    СпрПар.ИспользоватьВладельца(Ит.Субконто(2));
    ПарДок=Лев(Ит.ПредставлениеСубконто(3),10);
    ДатДок=Сред(Ит.ПредставлениеСубконто(3),13,8);
    Поставщик=""; ВПар = 0;
    Если СпрПар.НайтиПоРеквизиту("Док",ПарДок,1) > 0 Тогда 
    ДокПН.НайтиПоНомеру(ПарДок,ДатДок);
    Если ДокПН.Выбран() > 0 Тогда
    Поставщик=ДокПН.Контрагент;
    ВПар = 1;
    КонецЕсли;
    КонецЕсли;
    
    Т.ВывестиСекцию("Секция_9");
    КонецЦикла;
    
    КонецЕсли;
    
    КонецЦикла;
    
    Т.ВывестиСекцию("Итого");
    
    Ит = 0;
    Т.ТолькоПросмотр(1);
    Т.Опции(0, 0, 4, 4,,"Відомість залишків");
    Т.ПараметрыСтраницы(1,,,,,,,,,1);
    Т.ПовторятьПриПечатиСтроки(3,4);
    Т.Показать("Відомість залишків на "+Дата1,"");
    
    КонецПроцедуры
    
    блин, теперь другая проблема (((
    [​IMG]

    если остаток нулевой всё равно показывает товар и если был расход, то он не вычетается из партии по приходной накладной, в общем нужно чтоб показывался только тот товар (с номером приходной накладной) у которого есть остаток и не показывались те накладные с партий которых был расход, вроде так)
  5. TopicStarter Overlay
    warayg
    Offline

    warayg Опытный в 1С

    Регистрация:
    1 июл 2011
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Все справился, тему можно закрывать

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