Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
1C 8.x

Уведомление на почту при изменении реквизита справочника

16.05.2025, 06:31. Показов 3536. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую, коллеги.
Имеется справочник "Склады" который загружается в "КА2" из "БП КОРП" через план обмена.
В "КА2" настроена рассылка МОЛ'ам через штатную функцию "Рассылки отчетов".
На предприятии введен совместный подотчет(склад), т.е. наименование справочника в виде "Иванов И.И./Петров П.П."
Когда, допустим, Петров увольняется, или переходит в другой отдел, склад переименовывают на "не выбирать Иванов И.И./Петров П.П.", но это полбеды, самое главное этот склад становится пустым и МОЛу приходит пустой отчет. Новому складу дают новое наименование, например "Иванов И.И." и перемещают туда все позиции, а когда устраивается новый напарник/сменщик, прежний склад снова переименовывают на "не выбирать Иванов И.И." и создают новый "Иванов И.И./Сидоров С.С.", переносят номенклатуру на новый склад. Отсюда возникла необходимость как-то автоматизировать процесс по части уведомления на электронную почту при переименовании склада, чтобы своевременно актуализировать сам склад и МОЛ получил подобающий отчет на свою электронку. Отчет рассылается два раза в месяц. Сейчас ежемесячно проверяют вручную, но рассылок около 120 и проверка занимает немало времени. Заставить бухгалтеров сообщать каждый раз, когда склад был изменен бесполезно (мешает корона).
В общем, прошу дать расклад, как реализовать задачу по сабжу, поскольку как это сделать штатными средствами платформы и конфигурации я не нашел.
Реализовать необходимо в "КА2", БП трогать запретили.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2025, 06:31
Ответы с готовыми решениями:

Как определить видимость и доступность для реквизита, при заполнение другого реквизита справочника
Всем привет, у меня простой вопрос, в котором уже копаюсь несколько часов, понимаю, что код...

При выборе реквизита справочника выводить табличную часть другого справочника
Помогите пожалуйста сделать выборку. Есть справочник с реквизитами сотрудника и табличной частью с...

При изменении реквизита Группа ТЧ документа заполнить из ТЧ Справочника
Здравствуйте... Никак не могу разобраться с запросами 1С. У меня имеется справочник Группы с ТЧ...

60
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
16.05.2025, 15:45  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от polax Посмотреть сообщение
Я говорю о том, что данные по этим складам не будут выводиться в отчете
Так они и так не выводятся, склады то пустые, вот в этом и загвоздка.
0
Эксперт 1С
7176 / 1778 / 648
Регистрация: 16.01.2015
Сообщений: 7,347
16.05.2025, 15:55
все. запутался окончательно что надо
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
17.05.2025, 00:26  [ТС]
polax, склады загружаются из бухгалтерской базы, далее созданы рассылки отчетов, где устанавливается отбор по определенному складу, например "Иванов И.И.". По разным причинам этот склад могу аннулировать и пометить (переименовать) его как "не выбирать Иванов И.И.". В этом случае пользователю придет пустой отчет. Необходимо настроить мониторинг, чтобы ответственное за рассылки лицо могло своевременно узнавать об изменении склада и актуализировать его (выбрать другой), чтобы пользователю не приходил пустой отчет, единственным признаком изменения является изменение его наименования с "Иванов И.И." на "не выбирать Иванов И.И."
Вот я и подумал, что можно как-то привязаться к этому и настроить уведомление.

Добавлено через 2 часа 35 минут
polax, проще говоря: необходимо настроить мониторинг на предмет изменения наименования склада и, в случае если склад был переименован, высылать уведомление на почту.

Добавлено через 38 минут
В общем, устроит следующий вариант: создать отчёт для справочника, скажем, на предмет вывода наименования на начало месяца и на текущую дату и выводить только те наименования , которые были изменены.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
17.05.2025, 03:09
Лучший ответ Сообщение было отмечено Maks как решение

Решение

история же нужна если отчет и начало месяца. а если ее нет, то в модуле объекта справочника ловить соответствующее изменение и инициализировать уведомление
1
Эксперт 1С
7176 / 1778 / 648
Регистрация: 16.01.2015
Сообщений: 7,347
17.05.2025, 10:11
Maks, Сообщение [2], вариант 2 именно об этом
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
17.05.2025, 13:33  [ТС]
polax, если Вас не затруднит, можете показать пример кода?
0
Эксперт 1С
7176 / 1778 / 648
Регистрация: 16.01.2015
Сообщений: 7,347
17.05.2025, 22:08
Так это надо все писать. Хотя проблем в составлении кода особых нет. Создать константу со списком значений, любым способом заполнить список складами (вручную или запросом). Создать внешнюю обработку с реквизитом список значения. По кнопке заполнять список значений всеми складами запросом или выборкой, затем два цикла Сначала искать различия списка из константы со списком в обработке, потом наоборот типа
1C
1
2
3
4
5
СписокИзКонстанты = Константы.КонстантаСоСпискомСкладов.Получить()
Для Каждого Эл ИЗ СписокИзКонстанты  Цикл
Элем = СписокВОбработке.НайтиПоЗначению(Эл.Значение);
Если Элем = Неопределено ТОГДА // в списке из базы такого склада нет
// Запись либо в текстовы либо в табличный документ
Дальше наоборот. Обходим в цикле СписокВОбработке и ищем несовпадения со списком в константе, записываем в текстовый или таб документ
Если док не пустой, Сохраняем док с именем понятным (дата и время сравнения_
Сохраняем список из базы в константу
Отправляем нужному пользователю оповещение со вложением
Все легко находится в интернете, писать весь код ни времени (загружен по крышу) ни желания, извини
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
18.05.2025, 10:51  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
в модуле объекта справочника ловить соответствующее изменение и инициализировать уведомление
Вероятнее всего Вы имели в виду что-то типа этого?
1C
1
2
3
Если ЭтотОбъект.Модифицированность() Тогда 
           ......................
КонецЕсли
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
18.05.2025, 11:55
можно запросом взять запись из справочника и сравнить с тем что записывается. заодно и понять, что произошло именно искомое изменение, а не другая корректировка
1
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
18.05.2025, 14:23  [ТС]
Аватар, в принципе, сейчас проверил:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Склады.Наименование КАК Наименование
        |ИЗ
        |   Справочник.Склады КАК Склады";
    
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    Если Выборка.Наименование <> ЭтотОбъект.Наименование Тогда
            Сообщить("Наименование склада изменено на "+ЭтотОбъект.Наименование);
    КонецЕсли;
Уведомление срабатывает, но срабатывает даже при условии, что наименование изменено не было.
Код разместил в модуле объекта справочника Склады, в процедуре ПриЗаписи...
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
18.05.2025, 14:51
нужно же выбрать по ссылке нужную запись а не весь справочник. да и ПриЗаписи уже записан объект в базу, какой запрос? нужно в ПередЗаписью. проверить что в наименовании появилось "не использовать", а раньше не было, или наоборот. а ты сравнил 1-ую выбранную запись со записываемой. конечно не должно совпасть )
1
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
18.05.2025, 14:54  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
нужно же выбрать по ссылке нужную запись а не весь справочник
Если я правильно понял, надо заменить в запросе Склады.Наименование на Склады.Ссылка?
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
18.05.2025, 14:59
условие выборки "где склады.ссылка=&ссылка" ну и установить тот параметр из ЭтотОбъект.ссылка
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
18.05.2025, 15:24  [ТС]
Аватар, все равно также выводит, вот код:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Склады.Наименование КАК Наименование
        |ИЗ
        |   Справочник.Склады КАК Склады
        |ГДЕ
        |   Склады.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);   
    РезультатЗапроса = Запрос.Выполнить();   
    Выборка = РезультатЗапроса.Выбрать();
    
    Если Выборка.Наименование <> ЭтотОбъект.Наименование Тогда
            Сообщить("Наименование склада изменено на "+ЭтотОбъект.Наименование);
    КонецЕсли;
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
18.05.2025, 15:34
а Выборка.Следующий()? указатель же не стоит на первой строке после выбрать
и точно в процедуре ПередЗаписью модуля объекта? кстати ссылка пустая будет если создается запись справочника. проверять надо
1
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
18.05.2025, 16:13  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
а Выборка.Следующий()?
Да, точно, так работает:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Склады.Наименование КАК Наименование
        |ИЗ
        |   Справочник.Склады КАК Склады
        |ГДЕ
        |   Склады.Ссылка = &Ссылка"; 
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);   
    РезультатЗапроса = Запрос.Выполнить();   
    Выборка = РезультатЗапроса.Выбрать();
 
    Пока Выборка.Следующий() Цикл
        Если Выборка.Наименование <> ЭтотОбъект.Наименование Тогда
             Сообщить("Наименование склада изменено на "+ЭтотОбъект.Наименование);
        КонецЕсли;  
    КонецЦикла;
Теперь осталось разобраться, какой код вместо Сообщить() ставить для отправки уведомления на электронку?
В самой конфе уже создана учетная запись для отправки почты, у нужного пользователя почтовый адрес указан.
Можете привести пример кода, который поможет в реализации данной задачи?
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
18.05.2025, 16:57
не, нет у меня примера, писал когда-то, но не помню, а сейчас то и 1с не стоит у меня, как то так )
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4771 / 967 / 269
Регистрация: 22.04.2013
Сообщений: 6,648
Записей в блоге: 1
18.05.2025, 17:54
коллеги
может быть я опять скажу чушь, как это обычно в последнее время бывает
чем плох вариант поставить галку и оно само не будет отсылать пустые отчёты?
Миниатюры
Уведомление на почту при изменении реквизита справочника  
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
18.05.2025, 20:41  [ТС]
Лучший ответ Сообщение было отмечено Yulunga как решение

Решение

Yulunga, я рассматривал этот вариант, но дело в том, что в этом случае на почту будут лететь все события пользователя в данном справочнике, а это не хотелось бы.

Добавлено через 2 часа 2 минуты
Покурил ИТС и собрал вот такой код:
1C
1
2
3
4
5
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Тема = "Изменение наименования склада";
Письмо.Тексты.Добавить("Наименование склада '"+Выборка.Наименование+"' изменено на '"+ЭтотОбъект.Наименование+"'");
Письмо.Получатели.Добавить("name@mail.ru"); 
РаботаСПочтовымиСообщениями.ОтправитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты, Письмо);
Всё работает!

Полный код
Модуль объекта справочника "Склады"
1C
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
Процедура ПередЗаписью(Отказ) 
    ................................
    // Уведомление об изменении наименования
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Склады.Наименование КАК Наименование
        |ИЗ
        |   Справочник.Склады КАК Склады
        |ГДЕ
        |   Склады.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);   
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
 
    Пока Выборка.Следующий() Цикл
        Если Выборка.Наименование <> ЭтотОбъект.Наименование Тогда
             ///Отправка уведомления на электронную почту
             Письмо = Новый ИнтернетПочтовоеСообщение;
             Письмо.Тема = "Изменение наименования склада";
             Письмо.Тексты.Добавить("Наименование склада «"+Выборка.Наименование+"» изменено на «"+ЭтотОбъект.Наименование+"»");
             Письмо.Получатели.Добавить("name@mail.ru"); 
             РаботаСПочтовымиСообщениями.ОтправитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты, Письмо);
        КонецЕсли;  
    КонецЦикла;
КонецПроцедуры

Благодарю всех за помощь!
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9724 / 5574 / 648
Регистрация: 13.03.2013
Сообщений: 19,218
Записей в блоге: 65
18.05.2025, 21:32  [ТС]
Единственный оставшийся вопрос: можно ли как-то вынести этот отрезок кода в расширение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2025, 21:32

Отнимание реквизитов документа от справочника при изменении реквизита в документе
Есть документ Заказы и справочник Номенклатура. В ТЧ Товары документа выбираю товар (из...

Автозаполнение реквизита при заполнении другого реквизита
Доброго времени суток всем. На данный момент пытаюсь освоить 1ску, столкнулся с такой проблемой,...

Автозаполнение реквизита при заполнении другого реквизита
Доброго времени суток всем. На данный момент пытаюсь освоить 1ску, столкнулся с такой проблемой,...

Автозаполнение реквизита при заполнении другого реквизита
Здравствуйте, необходимо написать запрос, чтобы Контактное лицо (ссылка) заполнялось автоматически...

Заполнение реквизита табличной части, исходя из значения реквизита документа
Есть справочник с табличной частью. У неё есть 3 реквизита: документ, приход, расход. Есть 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru