Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 06:50

Помогите с отчетом....

Автор didigo, 01 мая 2012, 15:10

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

didigo

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


Процедура Посчитать(НачДата, КонДата, Счет, КорСчет, мСчет, зСчет, НаклРасходы)

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

   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
   Ит.ВыполнитьЗапрос(НачДата, КонДата, КорСчет, Счет, , 2, , );
   
   Ит.ВыбратьСубконто();
   
   Пока Ит.ПолучитьСубконто() = 1 Цикл
      ГП = Ит.Субконто();
      Стр = 0;
      Если табНом.НайтиЗначение(ГП, Стр, "ГП") = 1 Тогда
         ГС = табНом.ПолучитьЗначение(Стр, "ГС");
         ГК = Ит.ДО(3);
         СС = ГС / ГК;
         табНом.УстановитьЗначение(Стр, "ГК", ГК);
         табНом.УстановитьЗначение(Стр, "СС", СС);
      Иначе                 
         Сообщить("Не нашел 1 !! "+ГП);
      КонецЕсли;
   КонецЦикла;

   Ном = СоздатьОбъект("Справочник.Номенклатура");
   Ном.ВыбратьЭлементы();
   
   табНом.ВыбратьСтроки();
   
   Если Отчет = 0 Тогда
      Пока табНом.ПолучитьСтроку() = 1 Цикл
            Если Ном.НайтиЭлемент(табНом.ГП) = 1 Тогда
              Ном.Себестоимость.Установить(НачДата, табНом.СС);
            КонецЕсли;
      КонецЦикла;
   КонецЕсли;
   
   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
   Ит.ИспользоватьКорСубконто(ВидыСубконто.Материалы);
   
   Ит.ВыполнитьЗапрос(НачДата, КонДата, Счет, мСчет, , 2, , );
   Ит.ВыбратьСубконто();
   
   Пока Ит.ПолучитьСубконто() = 1 Цикл
      ГП = Ит.Субконто();
      Стр = 0;
      Если табНом.НайтиЗначение(ГП, Стр, "ГП") = 1 Тогда
         табКор = СоздатьОбъект("ТаблицаЗначений");
         табКор.НоваяКолонка("К");
         табКор.НоваяКолонка("С");
         
         Ит.ВыбратьКорСубконто();
         Пока Ит.ПолучитьКорСубконто() = 1 Цикл
            табКор.НоваяСтрока();
            табКор.К = Ит.КорСубконто();
            табКор.С = Ит.КорДО();
         КонецЦикла;
         табНом.УстановитьЗначение(Стр, "МТ", табКор);
      Иначе                 
         Сообщить("Не нашел 2 !! "+ГП);
      КонецЕсли;
   КонецЦикла;

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

   Пока Ит.ПолучитьСубконто() = 1 Цикл
      ГП = Ит.Субконто();
      Стр = 0;
      Если табНом.НайтиЗначение(ГП, Стр, "ГП") = 1 Тогда
         табКор = Ит.ДО();
         табНом.УстановитьЗначение(Стр, "ЗТ", табКор);
      Иначе                 
         Сообщить("Не нашел 2 !! "+ГП);
      КонецЕсли;
   КонецЦикла;
   
   //
   Т = СоздатьОбъект("Таблица");
   табНом.ВыбратьСтроки();             
   ИтогоПрибыльОтПроизводства = 0;   
   Пока табНом.ПолучитьСтроку() = 1 Цикл
      Номен = табНом.ГП;     
      Т.ВывестиСекцию("Шапка");
      
      ВыпускБезПолуф = табНом.ГК;
      //СуммаВыпускБезПолуф = табНом.ГС;
      СуммаВыпускБезПолуф = Номен.Цена.Получить(НачДата) * ВыпускБезПолуф;
      Т.ВывестиСекцию("ВыпускБезПолуф");
      Т.ВывестиСекцию("ШапкаМатериалы");
      
      вт = табНом.МТ;
      вт.ВыбратьСтроки();
      
      Пока вт.ПолучитьСтроку() = 1 Цикл                           
         Матер = вт.К;
         МатериалНаПрод = вт.С;
         МатериалНа1Прод = вт.С / табНом.ГК;
         Т.ВывестиСекцию("Материалы");   
      КонецЦикла;
      
      ВсегоМатериаловНаПрод = вт.Итог("С");
      ВсегоМатериаловНа1Прод = ВсегоМатериаловНаПрод / табНом.ГК;
      Т.ВывестиСекцию("ВсегоМат");
      Т.ВывестиСекцию("ШапкаНакладныеРасходы");
      РасходыНаПрод = табНом.ЗТ;
      РасходыНа1Прод = табНом.ЗТ / табНом.ГК;
      Т.ВывестиСекцию("НакладныеРасходы");
      ЗатратыНаСС = ВсегоМатериаловНаПрод + РасходыНаПрод;
      Себестоимость1Бут = ЗатратыНаСС / табНом.ГК;
      Т.ВывестиСекцию("Затраты");
      ПрибыльОтПроизводства = СуммаВыпускБезПолуф - ЗатратыНаСС;
      Т.ВывестиСекцию("Прибыль");
      ИтогоПрибыльОтПроизводства = ИтогоПрибыльОтПроизводства + ПрибыльОтПроизводства;
   КонецЦикла;
                
   Т.ВывестиСекцию("ИтогБезПолуф");
   Т.Показать();
   //
КонецПроцедуры 

Процедура ПерепровестиДокументы(НачДата, КонДата)
   Если Отчет = 0 Тогда
      Сообщить("Перепроводим документы");
      Док = СоздатьОбъект("Документ");
      Док.ВыбратьДокументы(НачДата, КонДата);
      
      Пока Док.ПолучитьДокумент() = 1 Цикл
         Если Док.ПометкаУдаления() = 0 Тогда
            Если Док.Проведен() = 1 Тогда
               Если
                  (Док.Вид() = "_03_АктСписанияМатериаловВодка") ИЛИ
                  (Док.Вид() = "_03_АктСписанияВодки") ИЛИ
                  (Док.Вид() = "_03_АктСписанияМатериаловСпирт") ИЛИ
                  (Док.Вид() = "_03_АктСписанияСпирта") ИЛИ
                  (Док.Вид() = "_03_АктСписанияНаВыпускМакарон")
               Тогда
                  Сообщить(Док.ТекущийДокумент());
                  Док.Провести(0, 2);
                  Док.Записать();                 
               КонецЕсли;
            КонецЕсли;
         КонецЕсли;   
      КонецЦикла;
      
      Сообщить("Перепроведение завершено");
   КонецЕсли;
   
КонецПроцедуры

//*******************************************
Процедура Сформировать()   
   НачДата = НачМесяца(ДатаОт);
   КонДата = КонМесяца(ДатаОт);
   
   Посчитать(НачДата, КонДата, "900.0", "221.0", "207.0", "900.5", "Затраты для водки");
   Посчитать(НачДата, КонДата, "900.1", "221.1", "207.1", "900.5", "Спирт");
   Посчитать(НачДата, КонДата, "900.2", "221.2", "207.2", "900.5", "Макар");
   
   ПерепровестиДокументы(НачДата, КонДата);
КонецПроцедуры

didigo

вот от сюда дальше не идет....

вт = табНом.МТ;
  вт.ВыбратьСтроки();
  Пока вт.ПолучитьСтроку() = 1 Цикл               
   Матер = вт.К;
   МатериалНаПрод = вт.С;
   МатериалНа1Прод = вт.С / табНом.ГК;
   Т.ВывестиСекцию("Материалы");
  КонецЦикла;

didigo

что б присвоить МТ


   Пока Ит.ПолучитьСубконто() = 1 Цикл
      ГП = Ит.Субконто();
      Стр = 0;
      Если табНом.НайтиЗначение(ГП, Стр, "ГП") = 1 Тогда
         табКор = СоздатьОбъект("ТаблицаЗначений");
         табКор.НоваяКолонка("К");
         табКор.НоваяКолонка("С");
         
         Ит.ВыбратьКорСубконто();
         Пока Ит.ПолучитьКорСубконто() = 1 Цикл
            табКор.НоваяСтрока();
            табКор.К = Ит.КорСубконто();
            табКор.С = Ит.КорДО();
         КонецЦикла;
         табНом.УстановитьЗначение(Стр, "МТ", табКор);
      Иначе                 
         Сообщить("Не нашел 2 !! "+ГП);
      КонецЕсли;
   КонецЦикла;

вот тут не присваивается!

дфтын

Надо смотреть что за ошибка.
ибо табКор = СоздатьОбъект("ТаблицаЗначений");
какаято там ТЗ есть
Помог? Нажми - Спасибо :)
skype: Soprov1C

дфтын

хотя если оно сообщить дает Сообщить("Не нашел 2 !! "+ГП); тогд анету там ничего, да
надо проверять
Помог? Нажми - Спасибо :)
skype: Soprov1C

didigo

Цитата: дфтын от 01 мая 2012, 15:40
Надо смотреть что за ошибка.
ибо табКор = СоздатьОбъект("ТаблицаЗначений");
какаято там ТЗ есть

вт.ВыбратьСтроки();
{Отчет.РасчетСебестоимостиПродукции.Форма.Модуль{118}}: Значение не представляет агрегатный объект(ВыбратьСтроки)

дфтын

Да. не записывается ТЗ.
отладчег надобно смотреть
Помог? Нажми - Спасибо :)
skype: Soprov1C

didigo

в отладчике МТ не присваивает!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск