Имя: Пароль:
1C
1С v8
Граница с видом "включая" не учитывает введённые документы
, ,
0 Очень Любознательная
 
14.10.19
15:01
Добрый день всем!
Возникла такая проблема..
Есть конфигурация 1С Дошкольное питание. Есть регистр остатки товаров, по нему делают движения в плюс приходы и в минус меню (расходы продуктов). Есть механизм контроля остатков по аналогии с торговлей. Есть запрос, контролирующий остатки:
    Запрос.Текст = "ВЫБРАТЬ
                   |    Питание_НоменклатураНаСкладахОстатки.Организация,
                   |    Питание_НоменклатураНаСкладахОстатки.Склад,
                   |    Питание_НоменклатураНаСкладахОстатки.Номенклатура,
                   |    Питание_НоменклатураНаСкладахОстатки.Партия,
                   |    -Питание_НоменклатураНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
                   |    Питание_НоменклатураНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения
                   |ИЗ
                   |    РегистрНакопления.Питание_НоменклатураНаСкладах.Остатки(
                   |            &МоментКонтроляДокумента,
                   |            Организация = &ОрганизацияОтправитель
                   |                И Склад = &СкладОтправитель
                   |                И (Номенклатура, Партия) В
                   |                    (ВЫБРАТЬ
                   |                        ДвиженияНоменклатураДокумента.Номенклатура,
                   |                        ДвиженияНоменклатураДокумента.Партия
                   |                    ИЗ
                   |                        ДвиженияНоменклатураДокумента КАК ДвиженияНоменклатураДокумента)) КАК Питание_НоменклатураНаСкладахОстатки
                   |ГДЕ
                   |    Питание_НоменклатураНаСкладахОстатки.КоличествоОстаток < 0";
                  
    Запрос.УстановитьПараметр("МоментКонтроляДокумента", Новый Граница(ДокументОбъект.МоментВремени(), ВидГраницы.Включая));

Теперь, собственно, сама беда.
Есть 1 октября. В 00:00 сделан приход хлеба. Затем, вторым по счёту, вбит документ "меню-калькуляция", который списывает этот хлеб. Если учитывать приход, то расход должен проводиться, остатков хватает. Но этот запрос не учитывает приход, сделанный в 00:00.
Может, я не понимаю чего-то? У документобъекта стоит момент времени 01.10.2019 00:00, приход вбит первым по счёту. Почему он его не учитывает?
1 vicof
 
14.10.19
15:32
Так может расход не по тем партиям, организации и складу, не?
2 Kol Pecivanovich
 
14.10.19
15:36
(0) попробуйте поставить документ расхода на 00:00:01 - если увидит остаток, значит, 1ска в пределах одной секунды расставляет моменты документов не по времени их ввода, а по другому принципу
3 Kol Pecivanovich
 
14.10.19
15:38
(2) а если не увидит, значит (1)
4 Kol Pecivanovich
 
14.10.19
15:40
(0) а это условие для чего:

Питание_НоменклатураНаСкладахОстатки.КоличествоОстаток < 0
5 Очень Любознательная
 
14.10.19
15:47
(2) Видимо, да. Выбрала запросом приходы и калькуляции, расставила по моменту времени - меню стоит раньше!
6 Очень Любознательная
 
14.10.19
15:47
На 00:01 провелось. Интересно тогда, какая логика у расстановки в пределах одной секунды?
7 unenu
 
14.10.19
15:59
(6)  интереснее, что показывает отладчик относительно выражения
Новый Граница(ДокументОбъект.МоментВремени(), ВидГраницы.Включая))
когда ДокументОбъект еще не написан
когда ДокументОбъект.Дата пуста и т.д.
8 Kol Pecivanovich
 
14.10.19
16:34
(6) возможно, в пределах одной секунды моменты времени сортируются по виду документов
9 palsergeich
 
14.10.19
17:12
(6) Внутри секунды порядок по последовательности ввода не гарантируется
10 palsergeich
 
14.10.19
17:12
Граница всего лишь гарантирует то попадут движения этого докуменнта в остатки или нет, не более
11 azernot
 
14.10.19
17:24
(6) Внутри одной секунды документы выстраиваются по внутреннему идентификатору объекта конфигурации, а то и вовсе по алфавиту (Поступление товаров, услуг раньше Реализации товаров, услуг). Порядок ввода не влияет на эту сортировку - совершенно точно. Се ля ви.
12 Rovan
 
гуру
14.10.19
17:29
(10) точно!
Вообще данные в базе по идее должны отражать реальные физические процессы...
А процесса поступления и расхода в одну секунду не бывает.
13 lodger
 
14.10.19
17:32
(6) для простоты учета считается, что нет однозначного порядка.
14 Консультант Баранов
 
14.10.19
17:37
(6) В рамках одной секунды, по виду документа, сортировка в порядке добавления в конфигуратор.

Можно расставить документы в нужном порядке выгрузить в XML конфигурацию и загрузить конфигурацию.
15 palsergeich
 
14.10.19
17:38
(14) мне кажется  что если требуется такой изврат, то есть проблемы с архитектурой
16 hhhh
 
14.10.19
17:40
(12) но в реальности, в какой момент считается приход или расход на складе? В момент подписи документов кладовщиком? Тогда это даже очень реально, У него например пачка документов, штук 20, в какой-то момент он пришел на рабочее место и за 5 секунд расписался во всех документах.
17 Консультант Баранов
 
14.10.19
17:43
(15) Изврат. Не спорю.
18 palsergeich
 
14.10.19
18:00
(16) Кладовщик не длядя шлепнул 20 документов будучи матответственным?
Не верю.
19 Очень Любознательная
 
14.10.19
18:10
Всем огромное спасибо за разъяснения.
Беда какая. В этом питании есть обработка "помощник диетсестры", в нём выбираешь дату, и он тебе на эту дату делает меню и сопутствующие доки. Я посмотрела по коду - он всегда берёт эту выбранную дату с временем 00:00 и подставляет её в дату создаваемого меню.
Проблема возникает, если, скажем, садик закупает молоко чисто на 1 день, то есть, на момент формирования меню остатки по молоку нулевые. Меню из-за этого не создаётся, хотя мы, предполагая эту проблему, договорились, что они будут ставить у приходника всегда время 00:00. Не сработало...
Программно сделала так, чтобы у меню дата всегда была 08:00.
20 Eiffil123
 
14.10.19
18:10
(12) к сожалению, это не про российский учет с проведением "задним числом"
21 lodger
 
14.10.19
18:30
(20) это только в бухии. другие отделы от этой пагубной привычки можно и нужно отучать.