Имя: Пароль:
1C
1С v8
Определить тип документа
0 igel1969
 
04.05.15
13:57
Здравствуйте!

Мой запрос возвращает документы разных типов - ПКО, Реализации, документы расчетов, возвраты... Я выгружаю результат запроса в табличную часть, соответственно отображаю в табличном поле. Далее по двойному щелчку я хочу в зависимости от того - какой тип документа делать то или иной действие.
Но как мне определить - какой тип документа выбран?
По Виду операции не вариант, ибо у возвратов от покупателя и у документов расчетов с контрагентами нет вида операции.

Код запроса:

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК Документ,
                   |    -1 * ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК НепривязаннаяСумма,
                   |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Контрагент.Ссылка КАК Контрагент,
                   |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента,
                   |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата КАК Дата,
                   |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СуммаДокумента КАК СуммаДокумента
                   |ИЗ
                   |    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки
                   |ГДЕ
                   |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проведен = ИСТИНА
                   |    И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ПометкаУдаления = ЛОЖЬ
                   |    И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток < 0
                   |    И НЕ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.Комментарий ПОДОБНО ""%ручная%""
                   |    И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ВидДоговора = &ВидДоговора
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент.Наименование,
                   |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата";
    Запрос.УстановитьПараметр("ВидДоговора", Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
    НепривязанныеПКО.Очистить();
    НепривязанныеПКО.Загрузить(Запрос.Выполнить().Выгрузить())
1 igel1969
 
04.05.15
14:00
Пример неудачного (неправильного) определения вида документа, так как у возврата нет вида операции:

Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    Если ВыбраннаяСтрока.Документ.ВидОперации <> Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия Тогда
         Форма = ПолучитьФорму("ФормаОтчета1",,ЭтаФорма);
         ВыбранныйДоговор = ВыбраннаяСтрока.ДоговорКонтрагента;
         Форма.ОткрытьМодально();
     Иначе
         Форма = ПолучитьФорму("ФормаОтчета2",,ЭтаФорма);
         ВыбранныйДоговор = ВыбраннаяСтрока.ДоговорКонтрагента;
         Форма.ОткрытьМодально();
    КонецЕсли;
КонецПроцедуры
2 ДенисЧ
 
04.05.15
14:00
ТипЗнч() не подойдёт?
3 igel1969
 
04.05.15
14:03
(2) Извините, а в коде как это может выглядеть?

Если ВыбраннаяСтрока.Документ.ТипЗнч() = ? Чему?
4 igel1969
 
04.05.15
14:05
(2) точнее, если ТипЗнч(ВыбраннаяСтрока.Документ) = ? Чему ?
5 ДенисЧ
 
04.05.15
14:07
(4) Если ТипЗнч(ВыбраннаяСтрока.Документ) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер)...
6 igel1969
 
04.05.15
14:10
(5) Спасибо огромное - заработало:

Если ТипЗнч(ВыбраннаяСтрока.Документ) <> Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда

Все отбирает как надо
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой