Один документ в конце каждого дня. Как реализовать красиво.
Друзья, есть задание, в котором стоит условие:
Необходимо реализовать документ, формируемый в единственном экземпляре в конце каждого дня. Данный документ формирует движения по регистру накоплений...
Собственно, два вопроса.
1) Как правильно проверить, что документ единственный за день??
2) Как проводить документ самым последним в текущем дне?
Необходимо реализовать документ, формируемый в единственном экземпляре в конце каждого дня. Данный документ формирует движения по регистру накоплений...
Собственно, два вопроса.
1) Как правильно проверить, что документ единственный за день??
2) Как проводить документ самым последним в текущем дне?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
1) Запросом
1) Запросом
Выбрать Первые 1
НужныйДокумент.Ссылка
НужныйДокумент.Дата
ИЗ Документы.НужныйДокумент КАК НужныйДокумент
ГДЕ Дата Между &НачалоДня И &КонецДня
Запрос.УстановитьЗначениеПараметра ( "НачалоДня",Новый Граница (НачалоДня(ТекущаяДата()), ВидГраницы.Включая ) );
Запрос.УстановитьЗначениеПараметра ("КонецДня" ,Новый Граница (КонецДня(ТекущаяДата()), ВидГраницы.Включая ) );
Результат = Запрос.Выполнить() $
Если Результат.пустрой() Тогда
// документа нет
КонецЕсли;
Показать
ПередЗаписью в модуле объекта проверять запросом на наличие документа на дату = КонецДня(ТекущаяДата()), если нет то присваивать Дате значение Конца дня, иначе Отказ = Истина;
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Документ1.Ссылка) КАК Ссылка
|ПОМЕСТИТЬ ВТ1
|ИЗ
| Документ.Документ1 КАК Документ1
|ГДЕ
| Документ1.Дата = &Дата
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| Документ1.МоментВремени КАК МоментВремени
|ПОМЕСТИТЬ ВТ2
|ИЗ
| Документ.Документ1 КАК Документ1
|ГДЕ
| Документ1.Дата = &Дата
|
|УПОРЯДОЧИТЬ ПО
| МоментВремени УБЫВ"
...ВыполнитьПакетСПромежуточнымиДанными
Показать
Наверное, надо полностью написать задачу. Документ, который мы создаём в конце дня, будет корректировать движения другого документа, который, в принципе, тоже может быть записан на дату 23:59:59. Нужно чтобы документ корректировка даже в этом случае был последним.
(10) наверное, чтобы корректно перепроводить при восстановлении последовательностей.
Тогда надо включать эти документы в последовательность.
Проще не заморачиваться с последовательностями, а при перепроведении корректирующего документа брать движения за весь день за минусом движений корректирующего документа. Тогда неважно, где будет его момент времени. И можно даже не ставить его принудительно в последнюю секунду дня.
Тогда надо включать эти документы в последовательность.
Проще не заморачиваться с последовательностями, а при перепроведении корректирующего документа брать движения за весь день за минусом движений корректирующего документа. Тогда неважно, где будет его момент времени. И можно даже не ставить его принудительно в последнюю секунду дня.
Не работает запрос
Выбрать Первые 1
НужныйДокумент.Ссылка
НужныйДокумент.Дата
ИЗ Документы.НужныйДокумент КАК НужныйДокумент
ГДЕ Дата Между &НачалоДня И &КонецДня
Запрос.УстановитьЗначениеПараметра ( "НачалоДня",Новый Граница (НачалоДня(ТекущаяДата()), ВидГраницы.Включая ) );
Запрос.УстановитьЗначениеПараметра ("КонецДня" ,Новый Граница (КонецДня(ТекущаяДата()), ВидГраницы.Включая ) );
Результат = Запрос.Выполнить() $
Если Результат.пустрой() Тогда
// документа нет
КонецЕсли;
Показать
Ругается, что Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
КорректировкаЗадолженности.Дата <<?>>МЕЖДУ &НачалоПериода И &КонецПериода
неограниченной длины и поля несовместимых типов.
КорректировкаЗадолженности.Дата <<?>>МЕЖДУ &НачалоПериода И &КонецПериода
(15) Не использовать границы? т. е. вот так
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КорректировкаЗадолженности.Ссылка
|ИЗ
| Документ.КорректировкаЗадолженности КАК КорректировкаЗадолженности
|ГДЕ
| КорректировкаЗадолженности.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(Дата));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(Дата));
Показать
(16)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КорректировкаЗадолженности.Ссылка
|ИЗ
| Документ.КорректировкаЗадолженности КАК КорректировкаЗадолженности
|ГДЕ
| КорректировкаЗадолженности.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И КорректировкаЗадолженности.Ссылка<>&Ссылка
| И КорректировкаЗадолженности.Проведен";
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(Дата));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(Дата));
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Если НЕ Запрос.Выполнить().Пустой() Тогда
Отказ = Истина;
КонецЕсли;
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот