Имя: Пароль:
1C
 
Документооборот 8 КОРП версия 2.1 Шаблон
Ø (Волшебник 12.03.2025 17:14)
0 Tasha_B_N
 
naïve
24.02.25
11:45
Добрый день! В Шаблоне внутреннего документа есть реквизит Должность, который ничего не выводит, а в реквизитах Подписал и Подготовил, реквизита Должности нет, как вывести Должность Ответственных лиц в шаблон Внутреннего документа?
1 d4rkmesa
 
24.02.25
11:57
(0) Без доработки не вывести, по идее, т.к. Подразделение и Должность хранятся в e1cib/list/РегистрСведений.СведенияОПользователяхДокументооборот . Если только в шаблоне, то нужно будет соответствующую автоподстановку добавить.
2 Bigbro
 
24.02.25
11:54
а зачем тебе должность ответственного лица в шаблоне документа?
это же реквизит ответственного лица, его в любой момент получить можно, для чего избыточность?
3 Tasha_B_N
 
naïve
24.02.25
12:00
У меня Докладные записки, должно быть ФИО и должность. Там есть возможность написать Скрипт в настройках заполнения Файла Шаблона, но не очень представляю как они пишутся... Запрос к регистру Сведений Пользователей получается или как...
4 maxab72
 
24.02.25
12:10
(0) Добавляется скриптом (окно "Настройки заполнения файла", вторая закладка "Скрипты"):
РезультатОбработки = "";

Сотрудник = Файл.ВладелецФайла.Подготовил;
Если ЗначениеЗаполнено(Сотрудник) Тогда

ДолжностьСтрока = Строка(РаботаСПользователями.ПолучитьДолжность(Сотрудник));

РезультатОбработки = СклонениеПредставленийОбъектов.ПросклонятьПредставление(ДолжностьСтрока, 2);
    
КонецЕсли;

Выводит должность подготовившего документ в родительном падеже.
5 Bigbro
 
24.02.25
12:08
из регистра сведений СведенияОПользователяхДокументооборот - получить должность по пользователю и все.
6 Tasha_B_N
 
naïve
24.02.25
12:49
Спасибо!
7 Tasha_B_N
 
naïve
24.02.25
13:17
Получилось вывести должность Подготовившего документ. Мне еще нужно вывести участников рабочей группы, на закладке Рабочая группа участник, может быть папка подразделения с несколькими участниками или построчно люди. Это возможно тоже через Скрипты?
8 maxab72
 
24.02.25
13:44
(7) Одной строкой - легко. таблицей сложнее, видел решение, но не сохранил ссылку. Если найду - скину.
9 Tasha_B_N
 
naïve
24.02.25
13:47
Хорошо, спасибо!
10 maxab72
 
24.02.25
14:09
11 Garykom
 
гуру
24.02.25
19:44
(8) таблицей тоже легко
https://infostart.ru/1c/articles/259510/
если только заполнение нового

вот с обновлением (перезаполнением уже отредактированного) проблемы
12 Tasha_B_N
 
naïve
25.02.25
09:01
Мне несколько значений в шаблон doc вывести, взяв из строк Рабочей группы:
ФИО
ФИО
ФИО
13 Bigbro
 
25.02.25
09:11
из регистра рабочие группы достаете пользователей и подразделения
из регистра сведения о пользователях документооборот - пользователей подразделения.
получаете свою табличку.
14 Tasha_B_N
 
naïve
25.02.25
14:56
Я бы хотела добавить скриптом (окно "Настройки заполнения файла", вторая закладка "Скрипты"):

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	РабочиеГруппы.Участник
|ИЗ
|	РегистрСведений.РабочиеГруппы КАК РабочиеГруппы
|ГДЕ
|	РабочиеГруппы.Участник = &Участник";

Запрос.УстановитьПараметр("Участник", Файл.ВладелецФайла);

Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();

РезультатОбработки = Результат.РабочиеГруппы;


Можно таким образом вывести несколько участников рабочий группы в шаблон?
15 Garykom
 
гуру
25.02.25
13:53
(14) Придется позвать программиста
Который разбирается в ДО 2.1
16 Волшебник
 
25.02.25
14:58
(14) Бессмысленный программный код, да ещё с ошибкой. Нейронка писала?
17 d4rkmesa
 
25.02.25
15:07
(14) Так вы заполнили первым значением из выборки. Нужно либо обойти все, либо выгрузить массив различных значений из результата запроса и, к примеру, через СтрСоединить(...) сформировать строку нужного вида.
18 Волшебник
 
25.02.25
15:07
(17) нет там такого поля
19 Bigbro
 
25.02.25
15:58
(14) перебираете результат 1 запроса к рабочей группе документа/файла.
пользователей в один массив подразделения в другой.
делаем второй запрос к регистру сведения о пользователях документооборот, оттуда достаем пользователей, подразделение у которых в массиве подразделений которые мы только что получили.
соединяем 2 массива, это и будет ваш результат.

только если я правильно помню у вас там помимо пользователей и подразделений могут быть еще рабочие группы в строках. их тоже надо раскручивать тогда.
20 Tasha_B_N
 
naïve
25.02.25
16:01
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РабочиеГруппы.Участник КАК Участник
        |ИЗ
        |    РегистрСведений.РабочиеГруппы КАК РабочиеГруппы
        |ГДЕ
        |    РабочиеГруппы.Участник = &Участник
        
    
    Запрос.УстановитьПараметр("Участник", Участник);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
21 Tasha_B_N
 
naïve
25.02.25
16:16
Писал конструктор запроса 1с, брала из регистра сведений рабочие группы из таблицы измерение участник.
Отличие написания в конфигураторе и скриптах - Файл.ВладелецФайла... В конфигураторе обходишь циклом выборку из запроса, а как написать в Скрипт?
22 Волшебник
 
25.02.25
16:22
(21) Конструктор лучше Вас пишет.
23 Bigbro
 
25.02.25
16:33
запросы в скрипте точно так же, различий нет.
24 Tasha_B_N
 
naïve
26.02.25
16:54
РезультатОбработки =
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РабочиеГруппы.Участник КАК Участник
        |ИЗ
        |    РегистрСведений.РабочиеГруппы КАК РабочиеГруппы
        |ГДЕ
        |    РабочиеГруппы.Участник = &Участник";
    
    Запрос.УстановитьПараметр("Участник", Файл.ВладелецФайла.Участник);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ВыборкаДетальныеЗаписи.Участник = Участник;
    КонецЦикла;

Запрос в скрипт взяла из конструктора, только дописала в начале: "РезультатОбработки =" и изменила параметр на тот что используется в шаблоне файла: "Файл.ВладелецФайла.Участник"

Что здесь не так?
25 Bigbro
 
26.02.25
17:32
Файл.ВладелецФайла.Участник
что у вас такое владелец файла? скорее всего какой то документ внутренний входящий исходящий
есть ли у него реквизит участник?
26 Tasha_B_N
 
naïve
12.03.25
10:42
Реквизита Участник нет, в форме Документа табличная часть РабочаяГруппаТаблица и в ней Участник - РабочаяГруппаТаблицаУчастник.
Как до него достучаться, если он выбирается на форме и нигде в реквизитах не присутствует?
27 maxab72
 
12.03.25
10:56
(26) Через измерение Объект регистра сведений РабочиеГруппы. Указываете в объекте ссылку на ваш текущий документ.
28 Tasha_B_N
 
naïve
12.03.25
11:09
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РабочиеГруппы.Участник КАК Участник,
        |    ВнутренниеДокументы.ВидДокумента КАК ВидДокумента,
        |    ВнутренниеДокументы.Ответственный КАК Ответственный,
        |    ВнутренниеДокументы.Подразделение КАК Подразделение,
        |    ВнутренниеДокументы.Содержание КАК Содержание,
        |    ВнутренниеДокументы.Создал КАК Создал,
        |    ВнутренниеДокументы.Должность КАК Должность,
        |    ВнутренниеДокументы.Ссылка КАК Ссылка
        |ИЗ
        |    РегистрСведений.РабочиеГруппы КАК РабочиеГруппы
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
        |        ПО РабочиеГруппы.Объект = ВнутренниеДокументы.Ссылка";
        
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Участник = ВыборкаДетальныеЗаписи.Участник;
    КонецЦикла;

Запрос переписала, а какой параметр указать для Файл.ВладелецФайла...?
29 Волшебник
 
12.03.25
11:10
(28) Вы выбрали все документы без отбора. Вы подвесили сервер и уволены.
30 maxab72
 
12.03.25
11:17
(28) Надо наоборот, к документу присоединять левым запросом рабочую группу. В документе указать отбор: ВнутренниеДокументы.Ссылка = &Ссылка и в параметрах УстановитьПараметр("Ссылка", Файл.ВладелецФайла).
Тогда к меньшей выборке (1 запись) будете присоединять часть данных из РС (несколько штук).
31 Волшебник
 
12.03.25
11:27
(30) Это правильно.
32 maxab72
 
12.03.25
11:32
(29)
- Сервер не работает, потому что Вася его уронил...
- Вася - крутой хакер?
- Нет, Вася - дебил криворукий, он его на пол уронил...
33 Tasha_B_N
 
naïve
12.03.25
13:57
РезультатОбработки =
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РабочиеГруппы.Участник КАК Участник,
        |    ВнутренниеДокументы.ВидДокумента КАК ВидДокумента,
        |    ВнутренниеДокументы.Ответственный КАК Ответственный,
        |    ВнутренниеДокументы.Подразделение КАК Подразделение,
        |    ВнутренниеДокументы.Содержание КАК Содержание,
        |    ВнутренниеДокументы.Создал КАК Создал,
        |    ВнутренниеДокументы.Должность КАК Должность,
        |    ВнутренниеДокументы.Ссылка КАК Ссылка
        |ИЗ
        |    Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РабочиеГруппы КАК РабочиеГруппы
        |        ПО ВнутренниеДокументы.Ссылка = РабочиеГруппы.Объект
        |ГДЕ
        |    ВнутренниеДокументы.Ссылка = &Ссылка";
    
    УстановитьПараметр("Ссылка", Файл.ВладелецФайла);

Имелось ввиду так?
34 maxab72
 
12.03.25
14:01
Лучше так:
|        ПО ВнутренниеДокументы.Ссылка = &Ссылка
|        И ВнутренниеДокументы.Ссылка = РабочиеГруппы.Объект

иначе сперва выбираются все внутренние документы, соединяются а потом фильтруются, а так сперва фильтруются а потом выжимка соединяется.
35 Tasha_B_N
 
naïve
12.03.25
14:40
РезультатОбработки =
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РабочиеГруппы.Участник КАК Участник,
        |    ВнутренниеДокументы.ВидДокумента КАК ВидДокумента,
        |    ВнутренниеДокументы.Ответственный КАК Ответственный,
        |    ВнутренниеДокументы.Подразделение КАК Подразделение,
        |    ВнутренниеДокументы.Содержание КАК Содержание,
        |    ВнутренниеДокументы.Создал КАК Создал,
        |    ВнутренниеДокументы.Должность КАК Должность,
        |    ВнутренниеДокументы.Ссылка КАК Ссылка
        |ИЗ
        |    Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РабочиеГруппы КАК РабочиеГруппы
        |        ПО ВнутренниеДокументы.Ссылка = РабочиеГруппы.Объект
        |ГДЕ
        |    ВнутренниеДокументы.Ссылка = &Ссылка
        |    И ВнутренниеДокументы.Ссылка = РабочиеГруппы.Объект";
    
             Запрос.УстановитьПараметр("Ссылка",Файл.ВладелецФайла);

Добавила в скрипт пишет скрипты настройки заполнения файла заданы некорректно...
36 Bigbro
 
12.03.25
14:44
ну так в результат обработки же затолкала то что в результате перебора выборки из запроса получилось?
37 Tasha_B_N
 
naïve
12.03.25
14:56
РезультатОбработки =
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РабочиеГруппы.Участник КАК Участник,
        |    ВнутренниеДокументы.ВидДокумента КАК ВидДокумента,
        |    ВнутренниеДокументы.Ответственный КАК Ответственный,
        |    ВнутренниеДокументы.Подразделение КАК Подразделение,
        |    ВнутренниеДокументы.Содержание КАК Содержание,
        |    ВнутренниеДокументы.Создал КАК Создал,
        |    ВнутренниеДокументы.Должность КАК Должность,
        |    ВнутренниеДокументы.Ссылка КАК Ссылка
        |ИЗ
        |    Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РабочиеГруппы КАК РабочиеГруппы
        |        ПО ВнутренниеДокументы.Ссылка = РабочиеГруппы.Объект
        |ГДЕ
        |    ВнутренниеДокументы.Ссылка = &Ссылка
        |    И ВнутренниеДокументы.Ссылка = РабочиеГруппы.Объект";
    
         
    УстановитьПараметр("Ссылка", Файл.ВладелецФайла);

    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Участник = ВыборкаДетальныеЗаписи.Участник;
        КонецЦикла;

Все что в 1с с дописыванием "РезультатОбработки =" и "Файл.ВладелецФайла".
38 maxab72
 
12.03.25
15:02
(35) Убери ГДЕ, все фильтры включи в ПО
39 Bigbro
 
12.03.25
15:09
РезультатОбработки="";
и перед конецЦикла
РезультатОбработки = РезультатОбработки + " " + Участник;

получится строка участников через пробелы.
40 Tasha_B_N
 
naïve
12.03.25
15:16
РезультатОбработки="";
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РабочиеГруппы.Участник КАК Участник,
        |    ВнутренниеДокументы.ВидДокумента КАК ВидДокумента,
        |    ВнутренниеДокументы.Ответственный КАК Ответственный,
        |    ВнутренниеДокументы.Подразделение КАК Подразделение,
        |    ВнутренниеДокументы.Содержание КАК Содержание,
        |    ВнутренниеДокументы.Создал КАК Создал,
        |    ВнутренниеДокументы.Должность КАК Должность,
        |    ВнутренниеДокументы.Ссылка КАК Ссылка
        |ИЗ
        |    Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РабочиеГруппы КАК РабочиеГруппы
        |        ПО ВнутренниеДокументы.Ссылка = РабочиеГруппы.Объект
        |ГДЕ
        |    ВнутренниеДокументы.Ссылка = &Ссылка
        |    И ВнутренниеДокументы.Ссылка = РабочиеГруппы.Объект";
         
    УстановитьПараметр("Ссылка", Файл.ВладелецФайла);

    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Участник = ВыборкаДетальныеЗаписи.Участник;
РезультатОбработки = РезультатОбработки + " " + Участник;
    КонецЦикла;

Вроде бы все верно, но все равно скрипты настройки заполнения файла заданы некорректно...
41 maxab72
 
12.03.25
15:19
(0) не просто УстановитьПараметр("Ссылка", Файл.ВладелецФайла); а Запрос.УстановитьПараметр("Ссылка", Файл.ВладелецФайла);

и исправить текст запроса.
42 Tasha_B_N
 
naïve
12.03.25
15:56
Точно забыла написать Запрос, на это ругалось!
Спасибо ребят огромное, все заработало!
43 Волшебник
 
12.03.25
16:28
(42) тупой бот
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс