7.7 Расшфровка ячейки и Работа с данными субконто.

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

  1. TopicStarter Overlay
    kozai05
    Offline

    kozai05

    Регистрация:
    9 окт 2008
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Разбирался в работе стандартных отчетов, информация оказалась для меня непонятной..
    Две проблемы:

    1) При расшифровке обычной ячейки прописана функция РасшифровкаОбновить(0). Хочу сделать карточку счета. С этим кодом выдает "Счет не указан!", хотя в коде видно что указываю.

    2) По суммам в отчете не могу поймать логику неверных чисел..то больше в два раза, то в минус куда-то уходят...хотя алгоритм простой и берет числа из остатков по субконто.

    Посмотреть вложение 1238

    Код:
    //*****************************************************************************
    перем i;
    перем period;
    перем итог3;
    перем итог4;
    перем итог5;
    перем итог6;
    перем итог7;
    перем итог8;
    перем итог9;
    перем итог10;
    Перем Таб;
    Перем Расшифровка;
    Перем Обновить;
    
    //*****************************************************************************
    
    Функция РасшифровкаОбновить(Пар)
    Расшифровка.Установить("Обновить", Пар);
    Возврат Расшифровка;
    КонецФункции //РасшифровкаОбновить
    
    //*****************************************************************************
    
    Процедура ОбработкаЯчейкиТаблицы(Расшифровка, ФлагСтандартнойОбработки, Таблица) 
    
    Если ТипЗначенияСтр(Расшифровка) <> "СписокЗначений" Тогда
    ФлагСтандартнойОбработки = 1;
    Возврат;
    КонецЕсли;
    
    
    Если Расшифровка.Получить("Обновить")=0 Тогда
    Расшифровка.Установить("Отчет", "КарточкаСчета");
    Расшифровка.Установить("Дата1",date_from); 
    Расшифровка.Установить("Дата2",date_to); 
    Расшифровка.Установить("Счет", "01.1");
    КонецЕсли;
    
    // записываем параметры вызова в  глоб. переменные
    глФлагРасшифровки = 1;        // устанавливаем 1  при вызове из кнопки
    глРасшифровка = Расшифровка;  // доступ к списку параметров вызова 
    глОбновить = Число(Расшифровка.Получить("Обновить"));
    
    Если глОбновить <> 0 Тогда  
    глТаблица = Таблица;
    КонецЕсли;
    
    // запускаем  отчет 
    Отчет = Расшифровка.Получить("Отчет");
    Попытка
    Если Метаданные.Отчет(Отчет).Выбран() = 1 Тогда
    ОткрытьФорму("Отчет."+Отчет+"#");
    ИначеЕсли Метаданные.Обработка(Отчет).Выбран() = 1 Тогда
    ОткрытьФорму("Обработка."+Отчет+"#");
    ИначеЕсли ФС.СуществуетФайл(Отчет) = 1 Тогда
    ОткрытьФорму("Отчет#",, Отчет);
    Иначе
    Сообщить("Не найден файл   "+Отчет,"!!");
    Сообщить("Поместите файл отчета в каталог ExtForms!","");
    КонецЕсли;
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    // обнуление глоб. перем. 
    глФлагРасшифровки = 0;
    глРасшифровка = 0;
    глОбновить = 0;
    
    КонецПроцедуры   
    
    //*****************************************************************************
    
    Процедура Сформировать() Далее
    
    //*****************************************************************************
    
    
    Процедура ПриОткрытии()  
    
    Если глФлагРасшифровки = 1 Тогда  // значит, это вызов из кнопки 
    
    // из глоб. переменных читаем параметры вызова
    Обновить        = глОбновить;
    date_from         = глРасшифровка.Получить("date_from"); 
    date_to             = глРасшифровка.Получить("date_to"); 
    
    Таб = глТаблица;  
    
    Если Обновить <> 2 Тогда 
    Сформировать();      
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    
    Иначе  
    Обновить = 0;
    date_from=НачМесяца(ТекущаяДата());
    date_to=КонМесяца(ТекущаяДата());
    КонецЕсли;
    КонецПроцедуры //ПриОткрытии
    
    //*****************************************************************************
    
    Процедура Сформировать()
    
    Расшифровка = СоздатьОбъект("СписокЗначений");
    Расшифровка.Установить("Отчет", КаталогИБ()+"Extforms        
    Если Обновить = 2 Тогда                
    СтрокаДействийФормы = "#Закрыть";  
    КонецЕсли;  
    
    Если (Обновить = 0) или (ТипЗначенияСтр(Таб) <> "Таблица") Тогда  
    // это обычное открытие диалога, печатной таблицы еще нет
    
    Таб = СоздатьОбъект("Таблица");
    Иначе 
    // это повторный вызов, печатную таблицу надо переформировать
    Таб.Очистить();
    КонецЕсли;
    
    //  ***************печать таблицы***************
    Состояние("Заполнение выходной таблицы...");
    Если date_from>date_to Тогда
    Предупреждение("Не верно указан период!");
    Иначе 
    period="период с "+Строка(date_from)+" по "+Строка(date_to);
    Таб.ВывестиСекцию("Шапка");
    Таб.Область(1,3).Текст="Организация "+Константа.НазваниеОрганизации;
    Таб.Область(2,3).Текст="Отчет по ОС за "+period;
    i=6;
    
    БИ_01=СоздатьОбъект("БухгалтерскиеИтоги");
    БИ_02=СоздатьОбъект("БухгалтерскиеИтоги");
    НИ_01=СоздатьОбъект("БухгалтерскиеИтоги");
    НИ_02=СоздатьОбъект("БухгалтерскиеИтоги");
    БИ_01.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
    БИ_02.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
    НИ_01.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
    НИ_02.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
    БИ_01.ВыполнитьЗапрос(date_from, date_to,"01.1");
    БИ_02.ВыполнитьЗапрос(date_from, date_to,"02.1");
    НИ_01.ВыполнитьЗапрос(date_from, date_to,"Н05.01");
    НИ_02.ВыполнитьЗапрос(date_from, date_to,"Н05.02");
    БИ_01.ВыбратьСубконто();
    БИ_02.ВыбратьСубконто();
    НИ_01.ВыбратьСубконто();
    НИ_02.ВыбратьСубконто();   
    итог3=0;              
    итог4=0;
    итог5=0;
    итог6=0;
    итог7=0;
    итог8=0;
    итог9=0;
    итог10=0;
    //Пока БИ_01.ПолучитьСубконто()=1 цикл
    Пока БИ_01.ПолучитьСубконто(,БИ_02.Субконто())=1 цикл
    БИ_02.ПолучитьСубконто();
    НИ_01.ПолучитьСубконто();
    НИ_02.ПолучитьСубконто();
    //Метаданные
    Таб.Область(i,1).Текст=БИ_01.Субконто().Код;
    Таб.Область(i,2).Текст=БИ_01.Субконто().Наименование;
    //БУ
    Таб.Область(i,3).Текст=БИ_01.СНД();
    Таб.Область(i,4).Текст=БИ_02.СНК();
    Таб.Область(i,5).Текст=БИ_02.КО()-БИ_02.ДО();
    Таб.Область(i,6).Текст=БИ_01.СКД()+"ааа"+БИ_02.СКК();
    //НУ
    Таб.Область(i,7).Текст=НИ_01.СНД();
    Таб.Область(i,8).Текст=НИ_02.СНК();
    Таб.Область(i,9).Текст=НИ_02.КО()-НИ_02.ДО();
    Таб.Область(i,10).Текст=НИ_01.СКД()-НИ_02.СКК();  
    //Итоги
    итог3=итог3+Таб.Область(i,3).Текст;
    итог4=итог4+Таб.Область(i,4).Текст;
    итог5=итог5+Таб.Область(i,5).Текст;
    итог6=итог6+Таб.Область(i,6).Текст;
    итог7=итог7+Таб.Область(i,7).Текст;
    итог8=итог8+Таб.Область(i,8).Текст;
    итог9=итог9+Таб.Область(i,9).Текст;
    итог10=итог10+Таб.Область(i,10).Текст;
    Таб.ВывестиСекцию("ОС");
    i=i+1;
    Конеццикла;                       
    Таб.Область(i,2,i,10).Полужирный(1);
    Таб.Область(i,2).ГоризонтальноеПоложение(2);
    Таб.Область(i,2).Текст="Итоги:";
    Таб.Область(i,3).Текст=итог3;
    Таб.Область(i,4).Текст=итог4;
    Таб.Область(i,5).Текст=итог5;
    Таб.Область(i,6).Текст=итог6;
    Таб.Область(i,7).Текст=итог7;
    Таб.Область(i,8).Текст=итог8;
    Таб.Область(i,9).Текст=итог9;
    Таб.Область(i,10).Текст=итог10;
    //Таб.ВывестиСекцию("Итоги");
    Если итог6<>(итог3-итог4-итог5) Тогда
    Предупреждение("Ошибка в итогах бух учета!"); 
    КонецЕсли;
    Если итог10<>(итог7-итог8-итог9) Тогда
    Предупреждение("Ошибка в итогах нал учета!"); 
    КонецЕсли;
    Таб.Опции(0,0,5,2);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Отчет по ОС за "+period) 
    КонецЕсли;    
    КонецПроцедуры   // Сформировать
    
    //*****************************************************************************
    
    
    

    Вложения:

    • OS.ert
      Размер файла:
      49 КБ
      Просмотров:
      53

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