Запрос по остаткам регистра накопления на каждый день
ВЫБРАТЬ
ТоварыНаСкладах2Обороты.Период,
ТоварыНаСкладах2Обороты.ХарактеристикаНоменклатуры,
ТоварыНаСкладах2Обороты.КоличествоОборот,
ТоварыНаСкладах2Обороты.СуммаОборот
ПОМЕСТИТЬ Движения
ИЗ РегистрНакопления.ТоварыНаСкладах2.Обороты(&НачалоПериода, &КонецПериода, День,) КАК ТоварыНаСкладах2Обороты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, -1),
ТоварыНаСкладах2Остатки.ХарактеристикаНоменклатуры,
ТоварыНаСкладах2Остатки.КоличествоОстаток,
ТоварыНаСкладах2Остатки.СуммаОстаток
ИЗ РегистрНакопления.ТоварыНаСкладах2.Остатки(&НачалоПериода,) КАК ТоварыНаСкладах2Остатки ;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ДвиженияДенежныхСредствОбороты.Период КАК Период
ПОМЕСТИТЬ Дни
// Тут не важно, откуда брать дни, но это необходимо, поскольку в регистре накопления есть только те дни, в которые были движения. А нам хочется знать остатки, даже если в течении дня они не менялись. Выбирайте способ построения этой таблицы, наиболее быстрый для вашей конфигурации.
ИЗ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ДвиженияДенежныхСредствОбороты ;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Дни.Период КАК Период,
Движения.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
СУММА(Движения.КоличествоОборот) КАК КоличествоОборот,
Движения.СуммаОборот ПОМЕСТИТЬ ОстаткинаНачалоДня
ИЗ Дни КАК Дни
ЛЕВОЕ СОЕДИНЕНИЕ Движения КАК Движения
ПО (Движения.Период < Дни.Период)
СГРУППИРОВАТЬ ПО
Дни.Период,
Движения.ХарактеристикаНоменклатуры,
Движения.СуммаОборот
P.S. Замечу. что у этого метода есть недостаток, полноценно проявляющийся в СКД - в нем не предусмотрен расчет итогов по остаткам по измерению Дата. Суммирование или усреднение, понятно, не подходят, поскольку Начальныйостаток нам нужен на начало периода, Конечный, соответственно, на конец периода.
На счастье *или нет:)* в СКД то же самое можно получить легче, через виртуальный регистр ОстаткиИОбороты. Нужно только для полей с начальным и конечным остатками прописать в описании поля значение Остаток (что СКД делает Автоматически, если стоит галочка Автозаполнение), в Настройках СКД для группировки Дата во вкладке Группировка в Дополнение прописать День. СКД добавит дни без оборотов и адекватно оформит итоги по дате. Ура :)
Решение для Построителя отчета в интернете ищется легко.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)
Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
16500 руб.
02.09.2020 286364 1611 423
Кадровый учет Интеграция Запросы Журналы и реестры данных 1С:Предприятие 8 1C:Бухгалтерия 1С:Зарплата и Управление Персоналом 2.5 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1C:ERP Россия Управленческий учет Платные (руб)
Готовое решение для автоматизации проверки сотрудников, кандидатов и контрагентов по государственным реестрам и официальным источникам прямо из интерфейса 1С. Сократите время на ручные проверки, минимизируйте риски и храните результаты в единой информационной системе.
18300 руб.
17.06.2026 900 2 0
Инструментарий разработчика Запросы Разработчик 1С 8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)
Структура запроса. Обработка визуально показывает, из какого количества подзапросов состоит запрос.
2 стартмани
06.07.2026 5015 65 XSlava 20
Запросы Разработчик 1С 8.3 Россия Бесплатно (free)
Визуальный «Конструктор запроса» 1С, встроенный прямо в VS Code, — аналог конструктора из Конфигуратора и EDT, но без запуска платформы. Расширение читает конфигурацию, выгруженную в файлы, позволяет собрать запрос мышью и генерирует корректный текст на языке запросов 1С (SDBL). Открывает уже существующий текст запроса из кода для правки и — что особенно ценно — сохраняет комментарии при цикле «открыть - править - сохранить». Подходит тем, кто пишет код 1С в VS Code, держит под рукой множество проектов и не хочет ради одного запроса запускать тяжёлый Конфигуратор или EDT.
26.06.2026 10740 Alex_YAM 7
Нейросети Инструментарий разработчика Запросы Разработчик 1С:Предприятие 8 Абонемент ($m)
Консоль запросов 1.0: добавлен ИИ-помощник (запрос в DeepSeek), который помогает быстрее получать каркас Запроса 1С Сформулируйте простое описание; нажмите кнопку – получите результат прямо в консоли. Где дальше его можно дорабатывать и тестировать. 28.5.2026 Добавил "Консоль запросов 2.0" (запрос в DeepSeek + Claude) 4.10.2026 Обновил "Консоль запросов 2.0"
3 стартмани
20.05.2026 9635 46 German4739 72
WEB-интеграция Запросы Разработчик 1С 8.3 Абонемент ($m)
Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.
1 стартмани
02.04.2026 4748 106 priem_nv 28
Запросы Механизмы типовых конфигураций Разработчик 1С:Предприятие 8 1С:Управление торговлей 11 Россия Бесплатно (free)
Предлагается обзор работы с объектной моделью запроса по схемам запросов типовым функционалом УТ 11.5.
09.10.2025 13460 aximo 18
Инструментарий разработчика Запросы Разработчик 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)
QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.
1 стартмани
16.05.2025 13740 168 zup_dev 32
Закидываем календарик во временную таблицу.
Далее берем 1 таблицу движений по дням (с существующими оборотами) и кидаем в другую временную таблицу.
Далее объединяем календарик с таблицей остатков и для каждой даты календарика получаем дату остатков, актуальных для этой даты. Для этого используем группировку с максимумом даты остатков, условия соединения дата остатков <= даты календарика.
А уже потом получаем таблицу остатков используя все три полученные таблицы (условия соединения надеюсь уже понятны - известна дата календарика, дата остатков для этой даты).
И никаких условностей с какой-то вспомогательной таблицей движений, в которой может и не оказаться нужной даты (т.е. отсутствие пропусков не гарантировано). и быстродействие достаточно высокое.
Особенно если прочитать про оптимизацию работы с временными таблицами в .
ВЫБРАТЬ РАЗЛИЧНЫЕ
КурсыВалют.Период
ПОМЕСТИТЬ Дни
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Движения.Номенклатура,
ДНИ.Период,
СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоНачальныйОстаток
КОНЕЦ + Движения.КоличествоОборот) КАК КоличествоКонечныйОстаток
ИЗ
Дни КАК ДНИ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК Движения
ПО (Движения.Период <= ДНИ.Период)
СГРУППИРОВАТЬ ПО
Движения.Номенклатура,
ДНИ.Период ПоказатьПравда, здесь рассчитываются остатки на конец каждого дня (это легко поправить, сдвинув даты на -1). Регистр "КурсыВалют" взят для краткости и для разнообразия. Для скорости лучше использовать "календарик" на основе []. Классический вариант (5) проигрывает по быстродействию предложенному примерно в 1.5 раза (проверялось на файловой базе УПП). Похожая математика используется в [].
...
Сумма(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоНачальныйОстаток
//{LRS: Если не начальный остаток, то NULL. Необходимо заменить его на 0, иначе мы получим Начальный остаток на каждую дату
ИНАЧЕ 0
//}
КОНЕЦ + Движения.КоличествоОборот) КАК КоличествоКонечныйОстаток
...
ВЫБРАТЬ
ТоварыНаСкладах2Обороты.Период,
-ТоварыНаСкладах2Обороты.КоличествоОборот КАК КоличествоОборот,
ТоварыНаСкладах2Обороты.Номенклатура
ПОМЕСТИТЬ Движения
ИЗ
РегистрНакопления.ПартииНоменклатуры.Обороты(
&НачалоПериода,
&КонецПериода,
День,
Номенклатура = &ном
И склад = &склад) КАК ТоварыНаСкладах2Обороты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1),
ТоварыНаСкладах2Остатки.КоличествоОстаток,
ТоварыНаСкладах2Остатки.Номенклатура
ИЗ
РегистрНакопления.ПартииНоменклатуры.Остатки(
&КонецПериода,
Номенклатура = &ном
И склад = &склад) КАК ТоварыНаСкладах2Остатки
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
Дни.Период КАК Период,
Движения.Номенклатура КАК Номенклатура,
СУММА(Движения.КоличествоОборот) КАК КоличествоОстаток
ИЗ
тДаты КАК Дни
ЛЕВОЕ СОЕДИНЕНИЕ Движения КАК Движения
ПО (Движения.Период > Дни.Период)
СГРУППИРОВАТЬ ПО
Дни.Период,
Движения.Номенклатура
ВЫБРАТЬ РАЗЛИЧНЫЕ
КурсыВалют.Период
ПОМЕСТИТЬ Дни
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Движения.Номенклатура,
ДНИ.Период,
ЕСТЬNULL(СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоНачальныйОстаток
КОНЕЦ), 0) + ЕСТЬNULL(СУММА(Движения.КоличествоОборот), 0) КАК КоличествоКонечныйОстаток
ИЗ
Дни КАК ДНИ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура = &Номенклатура) КАК Движения
ПО (Движения.Период <= ДНИ.Период)
СГРУППИРОВАТЬ ПО
Движения.Номенклатура,
ДНИ.Период Показать... здесь также есть недостатки. Окончательный вариант приведен в комментарии (14)
ВЫБРАТЬ РАЗЛИЧНЫЕ
КурсыВалют.Период
ПОМЕСТИТЬ Дни
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Движения.Номенклатура,
ДНИ.Период,
СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоКонечныйОстаток
ИНАЧЕ ВЫБОР
КОГДА Движения.Период <= ДНИ.Период
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ) КАК КоличествоКонечныйОстаток
ИЗ
Дни КАК ДНИ,
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура = &Номенклатура) КАК Движения
СГРУППИРОВАТЬ ПО
Движения.Номенклатура,
ДНИ.Период ПоказатьТак что, когда у вас появится таблица движущейся номенклатуры, то ваш запрос станет еще сложнее и дольше.
Недостатком моего последнего варианта является "двойной" обход оборотов, но, скорее всего, при группировке при нахождении движущейся номенклатуры будут примерно те же затраты, да еще и затраты на запись и соединение. Так что предполагаю победу своего варианта и в соревновании по быстродействию.
Ну а вообще спасибо за критическое отношение и внимательность - впредь буду тщательнее тестировать предлагаемые запросы.
Но мне понадобилось выбрать и начальный, и обороты (и приход, и расход) и конечный. Выкрутился так, в подчиненном запросе все кроме начальных остатков, по приниципу как в 14-м комменте у ildarovich, а уже из подчиненного по конечному и обороту вычисляю начальный в "верхнем" запросе, т.е. так:
ВЫБРАТЬ РАЗЛИЧНЫЕ
КурсыВалют.Период
ПОМЕСТИТЬ Дни
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВложенныйЗапрос.Период,
ВложенныйЗапрос.Номенклатура,
ВложенныйЗапрос.КолВоКонОст-ВложенныйЗапрос.КолВоОборот КАК КолВоНачОст,
ВложенныйЗапрос.КолВоПриход,
ВложенныйЗапрос.КолВоРасход,
ВложенныйЗапрос.КолВоОборот,
ВложенныйЗапрос.КолВоКонОст
ИЗ
(ВЫБРАТЬ
ДНИ.Период,
Движения.Номенклатура,
СУММА(ВЫБОР КОГДА Движения.Период = ДНИ.Период
ТОГДА Движения.КоличествоПриход
ИНАЧЕ 0
КОНЕЦ) КАК КолВоПриход,
СУММА(ВЫБОР КОГДА Движения.Период = ДНИ.Период
ТОГДА Движения.КоличествоРасход
ИНАЧЕ 0
КОНЕЦ) КАК КолВоРасход,
СУММА(ВЫБОР КОГДА Движения.Период = ДНИ.Период
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ) КАК КолВоОборот,
СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоКонечныйОстаток
ИНАЧЕ ВЫБОР
КОГДА Движения.Период <= ДНИ.Период
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ) КАК КолВоКонОст
ИЗ
Дни КАК ДНИ,
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода,ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода,ДЕНЬ), День, , Номенклатура = &Номенклатура) КАК Движения
СГРУППИРОВАТЬ ПО
Движения.Номенклатура,
ДНИ.Период) КАК ВложенныйЗапрос
УПОРЯДОЧИТЬ ПО
ВложенныйЗапрос.Номенклатура,
ВложенныйЗапрос.Период
ПоказатьНо может можно красивее или еще какую критику кто-то выскажет?
СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоНачальныйОстаток
ИНАЧЕ ВЫБОР
КОГДА Движения.Период < ДНИ.Период
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ) КАК КоличествоНачальныйОстаток ПоказатьВидимо должно быть что-то вроде этого:
СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА ВЫБОР
КОГДА ДНИ.Период = &НачалоПериода
ТОГДА Движения.КоличествоНачальныйОстаток
ИНАЧЕ Движения.КоличествоКонечныйОстаток
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА Движения.Период < ДНИ.Период
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ) КАК КоличествоНачальныйОстаток Показать СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода И Дни.Период = &НачалоПериода
ТОГДА Движения.КоличествоНачальныйОстаток
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоНачальныйОстаток + Движения.КоличествоОборот
ИНАЧЕ ВЫБОР
КОГДА Движения.Период < Дни.Период
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ) КАК КоличествоНачальныйОстаток,
Показать
СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоКонечныйОстаток
//ИНАЧЕ ВЫБОР
КОГДА Движения.Период <= ДНИ.Период
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
//КОНЕЦ
КОНЕЦ) КАК КоличествоКонечныйОстаток
ПоказатьЕсли в РН по отборам будет пусто. Итоговая таблица тоже будет пустая.
ВЫБРАТЬ РАЗЛИЧНЫЕ
КурсыВалют.Период
ПОМЕСТИТЬ Дни
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
&Номенклатура КАК Номенклатура,
ДНИ.Период,
СУММА(ВЫБОР
КОГДА Движения.Период IS NULL
ТОГДА 0
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоКонечныйОстаток
КОГДА Движения.Период <= ДНИ.Период
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоКонечныйОстаток
ИЗ
Дни КАК ДНИ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура = &Номенклатура) КАК Движения
ПО (ИСТИНА)
СГРУППИРОВАТЬ ПО
ДНИ.Период
ПоказатьСписок дней можно получать любым удобным способом, я об этом написал в комментарии при создании таблицы Дни. можно и формировать календарик, просто он занимает больше строк, и его код и так легко найти.
А дата остатков, актуальных для данной даты (где движений нет) не нужна - раз движений нет, то остаток, который посчитается на рассматриваемую дату, никак не будет отличаться от остатка, который получился после последнего движения.
Ваш метод необходим при работе с регистрами сведений, но в данном случае он ни к чему. *хотя, было время, я пользовался подобным алгоритмом. Он медленнее и чересчур усложнен.
ВЫБРАТЬ
0 КАК Р
ПОМЕСТИТЬ Разряды
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), ДЕНЬ, Единицы.Р + Десятки.Р * 10 + Сотни.Р * 100 + Тысячи.Р * 1000) КАК Период
ПОМЕСТИТЬ ТаблицаДат
ИЗ
Разряды КАК Единицы,
Разряды КАК Сотни,
Разряды КАК Десятки,
Разряды КАК Тысячи
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТоварыВРезервеНаСкладахОстаткиИОбороты.Период,
ТоварыВРезервеНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыВРезервеНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
РегистрНакопления.ТоварыВРезервеНаСкладах.ОстаткиИОбороты(, , День, Движения, Номенклатура = &Номенклатура) КАК ТоварыВРезервеНаСкладахОстаткиИОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТаблицаДат.Период КАК ТДПериод,
МАКСИМУМ(ВТ_Остатки.Период) КАК ПериодРО,
ВТ_Остатки.Номенклатура
ПОМЕСТИТЬ ВТ_БлижайшиеДатыОстатков
ИЗ
ТаблицаДат КАК ТаблицаДат
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ПО ТаблицаДат.Период >= ВТ_Остатки.Период
СГРУППИРОВАТЬ ПО
ТаблицаДат.Период,
ВТ_Остатки.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_БлижайшиеДатыОстатков.ТДПериод КАК ТДПериод,
ВТ_Остатки.Номенклатура,
ВТ_Остатки.КоличествоКонечныйОстаток
ИЗ
ВТ_БлижайшиеДатыОстатков КАК ВТ_БлижайшиеДатыОстатков
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
УПОРЯДОЧИТЬ ПО
ТДПериод Показать
ВЫБРАТЬ
0 КАК Р
ПОМЕСТИТЬ Разряды
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), ДЕНЬ, Единицы.Р + Десятки.Р * 10 + Сотни.Р * 100 + Тысячи.Р * 1000) КАК Период
ПОМЕСТИТЬ ТаблицаДат
ИЗ
Разряды КАК Единицы,
Разряды КАК Десятки,
Разряды КАК Сотни,
Разряды КАК Тысячи
ГДЕ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), ДЕНЬ, Единицы.Р + Десятки.Р * 10 + Сотни.Р * 100 + Тысячи.Р * 1000) <= &ДатаОкончания
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Период,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, Движения, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстаткиИОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТаблицаДат.Период КАК ТДПериод,
МАКСИМУМ(ВТ_Остатки.Период) КАК ПериодРО,
ВТ_Остатки.Номенклатура
ПОМЕСТИТЬ ВТ_БлижайшиеДатыОстатков
ИЗ
ТаблицаДат КАК ТаблицаДат
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ПО ТаблицаДат.Период >= ВТ_Остатки.Период
СГРУППИРОВАТЬ ПО
ТаблицаДат.Период,
ВТ_Остатки.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_БлижайшиеДатыОстатков.ТДПериод КАК ТДПериод,
ВТ_Остатки.Номенклатура,
ВТ_Остатки.КоличествоКонечныйОстаток,
ТоварыНаСкладахОбороты.Регистратор
ИЗ
ВТ_БлижайшиеДатыОстатков КАК ВТ_БлижайшиеДатыОстатков
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)
ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
УПОРЯДОЧИТЬ ПО
ТДПериод
ПоказатьУ меня выводится , но если не было движения например по расходу он берет последний расход, допустим от 10.01, и до конца месяца его проставляет, хотя должно стоять по нулям, так же и с расходом (.
ВЫБРАТЬ
0 КАК Р
ПОМЕСТИТЬ Разряды
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), ДЕНЬ, Единицы.Р + Десятки.Р * 10 + Сотни.Р * 100 + Тысячи.Р * 1000) КАК Период
ПОМЕСТИТЬ ТаблицаДат
ИЗ
Разряды КАК Единицы,
Разряды КАК Десятки,
Разряды КАК Сотни,
Разряды КАК Тысячи
ГДЕ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), ДЕНЬ, Единицы.Р + Десятки.Р * 10 + Сотни.Р * 100 + Тысячи.Р * 1000) <= &ДатаОкончания
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Период,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, Движения, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстаткиИОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТаблицаДат.Период КАК ТДПериод,
МАКСИМУМ(ВТ_Остатки.Период) КАК ПериодРО,
ВТ_Остатки.Номенклатура
ПОМЕСТИТЬ ВТ_БлижайшиеДатыОстатков
ИЗ
ТаблицаДат КАК ТаблицаДат
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ПО ТаблицаДат.Период >= ВТ_Остатки.Период
СГРУППИРОВАТЬ ПО
ТаблицаДат.Период,
ВТ_Остатки.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_БлижайшиеДатыОстатков.ТДПериод КАК ТДПериод,
ВТ_Остатки.Номенклатура,
ВЫБОР КОГДА НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Регистратор.Дата, ДЕНЬ) <> ВТ_БлижайшиеДатыОстатков.ТДПериод ТОГДА 0 ИНАЧЕ ТоварыНаСкладахОбороты.КоличествоПриход КОНЕЦ КАК Приход,
ВЫБОР КОГДА НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Регистратор.Дата, ДЕНЬ) <> ВТ_БлижайшиеДатыОстатков.ТДПериод ТОГДА 0 ИНАЧЕ ТоварыНаСкладахОбороты.КоличествоРасход КОНЕЦ КАК Расход,
ВТ_Остатки.КоличествоКонечныйОстаток,
ВЫБОР КОГДА НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Регистратор.Дата, ДЕНЬ) <> ВТ_БлижайшиеДатыОстатков.ТДПериод ТОГДА Неопределено ИНАЧЕ ТоварыНаСкладахОбороты.Регистратор КОНЕЦ КАК Регистратор
ИЗ
ВТ_БлижайшиеДатыОстатков КАК ВТ_БлижайшиеДатыОстатков
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)
ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
УПОРЯДОЧИТЬ ПО
ТДПериод
ПоказатьВЫБРАТЬ
0 КАК Р
ПОМЕСТИТЬ Разряды
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), ДЕНЬ, Единицы.Р + Десятки.Р * 10 + Сотни.Р * 100 + Тысячи.Р * 1000) КАК Период
ПОМЕСТИТЬ ТаблицаДат
ИЗ
Разряды КАК Единицы,
Разряды КАК Десятки,
Разряды КАК Сотни,
Разряды КАК Тысячи
ГДЕ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), ДЕНЬ, Единицы.Р + Десятки.Р * 10 + Сотни.Р * 100 + Тысячи.Р * 1000) <= &ДатаОкончания
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Период,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, Движения, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстаткиИОбороты
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТаблицаДат.Период КАК ТДПериод,
МАКСИМУМ(ВТ_Остатки.Период) КАК ПериодРО,
ВТ_Остатки.Номенклатура
ПОМЕСТИТЬ ВТ_БлижайшиеДатыОстатков
ИЗ
ТаблицаДат КАК ТаблицаДат
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ПО ТаблицаДат.Период >= ВТ_Остатки.Период
СГРУППИРОВАТЬ ПО
ТаблицаДат.Период,
ВТ_Остатки.Номенклатура
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_БлижайшиеДатыОстатков.ТДПериод КАК ТДПериод,
ВТ_Остатки.Номенклатура,
ВЫБОР
КОГДА ТДПериод = ВТ_Остатки.Период
ТОГДА ВТ_Остатки.КоличествоНачальныйОстаток
ИНАЧЕ КоличествоКонечныйОстаток
КОНЕЦ КАК КоличествоНачальныйОстаток,
ВЫБОР
КОГДА ТДПериод = ВТ_Остатки.Период
ТОГДА ВТ_Остатки.КоличествоПриход
ИНАЧЕ 0
КОНЕЦ КАК КоличествоПриход,
ВЫБОР
КОГДА ТДПериод = ВТ_Остатки.Период
ТОГДА ВТ_Остатки.КоличествоРасход
ИНАЧЕ 0
КОНЕЦ КАК КоличествоРасход, ВТ_Остатки.КоличествоКонечныйОстаток,
ТоварыНаСкладахОбороты.Регистратор
ИЗ
ВТ_БлижайшиеДатыОстатков КАК ВТ_БлижайшиеДатыОстатков
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)
ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
УПОРЯДОЧИТЬ ПО
ТДПериод
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 102435
Создание 18.01.12 13:55
Обновление 18.01.12 13:55
Просмотры 105329
Загрузки 0
Рейтинг
53
Комментарии 36
Код открыт Не указано
Рубрики Запросы
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Бухгалтерский учет
Доступ к файлу Бесплатно (free)