Как Запретить Проведение Документа?

  • Автор темы chelseadrogba
  • Дата начала
C

chelseadrogba

Гость
#1
Есть Документ ВводНачальныхОстатков, который позволяет вносить нач. остатки в регистр накопления вручную. Есть также документ КассовыйЧек. Необходимо запретить проведение документа КассовыйЧек, если дата проведения его раньше даты документа ВВодНачальныхОстатков. Надеюсь поняли, что я имею ввиду..
 

Allexei

Well-Known Member
02.05.2008
322
1
#2
Используйте подписку на событие. Объек - ваш чек, событие Обработка проведения
 
C

chelseadrogba

Гость
#3
а с кодом не посоветуете как быть?
 

Allexei

Well-Known Member
02.05.2008
322
1
#4
Как то так
Код:
Процедура ПодпискаНаСобытие1ОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
Если Источник.Дата< "Здесь ваша дата" Тогда
Отказ = Истина;
КонецЕсли;

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

chelseadrogba

Гость
#5
я бы отправил сюда то, что сам написал, но думаю, что вы будете смеяться
 

Allexei

Well-Known Member
02.05.2008
322
1
#6
Попытки разобраться в задаче самостоятельно не могут быть смешными. Смешно когда просят за просто так сделать что то серьезное при этом ни приложив со своей стороны усилий. Выкладывайте, покритикуем.
 
C

chelseadrogba

Гость
#7
Хорошо сказано. Источником у меня является Документ КассовыйЧек, а как получить дату Документа ВводНачальныхОстатков? Запросом?
 

Allexei

Well-Known Member
02.05.2008
322
1
#8
Да.Выбираете запросом 1 дату документа с условием сортировки даты по возрастанию.
 
C

chelseadrogba

Гость
#9
я только как недели две начал изучать программирование на 1с
 
C

chelseadrogba

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

Если Источник.Дата < Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Нельзя проводить";
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

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

unknown181538

НеГуру
28.12.2008
1 417
0
#11
Если Выборка.Следующий() Тогда
Если Источник.Дата <Выборка.Дата Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Нельзя проводить";
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
КонецЕсли;

Только уточните, с каким из документов надо сравнивать? Документа ввода остатков разными датами введены или он один вообще?


Кстати, если конфигурация типовая, рекоменюую обратить внимание на процедуру ОбщегоНазначенияКлиентСервер.СообщитьПользователю()
 
C

chelseadrogba

Гость
#12
вроде как один

Добавлено: мне нужно, если запись в документе ВводНачальныхОстатков, например, 8.08.2012, тогда проводить документ КассовыйЧек раньше чем 8 число нельзя, а позже можно, хоть на секунду позже
 
C

chelseadrogba

Гость
#13
вроде получилось так как я хотел, спасибо большое за совет. Очень выручили.
 
C

chelseadrogba

Гость
#14
не подскажете? как получить последнюю запись из регистра? запросом или же как - нибудь по другому?

Добавлено: Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| <записи регистра>
|ИЗ
| <из регистра накопления>
|УПОРЯДОЧИТЬ ПО
| Период УБЫВ";

также можно? как думаете?
 
C

chelseadrogba

Гость
#16
а какой источник посоветуете для изучения программирования на 1С?
 
C

chelseadrogba

Гость
#17
а не подскажете? У меня в регистре накопления содержится измерение Касса, мне необходимо для соответствующей кассы получить последнюю запись? как это будет выглядеть? вложенный запрос или как?