Вход | Регистрация


1С:Предприятие ::

Метки:

открыть документ из ТЗ

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

    Возврат ДокСсылка;
    
КонецФункции
   gurni
 
31 - 08.12.17 - 10:23
привел запрос и его вывод
ниже функция переводящая информацию о доке в ссылку на него
   hhhh
 
32 - 08.12.17 - 10:25
ну так

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



Список тем форума
Рекламное место пустует  
Программист всегда исправляет последнюю ошибку.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует