Специалист-консультант 1С:Документооборот. Решение задачи 1.6
Привет! Меня зовут Медведев Николай. Видео для тех, кто готовится к экзамену Специалист-консультант по конфигурации 1С:Документооборот
Задача 1.6 из сборника 18 года, актуального на январь 2020
В задаче требуется, чтобы документы автоматически категоризовались в зависимости от статуса контрагента, указанного в них. Скажу сразу, что эту задачу я не решил в полном объёме. Дело в том, что в исходящих документах контрагенты - это табличная часть. Поэтому, во-первых, требуется дополнительное уточнение у заказчика - какой статус должен присваиваться документу, если в нём указаны контрагенты с разными с разными статусами. Во-вторых, я не до конца рассмотрел нюансы встроенного языка, поэтому посчитал, что при необходимости, можно оставить исходящие документы как задачу программисту - написать выражение. Если кто-то знает, как это сделать - напишите, пожалуйста в комментариях
Давайте решать!
И удачи на экзамене)
Чат для обсуждения подготовки (не мой, просто совет):
t.me/spec1cdo
Связаться со мной:
1csolomon@mail.ru
Поддержать канал:
money.yandex.ru/to/4100162008...
Выражение на встроенном языке, использованное в видео:
Результат = ложь;
СтатусВип = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "ВИП_535c5fa517024922acd8c2dab65688ef");
Если ЗначениеЗаполнено(СтатусВип) тогда
СтрокаСОСвойством = Источник.Контрагент.ДополнительныеРеквизиты.Найти(СтатусВип,"Свойство");
Если Не СтрокаСОСвойством = Неопределено тогда
Результат = СтрокаСОСвойством.Значение;
Иначе
Результат = ложь;
КонецЕсли;
КонецЕсли;
Пікірлер: 9
Николай, спасибо за Ваши видео! Для исходящих документов я сделала, чтобы категория "ВИП" присваивалась, если хотя бы один из получателей с признаком "ВИП". Выражение на встроенном языке вот такое: Результат = Ложь; СвойствоВИП = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Статус_VIP"); Если ЗначениеЗаполнено(СвойствоВИП) Тогда Для каждого СтрокаПолучателя Из Источник.Получатели Цикл СтрокаСвойства = СтрокаПолучателя.Получатель.ДополнительныеРеквизиты.Найти(СвойствоВИП, "Свойство"); Если СтрокаСвойства Неопределено Тогда Результат = Результат Или СтрокаСвойства.Значение; КонецЕсли; КонецЦикла; КонецЕсли; P.S. Имя для разработчика у доп.реквизита можно задать "удобоваримое" при создании, но только до того, как доп.реквизит будет записан. Но это уже детали.
Николай, спасибо за видео. Могу для готовящихся предложить процедуру присвоения категории ВИП исходящему немного проще: обращаемся к экспортной процедуре АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Объект, ИмяРеквизита), Объект это ссылка на контрагента, ИмяРеквизита - как вы назвали дополнительный реквизит для справочника контрагенты (не для разработчиков, а наименование, просто "ВИП"), эта процедура вернет Истина, для ВИП контрагентов или Неопределено для остальных: Результат=ложь; Для каждого Стр из Источник.Получатели цикл ЗначениеВИП = АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Стр.Получатель, "ВИП"); Если ЗначениеВИП Неопределено тогда Результат=ЗначениеВИП; Прервать; КонецЕсли; КонецЦикла; Аналогично для внутренних документов: Результат=ложь; ЗначениеВИП = АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Источник.Контрагент, "ВИП"); Если ЗначениеВИП Неопределено тогда Результат=ЗначениеВИП; КонецЕсли;
Вопрос: на экзамене выражения на встроенном языке нужно самостоятельно прописывать, или указать что это задача для разработчиков? По логике действий в примере все верно.
@user-yd9sj3yx4s
4 жыл бұрын
Если получится запомнить, лучше прописать, я думаю. На крайний случай как задачу оставить
Ссылка на базу yadi.sk/d/J0iy17Fav8jDDg
Как включить ИМЯ ДЛЯ РАЗРАБОТЧИКОВ? У меня в пустой базе этого нет ((((
@natalislukhay7173
3 жыл бұрын
наверно от конфы зависит. В Казахстанском ДО тоже нет такого реквизита. я прописала НайтиПоНаименованию(...) вместо НайтиПоРеквизиту(...)
@AngryHOBBIT666
3 жыл бұрын
Natali Slukhay спасибо 🙏🏻
Результат=ложь; Если ТипЗнч(Источник) = Тип("СправочникСсылка.ИсходящиеДокументы") тогда Для каждого Стр из Источник.Получатели цикл ЗначениеВИП = АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Стр.Получатель, "ВИП"); Если ЗначениеВИП Неопределено тогда Результат=ЗначениеВИП; Прервать; КонецЕсли; КонецЦикла; иначеесли ТипЗнч(Источник) = Тип("СправочникСсылка.ВнутренниеДокументы") тогда ЗначениеВИП = АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Источник.Контрагент, "ВИП"); Если ЗначениеВИП Неопределено тогда Результат=ЗначениеВИП; КонецЕсли; иначеесли ТипЗнч(Источник) = Тип("СправочникСсылка.ВходящиеДокументы") тогда ЗначениеВИП = АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Источник.Отправитель, "ВИП"); Если ЗначениеВИП Неопределено тогда Результат=ЗначениеВИП; КонецЕсли; конецесли;