Издавна возникала проблема создания напоминания, которое проявляло бы себя при создании нового заказ-наряда при обращении на сервис определенного клиента. Например, при прошлом обращении у клиента образовался долг (кроме денежного - оригиналы каких-нибудь документов и др.), и сервису необходимо проконтролировать его погашение при следующем обращении клиента. Можно ли осуществить это штатными средствами или здесь не обойтись без услуг программиста? Альфа-Авто: Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.26) Спасибо.
Добрый день, Владимир. Частично данный механизм можно реализовать с помощью значимых событий (Справочники-Значимые события): в качестве источника выбрать "Заказ-наряд", в действиях выбрать "Создание напоминания". Также необходимо будет прописать условие, при котором данное событие должно появляться, но в основных реквизитах, которые можно добавлять в условия, нет связанных с долгами клиента. Возможно, Вам поможет написание произвольного условия.
Спасибо за наводку, потенциально полезная вещь эти "Значимые события"! Мда, тут нужны мозги программиста... А нельзя в "Значимых событиях" в "Условиях" в поле "Тип сравнения" сделать поиск вхождения строки?? Или только "равно", "не равно", "больше", "меньше" и т. д.?? Я бы просто забивал в комментарий карточки Заказчика слово ДОЛГ и таким образом вышел бы из положения...
Валерия, я не имел в виду изменения. Возможно, я что-то упустил, может быть, есть какой-нибудь недокументированный нюанс в логике построения условия, который мог бы позволить осуществить то, что я хотел. Ни о каких изменениях я уже не заикаюсь: слишком хорошо знаком с Вашим последним замечанием. Спасибо за указанное направление решения проблемы.
Создал значимое событие с источником "Документ "Заказ-наряд"", событием "ПриЗаписи", условие "Наименование (Заказчик)" "равно" "Строка", действие "Создать напоминание", поля "Дата начала", "Тема", "Содержание", "Получатели" - заполнены. Что происходит: при записи любого заказ-наряда, даже при неудовлетворенном условии (Заказчик другой) программа все равно создает напоминание, которое почему-то оповещает через какое-то время (несколько минут). Если нетрудно, подскажите, что может вызвать такое неадекватное действие?
Может попробовать изменить условие: "Заказчик.Комментарий" Тип сравнения "<>" И значение сравнения не заполнять. т.е. если комментарий у заказчика не пустой тогда создать напоменание.
Запустил АА 4.1 проверил, мой предыдущий вариант не работает. предлагаю такой: 1. Удалить все условия, добавить "Произвольное условие". Вариант 1, Будут создаваться напоминания для всех контрагентов у которых заполнен комментарий. В редакторе условия вставить текст:
Если ЗначениеЗаполнено(Объект.Заказчик.Комментарий) Тогда Результат = Истина; Иначе Результат = Ложь; КонецЕсли;
Вариант 2, Будут создаваться напоминания для контрагентов у которых комментарий Начинается словом ДОЛГ. В редакторе условия вставить текст:
Если Найти(Объект.Заказчик.Комментарий, "ДОЛГ")=1 Тогда Результат = Истина; Иначе Результат = Ложь; КонецЕсли;
2. Что бы в напоминании отображалось содержимое поля заказчика комментрарий, в содержании напоминания можно выбрать "Произвольный код на языке 1с" и вставить:
Содержание = "у заказчика заполнен комментарий: " + ОбъектИсточник.Заказчик.Комментарий;
3. Время через которое напоминание отображается пользователю зависит от интервала проверки напоминаний: Владка "Сервис" - "Настройка Параметров" - "Прочие" - "интервал проверки напоминаний (в минутах)"
Здравствуйте, даже не ожидал, что отзовется столько желающих помочь). Сначала пытался сделать напоминание при сохранении заказ-наряда с забитым в него Заказчиком и договором взаиморасчетов, в котором в поле Комментарий забивал бы слово ДОЛГ, и таким образом разоблачал бы должников. Не получилось: программа не реагировала на условие. Потом возникла мысль привязаться к положительному размеру долга по взаиморасчетам (в заказ-наряде это значение автоматически указывается, хотя опять же почему-то некорректно: много раз размер не совпадал с отчетом взаиморасчетов, притом что постоянно используется один договор взаиморасчетов, вот ещё на это хотелось бы заострить внимание - почему так происходит), но в списке представлений условия такого параметра не нашел. Теперь дошел до того, что просто хочу создать значимые события для некоторых наших злостных должников, действуя через Наименование Заказчика. Видимо в значении результата условия программа видит пустую строку, поэтому реагирует на любого Заказчика, может быть надо указывать значение в кавычках?? Скрины прилагаю. К комментарию карточки Заказчика привязываться не хочу поскольку это поле используется в том числе и для других целей другими сотрудниками. Вот если бы в произвольном условии создать проверку вхождения строки в комментарий в карточке Заказчика, тогда можно было бы указывать там помимо всего прочего, например, слово "долг" и таким образом вылавливать "помеченных" клиентов. Может быть, подскажите синтаксис такого произвольного условия?
Ну, если речь идет о чекбоксе со всплывающей подсказкой "Список условий" и с названием "Колонка9" в диалоговом окне "Вывести список", то, очевидно, что да, потому после его включения вроде перестало реагировать на любого Заказчика. Благодарю, хоть от этой напасти избавился и то отрада) С несоответствием долга Заказчика в заказ-наряде и остатков взаиморасчетов (по отчету взаиморасчетов) - разобрался: бухгалтер разносит банковские поступления не на те договора...
Вот если бы в произвольном условии создать проверку вхождения строки в комментарий в карточке Заказчика, тогда можно было бы указывать там помимо всего прочего, например, слово "долг" и таким образом вылавливать "помеченных" клиентов. Может быть, подскажите синтаксис такого произвольного условия?
Владимир, в Посте №9 Выриант-2 и есть произвольное условие которое будет искать слово ДОЛГ в комментарии карточки заказчика.
Точно-точно) Спасибо! Только вместо комментария Заказчика, как бы перейти к комментарию договора взаиморасчетов?? Понимаете, непрограммисту, не знающему структуру объектов конфигурации, трудно зацепиться за нужный объект, поле и т.д. В этом, по крайней мере, для меня сложность понимания 1С, было бы все как раньше завязано на структурном программировании, теперь же эти объекты..
Только вместо комментария Заказчика, как бы перейти к комментарию договора взаиморасчетов??
Владимир, попробуйте такое условие. Комментарий должен начинаться словом ДОЛГ(то что стоит в кавычках условия):
Код
Если Найти(Объект.ДоговорВзаиморасчетов.Комментарий, "ДОЛГ")=1 Тогда
Результат = Истина;
Иначе
Результат = Ложь;
КонецЕсли;
Но нужно учитывать что договоров у заказчика может быть множество, поэтому можно просматривать все договора заказчика. Я бы предложил Вариант-2:
Код
Запрос = Новый Запрос;
Запрос.текст =
"ВЫБРАТЬ
| ДоговорыВзаиморасчетов.Комментарий
|ИЗ
| Справочник.ДоговорыВзаиморасчетов КАК ДоговорыВзаиморасчетов
|ГДЕ
| ДоговорыВзаиморасчетов.Владелец = &Владелец
| И ДоговорыВзаиморасчетов.Комментарий ПОДОБНО &Комментарий";
Запрос.УстановитьПараметр("Владелец", Объект.заказчик);
Запрос.УстановитьПараметр("Комментарий", "ДОЛГ%");
Выгрузка = Запрос.Выполнить().Выгрузить();
Если Выгрузка.Количество() > 0 Тогда
Результат = Истина;
Иначе
Результат = Ложь;
КонецЕсли;
Что бы в напоминании отображалось содержимое Вашего комментрария в договоре, в содержании напоминания можно выбрать "Произвольный код на языке 1с" и вставить:
Код
Запрос = Новый Запрос;
Запрос.текст =
"ВЫБРАТЬ
| ДоговорыВзаиморасчетов.Комментарий
|ИЗ
| Справочник.ДоговорыВзаиморасчетов КАК ДоговорыВзаиморасчетов
|ГДЕ
| ДоговорыВзаиморасчетов.Владелец = &Владелец
| И ДоговорыВзаиморасчетов.Комментарий ПОДОБНО &Комментарий";
Запрос.УстановитьПараметр("Владелец", ОбъектИсточник.заказчик);
Запрос.УстановитьПараметр("Комментарий", "ДОЛГ%");
Выборка = Запрос.Выполнить().Выбрать();
Содержание = "";
Пока Выборка.Следующий() Цикл
Содержание = Содержание + Выборка.Комментарий + Символы.ПС;
КонецЦикла;
Изменено: Дмитрий Г. - 16.10.2014 08:38:33(добавил скриншоты)
Дмитрий, сделал всё, как написано, но, во-первых: задержка в появлении напоминания - ок. 2-3 мин. Во-вторых, при установке флажка "Обрабатывать событие только для новых объектов" (это я так понимаю, различает запись нового или уже ранее записанного документа) программа создает напоминание независимо от наличия комментария ДОЛГ в текущем установленном договоре. Если я правильно понял значение флажка, то он нужен, потому как правильный договор может быть установлен уже после первой записи заказ-наряда, иначе можно пропустить нужное условие. Если флажок убрать, то реакция на нужный договор (с нужным комментарием) правильная. Позже скину видео этого процесса.