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

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем didigo, 1 май 2012.

  1. TopicStarter Overlay
    didigo
    Offline

    didigo

    Регистрация:
    2 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Не получается переделать на другую базу....


    Код:
    Процедура Посчитать(НачДата, КонДата, Счет, КорСчет, мСчет, зСчет, НаклРасходы)
    табНом = СоздатьОбъект("ТаблицаЗначений");
    табНом.НоваяКолонка("ГП");
    табНом.НоваяКолонка("ГС");
    табНом.НоваяКолонка("ГК");
    табНом.НоваяКолонка("СС");
    табНом.НоваяКолонка("МТ");
    табНом.НоваяКолонка("ЗТ");
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
    Ит.ВыполнитьЗапрос(НачДата, КонДата, Счет, , , 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", "Макар");
    ПерепровестиДокументы(НачДата, КонДата);
    КонецПроцедуры

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

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

    didigo

    Регистрация:
    2 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    что б присвоить МТ

    вот тут проблемы....

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

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Например, я ничего не понял :icon_pain25:
  4. TopicStarter Overlay
    didigo
    Offline

    didigo

    Регистрация:
    2 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    пишет
    вт.ВыбратьСтроки();
    {Отчет.РасчетСебестоимостиМК.Форма.Модуль(162)}: Значение не представляет агрегатный объект (ВыбратьСтроки)
  5. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Типизируйте колонку "МТ"

    Код:
    табНом.НоваяКолонка("МТ", "ТаблицаЗначений")
    
  6. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Если раньше этот код работал, то нужно брать отладчик, и смотреть.

    Такая ошибка появляется потому, что переменная ВТ не имеет метода ВыбратьСтроки();, то есть ее тип не "ТаблицаЗначений". Значит где-то присвоение не проходит.

    Так же для работы с ТЗ рекомендую использовать методы Загрузить() и Выгрузить().
  7. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Я вообще не вижу, где происходит создание таблицы МТ.
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Выложите саму обработку, а не одну процедуру

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