Имя: Пароль:
1C
 
Помогите с процедурой
0 V1rus93
 
02.07.19
19:08
Как из глобального модуля вызвать процедуру которая находится в форме документа? В Процедуре "ПриНачалеРаботыСистемы" хочу вызвать процедуру в которой находится запрос на проверку документа. Надо чтобы при запуске интерфейса программа проверяла существует ли документ через процедуру в форме документа
1 MyNick
 
02.07.19
19:18
Задача то как изначально звучит?
2 Фрэнки
 
02.07.19
19:22
а вообще, это процедура экспортная в модуле менеджера объекта. Там наваять все, что необходимо в контексте серверных вызовов.

В форме документа - не комильфо
3 V1rus93
 
02.07.19
19:29
(1) Есть документ "ТабельСмены" (форма документа, форма списка). При запуске "ИнтерфейсаКассира" выводится "ТабельСмены" форма документа, чтобы кассир зарегистрировался в системе. В "ТабелеСмены" форме списка создается документ с реквизитим "Сотрудник" "Должность" "Оклад" "Склад" "Дата". Я сделал запрос и поставил запрет на дублирование по дате и складу в "ТабелеСмены". Если "ИнтерфейсКассира" запускается первый раз, то кассир просто регистрируется и работает. Вдруг что-то случается и например свет выключается. Снова включается система и вот надо чтобы система проверила если документ "ТабельСмены" уже сегодня был регистрирован подтянуть этот документ в "ИнтерфейсКассира" в заголовок
4 V1rus93
 
02.07.19
19:30
(2) Да я знаю, что лучше в модуле самого документа, но мне это не удобно. Поэтому и спрашиваю, как поступить в этом случае
5 Фрэнки
 
02.07.19
19:33
(4) Не. Не в модуле документа. В модуле менеджера. Это очень удобно.
Почему у тебя такое предубеждение к модулю менеджера?
6 Фрэнки
 
02.07.19
19:34
(4) Ты же понимаешь, что воспользоваться процедурой из модуля формы получится не раньше, чем при создании этой формы на сервере?
7 V1rus93
 
02.07.19
19:38
(6) Я пока начинающий в 1с и ещё не знаю всех тонкостей. Был бы рад помощи. Вот код процедуры.

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Экспорт    
    Запрос = Новый Запрос;
    Запрос.Текст =     
    "ВЫБРАТЬ
    |    ТабельСмены.Дата,
    |    ТабельСмены.Склад
    |ИЗ
    |    Документ.ТабельСмены КАК ТабельСмены
    |ГДЕ
    |    ТабельСмены.Дата МЕЖДУ &НачалоДня И &КонецДня
    |    И ТабельСмены.Склад = &Склад";
    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(Дата));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(Дата));      
    //Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
    Запрос.УстановитьПараметр("Склад", Склад);
    Результат = Запрос.Выполнить();        
    
    Если Не Результат.Пустой() Тогда
        Отказ = Истина;
        //ЭтаФорма.Модифицированность=Ложь;
        //ЭтаФорма.Закрыть();
    ИначеЕсли Результат.Пустой() Тогда
        Документы.ТабельСмены.СоздатьДокумент()
    КонецЕсли;

КонецПроцедуры
8 Фрэнки
 
02.07.19
19:38
(3) угу. Именно сервисные процедуры и функции проверок с запросиками - это именно то, что должно быть именно в модуле менеджера, который доступен в контексте сам по себе и без вызова процедуры Новый() или ПолучитьФорму() Открыть() и т.д. и т.п.
9 V1rus93
 
02.07.19
19:39
(8) А как правильно её разместить в модуле менеджера? А то уже ругается на все переменные ((
10 Фрэнки
 
02.07.19
19:51
Все переменные извне надо параметрами инициализировать...

Возврат ДокументОбъект

Там где стоит Отказ = Истина , там должен быть Возврат , который ПолучитьОбъект из ссылки выборки запроса.

Но вообще... ПриНачалеРаботыСистемы по итогу должна на своем завершении в любом случае открыть форму ИнтерфейсаКассира

И можно там же в той форме написать любой количество процедур, но сделать их контекстах Сервера и Клиента
11 V1rus93
 
02.07.19
19:53
(10) Я понял ! Спасибо, буду пробовать.