|
Извлечь данные из счетов | ☑ | ||
---|---|---|---|---|
0
Slypower
02.05.16
✎
15:00
|
Добрый день. Работаю я с 1с7.7 Предприятие. Попросили изменить отчет в 8.2. Суть отчета, чтобы к строке прибавить данные из дебета счета 91,4 и кредита счета 57,2. Помогите эти данные достать запросом. Дальше я сам разберусь
|
|||
1
zenik
02.05.16
✎
15:30
|
ТекстЗапроса =
"ВЫБРАТЬ | ДТ94.Сумма КАК ДТ94_Сумма, | КТ57.Сумма КАК КТ57_Сумма |ИЗ | (ВЫБРАТЬ | СУММА(Хозрасчетный.Сумма) КАК Сумма | ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный | ГДЕ | Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода | И Хозрасчетный.СчетДт = &ДТ91) КАК ДТ91, | (ВЫБРАТЬ | СУММА(Хозрасчетный.Сумма) КАК Сумма | ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный | ГДЕ | Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода | И Хозрасчетный.СчетКт = &КТ57) КАК КТ57" Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода); Запрос.УстановитьПараметр("КонецПериода", КонецПериода); Запрос.УстановитьПараметр("ДТ94", ПланыСчетов.Хозрасчетный.НайтиПоКоду("91.4")); Запрос.УстановитьПараметр("КТ57", ПланыСчетов.Хозрасчетный.НайтиПоКоду("57.2")); Запрос.Выполнить().Выгрузить().ВыбратьСтроку(); |
|||
2
Slypower
03.05.16
✎
15:21
|
Делаю по аналогии отчета. Вначале добавляю строки:
Новаястрока=таблица.Добавить(); новаястрока.счет=планысчетов.Хозрасчетный.НайтиПоКоду("57.2"); Затем: Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("57.2") тогда счета=Новый СписокЗначений; счета.Добавить(планысчетов.Хозрасчетный.НайтиПоКоду("91.4")); счета.Добавить(планысчетов.Хозрасчетный.НайтиПоКоду("57.2")); Запрос.УстановитьПараметр("Счет", Счета); Иначе Запрос.УстановитьПараметр("Счет", Счет); конецЕсли; потом вставляю из вашего кода: Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("57.2") тогда Текст=текст___plus___" | ДТ94.Сумма КАК ДТ94_Сумма, | КТ57.Сумма КАК КТ57_Сумма |ИЗ | (ВЫБРАТЬ | СУММА(Хозрасчетный.Сумма) КАК Сумма | ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный | ГДЕ | Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода | И Хозрасчетный.СчетДт = &ДТ91) КАК ДТ91, | (ВЫБРАТЬ | СУММА(Хозрасчетный.Сумма) КАК Сумма | ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный | ГДЕ | Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода | И Хозрасчетный.СчетКт = &КТ57) КАК КТ57"; КонецЕсли; Вываливается с ошибкой: {ВнешнийОтчет.АХД_1.МодульОбъекта(550)}: Ошибка при вызове метода контекста (Выполнить) РезультатЗапроса = Запрос.Выполнить(); по причине: {(10, 5)}: Синтаксическая ошибка "ДТ94.Сумма" <<?>>ДТ94.Сумма КАК ДТ94_Сумма Не могу вкурить(( |
|||
3
zak555
03.05.16
✎
15:56
|
(1) что это ?
|
|||
4
zenik
03.05.16
✎
15:58
|
(2) Сорь, по запарке не тот счет вписал:
И Хозрасчетный.СчетДт = &ДТ91) КАК ДТ91, заменить на И Хозрасчетный.СчетДт = &ДТ91) КАК ДТ94, |
|||
5
zenik
03.05.16
✎
15:59
|
(3) Учебное пособие :)
|
|||
6
hhhh
03.05.16
✎
16:01
|
(5) быдлокод нереальный, уничтожь как можно быстрее.
|
|||
7
Slypower
03.05.16
✎
16:02
|
вы знаете, не помогло(((
{(10, 5)}: Синтаксическая ошибка "ДТ94.Сумма" <<?>>ДТ94.Сумма КАК ДТ94_Сумма, есть какой мануал по ошибкам? в 7.7 хоть писало подробнее, а тут ошибка и все. В чем? Может ошибка в другом каком месте кода? |
|||
8
zenik
03.05.16
✎
16:04
|
(7) Запрос начинается с "ВЫБРАТЬ"...
|
|||
9
Slypower
03.05.16
✎
16:06
|
(8) он начинается с выбрать. Это одно из условий запроса. Там их несколько.
|
|||
10
zenik
03.05.16
✎
16:07
|
(9) и что там перед этим?
|
|||
11
Slypower
03.05.16
✎
16:09
|
(10) вот перед этим.
"ВЫБРАТЬ"; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("44.2.1") тогда текст=текст___plus___" | ОстаткиИОбороты.Субконто1 КАК Субконто1,"; КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("51") тогда Текст=текст___plus___" | Обороты.СуммаОборотДт КАК СуммаОборотДт, | Обороты.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон,,Счет=&Счет,,Организация = &Организация ,корсчет=&корсчет,) КАК Обороты"; ИначеЕсли (счет=планысчетов.Хозрасчетный.НайтиПоКоду("91.4")) ИЛИ (счет=планысчетов.Хозрасчетный.НайтиПоКоду("10.9.1")) тогда Текст=текст___plus___" |Сумма(Обороты.Сумма) КАК Сумма |ИЗ |РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНач, &ДатаКон, (Счет В ИЕРАРХИИ (&Счет)) И (Организация = &Организация)) КАК Обороты"; Иначе Текст=текст___plus___" | ОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт, | ОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт, | ОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт, | ОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт, | ОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт, | ОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ОстаткиИОбороты"; КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("91.4") тогда Текст=текст___plus___" |ГДЕ |СубконтоКт1 В (&СписокКонтров) И |СубконтоДт1=&СубконтоДт1"; КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("10.9.1") тогда Текст=текст___plus___" |ГДЕ |СубконтоКт1 В (&СписокКонтров)"; КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("44.2.1") тогда текст=текст___plus___" |ИТОГИ | СУММА(СуммаОборотДт) |ПО | ОБЩИЕ"; КонецЕсли; |
|||
12
zenik
03.05.16
✎
16:13
|
В вашем запросе уже есть 91.4... зачем еще?
|
|||
13
Slypower
03.05.16
✎
16:16
|
мне нужно вылудить курсовую разницу, которая берется из счетов 91.4 Дт и 57.2 Кт. Я хотел запросом достать и присвоить переменной. Потом просто отнять/прибавить эту переменную в нужном месте
|
|||
14
Slypower
03.05.16
✎
16:29
|
Если есть возможность это внести в уже существующий запрос, то помогите, пожалуйста
|
|||
15
hhhh
03.05.16
✎
17:09
|
(13) в восьмерке вообще нет таких счетов 57.2. Есть счет 57.02
|
|||
16
hhhh
03.05.16
✎
17:20
|
(14) вот так пробуйте
ВЫБРАТЬ ХозрасчетныйОбороты.ОборотДт КАК Сумма ИЗ Регистр.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет = &Счет91, , , КорСчет = &Счет57, ) КАК ХозрасчетныйОбороты |
|||
17
hhhh
03.05.16
✎
17:25
|
РегистрБухгалтерии
|
|||
18
Slypower
03.05.16
✎
17:55
|
(16)
РезультатЗапроса = Запрос.Выполнить(); по причине: {(10, 1)}: Синтаксическая ошибка "ХозрасчетныйОбороты.ОборотДт" <<?>>ХозрасчетныйОбороты.ОборотДт КАК Сумма Тут какое-то колдовство))) Опишите, пожалуйста, суть ошибки. Он не видит такой регистр или еще что? |
|||
19
hhhh
03.05.16
✎
18:11
|
(18) текст запроса скопируйте сюда
|
|||
20
Slypower
11.05.16
✎
11:07
|
(19)
Запрос = Новый Запрос; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("10.9.1") тогда счета=Новый СписокЗначений; счета.Добавить(планысчетов.Хозрасчетный.НайтиПоКоду("10.9.1")); счета.Добавить(планысчетов.Хозрасчетный.НайтиПоКоду("60.1")); Запрос.УстановитьПараметр("Счет", Счета); Иначе Запрос.УстановитьПараметр("Счет", Счет); КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("51") тогда Запрос.УстановитьПараметр("корСчет", планысчетов.Хозрасчетный.НайтиПоКоду("91.1")); конецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("91.4") тогда СписокКонтров=Новый СписокЗначений; СписокКонтров.Добавить(справочники.Контрагенты.НайтиПоНаименованию("МТС, СООО",истина)); СписокКонтров.Добавить(справочники.Контрагенты.НайтиПоНаименованию("Велком ИП",истина)); СписокКонтров.Добавить(справочники.Контрагенты.НайтиПоНаименованию("Белтелеком РУП",истина)); Запрос.УстановитьПараметр("СписокКонтров",СписокКонтров); Запрос.УстановитьПараметр("СубконтоДт1", справочники.ПрочиеДоходыИРасходы.НайтиПоНаименованию("Услуги сторонних организаций",истина)); конецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("10.9.1") тогда СписокКонтров=Новый СписокЗначений; СписокКонтров.Добавить(справочники.Контрагенты.НайтиПоНаименованию("БайПринт Сервис ООО",истина)); СписокКонтров.Добавить(справочники.Контрагенты.НайтиПоНаименованию("ДИЛАРинтерпрайз ООО",истина)); СписокКонтров.Добавить(справочники.Контрагенты.НайтиПоНаименованию("Белпочта РУП",истина)); СписокКонтров.Добавить(справочники.Контрагенты.НайтиПоНаименованию("Лазерпринт ООО",истина)); Запрос.УстановитьПараметр("СписокКонтров",СписокКонтров); конецЕсли; Запрос.УстановитьПараметр("ДатаНач", начдата); Запрос.УстановитьПараметр("ДатаКон", кондата); Запрос.УстановитьПараметр("Организация", Организация); текст= "ВЫБРАТЬ"; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("44.2.1") тогда текст=текст+" | ОстаткиИОбороты.Субконто1 КАК Субконто1,"; КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("51") тогда Текст=текст+" | Обороты.СуммаОборотДт КАК СуммаОборотДт, | Обороты.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон,,Счет=&Счет,,Организация = &Организация ,корсчет=&корсчет,) КАК Обороты"; ИначеЕсли (счет=планысчетов.Хозрасчетный.НайтиПоКоду("91.4")) ИЛИ (счет=планысчетов.Хозрасчетный.НайтиПоКоду("10.9.1")) тогда Текст=текст+" |Сумма(Обороты.Сумма) КАК Сумма |ИЗ |РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНач, &ДатаКон, (Счет В ИЕРАРХИИ (&Счет)) И (Организация = &Организация)) КАК Обороты"; Иначе Текст=текст+" | ОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт, | ОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт, | ОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт, | ОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт, | ОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт, | ОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ОстаткиИОбороты"; КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("91.4") тогда Текст=текст+" |ГДЕ |СубконтоКт1 В (&СписокКонтров) И |СубконтоДт1=&СубконтоДт1"; КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("10.9.1") тогда Текст=текст+" |ГДЕ |СубконтоКт1 В (&СписокКонтров)"; КонецЕсли; Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("44.2.1") тогда текст=текст+" |ИТОГИ | СУММА(СуммаОборотДт) |ПО | ОБЩИЕ"; КонецЕсли; //добавка из (16) Если счет=планысчетов.Хозрасчетный.НайтиПоКоду("91.4") тогда Текст=текст+" |ХозрасчетныйОбороты.ОборотДт КАК Сумма |ИЗ |РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет = &Счет91, , , КорСчет = &Счет57, ) КАК ХозрасчетныйОбороты "; Запрос.Текст = Текст; Возврат Запрос; |
|||
21
zenik
11.05.16
✎
23:43
|
Кто будет ваши ИначеЕсли разбирать :)
Запрос.Текст = Текст; - вот этот "текст" сюдой давай. |
|||
22
Slypower
12.05.16
✎
09:26
|
Он написан выше - "черный текст" моего предыдущего поста. Текст = ....
А в конце уже этот текст мы и присваиваем запросу |
|||
23
catena
12.05.16
✎
09:41
|
(22)Даже в 77 есть жесткие правила порядка в запросе. Почему вы считаете, что можно в 82 прилепить произвольный кусок текста к основному тексту запроса и все будет работать?
|
|||
24
hhhh
12.05.16
✎
09:51
|
(22) ну получается вы к
|ИЗ |РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНач, &ДатаКон, (Счет В ИЕРАРХИИ (&Счет)) И (Организация = &Организация)) КАК Обороты" прям снизу присобачиваете |ХозрасчетныйОбороты.ОборотДт КАК Сумма |ИЗ |РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет = &Счет91, , , КорСчет = &Счет57, ) КАК ХозрасчетныйОбороты "; как это так? |
|||
25
Slypower
13.05.16
✎
12:52
|
(24) не понял ваш вопрос. А куда нужно присобачить?
(23) отчет сделан и работает, значит можно. Сделан не мной, мне же нужно только изменить немножко и все |
|||
26
hhhh
13.05.16
✎
13:06
|
(25) просто отдельно написать запрос. Зачем в этот?
|
|||
27
catena
13.05.16
✎
13:33
|
(25)После ваших правок - не работает. Потому что вы взяли из темы кусок запроса и "приклеили" к тексту своего запроса.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |