|   |   | 
| 
 | Извлечь данные из счетов | ☑ | ||
|---|---|---|---|---|
| 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)После ваших правок - не работает. Потому что вы взяли из темы кусок запроса и "приклеили" к тексту своего запроса.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |