Друзья здавствуйте. есть проблема))) Значит у меня есть документ с ТЧ.. Внутри есть инфо про бонусных карт которую раздает например банк. У каждой карты есть дата окончание. п.с "Дата Окончание" - внутри Табличной части.. Теперь есть задачка. Нужно Сделать так что, Если например дата окончание карты 02,02,2022 то Сегодня когда я открываю систему, что бы система меня оповищала о том что дата карты Закончилос..
Теперь о том что я сделал..
Открыл общий модул с названием "ПроверкаКарт"
а внутри написал функцию
У меня выдает ошибку
{МодульУправляемогоПриложения(8,17)}: Переменная не определена (ПроверкаКарт)
массивОтвета = <<?>>ПроверкаКарт.ПроверкаДействияКарт(); (Проверка: Тонкий клиент)
Прошу помочь Управляемая Форма
Теперь о том что я сделал..
Открыл общий модул с названием "ПроверкаКарт"
а внутри написал функцию
Функция ПроверкаДействияКарт() Экспорт
МассивОтвета = новый массив;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| БанковскиеКарты.Ссылка КАК Ссылка
|ИЗ
| Документ.БанковскиеКарты КАК БанковскиеКарты
|ГДЕ
| НАЧАЛОПЕРИОДА(БанковскиеКарты.ТабличнаяЧасть.ДатаОкончание, ДЕНЬ) = НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)";
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Результат = Запрос.выполнить().Выбрать();
Пока Результат.Следующий() цикл
МассивОтвета.добавить(Результат.БанковскиеКарты);
КонецЦикла;
Возврат МассивОтвета
КонецФункции
Потом в модуле приложение написал процедуры
Процедура ПриНачалеРаботыСистемы()
ПодключитьОбработчикОжидания("ПроверкаСрокаДействияКарт",3);
КонецПроцедуры
Процедура ПроверкаСрокаДействияКарт() Экспорт
массивОтвета = ПроверкаКарт.ПроверкаДействияКарт();
Для каждого СтрокаОтвета из массивОтвета цикл
Сообщить(Строка(СтрокаОтвета) + " Срок использования карты истек ");
КонецЦикла;
КонецПроцедуры
ПоказатьУ меня выдает ошибку
{МодульУправляемогоПриложения(8,17)}: Переменная не определена (ПроверкаКарт)
массивОтвета = <<?>>ПроверкаКарт.ПроверкаДействияКарт(); (Проверка: Тонкий клиент)
Прошу помочь Управляемая Форма
По теме из базы знаний
- Обмен между 1С:Розница и Frontol 6 по организациям (Розница - Фронтол)
- Интеграция с маркетплейсами МегаМаркет, Wildberries, OZON, ЯндексМаркет, VK, Avito, Леруа Мерлен, Aliexpress, КУПЕР, Dostavista
- Обзор полезных методов БСП 3.1.4
- Интеграция с сервисом "CARDPR". Управление электронными картами лояльности из 1С
- Интеграция 1С и Sentry для мониторинга ошибок и расчета Apdex
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Добрый день!
Для начала, проверьте , точно ли ПроверкаКарт - общий модуль, и не для серверных, а для клиентских вызовов ( у Вас вызов происходит из ТонкогоКлиента). Откройте конфигуратор в директиве &НаКлиенте, напишите ПроверкаКарт, поставьте точку. Если увидите процедуры общего модуля , то все правильно и наоборот...
Для начала, проверьте , точно ли ПроверкаКарт - общий модуль, и не для серверных, а для клиентских вызовов ( у Вас вызов происходит из ТонкогоКлиента). Откройте конфигуратор в директиве &НаКлиенте, напишите ПроверкаКарт, поставьте точку. Если увидите процедуры общего модуля , то все правильно и наоборот...
(2)
Ошибка инициализации модуля: ОбщийМодуль.ПроверкаКарт.Модуль
по причине:
{ОбщийМодуль.ПроверкаКарт.Модуль(5,16)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос;
из ТонкогоКлиента). Откройте конфигуратор в директиве &НаКлиенте,
Вы этого имеете ввиду? если да то сейчас так. Но я проверил. Убрал галку из сервера и поставил на клиент тогда ошибку не выдает система открывает но после открытие выходит опять ошибка..
Ошибка инициализации модуля: ОбщийМодуль.ПроверкаКарт.Модуль
по причине:
{ОбщийМодуль.ПроверкаКарт.Модуль(5,16)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос;
Прикрепленные файлы:

(6)
апроса использовать сервер, для вывода клиентских данных - клиент.
Давайте так. Я 100 раз думал когда писал этот код, да и правильно ли написал или нет не знаю еще.. мне конкретно нужно сказать, вот это поменяй на это и все)) А то реально голова уже не варит ))
(7) Я не вдаюсь в смысл процедур, просто объясняю, как их поделить на серверные и клиентские.
#Если Клиент Тогда
Функция ПроверкаДействияКарт() Экспорт
МассивОтвета = новый массив;
Результат = ПолучитьРезультатЗапроса()
Пока Результат.Следующий() цикл
МассивОтвета.добавить(Результат.БанковскиеКарты);
КонецЦикла;
Возврат МассивОтвета
КонецФункции
#КонецЕсли
#Если Сервер Тогда
Функция ПолучитьРезультатЗапроса()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| БанковскиеКарты.Ссылка КАК Ссылка
|ИЗ
| Документ.БанковскиеКарты КАК БанковскиеКарты
|ГДЕ
| НАЧАЛОПЕРИОДА(БанковскиеКарты.ТабличнаяЧасть.ДатаОкончание, ДЕНЬ) = НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)";
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Результат = Запрос.выполнить().Выбрать();
Возврат Результат;
КонецФункции
#КонецЕсли
Показать
(8)
А то что в модуле приложение я написал там как будет ? потому что у меня в этот раз там ошибку дает.
{МодульУправляемогоПриложения(8,17)}: Переменная не определена (ПроверкаКарт)
массивОтвета = <<?>>ПроверкаКарт.ПроверкаДействияКарт(); (Проверка: Тонкий клиент)
#Если Клиент Тогда
Функция ПроверкаДействияКарт() Экспорт
МассивОтвета = новый массив;
Результат = ПолучитьРезультатЗапроса()
Пока Результат.Следующий() цикл
МассивОтвета.добавить(Результат.БанковскиеКарты);
КонецЦикла;
Возврат МассивОтвета
КонецФункции
#КонецЕсли
#Если Сервер Тогда
Функция ПолучитьРезультатЗапроса()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| БанковскиеКарты.Ссылка КАК Ссылка
|ИЗ
| Документ.БанковскиеКарты КАК БанковскиеКарты
|ГДЕ
| НАЧАЛОПЕРИОДА(БанковскиеКарты.ТабличнаяЧасть.ДатаОкончание, ДЕНЬ) = НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)";
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Результат = Запрос.выполнить().Выбрать();
Возврат Результат;
КонецФункции
#КонецЕсли
ПоказатьА то что в модуле приложение я написал там как будет ? потому что у меня в этот раз там ошибку дает.
Процедура ПроверкаСрокаДействияКарт() Экспорт
массивОтвета = ПроверкаКарт.ПроверкаДействияКарт();
Для каждого СтрокаОтвета из массивОтвета цикл
Сообщить(Строка(СтрокаОтвета) + " Срок использования карты истек ");
КонецЦикла;
КонецПроцедуры
{МодульУправляемогоПриложения(8,17)}: Переменная не определена (ПроверкаКарт)
массивОтвета = <<?>>ПроверкаКарт.ПроверкаДействияКарт(); (Проверка: Тонкий клиент)
Суть в том, что работа с данными происходит НаСервере, модуль УправляемогоПриложения работает НаКлиенте.
Если у общего модуля стоят галочки Сервер и Клиент, то это означает, что функции этого модуля могут быть вызваны и на сервре и на клиенте, контекст определяется местом откуда вы вызвали эти процедуры.
Можно конечно смешать в кучу и процедуры использующие клиентский контекст и серверный контекст, отделив их соответствующими командами препроцессора, но решение так себе.
Лучше сделайте отдельный отчет и его вызывайте при ПриНачалеРаботыСистемы
И там уже разносите по Серверному и Клиентскому контекстам получение данных и их отображение
Если у общего модуля стоят галочки Сервер и Клиент, то это означает, что функции этого модуля могут быть вызваны и на сервре и на клиенте, контекст определяется местом откуда вы вызвали эти процедуры.
Можно конечно смешать в кучу и процедуры использующие клиентский контекст и серверный контекст, отделив их соответствующими командами препроцессора, но решение так себе.
Лучше сделайте отдельный отчет и его вызывайте при ПриНачалеРаботыСистемы
И там уже разносите по Серверному и Клиентскому контекстам получение данных и их отображение
Сложностей никаких нет
Что нужно сделать:
1) В свойствах общего модуля "ПроверкаКарт" поставить две галочки. "Сервер" и "Вызов сервера". После этого сможете вызывать процедуры этого модуля откуда угодно: и с Клиента и с Сервера. Разумеется при наличии ключевого слова Экспорт
2) .. это все..
Что нужно сделать:
1) В свойствах общего модуля "ПроверкаКарт" поставить две галочки. "Сервер" и "Вызов сервера". После этого сможете вызывать процедуры этого модуля откуда угодно: и с Клиента и с Сервера. Разумеется при наличии ключевого слова Экспорт
2) .. это все..
И еще
Если планируется большое количество таких документов, то лучше бы создать и использовать не периодический Регистр Сведений с реквизитами БанковскаяКарта и Дата. Иначе тормоз при каждом выполнении запроса обеспечен
При проведении документа заполняй этот регистр и в запросе обращайся именно к нему. Запрос будет выполняться намного быстрее. Не забудь указать, что реквизит Дата - индексируемый
Если планируется большое количество таких документов, то лучше бы создать и использовать не периодический Регистр Сведений с реквизитами БанковскаяКарта и Дата. Иначе тормоз при каждом выполнении запроса обеспечен
При проведении документа заполняй этот регистр и в запросе обращайся именно к нему. Запрос будет выполняться намного быстрее. Не забудь указать, что реквизит Дата - индексируемый
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот