Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 08:39

проверка на проведение документа

Автор GSerge, 14 июл 2015, 07:08

0 Пользователей и 1 гость просматривают эту тему.

GSerge

требуется сделать проверку Если документ проведен тогда выполнять что то...
но есть документы, как инвентаризация и у них, как я понял, нет понятия "проведен" и всегда выдает Ложь.
в этом случае должно быть Если документ записан тогда выполнять что то...
Если поставить проверку на записанный документ тогда те документы, которые могут быть проведены и не проведены тоже выполнят алгоритм. и толку от проведенного документа не будет.

Как выполнить проверку на возможность проведения?

тут есть возможность проведения документов
http://prntscr.com/7sfj0p

а тут нет(
http://prntscr.com/7sflpt

должно быть что нибудь такое:
Если можно провести документ тогда
    Если документ проведен тогда
        выполнить что то...
    КонецЕсли
Иначе
    Если документ записан тогда
        выполнить что то...
    КонецЕсли
КонецЕсли

P.S. 1с 8.3 Управление Торговлей 10.3

mixqn

Через метаданные. Отвечу подробнее позже с компьютера - приведу фрагмент кода. Со смарта проблематично это сделать

Отправлено с моего Nexus 5 через Tapatalk


mixqn

// допустим, Док - это ссылка
// пробуем получить объект: если док записан - получим объект, в противном случае - Неопределено
ДокОбъект = Док.ПолучитьОбъект();
МетаданныеДокумента = Док.Метаданные();
Если МетаданныеДокумента.Проведение = Проведение.Разрешить И Док.Проведен
ИЛИ МетаданныеДокумента.Проведение = Проведение.Запретить И ЗначениеЗаполнено(ДокОбъект) Тогда
// тут ваши действия
КонецЕсли;

GSerge

Цитата: mixqn от 14 июл 2015, 08:53
// допустим, Док - это ссылка
// пробуем получить объект: если док записан - получим объект, в противном случае - Неопределено
ДокОбъект = Док.ПолучитьОбъект();
МетаданныеДокумента = Док.Метаданные();
Если МетаданныеДокумента.Проведение = Проведение.Разрешить И Док.Проведен
ИЛИ МетаданныеДокумента.Проведение = Проведение.Запретить И ЗначениеЗаполнено(ДокОбъект) Тогда
// тут ваши действия
КонецЕсли;


Попробовал. Выдал ошибку: переменная не определена (Проведение)
где взять эту переменную?

mixqn

где ваш код выполняется? в тонком клиенте? на сервере надо

ЦитироватьПроведение (Posting)
Значения

Запретить (Deny)
Разрешить (Allow)

Описание:

Определяет возможность/невозможность проведения документа.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Добавлено: 14 июл 2015, 13:05


с другой стороны, у вас бы в другом месте ошибка тогда была... на строке ПолучитьОбъект()
или вы удалили ее?
Добавлено: 14 июл 2015, 13:05


собственно и Метаданные() тоже не работает в тонком клиенте...

может приведете полный текст ошибки? как-то странно...

GSerge

Цитировать
может приведете полный текст ошибки? как-то странно...

В общем я дорабатываю:
Процедура ПередЗаписьюДокументаПроверкаДоступностиПериода(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
в эту процедуру нужно вставить проверку.

и у меня нет сервера...

mixqn

полный текст ошибки я просил

GSerge

Цитата: mixqn от 14 июл 2015, 14:24
полный текст ошибки я просил

{ОбщийМодуль.НастройкаПравДоступа.Модуль(480,30)}: Переменная не определена (Проведение)
         Если ДокМета.Проведение = <<?>>Проведение.Разрешить и Источник.Проведен или ДокМета.Проведение = РежимПроведения.Запретить и ЗначениеЗаполнено(Источник) Тогда (Проверка: Толстый клиент (обычное приложение))

mixqn

Ёлки палки, ошибка там, видимо я при ctrtl+c - ctrl+v где-то ошибся. Замените на РежимПроведения

Отправлено с моего Nexus 5 через Tapatalk


GSerge

Цитата: mixqn от 14 июл 2015, 15:05
Ёлки палки, ошибка там, видимо я при ctrtl+c - ctrl+v где-то ошибся. Замените на РежимПроведения

Отправлено с моего Nexus 5 через Tapatalk

в конфигураторе ошибок нет, но в режиме предприятия при запуске этого кода ошибка:
http://prntscr.com/7sjhlh

Похожие темы (5)

Рейтинг@Mail.ru

Поиск