Имя: Пароль:
1C
1С v8
Неверный запрос партий
0 apdate by
 
03.03.22
16:50
Доброго дня!

Помогите туплю уже что то не понимаю

в общем пусть 05.05.2020 15:00:00 двинули товар А на склад Дт. 41.1 (этого товара еще не-было)

далее делаем перемещение запрашиваю остаток на конец дня так как мне нужно двинуть по партиям этот товар но тут что то идет не так :-(

вот запрос

Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ХозрасчетныйОстатки.Счет,
    |    ХозрасчетныйОстатки.Субконто1,
    |    ХозрасчетныйОстатки.Субконто2,
    |    ХозрасчетныйОстатки.Субконто3,
    |    ХозрасчетныйОстатки.Субконто4,
    |    ХозрасчетныйОстатки.Организация,
    |    ХозрасчетныйОстатки.СуммаОстатокДт,
    |    ХозрасчетныйОстатки.КоличествоОстатокДт
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(
    |   &ВыбДата,
    |   Счет = &ВыбСчет,
    |   &ВидыСубконто,
    |   Субконто1 = &ВыбСклад
    |   И    
    |   Субконто2 = &ВыбСтавкаНДС
    |   И
    |   Субконто3 = &ВыбНоменклатура
    |   ) КАК ХозрасчетныйОстатки";
    
    ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склад);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтавкаНДС);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партия);
    
    НастройкиБУ = Константы.НастройкиБухгалтерскогоУчета.Получить();
    Запрос.УстановитьПараметр("ВыбСклад",СкладОтправитель.Ссылка);
    Запрос.УстановитьПараметр("ВыбНоменклатура",Товар.Ссылка);
    Запрос.УстановитьПараметр("ВыбСтавкаНДС",Товар.Ссылка.СтавкаНДС);
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
    Запрос.УстановитьПараметр("ВыбДата", КонецДня(датаДок));
    Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.КоличествоОстатокДт > 0 Тогда
            НовСтрПартии = ТЗПартий.Добавить();
            НовСтрПартии.ДатаПартии        = ВыборкаДетальныеЗаписи.Субконто4.ПриходныйДокумент.Дата;
            НовСтрПартии.СкладМагазин      = ВыборкаДетальныеЗаписи.Субконто1;
            НовСтрПартии.Партия            = ВыборкаДетальныеЗаписи.Субконто4;
            НовСтрПартии.КоличествоОстаток = ВыборкаДетальныеЗаписи.КоличествоОстатокДт;
            НовСтрПартии.СуммаОстаток      = ВыборкаДетальныеЗаписи.СуммаОстатокДт;
        КонецЕсли;
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    
    
    
    ТЗПартий.Сортировать("ДатаПартии Возр");
    
    Возврат ТЗПартий;

так Вот ТЗ пустая

а если обороты запрашиваю то показывает как быть?

мне необходимо получить все первые незакрытые партии даже те которые поступили сегодня
1 piter3
 
03.03.22
16:52
показывай параметры
2 apdate by
 
03.03.22
16:55
Функция НайтиПервыеНезакрытыеПартииПоСкладу(Товар,СкладОтправитель,датаДок)
    ТЗПартий = Новый ТаблицаЗначений;
    ТЗПартий.Колонки.Добавить("ДатаПартии");
    ТЗПартий.Колонки.Добавить("СкладМагазин");
    ТЗПартий.Колонки.Добавить("Партия");
    ТЗПартий.Колонки.Добавить("КоличествоОстаток");
    ТЗПартий.Колонки.Добавить("СуммаОстаток");
    
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
3 Homer
 
03.03.22
16:59
и у вас пряма в программе 4 субконта на 41 счете?
4 apdate by
 
03.03.22
17:01
Да это самописная
5 apdate by
 
03.03.22
17:02
Субк1 = Склады
Субк2 = СтавкиНДС
Субк3= Номенклатура
Субк4= Партии
6 apdate by
 
03.03.22
17:03
+(0) (так Вот ТЗ пустая) не верно написал Пордоньте )

в общем если были только обороты в запрошенном периоде тогда пусто

если же сальдо на начало было тогда все ок
7 Homer
 
03.03.22
17:06
(6) а где у вас в запросе про запрошенные период что то?
В чем проблема взять таблицу ОстаткиИОбороты
8 apdate by
 
03.03.22
17:08
(7)  |    РегистрБухгалтерии.Хозрасчетный.Остатки(
    |   &ВыбДата,

И
Запрос.УстановитьПараметр("ВыбДата", КонецДня(датаДок));

вот период вернее на последюнюю дату
9 apdate by
 
03.03.22
17:08
(7) что касаемо ОстаткиИОбороты то я пробовал но что то так-же не так

я всегда получаю по две записи одинаковые (

хоть она и одна (
10 hhhh
 
03.03.22
19:10
(8) КонецДня в остатках не катит, переделывайте.
11 apdate by
 
04.03.22
10:00
(10) перечитал запрос в типовой и не понял что изменить.

помогите исправить ситуацию пожалуйста

что в моем запросе не так?
12 apdate by
 
04.03.22
10:21
Что то не пойму здесь то же обсуждалось v8: Как получить остатки на конец периода по счету ?

у меня ничем не отличается запрос и при всем при этом все равно не получаю данные что за оно?
13 Homer
 
04.03.22
10:25
(12)Ты же сам пишешь что тебе не просто надо остаток на конец но и обороты (6)
Что ты от нас просишь если ты не понимаешь сам что тебе надо!
14 apdate by
 
04.03.22
10:27
(13) я верно понимаю

что если сальдо на начало нету и если есть обороты только то в этом же периоде не будет сальдо конечного?

(просто я следовал логике что если оборот уже имеется то и конечное сальдо будет)? я не верно понял?
15 apdate by
 
04.03.22
10:30
прост осмотрел на оборотку там сальдо показывает и подумал что получу его не смотря на обороты

в общем понял я, Спасибо буду рулить Остатки и обороты
16 Homer
 
04.03.22
10:32
(14) Если на дату формирования запроса остатка нету, то ни при каких условиях эти данные не будут в запросе т к их нету физически в таблицах остатков.
Что вам надо я не знаю.
17 apdate by
 
04.03.22
10:32
ПОдскажите

мне необходимо получить Сальдо по дебету (сумму и количество

далее оборот по Кт (С/К)

и оборот по Дт (С/К)

и далее СКД = (КТОборот - ДтОборот) + Сальдо на начало верно?
18 apdate by
 
04.03.22
10:33
(16) Мне необходимо получить партии товара в остатке что бы затем их списать
19 Homer
 
04.03.22
10:35
(18) вы приведите конкретный пример. Что у вас есть и что вы хотите получить.
20 apdate by
 
04.03.22
10:50
(19)
01 01 2022 16:00:00 Поступил товар А в количестве 2шт на сумму 2руб создана партия А1

01 01 2022 16:10:00 Поступил товар А в количестве 6шт на сумму 6руб создана партия А2

01 01 2022 16:30:00 Перемещаем этот товар на Магазин в количестве 3шт

Так вот необходимо двинуть этот товар по

Партии А1 - в количестве 2шт

И

ПО Партии А2 - в Количестве 3шт

Как получить данные партии?
21 apdate by
 
04.03.22
10:51
+(20) ошибся 01 01 2022 16:30:00 Перемещаем этот товар на Магазин в количестве не 3шт а 5шт перемещаем :-)
22 apdate by
 
04.03.22
10:52
(19/20) товары лежат на Дт счете 41.1
23 Homer
 
04.03.22
10:56
Перемещение изначально делает движения? и какие
24 Homer
 
04.03.22
10:57
и что если есть остатки на начало или такого не бывает
25 apdate by
 
04.03.22
11:04
Остатки конечно на начало могут быть

движения перемещение делает Дт 41.2 Кт 41.1 в разрезе партий

вот накидал запрос новый

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   ХозрасчетныйОстаткиИОбороты.Период,
        |   ХозрасчетныйОстаткиИОбороты.Счет,
        |   ХозрасчетныйОстаткиИОбороты.Субконто1,
        |    ХозрасчетныйОстаткиИОбороты.Субконто2,
        |    ХозрасчетныйОстаткиИОбороты.Субконто3,
        |    ХозрасчетныйОстаткиИОбороты.Субконто4,
        |   ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт,
        |   ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
        |   ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
        |   ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
        |       &ВыбДатаНачало,
        |       &ВыбДатаКонец,
        |       Месяц,
        |       ДвиженияИГраницыПериода,
        |       Счет = &ВыбСчет,
        |       &ВидыСубконто,
        |       Субконто1 = &ВыбТовар
        |       И
        |       Субконто3 = &ВыбНоменклатура
        |   ) КАК ХозрасчетныйОстаткиИОбороты";
    
    ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склад);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтавкаНДС);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партия);
    
    НастройкиБУ = Константы.НастройкиБухгалтерскогоУчета.Получить();
    Запрос.УстановитьПараметр("ВыбСклад",СкладОтправитель.Ссылка);
    Запрос.УстановитьПараметр("ВыбНоменклатура",Товар.Ссылка); //Товар.Ссылка.Код = "УТ-00027382"
    //Запрос.УстановитьПараметр("ВыбСтавкаНДС",Товар.Ссылка.СтавкаНДС);
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
    Запрос.УстановитьПараметр("ВыбДатаНачало", НачалоДня(датаДок));
    Запрос.УстановитьПараметр("ВыбДатаКонец", КонецДня(датаДок));
    Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);    
    РезультатЗапроса = Запрос.Выполнить();


щас буду отлаживать
26 apdate by
 
04.03.22
11:40
(25) пусто даже оборотов не получаю (
27 apdate by
 
04.03.22
11:43
+(26) запрос выполняется только если есть начальный остаток

обороты он не показывает что здесь не так то?
28 apdate by
 
04.03.22
11:55
Всем спасибо

запрос работает верно

просто что то именно с этим товаром не так (

дело в том что точно такая же ситуация (в движениях я имею в виду) с другим товаром и все нормлаьно отрабатывает и к Стате даже сальо на конец показывает!!

тоесть другой совсем товар у него только оборот по Дебету и запрос вывел мне сальдо

а именно по этому товару какая то ерунда
29 apdate by
 
04.03.22
12:03
В общем разобрался :-)

ДВА ДНЯ ВОЗИЛСЯ НЕ МОГ ПОНЯТЬ В ЧЕМ ДЕЛО

В общем программу писал кто то другой до меня в ней по сути вдаётся только товарный учет

то есть приходуются товары на склад и выгружаются на кассы

а бухгалтерия ведется вообще в 7-ке и к тому же там суммовой учет

но из за перехода на общую систему необходимо работать немного по другому

а так как товары хранятся в регистрах я решил сделать в программе движения вт/ч по Бух счетам

так вот проблема вся в том

что тот кто до меня работал  он допустил ошибку и контроль остатка работал не верно

и тут повилась проблема

в общем партионный учет я решил сделать следующим обр

я создал документ ЗакрытиеМесяца

В котором заполняются все документы которые двигают склад и далее сортируются по дате и времени

далее я обхожу вс еэти документы и формирую проводки

вс ебы нечего да вот попался такой товар который

05 05 2020 в 18 30 00 был оприходован

А перемещение было сделано 05 05 2020 в 15 20 00

Тут то и проблема когда я игнорил остаток и проводил документы далее смотрел оборотку там вс ебыло тип топ

я знал что приход сделали позже поэтому в парамтер добавил КОнецДня(

Но я не учел что двигаю то эти документы из отсортированного списка

а следовательно в тот момент когда я двигал перемещение я еще ниразу не двинул приход товара )
30 apdate by
 
04.03.22
12:19
Перепровел приход новым временем и все взлетело ))

Мой запрос из (0) прекрасно работает даже если нету сальдо на начало а только обороты я всеравно получаю конечное сальдо

ТЗПартий = Новый ТаблицаЗначений;
    ТЗПартий.Колонки.Добавить("ДатаПартии");
    ТЗПартий.Колонки.Добавить("СкладМагазин");
    ТЗПартий.Колонки.Добавить("Партия");
    ТЗПартий.Колонки.Добавить("КоличествоОстаток");
    ТЗПартий.Колонки.Добавить("СуммаОстаток");
    
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ХозрасчетныйОстатки.Счет,
    |    ХозрасчетныйОстатки.Субконто1,
    |    ХозрасчетныйОстатки.Субконто2,
    |    ХозрасчетныйОстатки.Субконто3,
    |    ХозрасчетныйОстатки.Субконто4,
    |    ХозрасчетныйОстатки.Организация,
    |    ХозрасчетныйОстатки.СуммаОстатокДт,
    |    ХозрасчетныйОстатки.КоличествоОстатокДт
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(
    |   &ВыбДата,
    |   Счет = &ВыбСчет,
    |   &ВидыСубконто,
    |   Субконто1 = &ВыбСклад
    |   И    
    |   Субконто2 = &ВыбСтавкаНДС
    |   И
    |   Субконто3 = &ВыбНоменклатура
    |   ) КАК ХозрасчетныйОстатки";
    
    ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склад);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтавкаНДС);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партия);
    
    НастройкиБУ = Константы.НастройкиБухгалтерскогоУчета.Получить();
    Запрос.УстановитьПараметр("ВыбСклад",СкладОтправитель.Ссылка);
    Запрос.УстановитьПараметр("ВыбНоменклатура",Товар.Ссылка); //Товар.Ссылка.Код = "УТ-00027382"
    Запрос.УстановитьПараметр("ВыбСтавкаНДС",Товар.Ссылка.СтавкаНДС);
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
    Запрос.УстановитьПараметр("ВыбДата", КонецДня(датаДок));
    Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.КоличествоОстатокДт > 0 Тогда
            НовСтрПартии = ТЗПартий.Добавить();
            НовСтрПартии.ДатаПартии        = ВыборкаДетальныеЗаписи.Субконто4.ПриходныйДокумент.Дата;
            НовСтрПартии.СкладМагазин      = ВыборкаДетальныеЗаписи.Субконто1;
            НовСтрПартии.Партия            = ВыборкаДетальныеЗаписи.Субконто4;
            НовСтрПартии.КоличествоОстаток = ВыборкаДетальныеЗаписи.КоличествоОстатокДт;
            НовСтрПартии.СуммаОстаток      = ВыборкаДетальныеЗаписи.СуммаОстатокДт;
        КонецЕсли;
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    
    
    
    ТЗПартий.Сортировать("ДатаПартии Возр");
    
    Возврат ТЗПартий;
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn