|
как получить остатки по номенклатуре в бухгалтерии 8. | ☑ | ||
---|---|---|---|---|
0
nikolas2605
06.06.13
✎
22:46
|
Здравствуйте. Подскажите, пож-ста, как можно вытащить остатки по номенклатуре? Дорабатываю "Бухгалтерию", там написан док с табличной частью, для номенклатуры из этой табличной части и нужны остатки. Делаю запрос с левым соединением таблицы дока (беру номенклатуру) и регистра хозрасчётный (беру Субконто 1, номенклатура). Пока остатки не выводит запрос. Может, кто сталкивался с этим в 1С?
|
|||
1
dimqa
06.06.13
✎
22:58
|
Счет точно верный указываешь?
|
|||
2
shuhard
06.06.13
✎
22:59
|
(1)[Может, кто сталкивался с этим в 1С]
1С тут точно не причем |
|||
3
zak555
06.06.13
✎
23:00
|
> Дорабатываю "Бухгалтерию"
с этого момента по-подробнее |
|||
4
Nenaviwu1c20
06.06.13
✎
23:03
|
Это зависит от того на каком счете ты держишь номенклатуру(обычно 41).А дальше что-то вроде
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СпрСклады.Ссылка КАК Склад, | СпрСклады.Представление, | СпрНоменклатура.Ссылка КАК Номенклатура, | СпрНоменклатура.НаименованиеПолное КАК Наименование, | СпрНоменклатура.Представление КАК Представление1, | СУММА(ХозрасчетныйОстатки.КоличествоОстатокДт) КАК КоличествоОстатокДт, | СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК СуммаОстатокДт, | ЕСТЬNULL(СУММА(ХозрасчетныйОстатки.КоличествоОстатокДт),0)+ЕСТЬNULL(РезервированиеТоваровОстатки.КоличествоЗарезервированноОстаток, 0) КАК КоличествоСвободно, | СУММА(-РезервированиеТоваровОстатки.КоличествоЗарезервированноОстаток) Как КоличествоЗарезервированно |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&ВыбКонПериода, , , ) КАК ХозрасчетныйОстатки | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК СпрСклады | ПО ХозрасчетныйОстатки.Субконто2 = СпрСклады.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура | ПО ХозрасчетныйОстатки.Субконто1 = СпрНоменклатура.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РезервированиеТоваров.Остатки(&ВыбКонПериода,ДатаОкончания >= &ВыбКонПериода ) КАК РезервированиеТоваровОстатки | ПО (ХозрасчетныйОстатки.Субконто2 = РезервированиеТоваровОстатки.Склад | И ХозрасчетныйОстатки.Субконто1 = РезервированиеТоваровОстатки.Номенклатура) |ГДЕ | ХозрасчетныйОстатки.Счет В ИЕРАРХИИ(&ВыбСчета)"; |
|||
5
Nenaviwu1c20
06.06.13
✎
23:06
|
и условие где перенеси в условие таблицы
|
|||
6
nikolas2605
06.06.13
✎
23:07
|
(1), (3) Вроде сам дошёл. Там трудно под их специфику переработать реализацию товаров и услуг, поэтому под них сделан документ на списание материалов. Код пока такой сделал, в отладчике остаток получил (извините, не знаю, как тут код вставить правильно.
МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; //укажем, какой менеджер временных таблиц использует этот запрос Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | НакладнаяНаСписаниеМатериалы.Наименование, | НакладнаяНаСписаниеМатериалы.Количество, | НакладнаяНаСписаниеМатериалы.ОбщаяПлощадь, | НакладнаяНаСписаниеМатериалы.Цена, | НакладнаяНаСписаниеМатериалы.Сумма, | НакладнаяНаСписаниеМатериалы.ЕдИзм, | НакладнаяНаСписаниеМатериалы.Ссылка |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | Документ.НакладнаяНаСписание.Материалы КАК НакладнаяНаСписаниеМатериалы |ГДЕ | НакладнаяНаСписаниеМатериалы.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); Запрос2 = Новый Запрос; Запрос2.МенеджерВременныхТаблиц = МенеджерВТ; Запрос2.Текст = "ВЫБРАТЬ | НоменклатураДокумента.Наименование, | НоменклатураДокумента.Количество, | НоменклатураДокумента.ОбщаяПлощадь, | НоменклатураДокумента.Сумма, | ЦеныНоменклатуры.ТипЦен, | ЦеныНоменклатуры.Номенклатура, | ЦеныНоменклатуры.Цена, | НоменклатураДокумента.Ссылка, | ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстаток, 0) КАК ОстатокПоСумме, | ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК ОстатокПоКоличеству, | ХозрасчетныйОстатки.Субконто1 |ИЗ | НоменклатураДокумента КАК НоменклатураДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО НоменклатураДокумента.Наименование = ЦеныНоменклатуры.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки | ПО НоменклатураДокумента.Наименование = ХозрасчетныйОстатки.Субконто1.Ссылка |ГДЕ | ЦеныНоменклатуры.ТипЦен = &ТипЦен | И НоменклатураДокумента.Ссылка = &Ссылка"; Запрос2.УстановитьПараметр("ТипЦен", ЗакупочнаяЦена); Запрос2.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос2.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); |
|||
7
Живой Ископаемый
06.06.13
✎
23:09
|
нельзя это сделать в в8, это еще сырой продукт, там половина функций не рабтает
|
|||
8
Nenaviwu1c20
06.06.13
✎
23:10
|
|ИЗ
| НоменклатураДокумента КАК НоменклатураДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО НоменклатураДокумента.Наименование = ЦеныНоменклатуры.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки | ПО НоменклатураДокумента.Наименование = ХозрасчетныйОстатки.Субконто1.Ссылка ?????????????????????????????????????????????????????? Ты как наименование со ссылкой связываешь? |
|||
9
nikolas2605
06.06.13
✎
23:14
|
(8) Да временную таблицу сделал, так как кроме остатков ещё данные нужно получить. Кодить, можно сказать, только начинаю, Радченко передо мной, вот и тренируюсь.
А как вы предлагаете? (4)? |
|||
10
Nenaviwu1c20
06.06.13
✎
23:14
|
(7) Все отлично
работает) |
|||
11
nikolas2605
06.06.13
✎
23:16
|
Ещё текущий вопрос - как в запросе для остатков период установить?
|
|||
12
Живой Ископаемый
06.06.13
✎
23:18
|
2(10) Все отлично врут
|
|||
13
hhhh
06.06.13
✎
23:23
|
(11) ну возьми типовой документ списания и скопируй оттуда.
|
|||
14
Nenaviwu1c20
06.06.13
✎
23:23
|
Ты на каком счете остатки проверяешь и какие него субконто?
|
|||
15
nikolas2605
06.06.13
✎
23:25
|
(13, 14) Сейчас посмотрю типовую реализацию. Счет 10.01 Материалы
|
|||
16
hhhh
06.06.13
✎
23:27
|
за выражение
ХозрасчетныйОстатки.Субконто1.Ссылка надо не только руки поотрубать, но и ноги. |
|||
17
nikolas2605
06.06.13
✎
23:28
|
(16)Может быть. Не спорю.
|
|||
18
Nenaviwu1c20
06.06.13
✎
23:28
|
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос; //укажем, какой менеджер временных таблиц использует этот запрос Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | НакладнаяНаСписаниеМатериалы.Номенклатура, | НакладнаяНаСписаниеМатериалы.Количество, | НакладнаяНаСписаниеМатериалы.ОбщаяПлощадь, | НакладнаяНаСписаниеМатериалы.Цена, | НакладнаяНаСписаниеМатериалы.Сумма, | НакладнаяНаСписаниеМатериалы.ЕдИзм, | НакладнаяНаСписаниеМатериалы.Ссылка |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | Документ.НакладнаяНаСписание.Материалы КАК НакладнаяНаСписаниеМатериалы |ГДЕ | НакладнаяНаСписаниеМатериалы.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); Запрос2 = Новый Запрос; Запрос2.МенеджерВременныхТаблиц = МенеджерВТ; Запрос2.Текст = "ВЫБРАТЬ | НоменклатураДокумента.Номенклатура, | НоменклатураДокумента.Количество, | НоменклатураДокумента.ОбщаяПлощадь, | НоменклатураДокумента.Сумма, | ЦеныНоменклатурыСрезПоследних.ТипЦен, | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1, | ЦеныНоменклатурыСрезПоследних.Цена, | НоменклатураДокумента.Ссылка, | ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстаток, 0) КАК ОстатокПоСумме, | ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК ОстатокПоКоличеству, | ХозрасчетныйОстатки.Субконто1 |ИЗ | НоменклатураДокумента КАК НоменклатураДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаНаКоторуюПроверяешь, Счет В ИЕРАРХИИ (&Счет10), , Субконто2 = &Склад) КАК ХозрасчетныйОстатки | ПО НоменклатураДокумента.Номенклатура = ХозрасчетныйОстатки.Субконто1 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаНаКоторуюПроверяешь, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО НоменклатураДокумента.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | НоменклатураДокумента.Ссылка = &Ссылка"; Запрос2.УстановитьПараметр("ТипЦен", ЗакупочнаяЦена); Запрос2.УстановитьПараметр("Ссылка", Ссылка); Запрос2.УстановитьПараметр("ДатаНаКоторуюПроверяешь",ссылка.Дата); Запрос2.УстановитьПараметр("Склад", Ссылка.Склад); Запрос2.УстановитьПараметр("Счет10", ПланыСчетов.Хозрасчетный.Материалы); Результат = Запрос2.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); |
|||
19
Nenaviwu1c20
06.06.13
✎
23:29
|
и то я сам как попало написал.но взлететь должно
|
|||
20
Nenaviwu1c20
06.06.13
✎
23:31
|
(16) Человек же сам сказал Учится)))
|
|||
21
Nenaviwu1c20
06.06.13
✎
23:38
|
а вот пример процедуры общей проверки(написана ручками)
//Проверяет остаток на складе с учетом резервации ЗМ Функция ПроверитьОстатокНаСкладе(отказ,Ссылка,ДокументОбъект)Экспорт ИмяДокумента = ДокументОбъект.метаданные().Имя; ТипЗначения = ТипЗнч(Ссылка) = Тип("ДокументСсылка.ПеремещениеТоваров"); Запрос = новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) + ЕСТЬNULL(РезервированиеТоваровОстатки.КоличествоЗарезервированноОстаток, 0) КАК КоличествоОстатокДт, | ДокументТовары.Номенклатура КАК Субконто1 |ИЗ | Документ."+ИмяДокумента+".Товары КАК ДокументТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаКон, Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстатки | ПО ДокументТовары.Номенклатура = ХозрасчетныйОстатки.Субконто1 | И ДокументТовары.Ссылка."+?(ТипЗначения = Истина ,"СкладОтправитель","Склад")+" = ХозрасчетныйОстатки.Субконто2 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РезервированиеТоваров.Остатки(&ДатаКон, ДатаОкончания >= &ДатаКон) КАК РезервированиеТоваровОстатки | ПО ДокументТовары.Номенклатура = РезервированиеТоваровОстатки.Номенклатура | И ДокументТовары.Ссылка."+?(ТипЗначения = Истина ,"СкладОтправитель","Склад")+" = РезервированиеТоваровОстатки.Склад |ГДЕ | ДокументТовары.Ссылка = &Ссылка | И ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) + ЕСТЬNULL(РезервированиеТоваровОстатки.КоличествоЗарезервированноОстаток, 0) < ДокументТовары.Количество" ; Запрос.УстановитьПараметр("Ссылка" ,Ссылка); Запрос.УстановитьПараметр("ДатаКон" ,Ссылка.Дата); Запрос.УстановитьПараметр("Счет" ,ПланыСчетов.Хозрасчетный.ТоварыНаСкладах); Выборка = Запрос.Выполнить().Выбрать(); пока Выборка.Следующий() цикл отказ =Истина; Сообщить("Остаток на складе номенклатуры "+Выборка.Субконто1+" равен "+Выборка.КоличествоОстатокДт+" .Проведение документа невозможно"); КонецЦикла; Возврат отказ; КонецФункции |
|||
22
nikolas2605
06.06.13
✎
23:41
|
(20)спасибо большое. Там цель вся в том, чтобы списать товар по средней стоимости. А так как это не реализация, а дорабатываемый по специфике организации документ, то и проводки по хозрасчётному регистру прописываю для него вручную.
|
|||
23
Nenaviwu1c20
06.06.13
✎
23:43
|
НЗ удачи (22)
|
|||
24
Nenaviwu1c20
06.06.13
✎
23:43
|
кстати получилось все у тебя?
|
|||
25
nikolas2605
06.06.13
✎
23:48
|
(24) сижу проверяю. Пока, правда, без периода, на оперативном проведении.
|
|||
26
Nenaviwu1c20
06.06.13
✎
23:50
|
Если что я тут пиши попробуем решить задачку
|
|||
27
nikolas2605
06.06.13
✎
23:54
|
хорошо
|
|||
28
nikolas2605
07.06.13
✎
00:01
|
пока нормально считает
|
|||
29
Nenaviwu1c20
07.06.13
✎
00:03
|
гудненько)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |