Форум программистов, компьютерный форум CyberForum.ru

1С: Собственные программы

Войти
Регистрация
Восстановить пароль
 
thedanilich
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 32
#1

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

07.01.2017, 15:04. Просмотров 221. Ответов 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 секунды
Может есть другой способ? Там костыль какой нибудь?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2017, 15:04     Как вызвать процедуру "Предупреждение()" в модуле объекта?
Посмотрите здесь:

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

1C 8.x БП 3.0. Ошибка "Поле объекта недоступно для записи" - 1С
Доброго времени суток. Я добавил в БП 3.0 свои роли. В документе РеализацияТоваровУслуг (в моей роли для него установлены все права)...

1C 8.x (тонкий) Ошибка печати "Метод объекта не обнаружен" - 1С
Здравствуйте. Помогите решить проблему. При нажатии на печать сметы выдает ошибку {Документ.Смета.Команда.ПечатьСметы.МодульКоманды(18)}:...

1C 8.x Как программно обратиться к процедуре в модуле формы полученного объекта? - 1С
Доброго всем. 1С Бухгалтерия 8.2. Есть документ &quot;Отчет производства за смену&quot;. На вкладке &quot;Материалы&quot; есть кнопка &quot;Заполнить&quot;. При...

Заполнение автоматически перед записью в модуле объекта - 1С
Даны справочники: • Физические лица • Кошельки • Статьи затрат ( постоянные; переменные) • Статьи доходов постоянные; переменные)...

1C 8.x Как отобразить Дни рождения в "Мои задачи"? - 1С
Здравствуйте. Такая задача: нужно чтобы в &quot;Мои задачи&quot; отображалось напоминание о дне рождении сотрудника (желательно за день-два до). Как...

1C 8.x Как сбросить Com "Excell", чтоб не висел в таскманагере - 1С
Подскажите почему остается висеть процесс, в конце как я понимаю у меня закрывается, но висеть все равно остается Книга.Close(); ...

1C 8.x Как правильно разделить физические и юридические лица в справочнике "Клиенты" - 1С
Доброго времени суток. Не знаю как правильней организовать структуру справочника &quot;Клиенты&quot;. Клиентом может быть как физ. лицо, так и юр....

Как получить значение элемента из "ОткрытьПодбор"? - 1С
Добрый день Открываю подбор значений ОткрытьПодбор(&quot;Справочник.Операции&quot;,&quot;СписокЗначений&quot;,,0,); Разъясните пожалуйста,...

8.2 Как "освежить" журнал документов? - 1С
Конфигурация своя. Общий журнал документов и журналы по видам документов (форма автоматическая) - до следующего перезапуска пользователь не...

1C 8.x (тонкий) 1c 8.2 как "прочитать" с формы элемент? - 1С
Подскажите пожалуйста как заполнить всю(или выделенные строки) табличную часть документа выбранным элементом справочника? Сама задача: во...

Вызвать процедуру ПриИзменении, для изменяемого реквизита в тч из внешней обработки - 1С
Заполняю обработкой ТЧ. Реквизиты заполняются, но ПриЗименении() Номенклатуры не срабатывает. Конфигурация типовая и изменения в ней нельзя...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tklwegsd
514 / 361 / 124
Регистрация: 24.07.2013
Сообщений: 1,309
07.01.2017, 17:57     Как вызвать процедуру "Предупреждение()" в модуле объекта? #2
Диалоговые окна вызывай в форме, а не модуле объекта.
thedanilich
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 32
07.01.2017, 19:05  [ТС]     Как вызвать процедуру "Предупреждение()" в модуле объекта? #3
Цитата Сообщение от Tklwegsd Посмотреть сообщение
Диалоговые окна вызывай в форме, а не модуле объекта.
А пример можно пожалуйста?
Tklwegsd
514 / 361 / 124
Регистрация: 24.07.2013
Сообщений: 1,309
07.01.2017, 20:16     Как вызвать процедуру "Предупреждение()" в модуле объекта? #4
1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    
    Если ВыполняетсяУсловиеВыводаПредупреждения() Тогда
        Предупреждение("А-я-яй!");
    КонецЕсли;
    
КонецПроцедуры
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);
            Если Ответ = КодВозвратаДиалога.Да Тогда
            Отказ = Ложь;
            ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
            Отказ = Истина;
        КонецЕсли;
        Иначе
        Отказ = Истина;
      КонецЕсли;
КонецПроцедуры
 
&НаСервере
Функция ПередЗаписьюОкончание(Текст)
    Для Каждого СтрокаТабличнойЧасти Из Объект.СписокКниг Цикл
        Запрос = Новый Запрос;
        Запрос.Текст = 
        "ВЫБРАТЬ
        |   КнигиУЧитателейОстатки.КоличествоОстаток,
        |   КнигиУЧитателейОстатки.ДатаВозврата
        |ИЗ
        |   РегистрНакопления.КнигиУЧитателей.Остатки( ) КАК КнигиУЧитателейОстатки
        |ГДЕ
        |   КнигиУЧитателейОстатки.Книга = &Книга
        |   И КнигиУЧитателейОстатки.Читатель = &Читатель";
        Запрос.УстановитьПараметр("Книга",СтрокаТабличнойЧасти.Книга);
        Запрос.УстановитьПараметр("Читатель",Объект.Читатель);
        Результат = Запрос.Выполнить();
        ВыборкаИзЗапроса = Результат.Выбрать();     
        Если ВыборкаИзЗапроса.Следующий() Тогда
            Если СтрокаТабличнойЧасти.Количество > ВыборкаИзЗапроса.КоличествоОстаток Тогда 
            Сообщить("Книга " + СтрокаТабличнойЧасти.Книга + " была выдана читателю " + Объект.Читатель + " в количестве " + ВыборкаИзЗапроса.КоличествоОстаток);   
            Отказ = Истина;
            Возврат "";
            КонецЕсли;
            Если ТекущаяДата() > ВыборкаИзЗапроса.ДатаВозврата Тогда
            Текст = "Дата возврата книги " + СтрокаТабличнойЧасти.Книга + " просрочена читателем " + Объект.Читатель + ". (дата возврата "+ВыборкаИзЗапроса.ДатаВозврата+").";
            Возврат Текст;
            КонецЕсли;
        Иначе   
        Сообщить("Книга " + СтрокаТабличнойЧасти.Книга + " не была выдана читателю " + Объект.Читатель);
        Отказ = Истина;
        Возврат "";
        КонецЕсли;
        КонецЦикла;
КонецФункции
Все в Форме. В процедуре "перед записью", вызываю функцию, которая возвращает значение обратно, если он не пусто тогда вопрос, а если пусто то отказ. Кароче, кому надо, разберется =)
Tklwegsd
514 / 361 / 124
Регистрация: 24.07.2013
Сообщений: 1,309
08.01.2017, 00:33     Как вызвать процедуру "Предупреждение()" в модуле объекта? #6
Цитата Сообщение от thedanilich Посмотреть сообщение
И есть ли возможность как-то вызвать клиентскую процедуру в серверной?
Нет.
Yandex
Объявления
08.01.2017, 00:33     Как вызвать процедуру "Предупреждение()" в модуле объекта?
Ответ Создать тему
Опции темы

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