Помощь - Поиск - Пользователи - Календарь
Полная версия: Внешний отчет по бюджетке
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 7.7" > (7.7) Отчеты и обработки для платформы "1С:Предприятие 7.7"
MURzilKA
Привет :)

С 1С работаю совсем мало... мозг уже кипит vis.gif ... потому прошу помощи...

Загвоздка вот в чем:
сделала внешний отчет, захотелось мне "красоты" - добавила эти злосчастные кнопки "Обновить" и "Настройка". Вроде везде все прописала и указала, но "Настройка" работает, документики все по лупе открываются, а вот кнопка "Обновить" упорно не желает работать mad.gif

Смотрела здесь уже темки про эти кнопки, но видать что-то делаю не так, а что понять не могу aua.gif

и еще, как сделать, чтобы при подборе счета (по которому будет составляться отчет) открывался не весь план счетов, а выборка.

Очень буду рада дельному совету rolleyes.gif
MURzilKA
Все ж таки у меня чё т получилась, кнопка "Обновить" работает, НО только в том случае, если закрыто диалоговое окно отчета !?
Stado_adama
Код

//обновить
Перем Расшифровка, Обновить, таб;

Функция РасшифровкаОбновить(Обновить)
Расшифровка.Установить("Обновить", Обновить);
Возврат Расшифровка;
КонецФункции
//обновить

Процедура Сформировать()

//обновить
Если (ТипЗначенияСтр(Таб) <> "Таблица") ИЛИ (Обновить = 0) Тогда
Таб = СоздатьОбъект("Таблица");
Иначе
Таб.Очистить();
КонецЕсли;

Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Отчет", "РеестрПродаж");

Расшифровка.Установить("ДатаНачала", ДатаНачала);
Расшифровка.Установить("ДатаОкончания", ДатаОкончания);
//обновить

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

Процедура ПриОткрытии()
ДатаНачала = НачМесяца(ТекущаяДата());
ДатаОкончания = КонМесяца(ТекущаяДата());

//обновить
Если глФлагРасшифровки = 1 Тогда
Обновить = глОбновить;
ДатаПриходаВМоскву = глРасшифровка.Получить("ДатаНачала");
ДатаПоступления = глРасшифровка.Получить("ДатаОкончания");
Иначе
Обновить = 0;
КонецЕсли;

Если Обновить <> 0 Тогда
Таб = глТаблица;
КонецЕсли;

Если Обновить <> 0 Тогда
Сформировать();
СтатусВозврата(0);
Возврат;
КонецЕсли;
//обновить
КонецПроцедуры



когда-то в древности писал этот отчетик... все, что связанно с кнопкой обновить взято в соответствующие коментарии... только вот кнопки настройка там не было... сравни со своим, может найдешь отличие :)
MURzilKA
Евгений, СПАСИБо :)

Но че т ни как не пойму, почему "Обновить" срабатывает только после закрытия диалога отчета.

Вот, что у меня...

Код
Перем    Расшифровка;       
Перем Обновить;
Перем Путь, Имя;
Перем Т;
...

Функция РасшифровкаОбновить(Обновить)

Если ФС.СуществуетФайл(Путь + Имя) = 1 Тогда
//Обычные кнопки обновить, настройка
Расшифровка.Установить("Обновить", Обновить);
Возврат Расшифровка;
Иначе
Сообщить("Удален или перемещен файл обработки формирования отчета !!","!");
СтатусВозврата(0);
Возврат 0;
КонецЕсли;

КонецФункции //РасшифровкаОбновить

...

Процедура Сформировать(ФлагЗакрытияФормы = 0)

...

Расшифровка = СоздатьОбъект("СписокЗначений");
Путь = ""; Имя = "";
РасположениеФайла(Путь,Имя);
Расшифровка.Установить("Отчет", Путь + Имя);
Расшифровка.Установить("ВыбНачПериода", ВыбНачПериода);
Расшифровка.Установить("ВыбКонПериода", ВыбКонПериода);
Расшифровка.Установить("ВыбраннаяФирма",ВыбраннаяФирма);
Расшифровка.Установить("ПоВсемРУ", ПоВсемРУ);
Расшифровка.Установить("Счет", Счет);
Расшифровка.Установить("Обновить", 0);

...

//печать
Т = СоздатьОбъект("Таблица");
Если глФлагРасшифровки = 1 Тогда
Если Обновить = 1 Тогда
Т = глТаблица;
Т.Очистить();
КонецЕсли;
КонецЕсли;

Если СвернутьКОСГУ=0 Тогда
Т.ИсходнаяТаблица("Сформировать");
Т.ВывестиСекцию("Настройка");
Т.ВывестиСекцию("Шапка");
Т.Опции(0,0,Т.ВысотаТаблицы(),0);

ТабРасчет.ВыбратьСтроки();
Пока ТабРасчет.ПолучитьСтроку()=1 Цикл
Расшифровка.Установить("Документ",ТабРасчет.Документ);
Расшифровка.Установить("СодержаниеПроводки", ТабРасчет.СодержаниеПроводки);
Т.ВывестиСекцию("Строка");

КонецЦикла;
Т.ВывестиСекцию("Подвал");
Т.ТолькоПросмотр(1);
Т.Показать("Сформировать","");
Иначе
...
КонецЕсли;

Если (ФлагЗакрытияФормы = 1) Или (Обновить = 2) Тогда
СтрокаДействийФормы = "#Закрыть";
КонецЕсли;

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


Процедура ПриОткрытии()

Если глФлагРасшифровки = 1 Тогда
Обновить =глРасшифровка.Получить("Обновить");
Обновить = глОбновить;
ВыбНачПериода = глРасшифровка.Получить("ВыбНачПериода");
ВыбКонПериода = глРасшифровка.Получить("ВыбКонПериода");
ВыбраннаяФирма = глРасшифровка.Получить("ВыбраннаяФирма");
ПоВсемРУ = глРасшифровка.Получить("ПоВсемРУ");
Счет = глРасшифровка.Получить("Счет");

Если Обновить <> 0 Тогда
Т = глТаблица;
КонецЕсли;

Если Обновить =1 Тогда
Сформировать();
СтатусВозврата(0);
Возврат;
КонецЕсли;
Иначе
Обновить = 0;
ВыбНачПериода = НачМесяца(РабочаяДата());
ВыбКонПериода = КонМесяца(РабочаяДата());
Спр=СоздатьОбъект("Справочник.Фирмы");
Спр.ВыбратьЭлементы();
Спр.ПолучитьЭлемент();
ВыбраннаяФирма=Спр.ТекущийЭлемент();
ПоВсемРУ = 0;
КонецЕсли;


ВыбНачПериода = НачалоПериодаБИ();
ВыбКонПериода = КонецПериодаБИ();

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


Используйте тэг [CODE]
Stado_adama
попробуй это:
Код
 
Если глФлагРасшифровки = 1 Тогда
Обновить =глРасшифровка.Получить("Обновить");
Обновить = глОбновить;
ВыбНачПериода = глРасшифровка.Получить("ВыбНачПериода");
ВыбКонПериода = глРасшифровка.Получить("ВыбКонПериода");
ВыбраннаяФирма = глРасшифровка.Получить("ВыбраннаяФирма");
ПоВсемРУ = глРасшифровка.Получить("ПоВсемРУ");
Счет = глРасшифровка.Получить("Счет");

Если Обновить <> 0 Тогда
Т = глТаблица;
КонецЕсли;

Если Обновить =1 Тогда
Сформировать();
СтатусВозврата(0);
Возврат;
КонецЕсли;
Иначе
Обновить = 0;
ВыбНачПериода = НачМесяца(РабочаяДата());
ВыбКонПериода = КонМесяца(РабочаяДата());
Спр=СоздатьОбъект("Справочник.Фирмы");
Спр.ВыбратьЭлементы();
Спр.ПолучитьЭлемент();
ВыбраннаяФирма=Спр.ТекущийЭлемент();
ПоВсемРУ = 0;
КонецЕсли;



поменять на это:
но не уверен... глянул мельком прям на форуме...
Код
 
Если глФлагРасшифровки = 1 Тогда
Обновить =глРасшифровка.Получить("Обновить");
Обновить = глОбновить;
ВыбНачПериода = глРасшифровка.Получить("ВыбНачПериода");
ВыбКонПериода = глРасшифровка.Получить("ВыбКонПериода");
ВыбраннаяФирма = глРасшифровка.Получить("ВыбраннаяФирма");
ПоВсемРУ = глРасшифровка.Получить("ПоВсемРУ");
Счет = глРасшифровка.Получить("Счет");
Иначе
Обновить = 0;
ВыбНачПериода = НачМесяца(РабочаяДата());
ВыбКонПериода = КонМесяца(РабочаяДата());
Спр=СоздатьОбъект("Справочник.Фирмы");
Спр.ВыбратьЭлементы();
Спр.ПолучитьЭлемент();
ВыбраннаяФирма=Спр.ТекущийЭлемент();
ПоВсемРУ = 0;
КонецЕсли;

Если Обновить <> 0 Тогда
Т = глТаблица;
КонецЕсли;

Если Обновить =1 Тогда
Сформировать();
СтатусВозврата(0);
Возврат;
КонецЕсли;

MURzilKA
уже пробовала, не катит ...
Stado_adama
а через отладчик гоняла? отладчик ничем не помог? без отладчика что-либо сложно сказать... дай мдшничек...
MURzilKA
Цитата(MURzilKA @ 25.12.2007, 2:07) *


и еще, как сделать, чтобы при подборе счета (по которому будет составляться отчет) открывался не весь план счетов, а выборка.



rolleyes.gif

Счет.ИспользоватьРодителя(СчетПоКоду("301"),0) - выдаются 301 счета

Очень хотца, чтоб выдавались только счета 302.01, 303.01, 303.02 и 304.03.

Подскажите, пожалуйста, как это сделать.
MURzilKA
Не могу сообразить в каком месте нужно стопорнуть, чтобы он зацепил кнопку "Обновить".
мдшничек 15 Мб, мож лучше ert ? Или подскажи как это в отладчике поймать, я тогда еще сама помучаю.
Stado_adama
давай ерт, я гляну, а потом все расскажу :)
MURzilKA
Ура! Получилось! Кнопочки работают :)

Не много изменила отчет и добавила один символ в глобальном модуле :)

Подсобил вот этот пример:
http://www.infostart.ru/profile/174/projects/941/

Евгений, еще раз спасибо за помощь :)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.