Имя: Пароль:
1C
1С v8
открыть документ из ТЗ
0 gurni
 
07.12.17
16:03
На форме внешней обработки есть строка в которой помимо разных там данных есть поле с ссылкой на документ. Как можно открыть данный документ по двойному клику на поле?
Подскажите пожалуйста.
1 Ёпрст
 
07.12.17
16:06
а че, не открывается само ?
2 Михаил Козлов
 
07.12.17
16:06
Что-то вроде, ВывестиЗначение или ПоказатьЗначение или ОткрытьЗначение.
3 gurni
 
07.12.17
16:07
(1) нет
открывается маленькое окошечко с наименованием, номером и датой документа
4 Ёпрст
 
07.12.17
16:13
(3) есть уверенность, что там ссылка, а не строка с представлением объекта?
5 gurni
 
07.12.17
16:17
(4) вначале у меня туда записывалось представление документа, я переделал теперь там ссылка
6 gurni
 
07.12.17
16:22
хотя наверное и не представление, а просто строка с названием документа его номером и датой
7 Ненавижу 1С
 
гуру
07.12.17
16:28
в расшифровке там что?
8 DexterMorgan
 
07.12.17
16:29
гиперссылка ячейки
9 Сияющий в темноте
 
07.12.17
16:30
В сообщении ПриВыбореСтроки выведи значение и тип того, что в ячейке - и станет ясно, что с этим делать дальше.
10 gurni
 
07.12.17
16:42
(9) строка
11 AlvlSpb
 
07.12.17
17:27
(5) Ни черта ты не переделал. Была бы там ссылка не было бы этой темы.
12 gurni
 
07.12.17
17:28
(9) и что делать дальше подскажите
13 dezss
 
07.12.17
17:30
(12) сделать так, чтобы тип был не строка, а ссылка на твой документ.
14 AlvlSpb
 
07.12.17
17:36
(12) Чем и откуда заполняется это поле?
Сейчас там строка. Это либо (у примеру) ПРЕДСТАВЛЕНИЕ(Номенклатура) либо СТРОКА(Номенклатура.Ссылка), а должно быть Номенклатура.Ссылка
15 gurni
 
07.12.17
17:36
(13) через отладчик получаю выражение того, что записывается в ячейку
там
ПолучитьДокумент(Выборка.ЗаказПокупателя).Ссылка    Заказ покупателя ТК000000077 от 14.11.2017 9:43:44    ДокументСсылка.ЗаказПокупателя
нажимаю плюсик и раскрывается список
16 AlvlSpb
 
07.12.17
17:37
(15) А тип поля в табличной части? Должен быть СправочникСсылка.ЗаказПокупателя
17 gurni
 
07.12.17
17:46
(16) ну там не обязательно заказ покупателя, может быть и реализация
18 AlvlSpb
 
07.12.17
17:49
(17) Так должно быть Составной тип данных, куда входят все документы, которые могут там присутствовать
19 AlvlSpb
 
07.12.17
17:50
(16) Конечно не СправочникСсылка.ЗаказПокупателя а ДокументСсылка.ЗаказПокупателя
20 Михаил Козлов
 
07.12.17
17:54
У поля ввода нужно колонки добавьте возможность открытия (должна появиться пиктограммка в виде лупы).
21 Михаил Козлов
 
07.12.17
17:54
нужно = нужной
22 gurni
 
07.12.17
17:55
(20) делал, но док не открывается
открывается маленькое окошечко с наименованием документа номером и датой
23 Михаил Козлов
 
07.12.17
17:57
(22) Значит у Вас не ссылка, а представление. Тип проверьте.
И после присвоения посмотрите тип значения.
24 gurni
 
08.12.17
09:43
(23) пишет строка
как это исправить?
25 hhhh
 
08.12.17
09:46
(24) на лупу нажимайте, чтобы открыть. И вообще, у вас там поле ввода на форме или что?
26 gurni
 
08.12.17
09:51
(25) поле ввода
27 gurni
 
08.12.17
10:16
совсем запутался((
я запросом получаю данные, потом их записываю в ТЗ
потом кликом по ячейке хочу открыть документ информация о котором там записана
но никак
и лупа не помогает и значение в ячейке ТЗ у меня строка
28 hhhh
 
08.12.17
10:18
(27) ну, запрос показывай. и как пишешь результат запроса в  тз
29 gurni
 
08.12.17
10:21
(28)             Запрос.УстановитьПараметр("контр", контр);
            Запрос.УстановитьПараметр("орган", орган);
            Запрос.Текст=
            
            "ВЫБРАТЬ
            |    ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
            |    ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
            |    ЗаказыПокупателейОстаткиИОбороты.Номенклатура КАК Номенклатура,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
            |    ЗаказыПокупателейОстаткиИОбороты.Регистратор КАК Регистратор,
            |    ЗаказыПокупателейОстаткиИОбороты.ПериодСекунда КАК ПериодСекунда,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.Регистратор ССЫЛКА Документ.ЗакрытиеЗаказовПокупателей
            |        ИЛИ ЗаказыПокупателейОстаткиИОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
            |        ТОГДА ИСТИНА
            |    ИНАЧЕ ЛОЖЬ
            |КОНЕЦ КАК ЭтоЗакрытиеИлиВозврат,
            |    ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента.Владелец КАК Контрагент,
            |    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК СуммаВзаиморасчетовНачальныйОстаток,
            |    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток,
            |    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход,
            |    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК СуммаВзаиморасчетовРасход,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток > 0
            |        ТОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток
            |    ИНАЧЕ 0
            |КОНЕЦ КАК КоличествоНедопоставки,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток < 0
            |        ТОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток
            |    ИНАЧЕ 0
            |КОНЕЦ КАК КоличествоНеПоЗаказу,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток > 0
            |        ТОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток
            |    ИНАЧЕ 0
            |КОНЕЦ КАК КоличествоНедопоставкиН,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток < 0
            |        ТОГДА ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток
            |    ИНАЧЕ 0
            |КОНЕЦ КАК КоличествоНеПоЗаказуН,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток > 0
            |        ТОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
            |    ИНАЧЕ 0
            |КОНЕЦ КАК СуммаНедопоставки,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток < 0
            |        ТОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
            |    ИНАЧЕ 0
            |КОНЕЦ КАК СуммаНеПоЗаказу,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток > 0
            |        ТОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
            |    ИНАЧЕ 0
            |КОНЕЦ КАК СуммаНедопоставкиН,
            |ВЫБОР
            |    КОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток < 0
            |        ТОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
            |    ИНАЧЕ 0
            |КОНЕЦ КАК СуммаНеПоЗаказуН
            |{ВЫБРАТЬ
            |    ДоговорКонтрагента.*,
            |    ЗаказПокупателя.*,
            |    Номенклатура.*,
            |    ХарактеристикаНоменклатуры.*,
            |    КоличествоНачальныйОстаток,
            |    КоличествоКонечныйОстаток,
            |    КоличествоПриход,
            |    КоличествоРасход,
            |    Регистратор,
            |    ПериодСекунда,
            |    ЭтоЗакрытиеИлиВозврат,
            |    Контрагент.*,
            |    СуммаВзаиморасчетовНачальныйОстаток,
            |    СуммаВзаиморасчетовПриход,
            |    СуммаВзаиморасчетовРасход,
            |    СуммаВзаиморасчетовКонечныйОстаток,
            |    КоличествоНедопоставки,
            |    КоличествоНеПоЗаказу,
            |    КоличествоНедопоставкиН,
            |    КоличествоНеПоЗаказуН,
            |    СуммаНедопоставки,
            |    СуммаНеПоЗаказу,
            |    СуммаНедопоставкиН,
            |    СуммаНеПоЗаказуН}
            |ИЗ
            |    РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, , Авто, ДвиженияИГраницыПериода, ) КАК ЗаказыПокупателейОстаткиИОбороты
            |ГДЕ
            |    ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя.Контрагент = &контр
            |{ГДЕ
            |    ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента.*,
            |    ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя.*,
            |    ЗаказыПокупателейОстаткиИОбороты.Номенклатура.*,
            |    ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры.*,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоОборот,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоПриход,
            |    ЗаказыПокупателейОстаткиИОбороты.КоличествоРасход,
            |    ЗаказыПокупателейОстаткиИОбороты.Регистратор,
            |    (ЗаказыПокупателейОстаткиИОбороты.Регистратор ССЫЛКА Документ.ЗакрытиеЗаказовПокупателей) КАК ЭтоЗакрытиеИлиВозврат,
            |    ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента.Владелец.* КАК Контрагент,
            |    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
            |    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовПриход,
            |    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовРасход,
            |    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток}";
            
            РезультатЗапроса = Запрос.Выполнить();
            Выборка = РезультатЗапроса.Выбрать();
            Пока Выборка.Следующий() Цикл
                НоваяСтрока.ДоговорКонтрагента = Выборка.ДоговорКонтрагента;
                НоваяСтрока.ЗаказПокупателя = ПолучитьДокумент(Выборка.ЗаказПокупателя);
                НоваяСтрока.Номенклатура = Выборка.Номенклатура;
                НоваяСтрока.КоличествоНачальныйОстаток = Выборка.КоличествоНачальныйОстаток;
                НоваяСтрока.КоличествоКонечныйОстаток = Выборка.КоличествоКонечныйОстаток;
                НоваяСтрока.КоличествоРасход = Выборка.КоличествоРасход;
                НоваяСтрока.Регистратор = ПолучитьДокумент(Выборка.Регистратор);
                НоваяСтрока.СуммаВзаиморасчетовКонечныйОстаток = Выборка.СуммаВзаиморасчетовКонечныйОстаток;
                НоваяСтрока.СуммаНедопоставки = Выборка.СуммаНедопоставки;
                НоваяСтрока.КоличествоНедопоставки = Выборка.КоличествоНедопоставки;
            КонецЦикла;
30 gurni
 
08.12.17
10:22
Функция ПолучитьДокумент(ТекстДляЗагрузки)
    
    СписокДокументов = Новый СписокЗначений;
    
    Если ПустаяСтрока(ТекстДляЗагрузки) Тогда
        Возврат СписокДокументов;
    КонецЕсли;
    
    СЗВидДок = Новый СписокЗначений;
    Для Каждого МетаДок Из Метаданные.Документы Цикл
        СЗВидДок.Добавить(МетаДок.Имя, МетаДок.Синоним);
    КонецЦикла;
    
    ТекстДок = Новый ТекстовыйДокумент;
    ТекстДок.УстановитьТекст(ТекстДляЗагрузки);
    Для НомСтр = 1 По ТекстДок.КоличествоСтрок() Цикл
        
        Стр = СокрЛП(ТекстДок.ПолучитьСтроку(НомСтр));
        
        Если Лев(Стр, 1) = """" Тогда // (Лев(Стр, 1) = """") И (Прав(Стр, 1) = """") Тогда
            Стр = Сред(Стр, 2); // Стр = Сред(Стр, 2, СтрДлина(Стр) - 2);
        КонецЕсли;
        
        // определим вид документа
        ТекВидДок = Неопределено;
        СтрДатаНомер = Неопределено;
        Для Каждого ТекЭлем Из СЗВидДок Цикл
            Если Найти(Стр, ТекЭлем.Представление) = 1 Тогда
                ТекВидДок = ТекЭлем.Значение;
                СтрДатаНомер = СокрЛ(Сред(Стр, СтрДлина(ТекЭлем.Представление) + 1));
                Прервать;
            КонецЕсли;
        КонецЦикла;
        
            // 000001 от 01.01.2012
            МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрДатаНомер, " от ");
            НомерДок = МассивПодстрок[0];
            СтрДатаДок = МассивПодстрок[1];
            ДД = Число(Сред(СтрДатаДок, 1, 2));
            ММ = Число(Сред(СтрДатаДок, 4, 2));
            ГГГГ = Число(Сред(СтрДатаДок, 7, 4));
            ДатаДок = Дата(ГГГГ, ММ, ДД);
        
        ДокСсылка = Неопределено;
        
        // в простейшем варианте поиск документа:
        //    ДокСсылка = Документы[ТекВидДок].НайтиПоНомеру(НомерДок, ДатаДок);
        // в чуть более сложном:
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |    Ссылка
        |ИЗ
        |    Документ." + ТекВидДок + "
        |ГДЕ
        |    НАЧАЛОПЕРИОДА(Дата, ДЕНЬ) = &Дата
        |    И Номер = &Номер";
        Запрос.УстановитьПараметр("Дата", НачалоДня(ДатаДок));
        Запрос.УстановитьПараметр("Номер", НомерДок);
        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
            ДокСсылка = Выборка.Ссылка;
        КонецЕсли;
        
        
        
    КонецЦикла;
//    Сообщить(ТипЗнч(ДокСсылка));
    Возврат ДокСсылка;
    
КонецФункции
31 gurni
 
08.12.17
10:23
привел запрос и его вывод
ниже функция переводящая информацию о доке в ссылку на него
32 hhhh
 
08.12.17
10:25
ну так

                НоваяСтрока.ЗаказПокупателя = Выборка.ЗаказПокупателя;
33 gurni
 
08.12.17
10:31
(32) сделал так, добавил возможность открытия на ячейки
после нажатия открывается маленькое окошечко с наименованием документа, его номером и датой
34 hhhh
 
08.12.17
10:33
(33) а в НоваяСтрока.ЗаказПокупателя какой у вас тип?
35 Табуретко
 
08.12.17
10:35
значит реквизит ЗаказПокупателя у него строка...
а в документе регистраторе есть ссылка на документ заказа?
36 Табуретко
 
08.12.17
10:36
если регистратор и есть ЗаказПокупателя то

НоваяСтрока.ЗаказПокупателя = Выборка.Регистратор
37 Табуретко
 
08.12.17
10:38
или скорее всего (34) прав...
38 gurni
 
08.12.17
10:38
(35) я и писал ранее, что строка
и спрашивал что сделать, чтобы открыть документ
39 gurni
 
08.12.17
10:39
(36) выборка.регистратор и выборка.заказпокупателя два разных значения
40 Табуретко
 
08.12.17
10:39
поставь ДокументСсылка
41 gurni
 
08.12.17
10:40
(34) строка я же писал
42 gurni
 
08.12.17
10:40
(40) куда???
43 Табуретко
 
08.12.17
10:43
если в таблице (которую заполняеш) реквизит ЗаказПокупателя у тебя тип строка - поменяй на ДокументСсылка
44 gurni
 
08.12.17
10:44
(43) как это сделать подскажите
45 George Wheels
 
08.12.17
10:44
(29) НоваяСтрока это строка чего?
46 gurni
 
08.12.17
10:45
запрос я привел, заполнение по запросу тоже
где и что изменить?
47 gurni
 
08.12.17
10:45
(45) ТЗ
48 Табуретко
 
08.12.17
10:45
ТЗ твоя где находится?
49 gurni
 
08.12.17
10:47
(48) на форме обработки
50 George Wheels
 
08.12.17
10:47
(47) Потом эту ТЗ куда выводишь?
51 gurni
 
08.12.17
10:48
(50) никуда, так визуально смотрю информацию
52 Табуретко
 
08.12.17
10:49
в реквизитах ТЗ найди ЗаказПокупателя и в свойствах реквизита выбери тип ДокументСсылка, там где у тебя сейчас строка
53 Табуретко
 
08.12.17
10:50
ты тролиш нас чтоли? тип строка он знает где а тип Документ ссылка в томже месте выбрать не можеш?
54 gurni
 
08.12.17
10:51
(52) все спасибо
55 Табуретко
 
08.12.17
10:53
не все спасибо, а ВСЕМ спасибо...
56 George Wheels
 
08.12.17
10:53
(51) Т.е. не ТЗ а ТЧ