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

Тема в разделе "1C и всё что с ней связано", создана пользователем chelseadrogba, 8 авг 2012.

  1. chelseadrogba

    chelseadrogba Гость

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

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Используйте подписку на событие. Объек - ваш чек, событие Обработка проведения
     
  3. chelseadrogba

    chelseadrogba Гость

    а с кодом не посоветуете как быть?
     
  4. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Как то так
    Код ( (Unknown Language)):
    Процедура ПодпискаНаСобытие1ОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Если Источник.Дата< "Здесь ваша дата" Тогда
    Отказ = Истина;
    КонецЕсли;

    КонецПроцедуры
     
  5. chelseadrogba

    chelseadrogba Гость

    я бы отправил сюда то, что сам написал, но думаю, что вы будете смеяться
     
  6. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Попытки разобраться в задаче самостоятельно не могут быть смешными. Смешно когда просят за просто так сделать что то серьезное при этом ни приложив со своей стороны усилий. Выкладывайте, покритикуем.
     
  7. chelseadrogba

    chelseadrogba Гость

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

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Да.Выбираете запросом 1 дату документа с условием сортировки даты по возрастанию.
     
  9. chelseadrogba

    chelseadrogba Гость

    я только как недели две начал изучать программирование на 1с
     
  10. chelseadrogba

    chelseadrogba Гость

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

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

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

    unknown181538 НеГуру
    1C Team

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

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


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

    chelseadrogba Гость

    вроде как один

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

    chelseadrogba Гость

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

    chelseadrogba Гость

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

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

    также можно? как думаете?
     
  15. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    да. Так можно.
     
  16. chelseadrogba

    chelseadrogba Гость

    а какой источник посоветуете для изучения программирования на 1С?
     
  17. chelseadrogba

    chelseadrogba Гость

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

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