Имя: Пароль:
1C
1С v8
Один запрос, меняются только параметры (как правильно написать)
, ,
0 листопад
 
18.05.14
02:29
Формирую печатную форму. У физ.лица заполнено много свойств. Как правильно программно прописать вывод этих свойств? Сейчас тупо пишу запрос, где в параметрах указываю нужное физ.лицо и свойство, все выводится как мне надо. Только у каждого физ.лица около 8-10 разных свойств, и я так думаю будет некрасиво, если я в коде 10 раз напишу один и тот же запрос, в котором меняются только параметры (физ.лицо и свойство).

Вот код, для получения одного свойства, а у меня их около 10-ти:

НужноеСво = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Город");

Значение="";
з=Новый Запрос;
з.Текст=            
"   ВЫБРАТЬ
|    ЗначенияСвойствОбъектов.Объект,
|    ЗначенияСвойствОбъектов.Свойство,
|    ЗначенияСвойствОбъектов.Значение
|ИЗ
|    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
|    ЗначенияСвойствОбъектов.Объект = &ФЛ
|    И ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство";
з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
з.УстановитьПараметр("НужноеСвойство",НужноеСво);
ВыбСвойство = з.Выполнить().Выбрать();
Если ВыбСвойство.Следующий() Тогда
    Значение = СокрЛП(ВыбСвойство.Значение);
КонецЕсли;
1 Tateossian
 
18.05.14
02:38
Динамически формируй запрос со свойствами в блоке ГДЕ конкатенацией вида Текст = Текст + "ИЛИ НужноеСвойство1 = &НужноеСвойство1". Ну и лучше не через ИЛИ, а ОБЪЕДИНИТЬ ВСЕ.
2 листопад
 
18.05.14
02:56
(1) Не поняла...
3 DirecTwiX
 
18.05.14
03:24
"ГДЕ
|    ЗначенияСвойствОбъектов.Объект = &ФЛ
|    И ЗначенияСвойствОбъектов.Свойство В (&НужныеСвойства)";

НужныеСвойства = Новый Массив;
НужныеСвойства.Добавить(НужноеСво1);
НужныеСвойства.Добавить(НужноеСво2);
...
4 rphosts
 
18.05.14
04:07
(0) эти свойства в разных регистрах или в одном?
5 Dionis Sergeevich
 
18.05.14
04:33
ГДЕ
|    ЗначенияСвойствОбъектов.Объект В &ФЛ
в ФЛ передавай список значений со всеми нужными физиками и обходи результат
6 Dionis Sergeevich
 
18.05.14
04:34
со свойствами так же - или вообще без условия по свойству - по ситуации
7 листопад
 
18.05.14
11:11
(4) Свойства все в одном регистре.
8 листопад
 
18.05.14
11:41
(3) Спасибо. Написала, передала значения в массив, а как теперь находить эти значения из массива? И еще, правильно ли я написала передачу значений в массив? Вот код:

НужноеСво1 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Город");
НужноеСво2 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк");
НужноеСво3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк - БИК");
НужноеСво4 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк - КоррСчет");
НужноеСво5 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк - Город");
НужноеСво6 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Договор - Дата");
НужноеСво7 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Договор - Номер");
НужноеСво8 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Должность");
НужноеСво9 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Комментарий");
НужноеСво10 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Коэффициент");
НужноеСво11 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Лицевой счет агента");

НужныеСвойства = Новый Массив;
НужныеСвойства.Добавить(НужноеСво1);
НужныеСвойства.Добавить(НужноеСво2);
НужныеСвойства.Добавить(НужноеСво3);
НужныеСвойства.Добавить(НужноеСво4);
НужныеСвойства.Добавить(НужноеСво5);
НужныеСвойства.Добавить(НужноеСво6);
НужныеСвойства.Добавить(НужноеСво7);
НужныеСвойства.Добавить(НужноеСво8);
НужныеСвойства.Добавить(НужноеСво9);
НужныеСвойства.Добавить(НужноеСво10);
НужныеСвойства.Добавить(НужноеСво11);

Значение="";
з=Новый Запрос;
з.Текст=            
"   ВЫБРАТЬ
|    ЗначенияСвойствОбъектов.Объект,
|    ЗначенияСвойствОбъектов.Свойство,
|    ЗначенияСвойствОбъектов.Значение
|ИЗ
|    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
|    ЗначенияСвойствОбъектов.Объект = &ФЛ
//    |    И ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство";
|   И ЗначенияСвойствОбъектов.Свойство В (&НужныеСвойства)";

з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
//    з.УстановитьПараметр("НужноеСвойство",НужныеСвойства);

ВыбСвойство = з.Выполнить().Выбрать();
Если ВыбСвойство.Следующий() Тогда
    Значение = СокрЛП(ВыбСвойство.Значение);
КонецЕсли;
9 листопад
 
18.05.14
12:06
Ап!
10 nufnufcheg
 
18.05.14
12:15
тебе нужен список физлиц, у которых установлено одно или несколько нужные тебе свойств?
11 листопад
 
18.05.14
12:25
Здесь выложен только фрагмент кода по получению свойств физ.лица. Глобально задача выглядит так: я по каждому физ.лицу получаю его данные (дата рождения, паспорт и прочее) и в том числе, мне нужно получить значения его свойств (город, банк, банк-бик и прочее) и все эти полученные значения я вывожу в печ.форму Ворда.

Т.е. в общем виде конструкция такая:

Функция Печать() Экспорт
    
    Выборка = СформироватьЗапросДляПечатиТрудовогоДоговораН().Выбрать();
    Если Выборка.Следующий() Тогда
        
        // здесь мой код по получению значений свойств
        
    КонецЕсли;
    Макет = ПолучитьМакет("МакетWord");
    MSWord = Макет.Получить();
    
КонецФункции
12 nufnufcheg
 
18.05.14
12:26
т.е. тебе нужно получить список физлиц со значениями реквизитов и всеми возможными допсвойствами?
13 листопад
 
18.05.14
12:31
+(11) у каждого физ.лица заполнено несколько свойств, мне надо все их вытянуть. Запрос написала в (8), а как дальше с ним работать? Т.е. мне непонятно, как передать дальше в печ.форму:

Если получаем НужноеСво1, то передать в печ.форму значение свойства "Город".

Если получаем НужноеСво2, то передать в печ.форму значение свойства "Банк".

и т.д.

Если же значение у любого свойства не заполнено, то ничего не передавать в печ.форму.
14 листопад
 
18.05.14
12:32
(12) да
15 nufnufcheg
 
18.05.14
12:38
ВЫБРАТЬ
    ФизическиеЛица.Ссылка КАК ФизЛицо,
    ЗначенияСвойствОбъектов.Свойство КАК Свойство,
    ЗначенияСвойствОбъектов.Значение КАК Значение
ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО ФизическиеЛица.Ссылка = ЗначенияСвойствОбъектов.Объект
            И (ЗначенияСвойствОбъектов.Свойство В (&МассивТвоихСвойств))
ИТОГИ ПО
    ФизЛицо КАК ФизЛицо
16 nufnufcheg
 
18.05.14
12:39
и выбираешь результат запроса через выборку с ОбходРезультатаЗапроса.ПоГруппировкам
17 nufnufcheg
 
18.05.14
12:40
в выборке первого уровня - физлицо, в выборке второго уровня - все свойства этого физлица
18 листопад
 
18.05.14
13:21
(17) Спасибо, но мне не понятно, как прописать вот это место:

Если получаем НужноеСво1, то передать в печ.форму значение свойства "Город".

Если получаем НужноеСво2, то передать в печ.форму значение свойства "Банк".

и т.д.
19 листопад
 
18.05.14
13:32
В выборке у меня запрос по одному физ.лицу.
20 листопад
 
18.05.14
13:38
Выдает ошибку:

Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (Выполнить): {(9, 42)}: Не задано значение параметра "НужныеСвойства"
И ЗначенияСвойствОбъектов.Свойство В (<<?>>&НужныеСвойства)



Вот код:

Функция Печать() Экспорт
    
    Выборка = СформироватьЗапросДляПечатиТрудовогоДоговораН().Выбрать();
    Если Выборка.Следующий() Тогда
        
        //свойства
        
        НужноеСво1 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Город");
        НужноеСво2 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк");
        НужноеСво3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк - БИК");
        НужноеСво4 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк - КоррСчет");
        НужноеСво5 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк - Город");
        НужноеСво6 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Договор - Дата");
        НужноеСво7 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Договор - Номер");
        НужноеСво8 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Должность");
        НужноеСво9 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Комментарий");
        НужноеСво10 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Коэффициент");
        НужноеСво11 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Лицевой счет агента");
        
        НужныеСвойства = Новый Массив;
        НужныеСвойства.Добавить(НужноеСво1);
        НужныеСвойства.Добавить(НужноеСво2);
        НужныеСвойства.Добавить(НужноеСво3);
        НужныеСвойства.Добавить(НужноеСво4);
        НужныеСвойства.Добавить(НужноеСво5);
        НужныеСвойства.Добавить(НужноеСво6);
        НужныеСвойства.Добавить(НужноеСво7);
        НужныеСвойства.Добавить(НужноеСво8);
        НужныеСвойства.Добавить(НужноеСво9);
        НужныеСвойства.Добавить(НужноеСво10);
        НужныеСвойства.Добавить(НужноеСво11);
        
        Значение="";
        з=Новый Запрос;
        з.Текст=            
        "   ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Объект,
        |    ЗначенияСвойствОбъектов.Свойство,
        |    ЗначенияСвойствОбъектов.Значение
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &ФЛ
        //    |    И ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство";
        |   И ЗначенияСвойствОбъектов.Свойство В (&НужныеСвойства)";
        
        з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
        з.УстановитьПараметр("НужноеСвойство",НужныеСвойства);
        
        ВыбСвойство = з.Выполнить().Выбрать();
        Если ВыбСвойство.Следующий() Тогда
            Значение = СокрЛП(ВыбСвойство.Значение);
            Сообщить (Значение);
        КонецЕсли;
        
        
    КонецЕсли;
    Макет = ПолучитьМакет("МакетWord");
    MSWord = Макет.Получить();
    
КонецФункции
21 листопад
 
18.05.14
13:47
+(20) Нашла причину ошибки, вместо:
з.УстановитьПараметр("НужноеСвойство",НужныеСвойства);
Надо:
з.УстановитьПараметр("НужныеСвойства",НужныеСвойства);


Ошибка пропала, зато теперь, через Сообщить (Значение) видит только первое значение массива (Город). А как остальные увидеть?
22 nufnufcheg
 
18.05.14
13:57
(21) перечитай еще раз (15)(16)(17).
23 листопад
 
18.05.14
13:59
(22) Мне нужно обрабатывать не всех физ.лиц из справочника ФЛ, а только тех, которые в выборке. Поэтому в своем запросе в (20) в качестве физ.лица я и передаю параметр:
з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
24 nufnufcheg
 
18.05.14
14:02
выполни запрос в консоли запросов и посмотри на результат
25 1с-кин
 
18.05.14
14:02
(23)"Мне нужно обрабатывать не всех физ.лиц из справочника ФЛ, а только тех, которые в выборке"
в 1С невозможно обработать в запросе "тех, которых выбрали этим же запросом".
Разве что только сможешь временными таблицами обойтись.
26 nufnufcheg
 
18.05.14
14:05
(25) у него другой запрос, внутри цикла
27 1с-кин
 
18.05.14
14:07
(26) тем более в 1С нет запроса-в-цикле без инструкций кода.
28 листопад
 
18.05.14
14:12
(24) как в консоли передать в качестве параметра массив?
29 nufnufcheg
 
18.05.14
14:29
очисти поле значения параметра крестиком, выбери тип значения "список значений" и в нем укажи свои свойства
30 листопад
 
18.05.14
14:35
(29) Получилось, спасибо. Все свойства выводятся. Но в результат запроса попадают все физ.лица. А я формирую печ.форму для одного физ.лица. Можно ли как-то указать параметр  з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
в коде:

ВЫБРАТЬ
    ФизическиеЛица.Ссылка КАК ФизЛицо,
    ЗначенияСвойствОбъектов.Свойство КАК Свойство,
    ЗначенияСвойствОбъектов.Значение КАК Значение
    ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ПО ФизическиеЛица.Ссылка = ЗначенияСвойствОбъектов.Объект
    И (ЗначенияСвойствОбъектов.Свойство В (&МассивТвоихСвойств))
    ИТОГИ ПО
    ФизЛицо КАК ФизЛицо
31 nufnufcheg
 
18.05.14
14:36
(30) ну так если ты делаешь запрос в цикле по конкретному лицу - добавь условие по физлицу. и вообще раз ты делаешь в цикле - используй свой запрос без итога
32 листопад
 
18.05.14
14:43
(31) Т.е. вот так:

з=Новый Запрос;
        з.Текст=            
        "ВЫБРАТЬ
        |    ФизическиеЛица.Ссылка КАК ФизЛицо,
        |    ЗначенияСвойствОбъектов.Свойство КАК Свойство,
        |    ЗначенияСвойствОбъектов.Значение КАК Значение
        |ИЗ
        |    Справочник.ФизическиеЛица КАК ФизическиеЛица
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |        ПО ФизическиеЛица.Ссылка = ЗначенияСвойствОбъектов.Объект
        |            И (ЗначенияСвойствОбъектов.Свойство В (&МассивТвоихСвойств))
        |ГДЕ
        |    ФизическиеЛица.Наименование = &ФЛ";
        
        з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
33 листопад
 
18.05.14
14:48
Выводит все равно только первое свойство из массива! Что не так опять??? Вот код:

Значение="";
    з=Новый Запрос;
    з.Текст=            
    "ВЫБРАТЬ
    |    ФизическиеЛица.Ссылка КАК ФизЛицо,
    |    ЗначенияСвойствОбъектов.Свойство КАК Свойство,
    |    ЗначенияСвойствОбъектов.Значение КАК Значение
    |ИЗ
    |    Справочник.ФизическиеЛица КАК ФизическиеЛица
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |        ПО ФизическиеЛица.Ссылка = ЗначенияСвойствОбъектов.Объект
    |            И (ЗначенияСвойствОбъектов.Свойство В (&НужныеСвойства))
    |ГДЕ
    |    ФизическиеЛица.Ссылка = &ФЛ";
    
    з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
    з.УстановитьПараметр("НужныеСвойства",НужныеСвойства);
    
    ВыбСвойство = з.Выполнить().Выбрать();
    
    Если ВыбСвойство.Следующий() Тогда
        Значение = СокрЛП(ВыбСвойство.Значение);
        Сообщить (Значение);
    КонецЕсли;
34 листопад
 
18.05.14
14:49
А если смотрю этот код через консоль, то выводит все свойства!!!
35 Мимохожий Однако
 
18.05.14
15:09
Значение свойств выведи во временные таблицы, а потом соединение
36 листопад
 
18.05.14
15:17
(35) Не осилю, а попроще может как-то можно?
37 DirecTwiX
 
18.05.14
15:18
(8) Выполняешь запрос, получаешь выборку. Дальше пишешь

Отбор = Новый Структура("Свойство");
Для каждого Св из НужныеСвойство Цикл
Выборка.Сбросить();
Отбор.Свойство = Св;
Если Выборка.НайтиСледующий(Св) Тогда
  Сообщить("Свойство <"+Св.Наименование+"> = "+Выборка.Значение);
КонецЕсли;
КонецЦикла
38 листопад
 
18.05.14
15:31
(37) Спасибо, но так тоже не срабатывает почему-то... Вот код:


з=Новый Запрос;
з.Текст=            
"   ВЫБРАТЬ
|    ЗначенияСвойствОбъектов.Объект,
|    ЗначенияСвойствОбъектов.Свойство,
|    ЗначенияСвойствОбъектов.Значение
|ИЗ
|    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
|    ЗначенияСвойствОбъектов.Объект = &ФЛ
|   И ЗначенияСвойствОбъектов.Свойство В (&НужныеСвойства)";

з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
з.УстановитьПараметр("НужныеСвойства",НужныеСвойства);

ВыбСвойство = з.Выполнить().Выбрать();

Отбор = Новый Структура("Свойство");
Для каждого Св из НужныеСвойства Цикл
    ВыбСвойство.Сбросить();
    Отбор.Свойство = Св;
    Если ВыбСвойство.НайтиСледующий(Св) Тогда
        Сообщить("Свойство <"+Св.Наименование+"> = "+ВыбСвойство.Значение);
    КонецЕсли;
КонецЦикла;
39 листопад
 
18.05.14
15:37
(37) Забираю свои слова назад!!! Большое СПАСИБО!!! Все получилось!!! :*)
40 rphosts
 
18.05.14
15:37
(37) зачем отбор? она-ж в табличный вроде выводит? Наименовать области и сразу в параметры выводить
41 листопад
 
18.05.14
15:39
(40) Нет, я вывожу в Ворд.
42 DirecTwiX
 
18.05.14
15:40
(38) (40) Тьфу. Должно быть
Выборка.НайтиСледующий(Отбор)
а не
Выборка.НайтиСледующий(Св)

(40) Спросили, как найти нужное свойство)
43 листопад
 
18.05.14
15:43
(42) Так тоже срабатывает )))
44 dnab
 
18.05.14
15:50
мне нравится эта девушка, которая работает ночами и по выходным
45 листопад
 
18.05.14
15:51
(44) А что делать? Трудоголик я )))
46 1с-кин
 
18.05.14
15:55
(28) взять консоль с поддрежкой массивов
47 1с-кин
 
18.05.14
15:57
(44) можно подумать, больше никто не работает по ночам и в выходные.
Москва да, не работает.
48 1с-кин
 
18.05.14
15:58
*мистомосква
49 листопад
 
18.05.14
16:06
Теперь печ.форму в Ворде не формирует, выдает ошибку:

{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(481)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (0x80020005)


Вот код:

Функция Печать() Экспорт
    
    Выборка = СформироватьЗапросДляПечатиТрудовогоДоговораН().Выбрать();
    
    Если Выборка.Следующий() Тогда
        
        //свойства
        НужноеСво1 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Город");
        НужноеСво2 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк");
        НужноеСво3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк - БИК");
        
        НужныеСвойства = Новый Массив;
        НужныеСвойства.Добавить(НужноеСво1);
        НужныеСвойства.Добавить(НужноеСво2);
        НужныеСвойства.Добавить(НужноеСво3);
        
        Значение="";
        з=Новый Запрос;
        з.Текст=            
        "   ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Объект,
        |    ЗначенияСвойствОбъектов.Свойство,
        |    ЗначенияСвойствОбъектов.Значение
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &ФЛ
        |   И ЗначенияСвойствОбъектов.Свойство В (&НужныеСвойства)";
        
        з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо);
        з.УстановитьПараметр("НужныеСвойства",НужныеСвойства);
        
        ВыбСвойство = з.Выполнить().Выбрать();
        
        Отбор = Новый Структура("Свойство");
        Для каждого Св из НужныеСвойства Цикл
            ВыбСвойство.Сбросить();
            Отбор.Свойство = Св;
            Если ВыбСвойство.НайтиСледующий(Отбор) Тогда
                
                Если Св.Наименование = "Город" Тогда
                    ПолучилиГород = ВыбСвойство.Значение;
                КонецЕсли;
                
                Если Св.Наименование = "Банк" Тогда
                    ПолучилиБанк = ВыбСвойство.Значение;
                КонецЕсли;
                
                Если Св.Наименование = "Банк - БИК" Тогда
                    ПолучилиБИК = ВыбСвойство.Значение;
                КонецЕсли;
            КонецЕсли;
            
        КонецЦикла;
        
        ш_СвГород = ПолучилиГород;
        ш_СвБанк = ПолучилиБанк;
        ш_СвБИК = ПолучилиБИК;
        
    КонецЕсли;
    
    // ********************************************************
    Макет = ПолучитьМакет("МакетWord");
    MSWord = Макет.Получить();
    
    Попытка
        Документ = MSWord.Application.Documents(1);
        Документ.Activate();
        
        Замена = Документ.Content.Find;
        Замена.Wrap = 1;   //чтобы не писать каждый раз  Find
        Замена.Execute("ш_СвГород", , , , , , , , ,ш_СвГород,2);
        Замена.Execute("ш_СвБанк", , , , , , , , ,ш_СвБанк,2);
        Замена.Execute("ш_СвБИК", , , , , , , , ,ш_СвБИК,2);
        
        MSWord.Application.Visible=Истина;
        MsWord.Activate();
    Исключение
        Сообщить(ОписаниеОшибки());
        MSWord.Application.Quit();
    КонецПопытки;
    
КонецФункции
50 Мимохожий Однако
 
18.05.14
16:11
Надо в функции СформироватьЗапросДляПечатиТрудовогоДоговораН() сразу получить нужные параметры и не делать второй запрос. Отладчик включать умеешь?
51 листопад
 
18.05.14
16:14
(50) В функции СформироватьЗапросДляПечатиТрудовогоДоговораН()  получаю ФизЛицо и его данные. А Затем, в процедуре Печать() выбираю, свойства, категории и прочее и вывожу на печать.
52 листопад
 
18.05.14
16:26
(49) Разобралась, надо было написать:
ш_СвГород = Строка(ПолучилиГород);
ш_СвБанк = Строка(ПолучилиБанк);
ш_СвБИК = Строка(ПолучилиБИК);
Тогда в Ворд формирует.
53 1с-кин
 
18.05.14
16:53
(52) вам, прежде чем браться за передачу в Ворд, неплохо бы было изучить соответствие типов данных Ворд и 1с между собой.
И начать с того, что типы данных 1с - все, кроме примитивных, чужды любому другому приложению.