7.7 Использование таблиц в отчете

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

  1. TopicStarter Overlay
    djyarilo
    Offline

    djyarilo Опытный в 1С

    Регистрация:
    18 апр 2011
    Сообщения:
    435
    Симпатии:
    0
    Баллы:
    26
    Задача, которую мне поставили:
    1) В стандартном отчете, конфигурации "УТ" 9,2, Ведомость по партиям ТМЦ, нужно сделать чтобы при двойном нажатии на номенклатуру, выходили документы движения в которых участвует эта номенклатура. Это я сделал, следующим образом, в том же отчете создал 2 таблицу и кодом приведенным ниже делал вывод документов в 2 отчет. На втором отчете сделал расшифровку, чтобы открывался документ.
    2)Задача следующая в таблице отчета, который я вывел, при нажатии на определенное поле открывался новый документ, заявка поставщику. Что только я не пробовал сделать, это и пробовал юзать область и все что угодно пока ни как. Может есть у кого какие соображения?

    Код:
    Процедура ОбработкаЯчейкиТаблицы(список, фл)
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "
    |Период с ДатаНачала по ДатаКонца;
    |Док 			= Регистр.ОстаткиТМЦ.ТекущийДокумент,             
    |                 Регистр.РезервыТМЦ.ТекущийДокумент;
    |Номенклатура	= Регистр.ОстаткиТМЦ.Номенклатура,
    |                 Регистр.РезервыТМЦ.Номенклатура;
    |Склад			= Регистр.ОстаткиТМЦ.Склад,             
    |                 Регистр.РезервыТМЦ.Склад;
    |Количество = Регистр.ОстаткиТМЦ.Количество;
    |Группировка Номенклатура;
    |Группировка Док;
    |Функция КоличествоНачОст      	= НачОст(Количество);
    |Функция КоличествоПриход      	= Приход(Количество);
    |Функция КоличествоРасход      	= Расход(Количество);
    |Функция КоличествоКонОст  		= КонОст(Количество);
    |";
    
    
    фл=1;
    тип=ТипЗначенияСтр(список);
    ТабДок = СоздатьОбъект("Таблица");
    ТабДок.ИсходнаяТаблица("Таблица1");
    Если тип="СписокЗначений" тогда //убедились, что это списокЗначений
    фл=0;
    з1=Список.ПолучитьЗначение(1);
    Запрос.Выполнить(текстзапроса);
    
    пока Запрос.Группировка(1) = 1 Цикл
    поиск = Найти(Запрос.Номенклатура, з1);
    Если поиск = 1 Тогда
    НачОстаток = Запрос.КоличествоНачОст;
    Приход = Запрос.КоличествоПриход;
    Расход = Запрос.КоличествоРасход;
    КонОстаток = Запрос.КоличествоКонОст;
    если НачОстаток = 0 Тогда
    НачОстаток = " ";
    КонецЕсли;
    Если Приход = 0 Тогда
    Приход = " ";
    КонецЕсли; 
    Если Расход = 0 Тогда
    Расход = " ";
    КонецЕсли;
    ТабДок.ВывестиСекцию("Номенклатура");
    
    Пока Запрос.Группировка(2) = 1 Цикл
    
    Док = глПредставлениеДокумента(Запрос.Док);
    ПриходДок = Запрос.КоличествоПриход;
    РасходДок = Запрос.КоличествоРасход;
    Если ПриходДок = 0 Тогда
    ПриходДок = "";
    КонецЕсли;
    Если РасходДок = 0 Тогда
    РасходДок = "";
    КонецЕсли;
    если док = "" Тогда
    док = "Итого по документам";
    ПриходДок = Приход;
    РасходДок = Расход;
    ОбщийОстаток = Запрос.КоличествоКонОст;
    
    КонецЕсли;
    ТабДок.ВывестиСекцию("Док");
    //	Сообщить(" название документа " + Запрос.Док + " остаток " + Запрос.КоличествоКонОст + " Приход " + Запрос.КоличествоПриход + " Расход " + Запрос.КоличествоРасход);
    конеццикла;
    КонецЕсли;
    конеццикла;
    
    ТабДок.ТолькоПросмотр(1);
    ТабДок.Показать();
    конецЕсли;
    
    
    
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Покажите вашу процедуру ОбработкаЯчейкиТаблицы
  3. TopicStarter Overlay
    djyarilo
    Offline

    djyarilo Опытный в 1С

    Регистрация:
    18 апр 2011
    Сообщения:
    435
    Симпатии:
    0
    Баллы:
    26
    как бы она вся и написана вот там)) То есть там описано, для 1 части!!
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не обратил внимание на название))))

    Код:
    ....
    Если тип="СписокЗначений" тогда //убедились, что это списокЗначений
    ...
    ИначеЕсли Тип="Документ" Тогда
    //тут вам и карты в руки
    КонецЕсли;
    
    
    
    
    Это в случае если жмакнуть по дкументу...
    Если же у вас определенный адрес - можно через Адрес ячейки (четвертый параметр в этой же процедуре)
    или приблизительно так: Ячейка содержит текст "Сформировать"

    Код:
    ....
    Если тип="СписокЗначений" тогда //убедились, что это списокЗначений
    ...
    ИначеЕсли Тип="Строка" Тогда
    Если СокрЛП(Список)="Сформировать" Тогда
    //тут вам и карты в руки
    КонецЕсли; 
    КонецЕсли;
    
    
  5. TopicStarter Overlay
    djyarilo
    Offline

    djyarilo Опытный в 1С

    Регистрация:
    18 апр 2011
    Сообщения:
    435
    Симпатии:
    0
    Баллы:
    26
    Один только странный глюк((, в поле у меня написано Нажми, и это слово не типу строка не типу текст не подходит :angry: куй знает почему. Даже вообще странно как то.
    В поле написано Нажми, а срабатывает только
    Код:
    ИначеЕсли тип = "" Тогда
    
    нажми = ОткрытьФорму("Документ.ЗаказПоставщику");
    
    
    это условие :D
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Использовать функцию ТипЗначения. Вернет:
    0 - неопределенный тип данных
    100 - внешний объект (Список,Таблица,Текст)

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