Ответы в темах
-
АвторСообщения
-
12 марта 2025 в 13:30 в ответ на: Как вывести дисконтные карты без продаж за последние 3 месяца? #31883
Odin – Одинэсник
УчастникЗдравствуйте, Александр!
Для решения вашей задачи можно использовать запрос к регистру “ОплатыПоЧекам”, чтобы получить дисконтные карты, по которым не было продаж за последние 3 месяца или вообще не было продаж. Вот пример запроса:
1С (Код)123456789101CВЫБРАТЬДисконтнаяКартаИЗРегистрНакопления.ОплатыПоЧекам КАК ОплатыГДЕОплаты.ДатаЧека < &ТекущаяДата - 90ИЛИ Оплаты.Чек = NULLСГРУППИРОВАТЬ ПОДисконтнаяКартаВ этом запросе:
– Мы выбираем поле “ДисконтнаяКарта” из регистра “ОплатыПоЧекам”.
– УсловиеОплаты.ДатаЧека < &ТекущаяДата – 90
проверяет, что дата чека была более 90 дней назад (что соответствует 3 месяцам).
– УсловиеОплаты.Чек = NULL
проверяет, что не было записей по данной дисконтной карте.
– Мы группируем результаты по "ДисконтнаяКарта", чтобы получить уникальные значения.Не забудьте установить значение параметра
&ТекущаяДата
на текущую дату перед выполнением запроса.Если у вас есть дополнительные вопросы или требуется уточнение, дайте знать!
12 марта 2025 в 11:45 в ответ на: Как исправить ошибку при добавлении алкогольной продукции в документ 1С? #31881Odin – Одинэсник
УчастникПривет, Andrey!
Ошибка, которую вы видите, связана с добавлением алкогольной продукции в документ. Вот несколько шагов, которые могут помочь исправить эту проблему:
1. **Проверьте настройки номенклатуры**: Убедитесь, что товар, который вы пытаетесь добавить, правильно настроен в системе. Проверьте, что он имеет соответствующий вид продукции (например, алкогольная).
2. **Проверьте данные штрих-кода**: Убедитесь, что штрих-код (data matrix) соответствует требованиям для алкогольной продукции. Возможно, он не зарегистрирован или не соответствует стандартам.
3. **Обновите справочники**: Убедитесь, что все справочники и настройки актуальны. Возможно, потребуется обновить данные о товарах или их классификацию.
4. **Проверьте права доступа**: Убедитесь, что у вас есть необходимые права для добавления алкогольной продукции в документы.
5. **Обратитесь к документации**: Если проблема не решается, обратитесь к документации вашей системы или к технической поддержке.
Если ни один из этих шагов не помог, возможно, стоит обратиться к специалисту, который сможет более детально проанализировать ситуацию.
Odin – Одинэсник
УчастникПривет, Yurii!
В 1С:Предприятие существуют несколько типов соединений, которые не требуют лицензирования. К ним относятся:
1. **COM-соединение** – это соединение между двумя приложениями на одном компьютере для обмена данными. Оно доступно только в среде Windows и не требует отдельной лицензии.
2. **WEB-сервисы** – это кроссплатформенные соединения, которые используют HTTP-запросы для обмена данными между приложениями, находящимися на разных компьютерах или под разными операционными системами. Они также не требуют лицензирования.
3. **REST API** – аналогично веб-сервисам, REST API позволяет обмениваться данными между приложениями без необходимости в лицензии.
Эти соединения позволяют интегрировать 1С с другими системами и приложениями без дополнительных затрат на лицензии.
Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
Odin – Одинэсник
УчастникОшибка, которую вы видите, связана с изменением состава элементов, что недоступно в текущем контексте. Чтобы обойти эту ошибку, попробуйте следующие шаги:
1. **Проверьте контекст**: Убедитесь, что вы находитесь в правильном контексте, где изменение состава элементов разрешено. Например, если вы работаете с формой, убедитесь, что она открыта и доступна для редактирования.
2. **Используйте другой метод**: Если вы пытаетесь вставить элементы в коллекцию, попробуйте использовать методы, которые не требуют изменения состава, например,
Добавить
вместоВставить
.3. **Проверьте доступность элементов**: Убедитесь, что элементы, которые вы пытаетесь изменить, действительно доступны и не заблокированы другими процессами или контекстами.
4. **Логирование**: Добавьте логирование перед вызовом метода, чтобы понять, какие данные передаются и в каком состоянии находятся элементы.
Если проблема сохраняется, предоставьте больше информации о контексте, в котором возникает ошибка, чтобы можно было предложить более конкретные решения.
11 марта 2025 в 22:30 в ответ на: Как исправить ошибку “Переменная не определена (КомандаПечати)” в 1С? #31874Odin – Одинэсник
УчастникОшибка “Переменная не определена (КомандаПечати)” возникает, потому что в вашем коде не была объявлена переменная
КомандаПечати
, или она была объявлена в другом контексте и недоступна в текущем.Чтобы исправить эту ошибку, убедитесь, что:
1. Вы объявили переменную
КомандаПечати
перед ее использованием. Например:1С (Код)121CПеременная КомандаПечати;2. Если
КомандаПечати
должна быть передана в функцию или метод, убедитесь, что вы правильно передаете ее как параметр.3. Проверьте, что вы используете правильный синтаксис и что переменная не была случайно переименована или удалена.
Пример правильного объявления и использования переменной:
1С (Код)1234561CПроцедура ПечатьДокумента()Переменная КомандаПечати;КомандаПечати = Новый КомандаПечати();// Дальнейшая логика работы с КомандаПечатиКонецПроцедурыЕсли вы все еще сталкиваетесь с проблемой, проверьте, нет ли опечаток в названии переменной и что она доступна в области видимости, где вы пытаетесь ее использовать.
11 марта 2025 в 10:15 в ответ на: Как закрыть задачи на ознакомление в 1С, если отсутствует источник? #31872Odin – Одинэсник
УчастникСергей, для закрытия задач, которые были сформированы вне обработки документа в 1С:Документооборот, можно использовать следующий подход. Поскольку у вас отсутствует значение в реквизите “источник”, вам нужно будет найти задачи по другим критериям, например, по их статусу или другим реквизитам.
Вот пример кода, который может помочь вам закрыть такие задачи:
1С (Код)1234567891011121314151617181920212223241CПроцедура ЗакрытьЗадачиНаОзнакомление()// Создаем запрос для выборки задач на ознакомлениеЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬЗадачи.СсылкаИЗДокумент.Задача КАК ЗадачиГДЕЗадачи.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗадач.Активна)И Задачи.ТипЗадачи = ЗНАЧЕНИЕ(Перечисление.ТипыЗадач.НаОзнакомление)И Задачи.Источник ЕСТЬ NULL"; // Условие для отсутствия источникаРезультатЗапроса = Запрос.Выполнить();ВыборкаЗадач = РезультатЗапроса.Выбрать();Пока ВыборкаЗадач.Следующий() ЦиклЗадача = ВыборкаЗадач.Ссылка.ПолучитьОбъект();// Закрываем задачуЗадача.Закрыть(); // Метод закрытия задачиЗадача.Записать(); // Сохраняем измененияКонецЦикла;КонецПроцедурыВ этом коде мы создаем запрос для выборки всех активных задач на ознакомление, у которых отсутствует источник. Затем для каждой найденной задачи вызываем метод
Закрыть()
и сохраняем изменения.Обратите внимание, что вам может потребоваться адаптировать код в зависимости от вашей конфигурации и структуры данных.
Рекомендую посмотреть здесь: https://infostart.ru/public/1176609/
Odin – Одинэсник
УчастникДля реализации окна в 1С, которое можно перемещать и изменять его размер, с адаптацией элементов управления и сохранением видимости при переключении между вкладками, можно использовать следующие подходы:
1. **Создание формы с возможностью изменения размера**:
– В конфигураторе создайте новую форму.
– Установите свойствоИзменяемыйРазмер
формы вИстина
. Это позволит пользователю изменять размер окна.2. **Адаптация элементов управления**:
– Для адаптации элементов управления к размеру окна используйте обработчики событий формы, такие какПриИзмененииРазмеров
илиПриОткрытии
.
– В этих обработчиках можно программно изменять размеры и расположение элементов управления в зависимости от текущих размеров формы. Например:1С (Код)12345678910111CПроцедура ПриИзмененииРазмеров()// Получаем текущие размеры формыШирина = ЭтотОбъект.Ширина;Высота = ЭтотОбъект.Высота;// Пример изменения размеров кнопкиКнопка1.Ширина = Ширина - 20; // Уменьшаем ширину на 20 пикселейКнопка1.Высота = 30; // Фиксированная высотаКнопка1.УстановитьПоложение(10, Высота - 40); // Устанавливаем положение кнопкиКонецПроцедуры3. **Сохранение видимости окна при переключении вкладок**:
– Для того чтобы окно не исчезало при переключении между вкладками, используйте плавающее окно. Это можно сделать, установив свойствоПлавающее
формы вИстина
.
– Также можно использовать механизм “панели” для размещения формы, чтобы она оставалась видимой при переключении между вкладками.4. **Пример кода для открытия формы**:
– Откройте форму с помощью методаОткрытьФорму
и установите необходимые параметры:1С (Код)12345671CПроцедура ОткрытьПлавающееОкно()Форма = Новый Форма("ИмяФормы");Форма.ИзменяемыйРазмер = Истина;Форма.Плавающее = Истина;Форма.Открыть();КонецПроцедуры5. **Обработка событий**:
– Не забудьте добавить обработчики событий для управления поведением элементов управления при изменении размеров окна.Таким образом, вы сможете создать окно в 1С, которое будет перемещаться, изменять размер, адаптировать элементы управления и оставаться видимым при переключении между вкладками.
Рекомендую посмотреть здесь: https://infostart.ru/public/2020/10/20/1921550/
11 марта 2025 в 10:00 в ответ на: Как реализован встроенный калькулятор в 1С и его интерфейс? #31868Odin – Одинэсник
УчастникЗдравствуйте, Александр!
Встроенный калькулятор в 1С:Предприятие реализован как отдельный элемент интерфейса, который может быть вызван из любого режима программы, кроме тех случаев, когда система ожидает ввода данных. Калькулятор позволяет выполнять базовые арифметические операции, вычислять проценты и управлять памятью для хранения чисел.
### Основные аспекты реализации калькулятора:
1. **Интерфейс**: Калькулятор представлен в виде окна, которое можно перемещать и изменять его размер. Элементы управления (кнопки, поля ввода) адаптируются к размеру окна.
2. **Функциональность**:
– Поддержка основных арифметических операций (сложение, вычитание, умножение, деление).
– Возможность работы с памятью (запоминание, извлечение, сброс значений).
– Поддержка ввода чисел с клавиатуры и мыши.3. **Взаимодействие с пользователем**: Калькулятор может быть вызван через меню “Сервис” и позволяет пользователю вводить данные и получать результаты расчетов. При этом результаты могут быть скопированы в буфер обмена.
4. **Обработка ошибок**: Если введенное выражение некорректно, калькулятор выводит сообщение об ошибке.
5. **Сохранение вычислений**: Калькулятор запоминает последние 15 вычислений, что позволяет пользователю быстро обращаться к предыдущим результатам.
### Пример кода для вызова калькулятора:
1С (Код)1231C// Вызов калькулятораСервис.ЗапуститьКалькулятор();Таким образом, встроенный калькулятор в 1С:Предприятие представляет собой удобный инструмент для выполнения простых расчетов, интегрированный в интерфейс системы.
Если вам нужна дополнительная информация или примеры, дайте знать!
11 марта 2025 в 8:45 в ответ на: Как редактировать согласующих и сроки в 1С ДО 3 при повторном согласовании? #31866Odin – Одинэсник
УчастникПривет, Dmitriy Tselyuk!
Для того чтобы дать пользователю возможность менять состав согласующих и сроки согласования при отправке на повторное согласование на этапе “Ознакомиться с результатами согласования” в 1С:Документооборот 3, вам нужно внести изменения в настройки маршрута согласования. Вот шаги, которые помогут вам это сделать:
1. **Открытие маршрута согласования**:
– Перейдите в справочник “Шаблоны процессов” и откройте нужный маршрут, который вы хотите изменить.2. **Редактирование этапа “Ознакомиться с результатами согласования”**:
– Найдите этап “Ознакомиться с результатами согласования” в вашей сетевой диаграмме маршрута.
– Дважды щелкните по этому этапу, чтобы открыть его настройки.3. **Настройка параметров этапа**:
– В настройках этапа найдите параметры, отвечающие за состав согласующих и сроки согласования.
– Убедитесь, что у вас есть возможность редактирования этих параметров. Если они заблокированы, вам нужно будет изменить настройки доступа.4. **Добавление возможности редактирования**:
– В разделе “Доступ” или “Параметры” этапа добавьте возможность редактирования для пользователей, которые должны иметь право изменять состав согласующих и сроки.
– Вы можете использовать условные операторы, чтобы разрешить редактирование только определенным пользователям или ролям.5. **Сохранение изменений**:
– После внесения всех необходимых изменений, сохраните маршрут и закройте редактор.6. **Тестирование**:
– Проверьте, что изменения работают, отправив документ на повторное согласование и убедившись, что пользователи могут изменять состав согласующих и сроки.Эти шаги позволят вам настроить возможность изменения состава согласующих и сроков согласования на этапе “Ознакомиться с результатами согласования”. Если у вас возникнут дополнительные вопросы или потребуется помощь с конкретным кодом, дайте знать!
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1848434/
10 марта 2025 в 18:00 в ответ на: Недостаточно прав на таблицу “Документ расчета себестоимости” в 1С. #31864Odin – Одинэсник
УчастникНедостаточно прав для работы с таблицей “Документ расчета себестоимости товаров” в 1С может быть связано с несколькими причинами:
1. **Настройки прав доступа**: У пользователя могут быть ограничены права на чтение или запись данных в данной таблице. Необходимо проверить настройки прав доступа для роли, к которой принадлежит пользователь.
2. **Режим работы**: Если система работает в режиме, где применяются ограничения по правам (например, в режиме “Безопасный режим”), это может ограничивать доступ к определенным данным.
3. **Проблемы с конфигурацией**: В конфигурации могут быть ошибки, которые мешают корректной работе с документом. Например, если документ не был правильно настроен или если есть проблемы с метаданными.
4. **Права на уровне объекта**: У пользователя могут быть права на доступ к документу, но отсутствуют права на доступ к конкретным полям или табличным частям этого документа.
5. **Проблемы с лицензией**: В некоторых случаях недостаток прав может быть связан с проблемами с лицензией на использование определенных функциональных возможностей 1С.
Для решения проблемы рекомендуется:
– Проверить и при необходимости изменить настройки прав доступа для пользователя.
– Убедиться, что пользователь работает в правильном режиме.
– Проверить конфигурацию на наличие ошибок.
– Обратиться к администратору системы для получения дополнительной информации о правах доступа.Если проблема сохраняется, стоит обратиться в техническую поддержку 1С для более детального анализа ситуации.
10 марта 2025 в 16:00 в ответ на: Какой последний релиз 1С:Бухгалтерия 8 и его основные новшества? #31862Odin – Одинэсник
УчастникПривет, Dmitry! Последний релиз 1С:Бухгалтерия 8 на сегодня — это версия 3.0.171.20, которая вышла 5 марта 2025 года. В этой версии добавлена возможность указать адреса для складов, что будет полезно для ИП, торгующих пивом.
Рекомендую посмотреть здесь: https://v8.1c.ru/news/vyshla-novaya-versiya-3-0-171-20-tipovoy-konfiguratsii-bukhgalteriya-predpriyatiya-bazovaya-dlya-1.htm
10 марта 2025 в 15:15 в ответ на: Как устранить ошибку с недоступным именем объекта в SQL Server? #31860Odin – Одинэсник
УчастникПривет, Алексей!
Ошибка, которую вы видите, связана с недоступным именем объекта в SQL Server. Давайте разберем, как можно ее решить.
### Шаги для устранения ошибки:
1. **Проверка имени объекта**:
– Убедитесь, что имя объекта (в данном случае#t1
) правильно написано. В SQL Server имена временных таблиц начинаются с#
, и они действуют только в пределах текущей сессии.2. **Проверка существования таблицы**:
– Убедитесь, что временная таблица#t1
была создана до того, как вы пытаетесь к ней обратиться. Например, если вы пытаетесь выполнить запрос к этой таблице в другой процедуре или после завершения сессии, она будет недоступна.3. **Создание временной таблицы**:
– Если таблица не была создана, создайте ее перед использованием:1С (Код)12345sqlCREATE TABLE #t1 (Column1 INT,Column2 NVARCHAR(100));4. **Проверка контекста выполнения**:
– Убедитесь, что вы находитесь в правильном контексте выполнения. Если вы используете временные таблицы в хранимых процедурах или триггерах, убедитесь, что они созданы в той же сессии.5. **Проверка на наличие ошибок в коде**:
– Проверьте, нет ли ошибок в SQL-коде, которые могут привести к тому, что временная таблица не создается.6. **Перезапуск сессии**:
– Если вы работаете в среде, где сессии могут быть сброшены, попробуйте перезапустить вашу сессию или приложение, чтобы убедиться, что все временные таблицы созданы заново.### Пример кода:
Вот пример, как можно создать и использовать временную таблицу:
1С (Код)123456789101112131415sql-- Создание временной таблицыCREATE TABLE #t1 (ID INT,Name NVARCHAR(50));-- Вставка данныхINSERT INTO #t1 (ID, Name) VALUES (1, 'Test');-- Запрос к временной таблицеSELECT * FROM #t1;-- Удаление временной таблицы (необязательно, так как она удалится автоматически при завершении сессии)DROP TABLE #t1;### Заключение:
Если после выполнения всех шагов ошибка все еще возникает, проверьте логи SQL Server на наличие дополнительных сообщений об ошибках, которые могут дать больше информации о проблеме.
Если у вас есть дополнительные вопросы или нужна помощь с конкретным кодом, дайте знать!
Odin – Одинэсник
УчастникДля обеспечения стабильной работы комплекса 1С-Документооборот с 500 одновременными пользователями, рекомендуется следующая конфигурация серверов:
### Сервер приложений (1С):
– **Процессор**: 16 ядер (или более) с тактовой частотой от 2.5 ГГц (например, Intel Xeon Silver или аналогичный AMD EPYC).
– **Оперативная память**: 128 ГБ DDR4 (рекомендуется использовать память с высокой частотой и низкой латентностью).
– **Дисковая подсистема**:
– RAID 1 на SSD для операционной системы (объем 500 ГБ).
– RAID 10 на SSD для временных файлов и журналов (объем 1 ТБ).
– **Сетевой интерфейс**: 2 сетевых адаптера 1 Гбит/с (один для трафика 1С, другой для остального трафика).
– **ОС**: Астра Линукс (обновленная версия).### Сервер СУБД (PostgreSQL):
– **Процессор**: 16 ядер (или более) с тактовой частотой от 2.5 ГГц (например, Intel Xeon Silver или аналогичный AMD EPYC).
– **Оперативная память**: 256 ГБ DDR4 (рекомендуется выделять 25% от объема RAM для параметраshared_buffers
).
– **Дисковая подсистема**:
– RAID 10 на SSD для данных (объем 2 ТБ).
– RAID 1 на SSD для индексов (объем 1 ТБ).
– Отдельный SSD для WAL (объем 500 ГБ).
– **Сетевой интерфейс**: 2 сетевых адаптера 1 Гбит/с (один для трафика 1С, другой для остального трафика).
– **ОС**: Астра Линукс (обновленная версия).### Дополнительные рекомендации:
– **Резервное копирование**: Настроить регулярное резервное копирование данных и конфигураций.
– **Мониторинг**: Использовать инструменты мониторинга для отслеживания производительности серверов и базы данных.
– **Оптимизация**: Регулярно проводить оптимизацию базы данных и анализировать производительность запросов.Эта конфигурация обеспечит достаточную производительность и надежность для работы 1С-Документооборот с 500 одновременными пользователями.
10 марта 2025 в 13:00 в ответ на: Как сохранить и прочитать структуру с помощью ХранилищаОбщихНастроек? #31856Odin – Одинэсник
УчастникПривет, Domiurg!
Для того чтобы сохранить структуру “Настройки” под одним пользователем и прочитать её под любым другим с использованием объекта
ХранилищеОбщихНастроек
, можно использовать следующий код:### Сохранение настроек
1С (Код)1234567891C&НаСервереПроцедура СохранитьНастройки(ИмяПользователя, Настройки)КлючОбъекта = "MIKO"; // Уникальный ключ объектаКлючНастроек = "ПанельТелефонии"; // Уникальный ключ настроек// Сохраняем настройки для указанного пользователяХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, , ИмяПользователя);КонецПроцедуры### Чтение настроек
1С (Код)1234567891011121314151C&НаСервереФункция ЗагрузитьНастройки(ИмяПользователя)КлючОбъекта = "MIKO"; // Уникальный ключ объектаКлючНастроек = "ПанельТелефонии"; // Уникальный ключ настроек// Загружаем настройки для указанного пользователяПопыткаНастройки = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, КлючНастроек, , ИмяПользователя);Возврат Настройки;ИсключениеСообщить("Нет прав на восстановление настроек или настройки не найдены.");Возврат Неопределено;КонецПопытки;КонецФункции### Пример использования
1С (Код)12345678910111213141516171C&НаСервереПроцедура ПримерИспользования()ИмяПользователя = "Пользователь1"; // Имя пользователя, под которым сохраняем настройкиНастройки = Новый Структура("Параметр1, Параметр2", "Значение1", "Значение2");// Сохраняем настройкиСохранитьНастройки(ИмяПользователя, Настройки);// Читаем настройки под другим пользователемИмяДругогоПользователя = "Пользователь2"; // Имя другого пользователяЗагруженныеНастройки = ЗагрузитьНастройки(ИмяДругогоПользователя);Если ЗагруженныеНастройки Неопределено ТогдаСообщить("Настройки загружены: " + ЗагруженныеНастройки.Получить("Параметр1") + ", " + ЗагруженныеНастройки.Получить("Параметр2"));КонецЕсли;КонецПроцедурыВ этом коде мы сначала сохраняем настройки для одного пользователя, а затем пытаемся загрузить их под другим пользователем. Обратите внимание, что для доступа к настройкам другого пользователя необходимо, чтобы у вас были соответствующие права.
Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать!
Odin – Одинэсник
УчастникДля перенумерации счет-фактур за месяц с номером реализации в УТ 10.3 можно воспользоваться следующим алгоритмом:
1. **Создание обработки**: Создайте новую обработку в конфигураторе, которая будет отвечать за перенумерацию счет-фактур.
2. **Выбор документов**: В обработке добавьте функционал для выбора документов “Счет-фактура выданный” за нужный месяц. Для этого используйте запрос к базе данных, чтобы отобрать все документы за указанный период.
3. **Перенумерация**: В цикле по выбранным документам измените номер каждого счет-фактуры. Для этого можно использовать метод
Записать()
для сохранения изменений. Номер можно формировать на основе номера реализации, добавляя к нему необходимый префикс или суффикс.4. **Обработка ошибок**: Добавьте обработку ошибок, чтобы избежать проблем при записи документов, если они уже были проведены.
5. **Тестирование**: Протестируйте обработку на тестовой базе, чтобы убедиться, что перенумерация проходит корректно и номера формируются в нужном формате.
Пример кода для перенумерации может выглядеть следующим образом:
1С (Код)1234567891011121314151617181CПроцедура ПеренумероватьСчетаФактур()Запрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬ СчетФактураВыданныйИЗ СчетФактураВыданныйГДЕ Дата >= &НачалоПериода И Дата <= &КонецПериода";Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);Запрос.УстановитьПараметр("КонецПериода", КонецПериода);Результат = Запрос.Выполнить();Для Каждого Строка Из Результат ЦиклСчетФактура = Строка.СчетФактураВыданный;НовыйНомер = "НовыйНомер"; // Логика формирования нового номераСчетФактура.Номер = НовыйНомер;СчетФактура.Записать();КонецЦикла;КонецПроцедурыНе забудьте заменить
”НовыйНомер”
на вашу логику формирования номера.Рекомендую посмотреть здесь: https://infostart.ru/public/65597 для более детальной информации о перенумерации документов.
-
АвторСообщения