1С диалог да нет

Этот продукт пригодится в первую очередь тем, кто старается следить за корректностью ведения нормативно-справочной информации и скоростью обработки документов в своей базе.

Расширение может при создании нового элемента любого справочника (или документа) отправлять уведомление выбранным пользователям. Причем можно не только настроить произвольно тему и текст уведомления, но и выбрать его тип! Вот возможные варианты:

  • электронное письмо,
  • задача на рабочий стол (неактуально для УНФ и Бухгалтерии 3.0),
  • всплывающее сообщение в нижнем правом углу экрана.

Рассмотрим распространенную ситуацию — в течение дня с сайта компании (интернет-магазин) автоматически в 1С загружаются заказы клиентов. Задача состоит в том, что сразу уведомлять об этом менеджеров (и руководителя), чтобы они сразу перезванивали потенциальному покупателю и уточняли детали заказа.

После добавления расширения появляется группа настроек в разделе НСИ и администрирование:

Для начала создадим новую настройку оповещений:

На форме настройки нужно заполнить следующие поля:

  • наименование,
  • статус (действует или неактивна),
  • тип источника (документ или справочник),
  • имя объекта (из предложенного списка, в нем все документы и справочники информационной базы),
  • группа — группа справочника настроек (при необходимости настройки уведомлений можно группировать в папки),
  • произнести текст — сюда можно написать фразу (только на английском), и в случае с типом отправки всплывающее сообщение она будет произнесена средствами ОС Microsoft Windows вместе с появлением самого сообщения; если это не нужно, можно оставить поле пустым.

На вкладке Оповещение задается шаблон темы и текста оповещения. Можно использовать как произвольные символы, так и заменяемые параметры, указанные в квадратных скобках (по кнопке с вопросительным знаком можно посмотреть список всех возможных заменяемых параметров). При отправке оповещения эти параметры будут заменены на значения соответствующих реквизитов отслеживаемого объекта.

Проверять открытие объекта — признак, указывающий на то, что отправку оповещений (только для типа всплывающее сообщение) необходимо прекращать на то, время, пока пользователь-адресат работает с аналогичным объектом информационной базы (в нашем примере если у пользователя уже открыт заказ клиента).

Единое оповещение — если этот признак установлен, то при отработке оповещения одним пользователем у всех других пользователей оповещения по этому же объекту-источнику (документ или справочник) пропадают. Это правило работает для типов оповещения Всплывающее сообщение и Задача.

Оповещение считается отработанным пользователем в случае:

  • всплывающее сообщение — если пользователь по нему нажал (открывается карточка соответствующего справочника или документа),
  • задача — если пользователь нажал Выполнить.

В случае с всплывающим сообщением оно будет повторяться (появляться и исчезать с интервалом 15 секунд) до тех пор, пока не будет отработано.

Список получателей задается на одноименной закладке, тут же указывается и тип отправки. Я для примера добавил все типы:

Если планируете отправлять E-mail, нужно указать учетную запись электронной почты.

На вкладке Фильтр можно наложить отбор по реквизитам объекта, если не хотите получать оповещения по всем объектам выбранного типа:

Всплывающее сообщение выглядит таким образом:

Задача располагается в соответствующем списке на начальной странице:

Из формы задачи можно сразу перейти в исходный заказ клиента:

Письмо на электронную почту:

Можно также посмотреть список всех объектов, по которым зарегистрирована отправка уведомлений:

Для корректной работы расширения необходимо отключить Безопасный режим:

Для корректной работы расширения необходимо, чтобы режим совместимости вашей конфигурации был не ниже 8.3.12. О том, где его посмотреть, читайте .

Admin 2 марта, 2020

Недавно писал статью про 1с сообщения и понял, что я не совсем уверенно работаю с таким объектом как ‘описание оповещения’. Решил закрепить эти знания в виде заметки! Надеюсь и вам она будет полезна.

Итак, описание оповещения – это описание вызова процедуры с дополнительными параметрами, вызов которой будет осуществлен при наступлении определенного события: к примеру закрытие формы или не модального диалога. То есть это по сути дополнительная процедура, которая поможет нам обработать интерактивные действия с 1с.

Давай для примера напишем оповещение для пользователя и при нажатии на это оповещение выполним какие-либо необходимые для нас действия:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЭтаФорма.Сайт = «www.Craft1c.ru»; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) //Сайт — реквизит формы ТекстОповещения = «www.Craft1c.ru — заходи, читай и качай!»; СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить(«Сайт», Сайт); ДействиеПриНажатии = Новый ОписаниеОповещения(«ОбработкаСообщенияПользователю», ЭтотОбъект, СтруктураПараметров); Пояснение = «Просто пояснение craft1c»; Картинка = БиблиотекаКартинок.Справка; Статус = СтатусОповещенияПользователя.Важное; КлючУникальности = Неопределено; ПоказатьОповещениеПользователя(ТекстОповещения, ДействиеПриНажатии, Пояснение, Картинка, Статус, КлючУникальности); КонецПроцедуры &НаКлиенте Процедура ОбработкаСообщенияПользователю(ДополнительныеПараметры) Экспорт //Если написать так: //»ОбработкаСообщенияПользователю(Результат, ДополнительныеПараметры) Экспорт», то будет ошибка //В методе ОбработкаСообщенияПользователю количество параметров 2. Ожидаемое количество — 1. //в данном случае нужен один параметр — с дополнительными параметрами Если ДополнительныеПараметры.Свойство(«Сайт») Тогда Сообщить(ДополнительныеПараметры.Сайт); КонецЕсли; КонецПроцедуры

Тут все довольно-таки просто. Рассмотрим основные параметры описания оповещения в нашем примере:

  • 1-ый параметр: вызываемся процедура. ‘ОбработкаСообщенияПользователю’ – в данном случае это экспортная процедура модуля формы, в которым мы находимся. Стоит заметить что я раньше считал, что процедура может быть только клиентской. Но нет, если мы этот же пример рассмотрим и с процедурой на сервере, то так же все будет работать. Причем она в этом случае может быть и не экспортная – об этом даже есть обсуждение на инфостарте.
  • 2-ой параметр: объект, где находится наша вызываемая процедура. Поскольку в данном случае она находится в том же месте, где идет описание оповещения, то указываем ‘ЭтотОбъект’!
  • 3-ий параметр: структура дополнительных параметров, которые мы хотим использовать в процедуре обработки оповещения. Вставляем любые параметры и обрабатываем их!

Здесь стоит обратить внимание на 1 нюанс: в данном случае в нашей экспортной процедуре 1 параметр – и это дополнительные параметры. Но бывают случаи, когда параметров у нашей экспортной процедуры будет несколько. К примеру давайте создадим оповещение для вопроса пользователю:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 &НаКлиенте Процедура ЗадачтьВопрос(Команда) Оповещение = Новый ОписаниеОповещения(«ПослеЗакрытияВопроса», ЭтотОбъект); ПоказатьВопрос(Оповещение, «www.Craft1c.ru?», РежимДиалогаВопрос.ДаНетОтмена, 0, КодВозвратаДиалога.Да, «Это вопрос!»); //это не модальный вызов ворпоса, код будет выполнен до конца, пока вопрос висит у пользователя! Сообщить(«craft1c»); КонецПроцедуры &НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда Сообщить(«Отлично!»); КонецЕсли; КонецПроцедуры

Как можем видеть, в данном случае еще должен быть параметр ‘Результат’, в противном случае мы получим ошибку ‘… количество параметров 1. Ожидаемое количество – 2’:

Количество параметров 1. Ожидаемое количество – 2.

В справке EDT этот момент удобно описан, так что промазать с количеством параметров будет тяжело:

Параметры процедуры оповещения.Параметры процедуры оповещения.

Не знание данного вопроса украло у меня ценное время разработки.

Итак, идем дальше. А что если мы хотим нашу процедуру поместить в общем модуле? А все очень просто – для этого в описании оповещения мы указываем общий модуль (просто его название), где находится наша процедура:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 &НаКлиенте Процедура ПриОткрытии(Отказ) //Сайт — реквизит формы ТекстОповещения = «www.Craft1c.ru — заходи, читай и качай!»; СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить(«Сайт», Сайт); ДействиеПриНажатии = Новый ОписаниеОповещения(«ОбработкаСообщенияПользователю», ОбщийМодульКлиент, СтруктураПараметров); Пояснение = «Просто пояснение craft1c»; Картинка = БиблиотекаКартинок.Справка; Статус = СтатусОповещенияПользователя.Важное; КлючУникальности = Неопределено; ПоказатьОповещениеПользователя(ТекстОповещения, ДействиеПриНажатии, Пояснение, Картинка, Статус, КлючУникальности); КонецПроцедуры //Процедура в общем модуле ОбщийМодульКлиент &НаКлиенте Процедура ОбработкаСообщенияПользователю(ДополнительныеПараметры) Экспорт Если ДополнительныеПараметры.Свойство(«Сайт») Тогда Сообщить(«Привет из общего модуля:» + ДополнительныеПараметры.Сайт); КонецЕсли; КонецПроцедуры

1с описание оповещения общий модуль.

И все так же будет отлично работать:

Результат работы процедуры из общего модуля.

Так же с помощью описания оповещения можно легко обрабатывать результат выбора пользователя. Более подробно можете ознакомиться в данной статье:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 &НаКлиенте Процедура РаспределениеНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыВФорму = Новый Структура(«ТекущаяСтрока», ПолучитьОсновнуюГруппуВыбораНоменклатуры()); СтруктураПараметровОповещения = Новый Структура(); СтруктураПараметровОповещения.Вставить(«ПараметрДляТеста», «craft1c»); ОписаниеВыбора = Новый ОписаниеОповещения(«ОбработкаВыбораНоменклатуры», ЭтаФорма, СтруктураПараметровОповещения); ОткрытьФорму(«Справочник.Номенклатура.ФормаВыбора» ,ПараметрыВФорму , , , , , ОписаниеВыбора, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбораНоменклатуры(РезультатЗакрытия, ДопПараметры) Экспорт Если Не ЗначениеЗаполнено(РезультатЗакрытия) Тогда Возврат; КонецЕсли; Контейнер = Элементы.Распределение.ТекущиеДанные; Если Не Контейнер = Неопределено Тогда Контейнер.Номенклатура = РезультатЗакрытия; КонецЕсли; КонецПроцедуры

Описание оповещения так же отлично подойдет и для организации выбора из списка:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 &НаКлиенте Процедура ТипЗаявкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОповещениеВыборИзСписка = Новый ОписаниеОповещения(«ОбработкаВыбораИзСписка», ЭтотОбъект, Элемент); ПоказатьВыборИзСписка(ОповещениеВыборИзСписка, СписокВыбораТипЗаявки, Элемент); КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбораИзСписка(ВыбЗначение, Элемент) Экспорт Если НЕ ВыбЗначение = Неопределено Тогда Объект.ТипЗаявки = ВыбЗначение.Значение; ТипЗаявкиПриИзменении(Элемент); КонецЕсли; КонецПроцедуры // ОбработкаВыбораИзСписка()

В общем активно используйте описание оповещения в интерактивных действиях! Ведь этот очень просто и тем более удобно. Долой модальность!

Глобальный контекст.Вопрос (Global context.DoQueryBox) Глобальный контекст (Global context) Вопрос (DoQueryBox)Синтаксис:
Вопрос(<ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)
Параметры:
<ТекстВопроса> (обязательный) Тип: Строка. Текст задаваемого вопроса. <Кнопки> (обязательный)Тип: РежимДиалогаВопрос; СписокЗначений. Задает состав и текст кнопок диалога, а также, связанные с кнопками значения.
При использовании типа СписокЗначений:
Значение – содержит значение, связанное с кнопкой. Это значение является возвращаемым значением при выборе кнопки. В качестве значения может использоваться значение перечисления КодВозвратаДиалога, а также другие значения; Представление – задает текст кнопки. Если представление не задано и в качестве значения используется значение перечисления КодВозвратаДиалога, то используется стандартное представление; Картинка – не используется (должна быть пустой); Пометка – не используется (должна быть пустой). При использовании типа СписокЗначений список не должен быть пустым. <Таймаут> (необязательный)Тип: Число. Интервал времени в секундах, в течение которого система будет ожидать ответа пользователя. По истечении интервала окно вопроса будет закрыто. Если параметр не указан, то время ожидания не ограничено.
Значение по умолчанию: 0 <КнопкаПоУмолчанию> (необязательный) Тип: Произвольный. Определяет кнопку по умолчанию по типу кнопки или по связанному с ней значению. <Заголовок> (необязательный) Тип: Строка. Содержит заголовок окна вопроса. <КнопкаТаймаута> (необязательный)Тип: Произвольный. Определяет кнопку (по типу кнопки или по связанному с ней значению), на которой отображается количество секунд, оставшихся до истечения таймаута.
Возвращаемое значение:
Тип: Произвольный. В зависимости от реакции пользователя возвращается значение системного перечисления или значение, связанное с нажатой кнопкой.
В случае закрытия диалога по истечении времени ожидания возвращается значение Таймаут.
Описание:
Выводит на экран окно вопроса.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Примечание:
В веб-клиенте в случае, если клавиша Esc не используется (нет кнопки, связанной со значением Отмена) и пользователь закрывает окно «крестиком», повторно открывается диалог с первоначальными параметрами.
Пример:
Режим = РежимДиалогаВопрос.ДаНет; Текст = «ru = «»Продолжить выполнение операции?»»;» + » en = «»Do you want to continue?»»»; Ответ = Вопрос(НСтр(Текст), Режим, 0); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; См. также:
Глобальный контекст, метод Предупреждение

17 правил для составления оптимального ЗАПРОСа к данным базы 1С  37
  Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps  19
 была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server  17
 Данное обстоятельство может быть обусловлено многими причинами. Одна из них — неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П 1C: Enterprise Development Tools  49
  И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools — это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: » 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем 1С Предприятие что это?  11
  Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. » 1С:Предприятие » — конкретный продукт, который выпускает компания 1С . Что такое Посмотреть все результаты поиска похожих

В 1Сv8.2Управление Предприятием Создал пользователя «кладовщик» с соответствующей ролью «кладовщик» и интерфейсом «кладовщик». По должностным обязанностям требуется создавать Требования-накладные и Лимитно-заборные карты( без права Проводки обоих ), а так же разпечатывать эти документы. Возникло две ошибки: одна при открытии (Ошибка при вызове метода контекста(Записать):Вывод запрещен ) Нажимаю ОК и она закрывается. И вторая ошибка при печати документа (Ошибка при вызове метода контекста(Напечатать):Вывод запрещен) Причем печатная форма документа показывается нормально, а ошибка возникает при отправке документа на принтер. Просмотрел все права роли а так же дополнительные права — разрешил все что так или иначе связано с печатью, но проблема не решилась. Пользователь с ролью «Полные права» и полными доп.правами нормально всё разпечатывает и не имеет сообщения об ошибке при входе . Где еще можно искать решение данной проблемы?
Добавлено через 1 час 12 минут
нашел сам (добавил право Вывод для роли Кладовщик), Спасибо себе