Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получить остаток на момент времени
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
rnobody
Добрый день.

Прошу помощи в разъяснении следующего момента:

1. создается документ по списанию номенклатуры (один документ - одна позиция, но это не принципиально)
2. собирается остаток по номенклатуре для избежания перерасхода
3. все прекрасно списывается
4. при повторном открытии документа, возвращаются остатки на конец дня, а надо на момент ДО проведения
т.е. независимо от настроек запроса, остаток возвращается на конец дня (граница, момент времени - все равно)

остатки берутся запросом:



ВЫБРАТЬ
номенклатура,
количество
ИЗ
РегистрНакопления.Склад.Остатки(&МоментВремени, Номенклатура = &Номенклатура)


МоментВремени = новый МоментВремени(ЭтотОбъект.Дата, ЭтотОбъект.Ссылка)

вопрос(ы):
1. возможно, я пропустил РассчитатьРегистрыНа/По, а-ля "семерка"?
2. это баг? (1Cv8 8.1.11.67)
3. можно ли порекомендовать внятные коментарии к языку "восьмерки"?
Vofka
Цитата
можно ли порекомендовать внятные коментарии


1. Для начала укажите точную версию платформы (8.0, 8.1, 8.2) и конфигурацию!
2. Для вставки кода пользуйтесь специальными тегами!
3. Попробуйте как то так:


МоментВремени = ЭтотОбъект.Дата - 1
rnobody
Цитата(Vofka @ 30.09.09, 12:42) необходимо зарегистрироваться для просмотра ссылки
1. Для начала укажите точную версию платформы (8.0, 8.1, 8.2) и конфигурацию!
2. Для вставки кода пользуйтесь специальными тегами!
3. Попробуйте как то так:


МоментВремени = ЭтотОбъект.Дата - 1


Добрый день.

1. версия платформы 8.1.11.67, конфигурация самописная, практически пустая (регистр и два документа)
2. с тегами учту, извините
3. момент времени меняется, результат запроса - нет
zetovich
Цитата(rnobody @ 30.09.09, 10:20) необходимо зарегистрироваться для просмотра ссылки
Добрый день.

Прошу помощи в разъяснении следующего момента:

1. создается документ по списанию номенклатуры (один документ - одна позиция, но это не принципиально)
2. собирается остаток по номенклатуре для избежания перерасхода
3. все прекрасно списывается
4. при повторном открытии документа, возвращаются остатки на конец дня, а надо на момент ДО проведения
т.е. независимо от настроек запроса, остаток возвращается на конец дня (граница, момент времени - все равно)

остатки берутся запросом:

ВЫБРАТЬ
номенклатура,
количество
ИЗ
РегистрНакопления.Склад.Остатки(&МоментВремени, Номенклатура = &Номенклатура)

МоментВремени = новый МоментВремени(ЭтотОбъект.Дата, ЭтотОбъект.Ссылка)

вопрос(ы):
1. возможно, я пропустил РассчитатьРегистрыНа/По, а-ля "семерка"?
2. это баг? (1Cv8 8.1.11.67)
3. можно ли порекомендовать внятные коментарии к языку "восьмерки"?


это не правильно то что вы хотите.
остатки нужно считать на конец дня. на то он и опер учет.
з.ы. а вы повбивайте несколько доков посе списание....потом будите приятно удивлены. (покуриет в направлении "Новый Граница(МоментВремени, ВидГраницы.НЕВключая)")
rnobody
Цитата(zetovich @ 30.09.09, 13:29) необходимо зарегистрироваться для просмотра ссылки
это не правильно то что вы хотите.
остатки нужно считать на конец дня. на то он и опер учет.
з.ы. а вы повбивайте несколько доков посе списание....потом будите приятно удивлены. (покуриет в направлении "Новый Граница(МоментВремени, ВидГраницы.НЕВключая)")


Добрый день.

Прошу прощения, в чем "не правильно" мое желание? Задача стоит так, что крайне желательно видеть остатки ИМЕННО на момент ДО проведения документа.

Вполне возможно зафиксировать информацию в реквизитах документа, но, на будущее, хотелось бы до конца разобраться с "моментом времени" и "границей", т.к. вариант с "границей" работает аналогично.
Vofka
rnobody, покажите конфигурацию
zetovich
Цитата(rnobody @ 30.09.09, 11:54) необходимо зарегистрироваться для просмотра ссылки
Добрый день.

Прошу прощения, в чем "не правильно" мое желание? Задача стоит так, что крайне желательно видеть остатки ИМЕННО на момент ДО проведения документа.

Вполне возможно зафиксировать информацию в реквизитах документа, но, на будущее, хотелось бы до конца разобраться с "моментом времени" и "границей", т.к. вариант с "границей" работает аналогично.

ТиИ

ну открыл ты в утреннем доке...после исчо куча выписанных, например, РН...смотришь остатки...и что оно Вам дает?
Vofka
Цитата
ну открыл ты в утреннем доке...после исчо куча выписанных, например, РН...смотришь остатки...и что оно Вам дает?


Как же тогда списать товар задним числом?
rnobody
Цитата(Vofka @ 30.09.09, 14:12) необходимо зарегистрироваться для просмотра ссылки
rnobody, покажите конфигурацию


Еще раз уточню:
конфигурации, как таковой, нет. Просто регистр накопления, документ по приходу и по расходу.
rnobody
Цитата(zetovich @ 30.09.09, 14:20) необходимо зарегистрироваться для просмотра ссылки
ТиИ

ну открыл ты в утреннем доке...после исчо куча выписанных, например, РН...смотришь остатки...и что оно Вам дает?


Проводка задним числом; сложный отчет по оборотам за период; большой массив связанных с количественным показателем данных - можно вычислять, вместо засорения БД.

P.S.
Извините, не владею сленгом. Что значит ТиИ?
rnobody
Хорошо, перефомулирую вопрос:

Как получить остаток по регистру накопления на произвольный момент времени?
zetovich
Цитата(rnobody @ 30.09.09, 12:52) необходимо зарегистрироваться для просмотра ссылки
Проводка задним числом; сложный отчет по оборотам за период; большой массив связанных с количественным показателем данных - можно вычислять, вместо засорения БД.

P.S.
Извините, не владею сленгом. Что значит ТиИ?

ТиИ - Тестирвоание и исправлние...(в меню администрирвоание)
rnobody
Цитата(zetovich @ 30.09.09, 17:08) необходимо зарегистрироваться для просмотра ссылки
1. ТиИ - Тестирвоание и исправлние...
2. да вродь и запрос верный....


Извините, и как ваш ответ соотносится с вопросом?
zetovich
Запрос.УстановитьПараметр("МоментВремени",ЭтотОбъект.МоментВремени());

Запрос.УстановитьПараметр("МоментВремени", Новый Граница(ЭтотОбъект.МоментВремени(), ВидГраницы.Исключая));

а так?
rnobody
Цитата(zetovich @ 30.09.09, 17:30) необходимо зарегистрироваться для просмотра ссылки
Запрос.УстановитьПараметр("МоментВремени",ЭтотОбъект.МоментВремени());

Запрос.УстановитьПараметр("МоментВремени", Новый Граница(ЭтотОбъект.МоментВремени(), ВидГраницы.Исключая));

а так?


Я уже отмечал чуть выше, что вариант с "Границей" работает аналогично - остатки возвращаются на конец дня, а не на момент регистратора.
zetovich
Цитата(rnobody @ 30.09.09, 15:49) необходимо зарегистрироваться для просмотра ссылки
Я уже отмечал чуть выше, что вариант с "Границей" работает аналогично - остатки возвращаются на конец дня, а не на момент регистратора.

Вы именно так, как написано, пробывали?
да, и точно Вы уверены, что момент времени движение регистров = моменту времени движения документа? (т.е. дата движения регистров может не совпадать дате документа)
rnobody
Цитата(zetovich @ 30.09.09, 17:58) необходимо зарегистрироваться для просмотра ссылки
Вы именно так, как написано, пробывали?
да, и точно Вы уверены, что момент времени движение регистров = моменту времени движения документа? (т.е. дата движения регистров может не совпадать дате документа)


Абсолютно.
1. приходую 1000 единиц
2. списываю - в остатке 1000 - 100
3. новое списание - в остатке 900 - 100
4. первый документ при повторном открытии показывает 800, а желательно 1000

Способ сбора остатков не имеет значения: прямое обращение к регистру, запрос; Момент времени, граница - все едино, остаток вохвращается на конец дня.
zetovich
ну не знаю....должно показывать то что вы хотите. вродь ничего не упустил.
rnobody
Вопрос остается открытым...

Бегание по форумам конкретного ответа не дает. Ближайшее приближение - остатки плюс обороты. Но в
этом случае сбор отчета становится нетривиальной задачей.

К сожалению, продолжить разговор смогу только завтра - рабочий день окончен.
Спасибо откликнувшимся.
Vofka
Есть документ ПН 24.04.2009 14:27:04, который делает движения по регистрам, включая регистр "остатки".

Запрос:


ВЫБРАТЬ
ОстаткиОстатки.Номенклатура,
ОстаткиОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.Остатки.Остатки(&МоментВремени, ) КАК ОстаткиОстатки


Если момент времени = 24.04.2009 14:27:04 - получаю остатки с учетом проведённого документа. Если 24.04.2009 14:27:03 - получаю остатки без учета проведённого документа. Или не то?
zetovich
Цитата(Vofka @ 30.09.09, 18:16) необходимо зарегистрироваться для просмотра ссылки
Есть документ ПН 24.04.2009 14:27:04, который делает движения по регистрам, включая регистр "остатки".

Запрос:


ВЫБРАТЬ
ОстаткиОстатки.Номенклатура,
ОстаткиОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.Остатки.Остатки(&МоментВремени, ) КАК ОстаткиОстатки


Если момент времени = 24.04.2009 14:27:04 - получаю остатки с учетом проведённого документа. Если 24.04.2009 14:27:03 - получаю остатки без учета проведённого документа. Или не то?

чуток не то...
а если за 24.04.2009 14:27:04 будет 5 документов и нужно найти что будет после 3....?
Vofka
Цитата
а если за 24.04.2009 14:27:04 будет 5 документов и нужно найти что будет после 3....?


я про это тоже подумал, поэтому и возник вопрос "Или не то?" smile.gif
rnobody
Цитата(Vofka @ 30.09.09, 22:37) необходимо зарегистрироваться для просмотра ссылки
я про это тоже подумал, поэтому и возник вопрос "Или не то?" smile.gif


Добрый день.

Примерно такого результата я и ожидаю (от платформы), но не получается.

Выходит, конкретно на моей машине это баг платформы (8.1.11.67). Или, все-таки, какие-то тонкости с настройками системы / подготовкой работы с итогами / еще чем?
rnobody
Вот, у товарища Радченко в мегагросбуке сказано:

Цитата
Получение остатков.

"Момент времени" - виртуальное поле, не хранится в базе данных. Содержит объект МоментВремени (который включает в себя дату и ССЫЛКУ НА ДОКУМЕНТ)

<Виртуальная> таблица остатков не хранится в БД, а строится в момент обращения к ней.
...
1. подбирается больший или равный значению ПАРАМЕТР момент времени, на который РАССЧИТАНЫ остатки
2. на этот момент получаются остатки из таблицы итогов
3. если момент времени, на который считаются остатки, не совпадает с моментом времени итогов, то остатки ДОСЧИТЫВАЮТСЯ по движениям <skip>.


Именно этого эффекта не наблюдается. В моем случае всегда возвращаются итоги на конец дня.

Какие параметры конфигурации мной не учтены?
zetovich
ну...обновите платформу...и доложите что и как smile.gif
кста а дата документ не последний день месяца...? (где то читал про такой баг...но помойму это касалось 8.0)
rnobody
Цитата(zetovich @ 01.10.09, 11:26) необходимо зарегистрироваться для просмотра ссылки
ну...обновите платформу...и доложите что и как smile.gif
кста а дата документ не последний день месяца...? (где то читал про такой баг...но помойму это касалось 8.0)


Здравствуйте.

С числом месяца - без разницы.

Обновить платформу - нереально. Рабочие места раскиданы по казахстанской степи. Придется выкручиваться...

Конкретно с этим моментом - можно в реквизитах документа все сохранить. Жаль, пропадает уверенность контроля за ситуацией.

Кстати, не подскажете еще форумы (живые) по аналогичной тематике. Не охота продираться через тысячи сайтов с голой рекламой.
zetovich
необходимо зарегистрироваться для просмотра ссылки
необходимо зарегистрироваться для просмотра ссылки
главно чтоб меня тутошние админы не побили за ссылки smile.gif
rnobody
Цитата(zetovich @ 01.10.09, 11:41) необходимо зарегистрироваться для просмотра ссылки
необходимо зарегистрироваться для просмотра ссылки
необходимо зарегистрироваться для просмотра ссылки
главно чтоб меня тутошние админы не побили за ссылки smile.gif


Большое спасибо.

Мне минус, за то, что забыл про "мисту" и "территорию".

Резюмируя тред:

Остаток на момент текущего документа - МоментВремени (по Радченко). У меня по какой-то причине не работает. Версия платформы 8.1.11.67, конфигурация пробная: регистр и два документа.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.