Как стать автором
Обновить

Заметка про скрипты автозаполнения шаблонов файлов 1С: Документооборот 3.0 UPD 12.12.2024

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров7.6K

UPD 12.12.2024: добавлен скрипт заполнения файла результатами согласования

Поделюсь (точнее пишу для себя, чтобы не потерять) теми скриптами автозаполнения шаблонов файлов 1С: Документооборот 3.0 которые использовал на этапе первичной настройки. Возможно кому‑то и пригодиться кроме меня. Список будет в дальнейшем пополняться.

Поле файла "ДолжностьАдресата"

  1. Выводим должность адресата документа

РезультатОбработки = "";

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

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

КонецЕсли;

Поле файла "Содержание"

При работе Документооборота 3.0 и Word есть особенность, знак новой строки превращается в перенос строки и из-за этого весь текст содержания документа (когда его много) выглядит плохо...

  1. данный скрипт приводит в читаемы вид текст

    Документ = Файл.ВладелецФайла;
    РезультатОбработки = СтрЗаменить(ОбщегоНазначенияДокументооборотВызовСервера.ЗначениеРеквизитаОбъекта(Документ, "Содержание"), Символы.ПС, Символы.Таб + Символы.ПС + Символы.Таб);

    3. Поле файла "ФИО Адресата"

    Вытаскиваем ФИО Адресата документа отдельно от должности.

РезультатОбработки = "";

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

РезультатОбработки = СклонениеПредставленийОбъектов.ПросклонятьПредставление(
Строка(Сотрудник.ПредставлениеВДокументах), 3);

КонецЕсли;
  1. Поле файла "Должность руководителя выбранной организации" (актуально когда в одной базе учет по нескольким организациям и если в организации один и тот человек занимает разные должность, например "Директор" в одной, а в другой "Генеральный директор"

РезультатОбработки = "";

Организация = Файл.ВладелецФайла.Организация;
Если ЗначениеЗаполнено(Организация) Тогда

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОтветственныеЛицаОрганизацийСрезПоследних.Сотрудник.Должность КАК СотрудникДолжность
		|ИЗ
		|	РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
		|			,
		|			Организация = &Организация
		|				И ОтветственноеЛицо =  ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.РуководительОрганизации)) КАК ОтветственныеЛицаОрганизацийСрезПоследних";
	
	Запрос.УстановитьПараметр("Организация", Организация);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
		РезультатОбработки = ВыборкаДетальныеЗаписи.СотрудникДолжность;

	КонецЕсли;


КонецЕсли;
  1. Поле файла "Подготовил"

    Актуально когда нужно инициалы и фамилию подготовившего документ вставить вниз документа мелким шрифтом

РезультатОбработки = "";

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

РезультатОбработки = СклонениеПредставленийОбъектов.ПросклонятьПредставление(
Строка(Сотрудник.ПредставлениеВДокументах), 1);

КонецЕсли;
  1. Телефон исполнителя
    Для внутренних и исходящих документов

РезультатОбработки = "";

КонтактнаяИнформация = Файл.ВладелецФайла.Подготовил.КонтактнаяИнформация;

Для Каждого Инфо Из КонтактнаяИнформация Цикл
	Если Инфо.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонПользователя Тогда
		РезультатОбработки = Инфо.Представление;
		Прервать;
	КонецЕсли;
КонецЦикла;

РезультатОбработки = Инфо.Представление;
  1. Результаты согласования в файл

    Выводим в файл результаты согласования. Применимо, когда в обработке есть этап согласования, который выполняет один человек, например руководитель организации. При этом согласование в настройках обработки: включить Формирование визы согласований

    результат визуализации результата согласования
    результат визуализации результата согласования
    настройки процесса Согласование
    настройки процесса Согласование

    Положительные и отрицательные результаты выведены отдельно, для того чтобы в шаблоне можно было помечать разными цветами.Важное замечание: указанные выводимые тэги не должны помещаться в таблицу, иначе скрипт автоматического заполнения файла данными документа не будет работать. Скрипт приведен ниже

Док = Параметры.ОбработкаОбъект.Владелец;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |              Файлы.Ссылка
                   |ИЗ
                   |              Справочник.Файлы КАК Файлы
                   |ГДЕ
                   |            Файлы.ВладелецФайла = &ВладелецФайла 
                   |И           Файлы.ШаблонОснованиеДляСоздания <> &ПустойФайл";
    Запрос.УстановитьПараметр("ПустойФайл", Справочники.Файлы.ПустаяСсылка());
    Запрос.УстановитьПараметр("ВладелецФайла", Док);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Ложь, ВыборкаДетальныеЗаписи.Ссылка, Истина);
	КонецЦикла;

Положительные и отрицательные результаты выведены отдельно, для того чтобы в шаблоне можно было помечать разными цветами.

7.1Автор визы

РезультатОбработки = "";
Документ = Файл.ВладелецФайла;

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

	лЗапрос = Новый Запрос(лТекст);

	лЗапрос.УстановитьПараметр("Документ", Документ);


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

РезультатОбработки = лВыборка.УстановилРезультат;
	КонецЦикла;

7.2 Результат согласования СОГЛАСОВАНО и СОГЛАСОВАНО С ЗАМЕЧАНИЯМИ

РезультатОбработки = "";
Документ = Файл.ВладелецФайла;

лТекст = "
		|ВЫБРАТЬ
		|	ВизыСогласования.РезультатСогласования КАК РезультатСогласования
		|ИЗ
		|	Справочник.ВизыСогласования КАК ВизыСогласования
		|ГДЕ
		|	ВизыСогласования.Документ = &Документ";

	лЗапрос = Новый Запрос(лТекст);

	лЗапрос.УстановитьПараметр("Документ", Документ);


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

РезультатОбработки = ВРег(лВыборка.РезультатСогласования);
	КонецЦикла;

Если РезультатОбработки = ВРег("Согласовано") ИЛИ РезультатОбработки = ВРег("Согласовано с замечаниями")
Тогда РезультатОбработки = ВРег(лВыборка.РезультатСогласования);
ИНАЧЕ РезультатОбработки = "";
КонецЕсли;

7.3 Результат согласования: НЕ СОГАСОВАНО

РезультатОбработки = "";
Документ = Файл.ВладелецФайла;

лТекст = "
		|ВЫБРАТЬ
		|	ВизыСогласования.РезультатСогласования КАК РезультатСогласования
		|ИЗ
		|	Справочник.ВизыСогласования КАК ВизыСогласования
		|ГДЕ
		|	ВизыСогласования.Документ = &Документ";

	лЗапрос = Новый Запрос(лТекст);

	лЗапрос.УстановитьПараметр("Документ", Документ);


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

РезультатОбработки = ВРег(лВыборка.РезультатСогласования);
	КонецЦикла;

Если РезультатОбработки = ВРег("Не согласовано")
Тогда РезультатОбработки = ВРег(лВыборка.РезультатСогласования);
ИНАЧЕ РезультатОбработки = "";
КонецЕсли;

7.4 Комментарий при согласовании

РезультатОбработки = "";
Документ = Файл.ВладелецФайла;

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

	лЗапрос = Новый Запрос(лТекст);

	лЗапрос.УстановитьПараметр("Документ", Документ);


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

РезультатОбработки = ВРег(СОКРЛП(лВыборка.Комментарий));
	КонецЦикла;

Теги:
Хабы:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Публикации

Работа

Программист 1С
50 вакансий
Аналитик 1С
3 вакансии
Консультант 1С
82 вакансии

Ближайшие события