Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Вопрос по месту выполнения процедур          
x25 Подменю пользователя
сообщение 12.02.14, 10:41
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день, коллегам по 1с.
Решил написать вопрос и результат анализа по теме место выполнения процедур и функций , директив 1с.
Имеем: 1С УПП 1.3.49
Документ: ТабельРабочегоВремени.
В обработке проведения ОбработкаПроведения() есть запуск процедуры ПроведениеПоРегиструРасчета(ВыборкаПоШапкеДокумента)
Эта же процедура заполняет данные вот тут
ВыборкаПериодыПропусков = СформироватьЗапросДляРегистраРасчета(ВыборкаПоШапкеДокумента).Выбрать();

Я хотел попробовать эту процедуру СформироватьЗапросДляРегистраРасчета() перевести для выполнения на сервер.
Там запрос к данным БД.

Но ,вот что в итоге получаю:

Создаю ОбщийМодуль MyUnit, устанавливаю у него свойства Сервер, Вызов Сервера. Переношу туда процедуру с запросом+ необходимые переменные передаю ей.

Пытаюсь вызвать эту процедуру: Ошибка, процедура не найдена. Причина: Если модуль чисто серверный, то он не будет скомпилирован на клиенте, и тогда мы не можем его вызывать.

Ставлю свойство клиентского приложения у модуля. В итоге получается , что мы опять же на клиентском уровне работаем.
Используя #Если СерверТогда .. #КонецЕсли
Пытаюсь перевести выполнение на сервер, но получаю ошибку того ,что текст всей процедуры или её части заключенный в эту конструкцию не виден при таком запуске.

В ходе чтения различной литературы ознакомился с этим материалами:
http://pro1c.org.ua/index.php?showtopic=4041
[необходимо зарегистрироваться для просмотра ссылки]
[необходимо зарегистрироваться для просмотра ссылки]

И получается вывод, что при проведении документа, который открывается на клиенте невозможно вызвать процедуру скомпилированную на сервере.

Хотелось бы услышать мнение других специалистов, вдруг найдется ошибка в моих умозаключениях.
Приятного дня всем.


 ! 

Правила, п.5
 


Сообщение отредактировал logist - 12.02.14, 12:00

alex040269 Подменю пользователя
сообщение 12.02.14, 11:40
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(x25 @ 12.02.14, 10:41) *
вдруг найдется ошибка в моих умозаключениях.

ошибка таки есть! что бы ее найти нужны точные сообщения 1С + режим в каком 1С выдает эти сообщения (Конфигуратор,Предприятие).


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

logist Подменю пользователя
сообщение 12.02.14, 12:03
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(x25 @ 12.02.14, 11:41) *
Ошибка, процедура не найдена.

Может вопрос глупый, но у вас в конце названия процедуры и параметров указано "Экспорт"?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

x25 Подменю пользователя
сообщение 12.02.14, 12:25
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(alex040269 @ 12.02.14, 12:40) *
ошибка таки есть! что бы ее найти нужны точные сообщения 1С + режим в каком 1С выдает эти сообщения (Конфигуратор,Предприятие).

Хм, сейчас попробовал ещё раз выполнить свои манипуляции (модуль с директивой на сервере, и этой процедурой ) и получил вот такую ошибку:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра.
Сейчас попробую решить этот вопрос.

x25 Подменю пользователя
сообщение 12.02.14, 14:40
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

На текущий момент, передача процедуры на выполнение на сервере получилось.
Вот сравнение до и после:

В этой процедуре, которую я изменял, изменения небольшие, как и следовало ожидать процедура с запросом, будет передаваться на сервер и там выполняться, поэтому разница небольшая.

А вот проведение документа при количестве человек больше 50 человек выявило самое больное место в проведении этого документа :



Что по коду там от 1С

    НаборГрафикиРаботыПоВидамВремени = РегистрыСведений.ГрафикиРаботыПоВидамВремени.СоздатьНаборЗаписей();
                    
    НаборГрафикиРаботыПоВидамВремени.Отбор.Месяц.Установить(ВыборкаПоШапкеДокумента.ПериодРегистрации);
        НаборГрафикиРаботыПоВидамВремени.Отбор.План.Установить(Ложь);

    НаборГрафикиРаботыПоВидамВремени.Отбор.ГрафикРаботы.Установить(ВыборкаПоОтработанноеВремя.Сотрудник);
    СтруктураПоиска.Вставить("ГрафикРаботы", ВыборкаПоОтработанноеВремя.Сотрудник);
    НаборГрафикиРаботыПоВидамВремени.Прочитать();
    ТаблицаНабора = НаборГрафикиРаботыПоВидамВремени.Выгрузить();

        Движение = ТаблицаНабора.Добавить();
        Движение.ГрафикРаботы = ВыборкаПоОтработанноеВремя.Сотрудник;
            Движение.ВидУчетаВремени = ВидУчетаВремениПоЧасам;
        Движение.Дата = ДатаМесяца;
            Движение.Месяц = ВыборкаПоШапкеДокумента.ПериодРегистрации;
            Движение.План = Ложь;
            Движение.Документ = ПустойДокумент;

        НаборГрафикиРаботыПоВидамВремени.Загрузить(ТаблицаНабора);
        НаборГрафикиРаботыПоВидамВремени.Записать();



НаборЗаписей заполняется путем загрузки, что оптимально , но занимает много времени по причине большого количества записей.
И запись в регитстр записей тоже затрагивает много времени.


PS Согласен с пунктам 5 правил, исправлюсь.

Сообщение отредактировал Vofka - 12.02.14, 15:07

Vofka Подменю пользователя
сообщение 12.02.14, 15:06
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1

Цитата(x25 @ 12.02.14, 14:40) *
На текущий момент, передача процедуры на выполнение на сервере получилось.

Так и в чем была ошибка?

x25 Подменю пользователя
сообщение 13.02.14, 7:41
Сообщение #7

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 12.02.14, 15:06) *
Так и в чем была ошибка?

Модуль был с параметрами и сервер и клиент, я также пытался использовать директиву #Если Сервер
В этом случае, он при запуске толстого клиента, этот текст не компилировался и соотвественно вызывали ошибку, мы находились в контексте клиентского приложения и тд.

Решение: У модуля, должен быть указано только признак Сервер и ВызовСервера. Вызов процедуры допустим из такого модуля.
А ошибка ,что я не мог вызвать процедуру из этого модуля, вероятно была допущена синтаксическая ошибка в названии модуля.


Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.06.25, 21:35
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!