1с проверить наличие документа

Обновлено: 05.07.2024

Всем привет. Скажу сразу, я совсем новенький, так что сразу извиняюсь, если где-то сильно тупить буду. Прошу у вас помощи вот с таким заданием: есть пустая база,с одним документом, создано в целях тренировки, мне необходимо создать механизм проверки документов с тремя статусами, "Проверен", "Не проверен" и "На повторной проверке", которые берутся из перечисления.
Так же создан регистр сведений, в котором есть Измерение с ссылкой на документ, ресурсом "Статус", тип у которого ссылка на перечисление и реквизитами "Проверен"( ссылка на справочник Пользователи), Дата Проверки ( Тип "Дата"), Изменил( справочник.Пользователи) и Дата Изменения( Дата). Суть в том, что пользователь проверяет документ, нажимает на кнопку проверки и должна идти запись в регистр с правильным статусом, т.е. от проведения документа не зависит.
Только созданный документ попадает в регистр со статусом "Не проверен", при нажатии на кнопку должен быть статус "Проверен", а после ее снятия статус "К повторной проверке"
У меня было сделано так, что было 2 статуса проверки "Проверен" и "Не проверен", записи шли, но после проведения документа. Сейчас же появилось третье значение измерения "К повторной проверке"( После снятия кнопки, ставится этот статус) и задача записывать этот статус сразу после нажатия на кнопку, а не после проведения документа. Буду очень признателен, если кто поможет!

Код скидываю ниже:

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

Запись.Документ = Документ;
Запись.СтатусПроверки = СтатусПроверки;
ТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнф ормационнойБазы.ТекущийПользователь().Имя);
Запись.Проверил = ТекущийПользователь;
Запись.ДатаПроверки = ТекущаяДатаСеанса();
//ЭтоИзменениеДокумента =
//Если ЭтоИзменениеДокумента Тогда
Запись.Изменил = ТекущийПользователь;
Запись.ДатаИзменения = ТекущаяДатаСеанса();
//КонецЕсли;

&НаКлиенте
Процедура ИзменениеСтатусаПроверкиДокумента(Команда)

Если ЭтаФорма.СтатусДокумента = Истина Тогда //обработчик событий кнопки
ЭтаФорма.СтатусДокумента = Ложь ;
ИначеЕсли ЭтаФорма.СтатусДокумента = Ложь Тогда
ЭтаФорма.СтатусДокумента = Истина ;
КонецЕсли;

ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = ЭтаФорма.СтатусДокумента; //Показываем состояние кнопки на декорации форм
Если ЭтаФорма.СтатусДокумента = Истина Тогда
ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + " Нажата";
ИначеЕсли ЭтаФорма.СтатусДокумента = Ложь Тогда
ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + "Не нажата";
КонецЕсли;

//Делаем кнопку нажатой и не нажатой
Элементы.ИзменениеСтатусаПроверкиДокумента.Пометка = НЕ Элементы.ИзменениеСтатусаПроверкиДокумента.Пометка
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//в обработчике ПередЗаписьюНаСервере в параметре ТекущийОбъект
//находится сам прикладной объект, а не данные формы.
//Соответственно доступны и ДополнительныеСвойства и
//экспортная переменная модуля объекта
ТекущийОбъект.ДополнительныеСвойства.Вставить("СтатусДокумен та",СтатусДокумента);

&НаСервере
Функция ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Экспорт

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЛП_СтатусыПроверкиДокументов.СтатусПроверки КАК СтатусПроверки
|ИЗ
| РегистрСведений.ЛП_СтатусыПроверкиДокументов КАК ЛП_СтатусыПроверкиДокументов
|ГДЕ
| ЛП_СтатусыПроверкиДокументов.Документ = &Документ";

РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Ложь;
КонецЕсли;

Если ВыборкаДетальныеЗаписи.СтатусПроверки = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен Тогда
Возврат Ложь;
Иначе
Возврат Истина;

При разработке частенько нужно проверить наличие реквизита в документе или справочнике.

Ниже приведены функции позволяющие проверить наличие заданных реквизитов в объектах конфигурации:

Разместил: EMigachev  Версии: | 8.x | 8.2 УП | 8.3 |  Дата: 06.07.2015   Прочитано: 56587

Распечатать

Похожие FAQ

17 правил для составления оптимального ЗАПРОСа к данным базы 1С  42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1С Предприятие что это?  11
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое COM-подключение к базе 7.7 из 8.2 1С  6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь= Cклонения по падежам  6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ; Google maps, поиск оптимального маршрута  5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне Посмотреть все результаты поиска похожих

Еще в этой же категории

Как программно получить Картинку из базы и сохранить ее преобразовав в другой формат?  4
//Получим и сохраним Общую картинку из библиотеку картинок конфигурации ИмяКартинки = Метаданные.ОбщиеКартинки.OutlookExpress; ВыбраннаяКартинка = БиблиотекаКартинок ; // Сохраним полученную картинку в c:temp ВыбраннаяКартинка.Записать(" c:te Получить список Справочников конфигурации  1
НаКлиенте Процедура ПоКнопкеЧтениеИзМетаданных(Команда) // Вставить содержимое обработчика. Перем СписокСправочников; СписокСправочников = Новый СписокЗначений; СписокСправочников = СправочникиИзМетаданных(); Для Сч = 0 По СписокСправочников Получить список Документов конфигурации  0
//ЭлементыФормы.ОбъектПоиска - Поле Выбора на форме СписокВыбора = ЭлементыФормы.ОбъектПоиска.СписокВыбора; Для Каждого Документ Из Метаданные.Документы Цикл //Проверим, есть ли права на просмотр? Да- добавляем, Нет - пропускаем Если ПравоДосту Перебор Основных Реквизитов формы  0
//Перебор Основных Реквизитов формы Для Каждого Рек из ЭтаФорма.Метаданные().Реквизиты Цикл Сообщить(рек.Имя+" - " +рек.Синоним+" - " +Строка(рек.Тип)); КонецЦикла; // или так Для Каждого Рек из Метаданные().Реквизиты Цикл Сообщить(рек.Имя+" Пример обращения к метаданным  0
спрНомен = Метаданные.Справочники.Номенклатура; Сообщить(" Имя справочника " " " + спрНомен.Имя + " " " " ); Сообщить(" Комментарий " + спрНомен.Комментарий); Сообщить(" ВидИерархии " + спрНомен.ВидИерархии); Сообщить(" КоличествоУровней " + Посмотреть все в категории Метаданные

Как сравнить "этот" документ и документ Док
В модуле формы документа делаем вот такой код Док=СоздатьОбъект("Документ.РасчетНалоговПолн");.


Как сделать, что бы документ не мог быть проведен дважды?
Народ, что не правильно, нужно сделать, чтобы документ не проводился дважды. То есть, если он.

Проверить документ на тип
Добрый день, такой вопрос, вот в зависимости от типа документа из запроса, выполняется условие, но.

Проверить открыт ли документ другим пользователем
Доброго времени суток всем. Вопрос: Можно ли как то узнать что на текущий момент у кого то.

1. См. метод Проведен()
2. Нужно, если не находишься в форме документа

9AAAA, зачем ты собираешь у людей аску, вместо того чтобы учить мат.часть?
ЖКК имеешь? если нет - есть в топах тема для начинающих

P/S твоя проверка элементарена

главное чтобы переменная Реализация уже несла в себе ссылку на документ, собственно то о чем говорил vbs

Добавлено: И надо ли после того как создал, но еще не проверил проведен ли документ искать нужный документ. Если да, то как?

Добавлено: И надо ли после того как создал, но еще не проверил проведен ли документ искать нужный документ. Если да, то как?

ЖКК - Желто-красные книги, т.е. документация!
Создал кого? Если документ создал только - то он естественно будет не проведен И надо ли после того как создал, но еще не проверил проведен ли документ искать нужный документ. Если да, то как?

Док = СоздатьОбъект("Документ.Реализация"); // если под "создал" имелось в виду это, то
Док.НайтиДокумент(НужныйДокумент); // да, надо спозиционироваться на нужный документ

//в данном случае НужныйДокумент - это реквизит или переменная со значением типа Документ,
//но можно искать по номеру, например:

или ещё как-то. Ну а затем проверить, например,

Если Док.Проведен()=1 Тогда
Сообщить("Однако, документ проведен");
КонецЕсли;

P.S. И присоединяюсь к уже высказанному пожеланию читать ЖКК, а также тексты программ типовых конфигураций.

ЖКК для семерки нет, есть для восьмерки, пробовал читать, не помогает, слишком много слов, совершенно нет кода. Мисту уже облазил, хороший сайт.
А в синтаксис помощнике не судьба посмотреть.
alxrie Спасибо за помощь ЖКК для семерки нет, есть для восьмерки, пробовал читать, не помогает, слишком много слов

За неимением простой пытаемся писать на гербовой ?

ЖКК для семерки нет, есть для восьмерки, пробовал читать, не помогает

"ЖКК для 7-ки" - где-то в Сети пробегал. Так что найти при желании можно.

У меня есть документы типа реализация, некоторые проведены, некоторые нет. Нужно ли использовать метод НайтиДокумент или НайтиПоНомеру или достаточно просто создать объект путем ДокРеал=СоздатьОбъект (Документ.Реализация) Если ДокРеал.Проведен=1 тогда далее мой текст кода

Что такое "есть документы"? Откуда они "есть"? Постарайся описать задачу по-человечески - тогда и получишь ответ.

Возможно, ты перебираешь документы за период. Тогда так:

Док = СоздатьОбъект("Документ.Реализация");
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Проведен()=1 Тогда
Сообщить("Реализация № "+Док.НомерДок+" от "+Док.ДатаДок+" проведена");
Иначе
Сообщить("А вот реализацию № "+Док.НомерДок+" от "+Док.ДатаДок+" - провести забыли (забили?)");
КонецЕсли;
КонецЦикла;

Возможно, у тебя совсем другая задача.

Что такое "есть документы"? Откуда они "есть"? Постарайся описать задачу по-человечески - тогда и получишь ответ.

Возможно, ты перебираешь документы за период. Тогда так:

Док = СоздатьОбъект("Документ.Реализация");
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Проведен()=1 Тогда
Сообщить("Реализация № "+Док.НомерДок+" от "+Док.ДатаДок+" проведена");
Иначе
Сообщить("А вот реализацию № "+Док.НомерДок+" от "+Док.ДатаДок+" - провести забыли (забили?)");
КонецЕсли;
КонецЦикла;

Возможно, у тебя совсем другая задача.

Контроль наличия оригиналов документов в 1С

Чаще всего эта галочка расположена в шапке документа и видна пользователю, например в таких документах:

  • «Поступление (Акты, накладные, УПД)»;
  • «Поступление доп. расходов»;
  • «Поступление основных средств»;
  • «Приобретение земельных участков».

наличие оригиналов документов в 1С

Так же есть документы, в которых галочка «Оригинал» находится на закладке «Дополнительно».

  • «Поступление оборудования;
  • «Поступление Материалы в переработку»;
  • «Поступление: Объекты строительства».

Скриншот 1С - 2

Важно! Отметку можно установить даже в том случае, если период закрыт, для этого не обязательно перепроводить документ.

Как установить отметку, не перепроводя документ (в закрытом периоде)

  • Открыть нужный нам журнал.
  • Выделить нужный документ.
  • Нажав правую кнопку мыши, вызвать контекстное меню.
  • Выбрать строку «Оригинал».
  • В открывшемся подменю выбрать строку «Оригинал получен».

Скриншот 1С - 3

Появилась отметка «Оригинал», при этом документ не перепроводился.

Скриншот 1С - 4

Те же действия можно повторить для того, чтобы проставить отметку «СФ оригинал получен».

Скриншот 1С - 5

Чек-листы и памятки для бухгалтера - бесплатно

Как вывести реестр документов, не имеющих отметку о наличии оригиналов документов

  • Открыть нужный нам журнал
  • Нажать кнопку «Печать»
  • Выбрать строку «Реестр документов»

Скриншот 1С - 6

  • Выбрать нужный период
  • Нажать кнопку «Показать настройки»

Скриншот 1С - 7

  • Открыть закладку «Оформление»
  • Отметить пункт «Оригинал»

Скриншот 1С - 8

Скриншот 1С - 9

Если необходимо вывести документы, по которым нет оригиналов.

  • Нажать кнопку «Показать настройки»
  • Открыть закладку «Отбор»
  • Нажать кнопку «Добавить»
  • В открывшемся окне выбрать поле «Оригинал»

Скриншот 1С - 10

Скриншот 1С - 11

Теперь реестр содержит только те документы, которые не имеют оригинала. При необходимости его можно распечатать или сохранить для отправки в электронном виде.

Скриншот 1С - 12

Аналогичным способом можно вывести список всех документов или документов, по которым есть оригиналы документов.

Обратите внимание! Для того, чтобы проверить наличие подписанных покупателями (заказчиками) документов нужно произвести все те же действия, в журнале «Реализация (Акты, накладные, УПД)», только отметка будет называться «Документ подписан».

Читайте также: