Помогите исправить скрипт для автозаполнения шаблона файла в 1С:ДО 2.1 КОРП
Нужно:
1) чтобы каждый параметр начинался с новой строки (+ Символы.ПС почему-то не помогает, добавляется только пробел, см. скрин)
2) скрипт работает только если ДопРеквизит.Несколько адресатов = Истина (тип данных Булево). Если он в документе не заполнен, выдается ошибка, что скрипт с ошибкой
Нужно:
1) чтобы каждый параметр начинался с новой строки (+ Символы.ПС почему-то не помогает, добавляется только пробел, см. скрин)
2) скрипт работает только если ДопРеквизит.Несколько адресатов = Истина (тип данных Булево). Если он в документе не заполнен, выдается ошибка, что скрипт с ошибкой
РезультатОбработки = "";
МногоАдресатов = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Несколько адресатов");
Если МногоАдресатов тогда
РезультатОбработки = "Руководителям подразделений (по списку)";
Иначе
Адресат1 = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Подразделение адресата1");
Если ЗначениеЗаполнено (Адресат1) тогда
НомерПробела = СтрНайти(Строка(Адресат1), " ");
НаимПодрАдресат1 = Прав(Строка(Адресат1),СтрДлина(Строка(Адресат1))-НомерПробела);
ДанныеРегистра = РегистрыСведений.СведенияОПользователяхДокументооборот.ПолучитьСведенияОПользователе(Адресат1.Руководитель);
АдресатДолжность1 = ДанныеРегистра.Должность;
СклАдресатДолжность1 = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(АдресатДолжность1), 3);
АдресатФИО1 = Адресат1.Руководитель.ПредставлениеВДокументах;
СклАдресатФИО1 = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(АдресатФИО1), 3);
Адресат1Полный = НаимПодрАдресат1 + Символы.ПС + СклАдресатДолжность1 + Символы.ПС + СклАдресатФИО1;
РезультатОбработки = Адресат1Полный;
КонецЕсли;
Адресат2 = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Подразделение адресата 2");
Если ЗначениеЗаполнено (Адресат2) тогда
НомерПробела = СтрНайти(Строка(Адресат2), " ");
НаимПодрАдресат2 = Прав(Строка(Адресат2),СтрДлина(Строка(Адресат2))-НомерПробела);
ДанныеРегистра = РегистрыСведений.СведенияОПользователяхДокументооборот.ПолучитьСведенияОПользователе(Адресат2.Руководитель);
АдресатДолжность2 = ДанныеРегистра.Должность;
СклАдресатДолжность2 = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(АдресатДолжность2), 3);
АдресатФИО2 = Адресат2.Руководитель.ПредставлениеВДокументах;
СклАдресатФИО2 = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(АдресатФИО2), 3);
Адресат2Полный = НаимПодрАдресат2 + Символы.ПС + СклАдресатДолжность2+ Символы.ПС + СклАдресатФИО2;
РезультатОбработки = РезультатОбработки + Символы.ПС + Адресат2Полный;
КонецЕсли;
Адресат3 = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Подразделение адресата 3");
Если ЗначениеЗаполнено (Адресат3) тогда
НомерПробела = СтрНайти(Строка(Адресат3), " ");
НаимПодрАдресат3 = Прав(Строка(Адресат3),СтрДлина(Строка(Адресат3))-НомерПробела);
ДанныеРегистра = РегистрыСведений.СведенияОПользователяхДокументооборот.ПолучитьСведенияОПользователе(Адресат3.Руководитель);
АдресатДолжность3 = ДанныеРегистра.Должность;
СклАдресатДолжность3 = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(АдресатДолжность3), 3);
АдресатФИО3 = Адресат3.Руководитель.ПредставлениеВДокументах;
СклАдресатФИО3 = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(АдресатФИО3), 3);
Адресат3Полный = НаимПодрАдресат3 + Символы.ПС + СклАдресатДолжность3+ Символы.ПС + СклАдресатФИО3;
РезультатОбработки = РезультатОбработки + Символы.ПС + Адресат3Полный;
КонецЕсли;
Адресат4 = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Подразделение адресата 4");
Если ЗначениеЗаполнено (Адресат4) тогда
НомерПробела = СтрНайти(Строка(Адресат4), " ");
НаимПодрАдресат4 = Прав(Строка(Адресат4),СтрДлина(Строка(Адресат4))-НомерПробела);
ДанныеРегистра = РегистрыСведений.СведенияОПользователяхДокументооборот.ПолучитьСведенияОПользователе(Адресат4.Руководитель);
АдресатДолжность4 = ДанныеРегистра.Должность;
СклАдресатДолжность4 = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(АдресатДолжность4), 3);
АдресатФИО4 = Адресат4.Руководитель.ПредставлениеВДокументах;
СклАдресатФИО4 = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(АдресатФИО4), 3);
Адресат4Полный = НаимПодрАдресат4 + Символы.ПС + СклАдресатДолжность4+ Символы.ПС + СклАдресатФИО4;
РезультатОбработки = РезультатОбработки + Символы.ПС + Адресат4Полный;
КонецЕсли;
КонецЕсли;
ПоказатьПрикрепленные файлы:

По теме из базы знаний
Найденные решения
МногоАдресатов у тебя неопределено возвращает, из за этого ошибка "Преобразование значения к типу Булево не может быть выполнено".
Попробуй так
Если МногоАдресатов = Неопределено Или Не МногоАдресатов Тогда
// Тут свою обработку
ИначеЕсли
РезультатОбработки = "Руководителям подразделений (по списку)";
КонецЕсли
Попробуй так
Если МногоАдресатов = Неопределено Или Не МногоАдресатов Тогда
// Тут свою обработку
ИначеЕсли
РезультатОбработки = "Руководителям подразделений (по списку)";
КонецЕсли
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Попробуйте Символы.ПС + Символы.ВК , вместо Символы.ПС .
Если вам нужен вариант, когда "не много адресов", тогда опубликуйте текст ошибки, если вам надо всегда "МногоАдресов", тогда вместо строки МногоАдресатов = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Несколько адресатов");
пишите МногоАдресатов = Истина;
Если вам нужен вариант, когда "не много адресов", тогда опубликуйте текст ошибки, если вам надо всегда "МногоАдресов", тогда вместо строки МногоАдресатов = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Несколько адресатов");
пишите МногоАдресатов = Истина;
(2)
1) Символы.ПС + Символы.ВК все равно не приводят к желаемому результату, разрыв строки не появляется
2) Мне нужно, если доп. реквизит "Несколько адресатов" установлен, выводить фразу "Руководителям подразделений (по списку)", а если признак не установлен, то выводить всех заполненных адресатов (Подразделение, ФИО, должность по каждому). Детального текста ошибки, к сожалению, нет, в ЖР фиксируется только:
Следующие реквизиты или скрипты настройки заполнения файла "Служебная записка_шаблон" заданы некорректно:
Скрипт ""Адресат1""
{ОбщийМодуль.АвтозаполнениеШаблоновФайловСервер.Модуль(221)}: ВызватьИсключение СтрокаОшибки;
{ОбщийМодуль.АвтозаполнениеШаблоновФайловСервер.Модуль(402)}: МассивЗамен = ПолучитьМассивАвтозаполненийШаблона(
{ОбщийМодуль.АвтозаполнениеШаблоновФайловКлиентСервер.Модуль(1732)}: НастройкиАвтозаполнения =
{Справочник.ШаблоныВнутреннихДокументов.Форма.ШаблонВнутреннегоДокумента.Форма(2332)}: РезультатЗаполненияФайла = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(
{Справочник.ВнутренниеДокументы.Форма.ФормаВыбора.Форма(252)}: ОповеститьОВыборе(Элементы.Список.ТекущиеДанные.Ссылка);
Подозреваю, что проблема в том, что когда доп. реквизит установлен в Истина, появляется запись в РС со значением Истина. А когда доп. реквизит не заполнен, запись в РС отсутствует и вероятно метод ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Несколько адресатов") возвращает не "Ложь", а пусто или не заполнено или просто ругается. Как его переписать?
МногоАдресатов = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Несколько адресатов");
Если МногоАдресатов тогда
1) Символы.ПС + Символы.ВК все равно не приводят к желаемому результату, разрыв строки не появляется
2) Мне нужно, если доп. реквизит "Несколько адресатов" установлен, выводить фразу "Руководителям подразделений (по списку)", а если признак не установлен, то выводить всех заполненных адресатов (Подразделение, ФИО, должность по каждому). Детального текста ошибки, к сожалению, нет, в ЖР фиксируется только:
Следующие реквизиты или скрипты настройки заполнения файла "Служебная записка_шаблон" заданы некорректно:
Скрипт ""Адресат1""
{ОбщийМодуль.АвтозаполнениеШаблоновФайловСервер.Модуль(221)}: ВызватьИсключение СтрокаОшибки;
{ОбщийМодуль.АвтозаполнениеШаблоновФайловСервер.Модуль(402)}: МассивЗамен = ПолучитьМассивАвтозаполненийШаблона(
{ОбщийМодуль.АвтозаполнениеШаблоновФайловКлиентСервер.Модуль(1732)}: НастройкиАвтозаполнения =
{Справочник.ШаблоныВнутреннихДокументов.Форма.ШаблонВнутреннегоДокумента.Форма(2332)}: РезультатЗаполненияФайла = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(
{Справочник.ВнутренниеДокументы.Форма.ФормаВыбора.Форма(252)}: ОповеститьОВыборе(Элементы.Список.ТекущиеДанные.Ссылка);
Подозреваю, что проблема в том, что когда доп. реквизит установлен в Истина, появляется запись в РС со значением Истина. А когда доп. реквизит не заполнен, запись в РС отсутствует и вероятно метод ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Несколько адресатов") возвращает не "Ложь", а пусто или не заполнено или просто ругается. Как его переписать?
МногоАдресатов = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Несколько адресатов");
Если МногоАдресатов тогда
(4)
у меня доп. реквизиты называются "Подразделение адресата1", "Подразделение адресата 2", "Подразделение адресата 3" и "Подразделение адресата 4". Доп .реквизита с именем "Подразделение адресата" нет...
вот так
Адресат1 = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Подразделение адресата");
Адресат1 = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла, "Подразделение адресата");
у меня доп. реквизиты называются "Подразделение адресата1", "Подразделение адресата 2", "Подразделение адресата 3" и "Подразделение адресата 4". Доп .реквизита с именем "Подразделение адресата" нет...
(6)
это доп. реквизиты С.ВнутренниеДокументы. Да, они заполнены. Если убрать проверку на "Несколько адресатов", они выводятся, см. приложенный скрин. Когда ставлю проверку на "Несколько адресатов", но при этом доп. реквизит "Несколько адресатов" у ВнД не заполнен, возникает ошибка работы скрипта.
это доп. реквизиты С.ВнутренниеДокументы. Да, они заполнены. Если убрать проверку на "Несколько адресатов", они выводятся, см. приложенный скрин. Когда ставлю проверку на "Несколько адресатов", но при этом доп. реквизит "Несколько адресатов" у ВнД не заполнен, возникает ошибка работы скрипта.
МногоАдресатов у тебя неопределено возвращает, из за этого ошибка "Преобразование значения к типу Булево не может быть выполнено".
Попробуй так
Если МногоАдресатов = Неопределено Или Не МногоАдресатов Тогда
// Тут свою обработку
ИначеЕсли
РезультатОбработки = "Руководителям подразделений (по списку)";
КонецЕсли
Попробуй так
Если МногоАдресатов = Неопределено Или Не МногоАдресатов Тогда
// Тут свою обработку
ИначеЕсли
РезультатОбработки = "Руководителям подразделений (по списку)";
КонецЕсли
(13)
Сразу не понял что это скрипт заполнения Word-овского документа. Word случайно не 2013? Попробуй перенос строки вместе с возвратом каретки
К сожалению у меня нет ms office что бы проверить.
Сразу не понял что это скрипт заполнения Word-овского документа. Word случайно не 2013? Попробуй перенос строки вместе с возвратом каретки
Адресат1Полный = НаимПодрАдресат1 + Символы.ВК + Символы.ПС + СклАдресатДолжность1 + Символы.ВК + Символы.ПС + СклАдресатФИО1;
К сожалению у меня нет ms office что бы проверить.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот