7.7 Как из отчета попасть в документ.

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Sonya, 20 окт 2008.

  1. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    Пример вышел отчет (внешний отчет, обработка) и нужно попасть в текущий документ, в книгах написано
    Код:
    Таб = СоздатьОбъект("Таблица"); 
    Таб.Открыть("tabl_l.mxl"); 
    ВыбОбласть = Таб.Область("R8C4"); 
    ВыбОбласть.Расшифровка(ВыбДокумент, 1); 
    
    
    
    но дело в том что появляется лупа, а имя файла говорит не найдено.
    Какое имя файла нужно указывать?
    Вообще как то все работают через расшифровку, указывают в ячейке переменную.Т.е. тот текст, который написан в свойствах ячейки в поле расшифровка.Когда там пишешь тоже лупа появляется, а дальше...
    Код:
    Перем Расшифровка
    Расшифровка=СоздатьОбъект("...");
    Расшифровка.Установить...
    
    
    
    Не ясно что зачем? Кто сталкивался объясните пожалуйста.
  2. Мастер_миража
    Offline

    Мастер_миража Опытный в 1С

    Регистрация:
    22 сен 2008
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    в переменной выбДокумент должен быть документ
  3. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    tabl_l.mxl у меня ругается на имя файла, говорит имя файла не найдено.

    Код:
    Таб = СоздатьОбъект("Таблица");  
    Таб.ИсходнаяТаблица("Сформировать1"); //я указать могу только закладку таблицы
    Список=СоздатьОбъект("СписокЗначений");
    Док = СоздатьОбъект("Документ.Льгота");
    //Цикл и Группировки ... 
    
    Если  Список.НайтиЗначение(Запрос.Сотрудники)>0 Тогда
    Таб.ВывестиСекцию("НомерДок1");
    Иначе 
    Список.ДобавитьЗначение(Запрос.Сотрудники);
    Таб.ВывестиСекцию("НомерДок");
    КонецЕсли;						  
    //конецЦиклов;
    
    Таб.Открыть("Сформировать1.mxl"); // что еще за имя файла?
    ВыбОбласть = Таб.Область("R5C5"); 
    ВыбОбласть.Расшифровка(Док, 1);
    
  4. Мастер_миража
    Offline

    Мастер_миража Опытный в 1С

    Регистрация:
    22 сен 2008
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    в переменной Док пусто
  5. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Таб.Открыть("Сформировать1.mxl"); // что еще бред
    Таб.Показать("Печать таблицы");
  6. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    Док = СоздатьОбъект("Документ.Льгота");
    Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку()=1 Цикл
    ...
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;

    если так то не пусто будет?
  7. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Не будет пусто, но для большей яности, напиши, что за у тебянастройка такая и приложи свой отчет.
    Тогда тут подскажут.
  8. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    Мой отчет:
    Я выделила красным цветом повторные фамилии, и теперь из отчета хочу зайти в документ из этого отчета. Настройка 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", "");
    
    КонецПроцедуры
  9. Мастер_миража
    Offline

    Мастер_миража Опытный в 1С

    Регистрация:
    22 сен 2008
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    если я правильно догадался: у тебя в отчете есть имена документов и ти хошь по ним кликая откравать документы

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

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    Ты правильно понял. Вот пытаюсь это реализовать. Т.е.
    Код:
    Таб = СоздатьОбъект("Таблица");  
    Таб.ИсходнаяТаблица("Сформировать1");
    Таб.ВывестиСекцию("Заголовок");
    Список=СоздатьОбъект("СписокЗначений");
    Док = СоздатьОбъект("Документ.Льгота");
    Расшифровка = СоздатьОбъект("СписокЗначений");
    Расшифровка.УдалитьВсе();
    //...
    Запрос.Группировка(5) = 1 Цикл  
    Расшифровка.Установить("ВыбМмесяцы", ВыбМмесяцы);
    Расшифровка.Установить("ВыбНачПериода", ВыбНачПериода);
    Расшифровка.Установить("ВыбКонПериода", ВыбКонПериода);
    Расшифровка.Установить("ВыбВидУслуги",ВыбВидУслуги);
    
    Если  Список.НайтиЗначение(Запрос.Сотрудники)>0 Тогда
    Таб.ВывестиСекцию("НомерДок1");
    Иначе Список.ДобавитьЗначение(Запрос.Сотрудники);
    Таб.ВывестиСекцию("НомерДок");
    КонецЕсли;
    Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); //а документы нужно перебирать?
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку()=1 Цикл  
    ...
    КонецЦикла;
    
    НАЧИНАЕМ УЖЕ ПОЛЬЗОВАТЬСЯ ТЭГОМ
    Код:
    
    
  11. Мастер_миража
    Offline

    Мастер_миража Опытный в 1С

    Регистрация:
    22 сен 2008
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    чет все нето
    расшифрофку создавать ненужно етож метод
    думаю можн прост онаписать в групприровках

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

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

    хотя в справке написано что работает тока в таблице при вводе данных, возможно придется изменить свойства таблицы
  12. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    Вышла из этой ситуации нашла отчет который позволяет попасть в документ из отчета, это отчет.книгапродаж там таблица ЖурналУчета, все переделала под свой отчет и заработало.
  13. bob
    Offline

    bob Опытный в 1С

    Регистрация:
    7 май 2008
    Сообщения:
    386
    Симпатии:
    0
    Баллы:
    26
    Соня, давай дружить :unsure:

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

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Это как в анекдоте.
    Американцы купили у русских новый истребитель.
    Распаковали коробки, собирают по инструкции - получается трактор.
    Разобрали, собрали - опять трактор.
    ...и так 2 недели...
    а потом один умник заметил в конце инструкции: "Обработать напильником"

    так и здесь :)
  15. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    Давай дружить, но ты же профессионал и у тебя 182 сообщения, а я новичок уж пора бы привыкнуть к столь страшным кодам:)
  16. bob
    Offline

    bob Опытный в 1С

    Регистрация:
    7 май 2008
    Сообщения:
    386
    Симпатии:
    0
    Баллы:
    26
    :unsure:
  17. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Не пойму, а почему в запросе получать не номер докумена а сам документ и в таблице в свойствах ячейки, расшифровку установить как запрос.Док ?
  18. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

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

    Мастер_миража Опытный в 1С

    Регистрация:
    22 сен 2008
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    а где ты используешь расшифровку?
  20. TopicStarter Overlay
    Sonya
    Offline

    Sonya Опытный в 1С

    Регистрация:
    16 окт 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26
    я в таблице написала в свойстве ячейка где расшифровка написала РасшДок#

    а в модуле РасшДок = Запрос.ТекущийДокумент;

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