8.х Проведение документа

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Zalatuy, 18 окт 2013.

  1. TopicStarter Overlay
    Zalatuy
    Offline

    Zalatuy

    Регистрация:
    18 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1

    Итак,есть задача:

    1. Документы должны проводиться только программно.

    2. я сделал обработку, которая проводит документы.

    3. Проведение документов вызывается на сервере.

    4. В модуле объекта документа написал код,

    который запрещает проведение интерактивно.

    5. Тем не менее, при серверном вызове процедуры проведения

    программный код на клиенте вызывается.


    Вопрос: почему это происходит? Как надо было сделать?
  2. La Navidad
    Offline

    La Navidad Опытный в 1С

    Регистрация:
    25 дек 2012
    Сообщения:
    203
    Симпатии:
    1
    Баллы:
    26
    А посмотреть можно?
    ШТА?
  3. TopicStarter Overlay
    Zalatuy
    Offline

    Zalatuy

    Регистрация:
    18 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    #Если Клиент Тогда
    //Этот код должен срабатывать только на клиенте
    Предупреждение("Вы проводите данный документ интерактивно");
    Отказ = Истина;
    #КонецЕсли
    КонецПроцедуры
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    и еще код, вызывающий проведение на сервере (и где он расположен), а то, может, вы только думаете, что он на сервере выполняется?

    ну и база случайно не файловая?
  5. TopicStarter Overlay
    Zalatuy
    Offline

    Zalatuy

    Регистрация:
    18 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    &НаСервере
    Процедура ПровестиРеализацииНаСервере() Экспорт

    //Этот код вызывается только на сервере
    Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
    Пока Выборка.Следующий() Цикл
    ОбъектДокумента = Выборка.ПолучитьОбъект();
    ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);;
    КонецЦикла;

    КонецПроцедуры


    Это код в обработке,предыдущий в документе.

    Как проверить какая база?))
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Проведение всегда происходит на сервере, т.к. это чтение и запись. Клиенту отображаются только данные.
  7. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    попробуйте провести документ в неуправляемых формах - удивитесь :)

    если в подключении к базе указан путь к папке на диске - она файловая
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    А вы понимаете суть работы вообще клиент-серверного ПО? Даже если не установлен сервер 1С, а база файловая, в 8.2 идет все-равно разделение выполнения кода - на сервере и клиенте.
    Тут сервер и клиент не нужно понимать буквально, что сервер - это СЕРВЕР, а клиент - это КЛИЕНТ. Не нужно путать:)
    Данная технология появилась в 8.2
    И к тому же, если не обозначена деректива &НаСервере, то совсем не означает, что код выполняется на клиенте.
  9. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Еу, аккуратнее, здесь есть подвох ;)
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Буду рад вас выслушать :)
  11. TopicStarter Overlay
    Zalatuy
    Offline

    Zalatuy

    Регистрация:
    18 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Путь есть..значит файловая. Вообщем нужно чтобы документы проводились программно.
  12. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    выслушивать не надо, я вам прямо показал вариант, когда это разделение не выполняется - проведение документа в неуправляемой форме

    также если вы запустите проведение документа в управляемых формах в толстом клиенте - проведение будет выполняться на клиенте

    прицепленную базу попробуйте запустить в толстом и тонком клиентах

    с файловой базой есть проблемы - если запущен толстый клиент - то все выполнится на клиенте. тут нужны другие методы, а не #Если клиент. Как вариант - попробовать в форме документа в ДополнительныеСвойства что-нибудь подсовывать и проверять это что-нибудь при проведении

    Вложения:

    • 1Cv8.zip
      Размер файла:
      11,3 КБ
      Просмотров:
      3
  13. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    в синтаксис помощнике набираем "#Если" и читаем
  14. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Далее не имеет смысла вам что-то доказывать.
  15. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    мне не надо доказывать - я это вижу :)
    еще раз - к предыдущему посту я прицепил базу-пример, там всего один документ, обработка проведения которого в блоке #Если Клиент вызывает предупреждение. конфигурация с управляемыми формами, чтобы не было вопросов :). Запустите ее в тонком клиенте и в толстом - увидите разницу.

Поделиться этой страницей