Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
thedanilich
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 32
#1

Как вызвать процедуру "Предупреждение()" в модуле объекта?

07.01.2017, 15:04. Просмотров 836. Ответов 5
Метки 1c (Все метки)

Если текущая дата больше даты выдачи книги то должно быть окно вывод, что дата выдачи книги просрочена.
И не надо предлагать процедуру Сообщить() она бесполезна в этом случае, так как после проведения окно закроется и сообщения не будет видно, а если ставить Отказ = Истина, то вообще не смогу провести возврат книги.
1C
1
2
3
Если ТекущаяДата() > ВыборкаИзЗапроса.ДатаВозврата Тогда
                Предупреждение ("Текст"); 
            КонецЕсли;
Весь код
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
27
28
29
30
31
32
33
34
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Для Каждого СтрокаТабличнойЧасти Из СписокКниг Цикл
        Запрос = Новый Запрос;
        Запрос.Текст = 
        "ВЫБРАТЬ
        |   КнигиУЧитателейОстатки.КоличествоОстаток,
        |   КнигиУЧитателейОстатки.ДатаВозврата
        |ИЗ
        |   РегистрНакопления.КнигиУЧитателей.Остатки( ) КАК КнигиУЧитателейОстатки
        |ГДЕ
        |   КнигиУЧитателейОстатки.Книга = &Книга
        |   И КнигиУЧитателейОстатки.Читатель = &Читатель";
        Запрос.УстановитьПараметр("Книга",СтрокаТабличнойЧасти.Книга);
        Запрос.УстановитьПараметр("Читатель",Читатель);
        Результат = Запрос.Выполнить(); 
        ВыборкаИзЗапроса = Результат.Выбрать();
        Если ВыборкаИзЗапроса.Следующий() Тогда
            Если СтрокаТабличнойЧасти.Количество <= 0  Тогда
            Сообщить("Количество книг не может быть равно нулю");   
            Отказ = Истина; 
            КонецЕсли;
            Если СтрокаТабличнойЧасти.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда 
            Сообщить("Книга " + СтрокаТабличнойЧасти.Книга + " была выдана читателю " + Читатель.Наименование + " в количестве " + ВыборкаИзЗапроса.КоличествоОстаток); 
            Отказ = Истина;
            КонецЕсли;
            Если ТекущаяДата() > ВыборкаИзЗапроса.ДатаВозврата Тогда
                Предупреждение ("Текст"); 
            КонецЕсли;
        Иначе
        Сообщить("Книга " + СтрокаТабличнойЧасти.Книга + " не была выдана читателю " + Читатель.Наименование);
        Отказ = Истина;
    КонецЕсли;                  
    КонецЦикла;
КонецПроцедуры
Добавлено через 13 минут
Может есть другие способы? Там костыль какой нибудь?

Добавлено через 42 секунды
Может есть другой способ? Там костыль какой нибудь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2017, 15:04
Ответы с готовыми решениями:

Как вызвать функцию формы "Обработки" из "Общего модуля"?
В Обработке реализована некая функция. Как мне вызвать ее из Общего модуля? ...

Не получается вызвать процедуру из модуля объекта
Есть обычное приложение 1С. пишу внешнюю обработку, в модуле объекта указано...

Предупреждение в модуле объекта
Всем привет. Вот такая ситуация у меня. При проведении документа, при...

Для заданого 0<=n<=200.Расматриваемого как возраст человека,вывести фразу вида: "Мне 21 год", "Мне 32 года", "мне 12 лет".
МОЙ ВОЗРАСТ. Для заданого 0&lt;=n&lt;=200.Расматриваемого как возраст...

Как создать колонку "Цена" и "Количество" в справочнике номенклатура
Подскажите как создать колонку &quot;Цена&quot; и &quot;Количество&quot; в справочнике номенклатура?

5
Tklwegsd
Эксперт 1С
686 / 497 / 169
Регистрация: 24.07.2013
Сообщений: 1,762
07.01.2017, 17:57 #2
Диалоговые окна вызывай в форме, а не модуле объекта.
0
thedanilich
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 32
07.01.2017, 19:05  [ТС] #3
Цитата Сообщение от Tklwegsd Посмотреть сообщение
Диалоговые окна вызывай в форме, а не модуле объекта.
А пример можно пожалуйста?
0
Tklwegsd
Эксперт 1С
686 / 497 / 169
Регистрация: 24.07.2013
Сообщений: 1,762
07.01.2017, 20:16 #4
1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    
    Если ВыполняетсяУсловиеВыводаПредупреждения() Тогда
        Предупреждение("А-я-яй!");
    КонецЕсли;
    
КонецПроцедуры
0
thedanilich
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 32
08.01.2017, 00:06  [ТС] #5
Цитата Сообщение от Tklwegsd Посмотреть сообщение
1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
 
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    
    Если ВыполняетсяУсловиеВыводаПредупреждения() Тогда
        Предупреждение("А-я-яй!");
    КонецЕсли;
    
КонецПроцедуры
Если текущая дата больше даты выдачи книги то должно быть окно вывод, что дата выдачи книги просрочена. Дата выдачи берется из выборки запроса. Запрос же вроде бы только на сервере работает? Нет?
И есть ли возможность как-то вызвать клиентскую процедуру в серверной?

Добавлено через 2 часа 30 минут
Сделал
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
&НаКлиенте
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
     Текст = "";
     ПередЗаписьюОкончание(Текст);
        Если Текст <> "" Тогда
            Режим = РежимДиалогаВопрос.ДаНет;
            Ответ = Вопрос(Текст + " Продолжить?", Режим, 0);
            Если Ответ = КодВозвратаДиалога.Да Тогда
            Отказ = Ложь;
            ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
            Отказ = Истина;
        КонецЕсли;
        Иначе
        Отказ = Истина;
      КонецЕсли;
КонецПроцедуры
 
&НаСервере
Функция ПередЗаписьюОкончание(Текст)
    Для Каждого СтрокаТабличнойЧасти Из Объект.СписокКниг Цикл
        Запрос = Новый Запрос;
        Запрос.Текст = 
        "ВЫБРАТЬ
        |   КнигиУЧитателейОстатки.КоличествоОстаток,
        |   КнигиУЧитателейОстатки.ДатаВозврата
        |ИЗ
        |   РегистрНакопления.КнигиУЧитателей.Остатки( ) КАК КнигиУЧитателейОстатки
        |ГДЕ
        |   КнигиУЧитателейОстатки.Книга = &Книга
        |   И КнигиУЧитателейОстатки.Читатель = &Читатель";
        Запрос.УстановитьПараметр("Книга",СтрокаТабличнойЧасти.Книга);
        Запрос.УстановитьПараметр("Читатель",Объект.Читатель);
        Результат = Запрос.Выполнить();
        ВыборкаИзЗапроса = Результат.Выбрать();     
        Если ВыборкаИзЗапроса.Следующий() Тогда
            Если СтрокаТабличнойЧасти.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда 
            Сообщить("Книга " + СтрокаТабличнойЧасти.Книга + " была выдана читателю " + Объект.Читатель + " в количестве " + ВыборкаИзЗапроса.КоличествоОстаток);   
            Отказ = Истина;
            Возврат "";
            КонецЕсли;
            Если ТекущаяДата() > ВыборкаИзЗапроса.ДатаВозврата Тогда
            Текст = "Дата возврата книги " + СтрокаТабличнойЧасти.Книга + " просрочена читателем " + Объект.Читатель + ". (дата возврата "+ВыборкаИзЗапроса.ДатаВозврата+").";
            Возврат Текст;
            КонецЕсли;
        Иначе   
        Сообщить("Книга " + СтрокаТабличнойЧасти.Книга + " не была выдана читателю " + Объект.Читатель);
        Отказ = Истина;
        Возврат "";
        КонецЕсли;
        КонецЦикла;
КонецФункции
Все в Форме. В процедуре "перед записью", вызываю функцию, которая возвращает значение обратно, если он не пусто тогда вопрос, а если пусто то отказ. Кароче, кому надо, разберется =)
0
Tklwegsd
Эксперт 1С
686 / 497 / 169
Регистрация: 24.07.2013
Сообщений: 1,762
08.01.2017, 00:33 #6
Цитата Сообщение от thedanilich Посмотреть сообщение
И есть ли возможность как-то вызвать клиентскую процедуру в серверной?
Нет.
0
08.01.2017, 00:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2017, 00:33

1С 8.3 Розница 2.1.4.9 "Текущая цена розницы" и "Остаток" в форме элемента "Номенклатура"
Есть ли готовое решение, можно через внешнюю форму нужно контроль &quot;Текущая цена...

1С 8.2 Розница - "Текущая цена розницы", "Остаток" в форме элемента "Номенклатура"
Всем добрый день! Нужна помощь. В Форму элемента &quot;Номенклатура&quot; нужно...

БП 3.0. Ошибка "Поле объекта недоступно для записи"
Доброго времени суток. Я добавил в БП 3.0 свои роли. В документе...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru