Помощь - Поиск - Пользователи - Календарь
Полная версия: Как из отчета попасть в документ.
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 7.7" > (7.7) Отчеты и обработки для платформы "1С:Предприятие 7.7"
Sonya
Пример вышел отчет (внешний отчет, обработка) и нужно попасть в текущий документ, в книгах написано
Код
Таб = СоздатьОбъект("Таблица"); 
Таб.Открыть("tabl_l.mxl");
ВыбОбласть = Таб.Область("R8C4");
ВыбОбласть.Расшифровка(ВыбДокумент, 1);



но дело в том что появляется лупа, а имя файла говорит не найдено.
Какое имя файла нужно указывать?
Вообще как то все работают через расшифровку, указывают в ячейке переменную.Т.е. тот текст, который написан в свойствах ячейки в поле расшифровка.Когда там пишешь тоже лупа появляется, а дальше...
Код
Перем Расшифровка
Расшифровка=СоздатьОбъект("...");
Расшифровка.Установить...



Не ясно что зачем? Кто сталкивался объясните пожалуйста.
Мастер_миража
в переменной выбДокумент должен быть документ
Sonya
Цитата(Мастер_миража @ 20.10.2008, 12:31) *

в переменной выбДокумент должен быть документ

tabl_l.mxl у меня ругается на имя файла, говорит имя файла не найдено.

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

Если Список.НайтиЗначение(Запрос.Сотрудники)>0 Тогда
Таб.ВывестиСекцию("НомерДок1");
Иначе
Список.ДобавитьЗначение(Запрос.Сотрудники);
Таб.ВывестиСекцию("НомерДок");
КонецЕсли;
//конецЦиклов;

Таб.Открыть("Сформировать1.mxl"); // что еще за имя файла?
ВыбОбласть = Таб.Область("R5C5");
ВыбОбласть.Расшифровка(Док, 1);
Мастер_миража
в переменной Док пусто
Хряк
Таб.Открыть("Сформировать1.mxl"); // что еще бред
Таб.Показать("Печать таблицы");
Sonya
Цитата(Мастер_миража @ 20.10.2008, 12:53) *

в переменной Док пусто

Док = СоздатьОбъект("Документ.Льгота");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
Пока Док.ПолучитьДокумент() = 1 Цикл
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
...
КонецЕсли;
КонецЦикла;
КонецЦикла;

если так то не пусто будет?
WaRDeR
Не будет пусто, но для большей яности, напиши, что за у тебянастройка такая и приложи свой отчет.
Тогда тут подскажут.
Sonya
Цитата(WaRDeR @ 20.10.2008, 13:28) *

Не будет пусто, но для большей яности, напиши, что за у тебянастройка такая и приложи свой отчет.
Тогда тут подскажут.

Мой отчет:
Я выделила красным цветом повторные фамилии, и теперь из отчета хочу зайти в документ из этого отчета. Настройка 1С 7.7 хозрасчет переделанный весь.
Код
Процедура Сформировать1()
Перем Запрос, ТекстЗапроса, Таб;
Перем НомСтр;
Перем Расшифровка;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать1)
|Период с ВыбНачПериода по ВыбКонПериода;
|ДатаДок = Документ.Льгота.ДатаДок;
|НомерДок = Документ.Льгота.НомерДок;
|Сотрудники = Документ.Льгота.Сотрудники.Наименование;
|ВидУслуги = Документ.Льгота.ВидУслуги;
|Ммесяцы = Документ.Льгота.Ммесяцы;
|Группировка Ммесяцы;
|Группировка Сотрудники все;
|Группировка ВидУслуги;
|Группировка ДатаДок;
|Группировка НомерДок;
|Условие(Ммесяцы в ВыбМмесяцы);
|Условие(ВидУслуги в ВыбВидУслуги);
|"//}}ЗАПРОС;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать1");
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Список=СоздатьОбъект("СписокЗначений");
Док = СоздатьОбъект("Документ.Льгота");
Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.УдалитьВсе();
Расшифровка.Установить("ВыбМмесяцы", ВыбМмесяцы);
Расшифровка.Установить("ВыбНачПериода", ВыбНачПериода);
Расшифровка.Установить("ВыбКонПериода", ВыбКонПериода);
Расшифровка.Установить("ВыбВидУслуги",ВыбВидУслуги);
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
Пока Запрос.Группировка(3) = 1 Цикл
Пока Запрос.Группировка(4) = 1 Цикл
Пока Запрос.Группировка(5) = 1 Цикл
Если Список.НайтиЗначение(Запрос.Сотрудники)>0 Тогда
Таб.ВывестиСекцию("НомерДок1");
Иначе
Список.ДобавитьЗначение(Запрос.Сотрудники);
Таб.ВывестиСекцию("НомерДок");
КонецЕсли;
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
Пока Док.ПолучитьДокумент() = 1 Цикл
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
//не знаю что сюда писать, не знаю как условия писать, чтобы определить именно этот документ который в отчете выходит...
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
//Таб.Открыть("Сформировать1.mxl");
ВыбОбласть=Таб.Область();
ВыбОбласть.Расшифровка(Док.ТекущийДокумент(),1);
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать1", "");

КонецПроцедуры
Мастер_миража
если я правильно догадался: у тебя в отчете есть имена документов и ти хошь по ним кликая откравать документы

может рассшифровку лучше внести в цикл группировки... там и группировка есть по документам
Sonya
Цитата(Мастер_миража @ 20.10.2008, 13:57) *

если я правильно догадался: у тебя в отчете есть НОМЕРА документов и ти хошь по ним кликая откравать документы

может рассшифровку лучше внести в цикл группировки... там и группировка есть по документам

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

Если Список.НайтиЗначение(Запрос.Сотрудники)>0 Тогда
Таб.ВывестиСекцию("НомерДок1");
Иначе Список.ДобавитьЗначение(Запрос.Сотрудники);
Таб.ВывестиСекцию("НомерДок");
КонецЕсли;
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); //а документы нужно перебирать?
Пока Док.ПолучитьДокумент() = 1 Цикл
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
...
КонецЦикла;


НАЧИНАЕМ УЖЕ ПОЛЬЗОВАТЬСЯ ТЭГОМ [code]
Мастер_миража
чет все нето
расшифрофку создавать ненужно етож метод
думаю можн прост онаписать в групприровках

Таб.область("R8C8").расшифровка(Запрос.Док,1);

без выборок документов

хотя в справке написано что работает тока в таблице при вводе данных, возможно придется изменить свойства таблицы
Sonya
Вышла из этой ситуации нашла отчет который позволяет попасть в документ из отчета, это отчет.книгапродаж там таблица ЖурналУчета, все переделала под свой отчет и заработало.
bob
Соня, давай дружить wub.gif

здесь столько страшных кусков кода... бррр... и столько страшных советов....
WaRDeR
Это как в анекдоте.
Американцы купили у русских новый истребитель.
Распаковали коробки, собирают по инструкции - получается трактор.
Разобрали, собрали - опять трактор.
...и так 2 недели...
а потом один умник заметил в конце инструкции: "Обработать напильником"

так и здесь :)
Sonya
Цитата(bob @ 20.10.2008, 22:08) *

Соня, давай дружить wub.gif

здесь столько страшных кусков кода... бррр... и столько страшных советов....

Давай дружить, но ты же профессионал и у тебя 182 сообщения, а я новичок уж пора бы привыкнуть к столь страшным кодам:)
bob
Цитата
ты же профессионал и у тебя 182 сообщения
megalol.gif
MaxxaM
Не пойму, а почему в запросе получать не номер докумена а сам документ и в таблице в свойствах ячейки, расшифровку установить как запрос.Док ?
Sonya
Цитата(MaxxaM @ 21.10.2008, 22:34) *

Не пойму, а почему в запросе получать не номер докумена а сам документ и в таблице в свойствах ячейки, расшифровку установить как запрос.Док ?

Код

Перем Таб;
Перем Расшифровка;
Процедура Сформировать()
Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Отчет", "КнигаПродаж");
Расшифровка.Установить("ВыбНачПериода", ВыбНачПериода);
Расшифровка.Установить("ВыбКонПериода", ВыбКонПериода);
Расшифровка.Установить("ВыбМмесяцы", ВыбМмесяцы);
Расшифровка.Установить("ВыбВидУслуги", ВыбВидУслуги);
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ЖурналУчета");
Запрос = СоздатьОбъект("Запрос");
ТЗ =
"//{{ЗАПРОС(ЖурналУчета)
|ОбрабатыватьДокументы Проведенные;
|Период с ВыбНачПериода по ВыбКонПериода;
|ДатаДок = Документ.Льгота.ДатаДок;
|НомерДок = Документ.Льгота.НомерДок;
|Сотрудники = Документ.Льгота.Сотрудники.Наименование;
|ВидУслуги = Документ.Льгота.ВидУслуги;
|Ммесяцы = Документ.Льгота.Ммесяцы;
|ТекущийДокумент = Документ.Льгота.ТекущийДокумент;
|Группировка Ммесяцы;
|Группировка Сотрудники все;
|Группировка ВидУслуги;
|Группировка ДатаДок;
|Группировка НомерДок;
|Группировка ТекущийДокумент;
|Условие(Ммесяцы в ВыбМмесяцы);
|Условие(ВидУслуги в ВыбВидУслуги);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТЗ) = 0 Тогда
Возврат;
КонецЕсли;
Таб.ВывестиСекцию("Заголовок");
Список=СоздатьОбъект("СписокЗначений");
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
Пока Запрос.Группировка(3) = 1 Цикл
Пока Запрос.Группировка(4) = 1 Цикл
Пока Запрос.Группировка(5) = 1 Цикл
Пока Запрос.Группировка(6) = 1 Цикл
РасшДок = Запрос.ТекущийДокумент;
Если Список.НайтиЗначение(Запрос.Сотрудники)>0 Тогда
Таб.ВывестиСекцию("Строка1");
Иначе
Список.ДобавитьЗначение(Запрос.Сотрудники);
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Вот конечный код, нужно из отчета попасть именно в текущий документ.
Мастер_миража
а где ты используешь расшифровку?
Sonya
Цитата(Мастер_миража @ 22.10.2008, 15:57) *

а где ты используешь расшифровку?

я в таблице написала в свойстве ячейка где расшифровка написала РасшДок#

а в модуле РасшДок = Запрос.ТекущийДокумент;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.