![]() |
|
Написал обработку "Главная книга" , как сделать выборку по нескольким счетам ? | ☑ | ||
---|---|---|---|---|
0
tg30000
04.08.11
✎
05:58
|
Написана обработка "Главная книга" , как сделать выборку по нескольким счетам ?
Проблема в том , смог сделать только : 1)выборку по всем счетам 2)выборку по одному счету а как привязать например что делать выборку к примеру по : 10,01/10,02/10,03 ... и т.д. по необходимым мне счетам... как к ним обратиться ? явно прописывается или подбор может . Кто может подсказать какой будет програмный год или как сделать правильно? Процедура Сформировать(Кнопка) Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК СсылкаСчет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный" ; Если ВыбСчет.Ссылка = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда Если Не ПоСубсчетам Тогда ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Родитель = &ПустойРодитель"; Запрос.УстановитьПараметр("ПустойРодитель", ПланыСчетов.Хозрасчетный.ПустаяСсылка()); КонецЕсли; Иначе ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка = &ВыбСчет"; Запрос.УстановитьПараметр("ВыбСчет", ВыбСчет); КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |УПОРЯДОЧИТЬ ПО | Хозрасчетный.Код"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить().Выбрать(); ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Главной_книги"; Макет = ПолучитьМакет("Макетик"); Если НачПериода = '00010101000000' И КонПериода = '00010101000000' Тогда ОписаниеПериода = "без ограничения."; Иначе Если НачПериода = '00010101000000' ИЛИ КонПериода = '00010101000000' Тогда ОписаниеПериода = Формат(НачПериода, "ДФ = ""дд.ММ.гггг""; ДП = ""без ограничения""") + " - " + Формат(КонПериода, "ДФ = ""дд.ММ.гггг""; ДП = ""без ограничения"""); Иначе ОписаниеПериода = ПредставлениеПериода(НачалоДня(НачПериода), КонецДня(КонПериода), "ФП = Истина"); КонецЕсли; КонецЕсли; ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.ЗаголовокОрганизация = мОрганизация.НаименованиеПолное; ОбластьШапка.Параметры.ТекПериод = ОписаниеПериода; ТабДок.Вывести(ОбластьШапка); ОбластьСтрокаСчет = Макет.ПолучитьОбласть("СтрокаСчет"); ОбластьСтрокаТабл = Макет.ПолучитьОбласть("СтрокаТаблицы"); ОбластьПодпись = Макет.ПолучитьОбласть("Подпись"); Пока РезультатЗапроса.Следующий() Цикл ОбластьСтрокаСчет.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; Если (ПоСубсчетам) И (РезультатЗапроса.СсылкаСчет.Уровень() = 0) Тогда ОбластьСтрокаСчет.Параметры.СсылкаСчетНаименование = РезультатЗапроса.СсылкаСчет.Наименование + " (общие обороты по счету)"; Иначе ОбластьСтрокаСчет.Параметры.СсылкаСчетНаименование = РезультатЗапроса.СсылкаСчет.Наименование; КонецЕсли; ТабДок.Вывести(ОбластьСтрокаСчет); ЗапросОбороты = Новый Запрос; ТекстЗапросОбороты = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Таблица.СуммаНачальныйОстатокДт КАК СуммаНачДт, | Таблица.СуммаНачальныйОстатокКт КАК СуммаНачКт, | Таблица.СуммаКонечныйОстатокДт КАК СуммаКонДт, | Таблица.СуммаКонечныйОстатокКт КАК СуммаКонКт, | Таблица.СуммаОборотДт КАК СуммаЕстьОборотДт, | Таблица.СуммаОборотКт КАК СуммаЕстьОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&счет), , Организация = &Организация) КАК Таблица |ИТОГИ | СУММА(СуммаНачДт), | СУММА(СуммаНачКт), | СУММА(СуммаКонДт), | СУММА(СуммаКонКт), | СУММА(СуммаЕстьОборотДт), | СУММА(СуммаЕстьОборотКт) |ПО | ОБЩИЕ |АВТОУПОРЯДОЧИВАНИЕ" ; ЗапросОбороты.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода)); ЗапросОбороты.УстановитьПараметр("ДатаКон", КонецДня(КонПериода)); ЗапросОбороты.УстановитьПараметр("Организация", мОрганизация); ЗапросОбороты.УстановитьПараметр("Счет", РезультатЗапроса.СсылкаСчет); ЗапросОбороты.Текст = ТекстЗапросОбороты; РезультатЗапросОбороты = ЗапросОбороты.Выполнить().Выбрать(); РезультатЗапросОбороты.Следующий(); ОборотыСчета = Новый Запрос; ТекстОборотыСчета = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | Таблица.КорСчет.Ссылка КАК КорСчет, | Таблица.КорСчет.Порядок КАК КорСчетПорядок, | Таблица.СуммаОборотДт КАК СуммаОборотДт, | Таблица.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация, , ) КАК Таблица | |СГРУППИРОВАТЬ ПО | Таблица.КорСчет.Ссылка, | Таблица.КорСчет.Порядок, | Таблица.СуммаОборотДт, | Таблица.СуммаОборотКт |УПОРЯДОЧИТЬ ПО | КорСчетПорядок |ИТОГИ | СУММА(СуммаОборотДт), | СУММА(СуммаОборотКт) |ПО | ОБЩИЕ, | КорСчет " + ?(ПоКоррСубсчетам, "", " ИЕРАРХИЯ") + " КАК КорСчет |АВТОУПОРЯДОЧИВАНИЕ" ; ОборотыСчета.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода)); ОборотыСчета.УстановитьПараметр("ДатаКон", КонецДня(КонПериода)); ОборотыСчета.УстановитьПараметр("Организация", мОрганизация); ОборотыСчета.УстановитьПараметр("Счет", РезультатЗапроса.СсылкаСчет); Если РезультатЗапросОбороты.СуммаНачДт + РезультатЗапросОбороты.СуммаНачКт + РезультатЗапросОбороты.СуммаЕстьОборотДт + РезультатЗапросОбороты.СуммаЕстьОборотКт + РезультатЗапросОбороты.СуммаКонДт + РезультатЗапросОбороты.СуммаКонКт <> 0 Тогда ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаНачДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаНачКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Начальное сальдо"; ТабДок.Вывести(ОбластьСтрокаТабл); ОборотыСчета.Текст = ТекстОборотыСчета; РезультатОборотыСчета = ОборотыСчета.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "КорСчет"); Пока РезультатОборотыСчета.Следующий() Цикл Попытка ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = РезультатОборотыСчета.КорСчет; ОбластьСтрокаТабл.Параметры.Дебет = РезультатОборотыСчета.СуммаОборотДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатОборотыСчета.СуммаОборотКт; ОбластьСтрокаТабл.Параметры.мОперация = РезультатОборотыСчета.КорСчет.Наименование; Если НЕ ПоКоррСубсчетам Тогда Если РезультатОборотыСчета.Уровень() = 0 Тогда ТабДок.Вывести(ОбластьСтрокаТабл); КонецЕсли; Иначе ТабДок.Вывести(ОбластьСтрокаТабл); КонецЕсли; Исключение // КонецПопытки; ОбластьСтрокаТабл.Параметры.СсылкаСчет = ""; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = ""; ОбластьСтрокаТабл.Параметры.Кредит = ""; ОбластьСтрокаТабл.Параметры.мОперация = ""; Состояние("Выполняется сбор оборотов по счету: " + РезультатЗапроса.СсылкаСчет + " > корр. счет: " + РезультатОборотыСчета.КорСчет + " <"); КонецЦикла; ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаЕстьОборотДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаЕстьОборотКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Обороты"; ТабДок.Вывести(ОбластьСтрокаТабл); ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаКонДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаКонКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Конечное сальдо"; ТабДок.Вывести(ОбластьСтрокаТабл); ОбластьСтрокаТабл.Параметры.СсылкаСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = ""; ОбластьСтрокаТабл.Параметры.Кредит = ""; ОбластьСтрокаТабл.Параметры.мОперация = ""; КонецЕсли; ОбработкаПрерыванияПользователя(); КонецЦикла; ТабДок.Вывести(ОбластьПодпись); ТабДок.Показать("Главная книга", , Истина); КонецПроцедуры |
|||
1
tg30000
04.08.11
✎
06:10
|
Обработка рабочая.... распологаются счета построчно в "удобном" нашим бух-ам виде , но не знаю как сделать отбор по нужным счетам..
а то приходится удалять ненужные строчки когда сформирую целиком... |
|||
2
Маленький Вопросик
04.08.11
✎
06:19
|
(1) я думаю тебе будет проще написать обработку...
вот посмотри мою. как я делал корреспонденцию счета за период... http://и-старт.ru/public/72660/ |
|||
3
Маленький Вопросик
04.08.11
✎
06:19
|
(2) правда это для старой бухии, на новой не проверял...
|
|||
4
tg30000
04.08.11
✎
06:21
|
что-то ссылка не открывается?
или адрес на англ. ??? а по данной обработке кто подскажет свои мысли? |
|||
5
Rie
04.08.11
✎
06:23
|
(4) Добавь проверку счёта на принадлежность параметру - списку.
|
|||
6
tg30000
04.08.11
✎
06:24
|
а это как? в теле самого запроса или нет?
|
|||
7
Rie
04.08.11
✎
06:26
|
(6) В запросе.
|
|||
8
Wobland
04.08.11
✎
06:27
|
(4) ты просто не в теме ;)
http://infostart.ru/public/72660/ |
|||
9
tg30000
04.08.11
✎
06:32
|
там видите в чем дело форма то нужна как я сделал а не другая... вот почему и мучаюсь...
бухгалтерия одним словом... |
|||
10
tg30000
04.08.11
✎
06:36
|
и в http://infostart.ru/public/72660/ тоже то счету , у меня тоже по одному счету работает, и по свем сражу, а вот как сделать нужную выборку.....
|
|||
11
tg30000
04.08.11
✎
06:39
|
*по всем счетам сразу...
|
|||
12
Маленький Вопросик
04.08.11
✎
06:40
|
(11) так доработай... там делов на час максимум... попивая кока-колу параллельно
|
|||
13
tg30000
04.08.11
✎
06:51
|
а каким методом можно сделать выборку нескольких счетов?
- запросом или как , а если запрос то к чему? ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка = &ВыбСчет"; тут ВыбСчет это поле формы , и получается как я понимаю(может неправильно понимаю) счет один захватываем, а если пустое значение то по всем счетам.. а что позволит выбрать например несколько счетов?.. |
|||
14
Маленький Вопросик
04.08.11
✎
07:00
|
(13) ну примерно так:
1.делаешь табличныю часть в которой можно добавлять счета из плана счетов 2.делаешь цикл по этой табличной части - для каждого счета смотришь с чем он корреспондирует - результат пишешь в другую табличную часть... объединяешь это все дело... |
|||
15
Rie
04.08.11
✎
07:06
|
(13) Посмотри внимательно на синтаксис В ИЕРАРХИИ.
Там не только один элемент, туда и список впихнуть можно. И проверяй соответственно В ИЕРАРХИИ(список) |
|||
16
Маленький Вопросик
04.08.11
✎
07:09
|
(13) это в (15) имеется ввиду, что "достать" субсчета
|
|||
17
Маленький Вопросик
04.08.11
✎
07:09
|
+(16) пример у меня этого в обработке есть
|
|||
18
tg30000
04.08.11
✎
07:19
|
Ваша обработка не открывается сайт....
|
|||
19
tg30000
04.08.11
✎
07:20
|
Невозможно найти удалённый сервер
|
|||
20
tg30000
04.08.11
✎
07:30
|
а выборку в форму посредством чего поместить?
сейчас для одного счета это "поле выбора" с типом значения "ПланСчетовСсылка.Хозрасчетный" а что бы выбирать несколько счетов что нужно использовать? |
|||
21
Rie
04.08.11
✎
07:35
|
(20) Табличная часть
|
|||
22
tg30000
04.08.11
✎
08:52
|
спасибо буду пробовать)
|
|||
23
ASU_Diamond
04.08.11
✎
09:05
|
а не проще использовать построительОтчетов/СКД, тогда форма сама построится
|
|||
24
tg30000
04.08.11
✎
09:37
|
плохо знаю скд .... только начал читать Хрусталева...
|
|||
25
tg30000
04.08.11
✎
09:38
|
но, спасибо за совет!
|
|||
26
tg30000
08.08.11
✎
05:32
|
Подскажите если через СКД делать, то что в запросе брать за вирт. таблицу ?
|
|||
27
tg30000
08.08.11
✎
05:57
|
вроде "ХозрасчетныйОстаткиИОбороты"
|
|||
28
tg30000
08.08.11
✎
06:52
|
Начальное сальдо и обороты нашел.... а как показать движение с корр. счетов ?
|
|||
29
tg30000
08.08.11
✎
07:14
|
из какой таблицы можно получить информацию по движению с корсчетов ?
|
|||
30
Мимохожий Однако
08.08.11
✎
08:02
|
Чем типовой велосипед не устроил бухгалтеров?
|
|||
31
tg30000
08.08.11
✎
08:51
|
Хотят в другом виде макет...
|
|||
32
tg30000
10.08.11
✎
05:47
|
(13) Посмотри внимательно на синтаксис В ИЕРАРХИИ.
Там не только один элемент, туда и список впихнуть можно. И проверяй соответственно В ИЕРАРХИИ(список) подскажите как впихнуть? |
|||
33
Wobland
10.08.11
✎
06:15
|
(32) Запрос.УстановитьПараметр("Список", ТвойСписок). ну а ТвойСписок (СЗ) заполняешь, чем надо..
|
|||
34
tg30000
10.08.11
✎
06:43
|
Спасибо большое , буду пробовать.
|
|||
35
tg30000
10.08.11
✎
06:57
|
а как сам список добавить , что использовать из инструментов?
|
|||
36
tg30000
10.08.11
✎
06:58
|
то есть сам список как создать.
|
|||
37
Wobland
10.08.11
✎
06:59
|
научись сначала в СП ходить, а потом сюда.
СЗ=Новый СписокЗначений; СЗ.Добавить(Нечто); |
|||
38
tg30000
10.08.11
✎
07:09
|
Ок, буду читать про СЗ.
а вопросик.... на форму его привязывать с помощью "табличного поля" или "поля ввода" ? |
|||
39
tg30000
10.08.11
✎
07:10
|
что бы в форму можно было несколько счетов выбирать сразу.
|
|||
40
tg30000
10.08.11
✎
07:12
|
что бы там подбор был.
|
|||
41
Wobland
10.08.11
✎
07:21
|
а попробовать самому? таб поле тебя спасёт
|
|||
42
tg30000
10.08.11
✎
07:22
|
всейчас буду пробовать с помощью таб поля, спасибо Вам)
|
|||
43
Wobland
10.08.11
✎
07:39
|
хм... сходил посмотрел оба варианта. вот с полем ввода мне больше нравится.
|
|||
44
tg30000
10.08.11
✎
07:42
|
Создал таб поле :
тип => список значений тип зн. списка => ПланСчетовСсылка.Хозрасчетный вроде пока все верно делаю... далее как я понима нужно связать то что добавят в форму пользователь с моим СЗ ? |
|||
45
Wobland
10.08.11
✎
07:46
|
(44) заводишь реквизит, его указываешь в данных
|
|||
46
tg30000
10.08.11
✎
07:48
|
ага, поле ввода более удобно получилось .
|
|||
47
tg30000
10.08.11
✎
08:27
|
Имя поля вводу у меня "СЗ" например , пользователь выбрал счета в форме....
а как эти данные обработать ? примеров немогу найти ... // Пример перемещения элемента в поле списка формы // вперед (вниз) на одну позицию. Список = ЭлементыФормы.ПолеСпискаТиповЦен.Значение; ТекЭлементСписка = ЭлементыФормы.ПолеСпискаТиповЦен.ТекущаяСтрока; Если ТекЭлементСписка <> Неопределено Тогда НомерСтроки = Список.Индекс(ТекЭлементСписка); Если НомерСтроки + 1 < Список.Количество() Тогда Список.Сдвинуть(ТекЭлементСписка, 1); Иначе Сообщить('Достигнут конец списка!") ; КонецЕсли; Иначе Сообщить('Не выбрана строка списка типов цен!"); КонецЕсли; что-то типо этого же будет? только обращение к хозрасчетному.. |
|||
48
tg30000
10.08.11
✎
08:28
|
хотя там добавить надо делать.
|
|||
49
Wobland
10.08.11
✎
08:28
|
Для Каждого ТекСтрока Из ЭлементыФормы.Список Цикл
СЗ.Добавить() |
|||
50
Wobland
10.08.11
✎
08:29
|
+(49) есессно, без синтаксической точности
|
|||
51
tg30000
10.08.11
✎
08:29
|
о вот как к форме обратиться... спасибо , пробую делать..
|
|||
52
Wobland
10.08.11
✎
08:30
|
(49) чо?
Запрос.УстановитьПараметр("Список", ЭлементыФормы.Список); или Запрос.УстановитьПараметр("Список", СЗ), если СЗ у тебя реквизит |
|||
53
tg30000
10.08.11
✎
08:40
|
В реквизите тип =>список значений
|
|||
54
Wobland
10.08.11
✎
08:43
|
(53) ну. и добавляй его сразу в параметры запроса, он уже юзером заполнен
|
|||
55
tg30000
10.08.11
✎
08:43
|
вроде такое будет начало ?
Процедура Сформировать(Кнопка) Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК СсылкаСчет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный" ; Если СЗ.Ссылка = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда Если Не ПоСубсчетам Тогда ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Родитель = &ПустойРодитель"; Запрос.УстановитьПараметр("ПустойРодитель", ПланыСчетов.Хозрасчетный.ПустаяСсылка()); КонецЕсли; Иначе ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка = &СЗ"; Запрос.УстановитьПараметр("Список", СЗ); КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |УПОРЯДОЧИТЬ ПО | Хозрасчетный.Код"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить().Выбрать(); |
|||
56
tg30000
10.08.11
✎
08:53
|
не явно направильно я написал
|
|||
57
tg30000
10.08.11
✎
08:55
|
думаю дальше.
|
|||
58
Wobland
10.08.11
✎
08:55
|
что это? %-О
можешь одним предложением выразить желаемое? |
|||
59
Wobland
10.08.11
✎
08:56
|
если сможешь - полдела сделано
|
|||
60
tg30000
10.08.11
✎
09:02
|
как я понимаю по логике должно быть так:
1)создал реквизит "СЗ" с типом список значений 2) добавил в форму и в свойстве указал тип зн. списка => ПланСчетовСсылка.Хозрасчетный вроде начало должно быть правильное.. |
|||
61
tg30000
10.08.11
✎
09:06
|
а вот как изменить старую главную книгу где выбирался либо один счет, либо все счета на выборку из списка значених я теоритически представляю но практически сложно связать мне куда в запросе добавить и что поменять
вот старый запрос по одному счету и по всем счетам вот над этим и думаю, хочу сам понять постараться что-бы потопотом не просить никого помочь с таким несложным думаю для большинства делом , но пока не соображу Процедура Сформировать(Кнопка) Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК СсылкаСчет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный" ; Если ВыбСчет.Ссылка = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда Если Не ПоСубсчетам Тогда ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Родитель = &ПустойРодитель"; Запрос.УстановитьПараметр("ПустойРодитель", ПланыСчетов.Хозрасчетный.ПустаяСсылка()); КонецЕсли; Иначе ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка = &ВыбСчет"; Запрос.УстановитьПараметр("ВыбСчет", ВыбСчет); КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |УПОРЯДОЧИТЬ ПО | Хозрасчетный.Код"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить().Выбрать(); ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Главной_книги"; Макет = ПолучитьМакет("Макетик"); Если НачПериода = '00010101000000' И КонПериода = '00010101000000' Тогда ОписаниеПериода = "без ограничения."; Иначе Если НачПериода = '00010101000000' ИЛИ КонПериода = '00010101000000' Тогда ОписаниеПериода = Формат(НачПериода, "ДФ = ""дд.ММ.гггг""; ДП = ""без ограничения""") + " - " + Формат(КонПериода, "ДФ = ""дд.ММ.гггг""; ДП = ""без ограничения"""); Иначе ОписаниеПериода = ПредставлениеПериода(НачалоДня(НачПериода), КонецДня(КонПериода), "ФП = Истина"); КонецЕсли; КонецЕсли; ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.ЗаголовокОрганизация = мОрганизация.НаименованиеПолное; ОбластьШапка.Параметры.ТекПериод = ОписаниеПериода; ТабДок.Вывести(ОбластьШапка); ОбластьСтрокаСчет = Макет.ПолучитьОбласть("СтрокаСчет"); ОбластьСтрокаТабл = Макет.ПолучитьОбласть("СтрокаТаблицы"); ОбластьПодпись = Макет.ПолучитьОбласть("Подпись"); Пока РезультатЗапроса.Следующий() Цикл ОбластьСтрокаСчет.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; Если (ПоСубсчетам) И (РезультатЗапроса.СсылкаСчет.Уровень() = 0) Тогда ОбластьСтрокаСчет.Параметры.СсылкаСчетНаименование = РезультатЗапроса.СсылкаСчет.Наименование + " (общие обороты по счету)"; Иначе ОбластьСтрокаСчет.Параметры.СсылкаСчетНаименование = РезультатЗапроса.СсылкаСчет.Наименование; КонецЕсли; ТабДок.Вывести(ОбластьСтрокаСчет); ЗапросОбороты = Новый Запрос; ТекстЗапросОбороты = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Таблица.СуммаНачальныйОстатокДт КАК СуммаНачДт, | Таблица.СуммаНачальныйОстатокКт КАК СуммаНачКт, | Таблица.СуммаКонечныйОстатокДт КАК СуммаКонДт, | Таблица.СуммаКонечныйОстатокКт КАК СуммаКонКт, | Таблица.СуммаОборотДт КАК СуммаЕстьОборотДт, | Таблица.СуммаОборотКт КАК СуммаЕстьОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&счет), , Организация = &Организация) КАК Таблица |ИТОГИ | СУММА(СуммаНачДт), | СУММА(СуммаНачКт), | СУММА(СуммаКонДт), | СУММА(СуммаКонКт), | СУММА(СуммаЕстьОборотДт), | СУММА(СуммаЕстьОборотКт) |ПО | ОБЩИЕ |АВТОУПОРЯДОЧИВАНИЕ" ; ЗапросОбороты.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода)); ЗапросОбороты.УстановитьПараметр("ДатаКон", КонецДня(КонПериода)); ЗапросОбороты.УстановитьПараметр("Организация", мОрганизация); ЗапросОбороты.УстановитьПараметр("Счет", РезультатЗапроса.СсылкаСчет); ЗапросОбороты.Текст = ТекстЗапросОбороты; РезультатЗапросОбороты = ЗапросОбороты.Выполнить().Выбрать(); РезультатЗапросОбороты.Следующий(); ОборотыСчета = Новый Запрос; ТекстОборотыСчета = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | Таблица.КорСчет.Ссылка КАК КорСчет, | Таблица.КорСчет.Порядок КАК КорСчетПорядок, | Таблица.СуммаОборотДт КАК СуммаОборотДт, | Таблица.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация, , ) КАК Таблица | |СГРУППИРОВАТЬ ПО | Таблица.КорСчет.Ссылка, | Таблица.КорСчет.Порядок, | Таблица.СуммаОборотДт, | Таблица.СуммаОборотКт |УПОРЯДОЧИТЬ ПО | КорСчетПорядок |ИТОГИ | СУММА(СуммаОборотДт), | СУММА(СуммаОборотКт) |ПО | ОБЩИЕ, | КорСчет " + ?(ПоКоррСубсчетам, "", " ИЕРАРХИЯ") + " КАК КорСчет |АВТОУПОРЯДОЧИВАНИЕ" ; ОборотыСчета.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода)); ОборотыСчета.УстановитьПараметр("ДатаКон", КонецДня(КонПериода)); ОборотыСчета.УстановитьПараметр("Организация", мОрганизация); ОборотыСчета.УстановитьПараметр("Счет", РезультатЗапроса.СсылкаСчет); Если РезультатЗапросОбороты.СуммаНачДт + РезультатЗапросОбороты.СуммаНачКт + РезультатЗапросОбороты.СуммаЕстьОборотДт + РезультатЗапросОбороты.СуммаЕстьОборотКт + РезультатЗапросОбороты.СуммаКонДт + РезультатЗапросОбороты.СуммаКонКт <> 0 Тогда ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаНачДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаНачКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Начальное сальдо"; ТабДок.Вывести(ОбластьСтрокаТабл); ОборотыСчета.Текст = ТекстОборотыСчета; РезультатОборотыСчета = ОборотыСчета.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "КорСчет"); Пока РезультатОборотыСчета.Следующий() Цикл Попытка ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = РезультатОборотыСчета.КорСчет; ОбластьСтрокаТабл.Параметры.Дебет = РезультатОборотыСчета.СуммаОборотДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатОборотыСчета.СуммаОборотКт; ОбластьСтрокаТабл.Параметры.мОперация = РезультатОборотыСчета.КорСчет.Наименование; Если НЕ ПоКоррСубсчетам Тогда Если РезультатОборотыСчета.Уровень() = 0 Тогда ТабДок.Вывести(ОбластьСтрокаТабл); КонецЕсли; Иначе ТабДок.Вывести(ОбластьСтрокаТабл); КонецЕсли; Исключение // КонецПопытки; ОбластьСтрокаТабл.Параметры.СсылкаСчет = ""; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = ""; ОбластьСтрокаТабл.Параметры.Кредит = ""; ОбластьСтрокаТабл.Параметры.мОперация = ""; Состояние("Выполняется сбор оборотов по счету: " + РезультатЗапроса.СсылкаСчет + " > корр. счет: " + РезультатОборотыСчета.КорСчет + " <"); КонецЦикла; ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаЕстьОборотДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаЕстьОборотКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Обороты"; ТабДок.Вывести(ОбластьСтрокаТабл); ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаКонДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаКонКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Конечное сальдо"; ТабДок.Вывести(ОбластьСтрокаТабл); ОбластьСтрокаТабл.Параметры.СсылкаСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = ""; ОбластьСтрокаТабл.Параметры.Кредит = ""; ОбластьСтрокаТабл.Параметры.мОперация = ""; КонецЕсли; ОбработкаПрерыванияПользователя(); КонецЦикла; ТабДок.Вывести(ОбластьПодпись); ТабДок.Показать("Главная книга", , Истина); КонецПроцедуры |
|||
62
Wobland
10.08.11
✎
09:22
|
я как-то отклонился от исходной задачи. ну вот смотри, есть у тебя
РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет В ИЕРАРХИИ (&Счет),... и тебе нужно в &Счёт положить свой список счетов? я правильно понял? в таком случае первый запрос с обходом его в цикле не нужен. просто берёшь и заполняешь свой список, потом даёшь его ЗапросуОбороты и его результат уже перебираешь с выводом в ТабДок |
|||
63
tg30000
10.08.11
✎
09:29
|
=>и тебе нужно в &Счёт положить свой список счетов?
(так и хотел что бы получилось) =>просто берёшь и заполняешь свой список(т.е пользователь в форме заполняет или СЗ=Новый СписокЗначений; СЗ.Добавить(Нечто); типо такого нужно писать) |
|||
64
Wobland
10.08.11
✎
09:30
|
ну ты уже определись, сам ты (программно) будешь делать, или юзер на форме. в первом случай Новый СЗ+Добавить(), во втором этого не надо, т.к. Добавить() юзер делает интерактивно
|
|||
65
tg30000
10.08.11
✎
09:32
|
Лучше бы что бы Юзер сам выбрал что ему надо...
|
|||
66
tg30000
10.08.11
✎
09:33
|
т.е нужно как то передать в запрос что выбрал пользователь..
|
|||
67
Wobland
10.08.11
✎
09:33
|
повторить? Запрос.УстановитьПараметр("СписокСчетов", РеквизитСписок); и всё
|
|||
68
tg30000
10.08.11
✎
09:39
|
что неправильно я передаю .. пишет что ссылка не обнаружена..
Процедура Сформировать(Кнопка) Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК СсылкаСчет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный" ; Если СЗ.Ссылка = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда Если Не ПоСубсчетам Тогда ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Родитель = &ПустойРодитель"; Запрос.УстановитьПараметр("ПустойРодитель", ПланыСчетов.Хозрасчетный.ПустаяСсылка()); КонецЕсли; Иначе ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка = &СписокСчетов"; //Запрос.УстановитьПараметр("ВыбСчет", ВыбСчет); Запрос.УстановитьПараметр("СписокСчетов", СЗ) КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |УПОРЯДОЧИТЬ ПО | Хозрасчетный.Код"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить().Выбрать(); |
|||
69
tg30000
10.08.11
✎
09:40
|
{Форма.Форма.Форма(15)}: Поле объекта не обнаружено (Ссылка)
Если СЗ.Ссылка = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда |
|||
70
tg30000
10.08.11
✎
09:46
|
а ну в "СЗ" и нету поля ссылка, это же получается список значений т.е. не так обращаться нужно..
|
|||
71
Wobland
10.08.11
✎
09:46
|
вот ты ему говоришь "СЗ.Ссылка". а какой элемент из списка имеется в виду? платформе этого не видно
|
|||
72
Wobland
10.08.11
✎
09:47
|
Если СЗ.Количество()=0 по всей видимости имеется в виду здесь
|
|||
73
tg30000
10.08.11
✎
09:51
|
{Форма.Форма.Форма(36)}: Ошибка при вызове метода контекста (Выполнить): {(6, 22)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов. Хозрасчетный.Ссылка <<?>>= &СписокСчетов РезультатЗапроса = Запрос.Выполнить().Выбрать(); по причине: {(6, 22)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. Хозрасчетный.Ссылка <<?>>= &СписокСчетов |
|||
74
tg30000
10.08.11
✎
09:52
|
Если СЗ.Количество()=0 работает показывает все счета, а если выбираю счет то пишет вот это..
|
|||
75
tg30000
10.08.11
✎
09:52
|
Процедура Сформировать(Кнопка)
Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК СсылкаСчет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный" ; Если СЗ.Количество()=0 Тогда Если Не ПоСубсчетам Тогда ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Родитель = &ПустойРодитель"; Запрос.УстановитьПараметр("ПустойРодитель", ПланыСчетов.Хозрасчетный.ПустаяСсылка()); КонецЕсли; Иначе ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка = &СписокСчетов"; //Запрос.УстановитьПараметр("ВыбСчет", ВыбСчет); Запрос.УстановитьПараметр("СписокСчетов", СЗ) КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |УПОРЯДОЧИТЬ ПО | Хозрасчетный.Код"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить().Выбрать(); |
|||
76
Wobland
10.08.11
✎
09:53
|
(73) Ссылка В ИЕРАРХИИ
|
|||
77
Wobland
10.08.11
✎
09:55
|
лет этак н-дцать назад на меня вот так же сыпались ошибки непонятные и частые. но я не расслаблялся, сидел и над каждой репу чесал, иногда подолгу. наверное, этим я и обязан тому, что мало вопросов задаю... мозг тренировать нужно
|
|||
78
eklmn
гуру
10.08.11
✎
09:57
|
(77) ты еще не устал обучать необучаемое? :)
|
|||
79
tg30000
10.08.11
✎
09:57
|
я и так стараюсь ...
записался на курсы, скачал Частова видео полный курс, начал смотреть книжки заказал по 1с ке.. так все же что не так ? "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Таблица.СуммаНачальныйОстатокДт КАК СуммаНачДт, | Таблица.СуммаНачальныйОстатокКт КАК СуммаНачКт, | Таблица.СуммаКонечныйОстатокДт КАК СуммаКонДт, | Таблица.СуммаКонечныйОстатокКт КАК СуммаКонКт, | Таблица.СуммаОборотДт КАК СуммаЕстьОборотДт, | Таблица.СуммаОборотКт КАК СуммаЕстьОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&счет), , Организация = &Организация) КАК Таблица |ИТОГИ | СУММА(СуммаНачДт), | СУММА(СуммаНачКт), | СУММА(СуммаКонДт), | СУММА(СуммаКонКт), | СУММА(СуммаЕстьОборотДт), | СУММА(СуммаЕстьОборотКт) |ПО | ОБЩИЕ |АВТОУПОРЯДОЧИВАНИЕ" тут ошибка? |
|||
80
Wobland
10.08.11
✎
09:59
|
(78) я в него верю ;) тут обитают настолько твердоклювые и необучаемые, что волосы шевелятся. автор вроде б не из таких
(79) тебе видней, ошибка там или нет. синтаксически вроде всё хорошо |
|||
81
tg30000
10.08.11
✎
10:01
|
спасибо) ...я тоже стараюсь в себя верить... по крайней мере делаю что могу...
|
|||
82
tg30000
10.08.11
✎
10:05
|
выходит или не передается из " СЗ" или я что не так с типами делаю..
Процедура Сформировать(Кнопка) Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК СсылкаСчет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный" ; Если СЗ.Количество()=0 Тогда Если Не ПоСубсчетам Тогда ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Родитель = &ПустойРодитель"; Запрос.УстановитьПараметр("ПустойРодитель", ПланыСчетов.Хозрасчетный.ПустаяСсылка()); КонецЕсли; Иначе ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка = &СписокСчетов"; //Запрос.УстановитьПараметр("ВыбСчет", ВыбСчет); Запрос.УстановитьПараметр("СписокСчетов", СЗ) КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |УПОРЯДОЧИТЬ ПО | Хозрасчетный.Код"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить().Выбрать(); ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Главной_книги"; Макет = ПолучитьМакет("Макетик"); Если НачПериода = '00010101000000' И КонПериода = '00010101000000' Тогда ОписаниеПериода = "без ограничения."; Иначе Если НачПериода = '00010101000000' ИЛИ КонПериода = '00010101000000' Тогда ОписаниеПериода = Формат(НачПериода, "ДФ = ""дд.ММ.гггг""; ДП = ""без ограничения""") + " - " + Формат(КонПериода, "ДФ = ""дд.ММ.гггг""; ДП = ""без ограничения"""); Иначе ОписаниеПериода = ПредставлениеПериода(НачалоДня(НачПериода), КонецДня(КонПериода), "ФП = Истина"); КонецЕсли; КонецЕсли; ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.ЗаголовокОрганизация = мОрганизация.НаименованиеПолное; ОбластьШапка.Параметры.ТекПериод = ОписаниеПериода; ТабДок.Вывести(ОбластьШапка); ОбластьСтрокаСчет = Макет.ПолучитьОбласть("СтрокаСчет"); ОбластьСтрокаТабл = Макет.ПолучитьОбласть("СтрокаТаблицы"); ОбластьПодпись = Макет.ПолучитьОбласть("Подпись"); Пока РезультатЗапроса.Следующий() Цикл ОбластьСтрокаСчет.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; Если (ПоСубсчетам) И (РезультатЗапроса.СсылкаСчет.Уровень() = 0) Тогда ОбластьСтрокаСчет.Параметры.СсылкаСчетНаименование = РезультатЗапроса.СсылкаСчет.Наименование + " (общие обороты по счету)"; Иначе ОбластьСтрокаСчет.Параметры.СсылкаСчетНаименование = РезультатЗапроса.СсылкаСчет.Наименование; КонецЕсли; ТабДок.Вывести(ОбластьСтрокаСчет); ЗапросОбороты = Новый Запрос; ТекстЗапросОбороты = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Таблица.СуммаНачальныйОстатокДт КАК СуммаНачДт, | Таблица.СуммаНачальныйОстатокКт КАК СуммаНачКт, | Таблица.СуммаКонечныйОстатокДт КАК СуммаКонДт, | Таблица.СуммаКонечныйОстатокКт КАК СуммаКонКт, | Таблица.СуммаОборотДт КАК СуммаЕстьОборотДт, | Таблица.СуммаОборотКт КАК СуммаЕстьОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&счет), , Организация = &Организация) КАК Таблица |ИТОГИ | СУММА(СуммаНачДт), | СУММА(СуммаНачКт), | СУММА(СуммаКонДт), | СУММА(СуммаКонКт), | СУММА(СуммаЕстьОборотДт), | СУММА(СуммаЕстьОборотКт) |ПО | ОБЩИЕ |АВТОУПОРЯДОЧИВАНИЕ" ; ЗапросОбороты.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода)); ЗапросОбороты.УстановитьПараметр("ДатаКон", КонецДня(КонПериода)); ЗапросОбороты.УстановитьПараметр("Организация", мОрганизация); ЗапросОбороты.УстановитьПараметр("Счет", РезультатЗапроса.СсылкаСчет); ЗапросОбороты.Текст = ТекстЗапросОбороты; РезультатЗапросОбороты = ЗапросОбороты.Выполнить().Выбрать(); РезультатЗапросОбороты.Следующий(); ОборотыСчета = Новый Запрос; ТекстОборотыСчета = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | Таблица.КорСчет.Ссылка КАК КорСчет, | Таблица.КорСчет.Порядок КАК КорСчетПорядок, | Таблица.СуммаОборотДт КАК СуммаОборотДт, | Таблица.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация, , ) КАК Таблица | |СГРУППИРОВАТЬ ПО | Таблица.КорСчет.Ссылка, | Таблица.КорСчет.Порядок, | Таблица.СуммаОборотДт, | Таблица.СуммаОборотКт |УПОРЯДОЧИТЬ ПО | КорСчетПорядок |ИТОГИ | СУММА(СуммаОборотДт), | СУММА(СуммаОборотКт) |ПО | ОБЩИЕ, | КорСчет " + ?(ПоКоррСубсчетам, "", " ИЕРАРХИЯ") + " КАК КорСчет |АВТОУПОРЯДОЧИВАНИЕ" ; ОборотыСчета.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода)); ОборотыСчета.УстановитьПараметр("ДатаКон", КонецДня(КонПериода)); ОборотыСчета.УстановитьПараметр("Организация", мОрганизация); ОборотыСчета.УстановитьПараметр("Счет", РезультатЗапроса.СсылкаСчет); Если РезультатЗапросОбороты.СуммаНачДт + РезультатЗапросОбороты.СуммаНачКт + РезультатЗапросОбороты.СуммаЕстьОборотДт + РезультатЗапросОбороты.СуммаЕстьОборотКт + РезультатЗапросОбороты.СуммаКонДт + РезультатЗапросОбороты.СуммаКонКт <> 0 Тогда ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаНачДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаНачКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Начальное сальдо"; ТабДок.Вывести(ОбластьСтрокаТабл); ОборотыСчета.Текст = ТекстОборотыСчета; РезультатОборотыСчета = ОборотыСчета.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "КорСчет"); Пока РезультатОборотыСчета.Следующий() Цикл Попытка ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = РезультатОборотыСчета.КорСчет; ОбластьСтрокаТабл.Параметры.Дебет = РезультатОборотыСчета.СуммаОборотДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатОборотыСчета.СуммаОборотКт; ОбластьСтрокаТабл.Параметры.мОперация = РезультатОборотыСчета.КорСчет.Наименование; Если НЕ ПоКоррСубсчетам Тогда Если РезультатОборотыСчета.Уровень() = 0 Тогда ТабДок.Вывести(ОбластьСтрокаТабл); КонецЕсли; Иначе ТабДок.Вывести(ОбластьСтрокаТабл); КонецЕсли; Исключение // КонецПопытки; ОбластьСтрокаТабл.Параметры.СсылкаСчет = ""; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = ""; ОбластьСтрокаТабл.Параметры.Кредит = ""; ОбластьСтрокаТабл.Параметры.мОперация = ""; Состояние("Выполняется сбор оборотов по счету: " + РезультатЗапроса.СсылкаСчет + " > корр. счет: " + РезультатОборотыСчета.КорСчет + " <"); КонецЦикла; ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаЕстьОборотДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаЕстьОборотКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Обороты"; ТабДок.Вывести(ОбластьСтрокаТабл); ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаКонДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаКонКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Конечное сальдо"; ТабДок.Вывести(ОбластьСтрокаТабл); ОбластьСтрокаТабл.Параметры.СсылкаСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = ""; ОбластьСтрокаТабл.Параметры.Кредит = ""; ОбластьСтрокаТабл.Параметры.мОперация = ""; КонецЕсли; ОбработкаПрерыванияПользователя(); КонецЦикла; ТабДок.Вывести(ОбластьПодпись); ТабДок.Показать("Главная книга", , Истина); КонецПроцедуры |
|||
83
Wobland
10.08.11
✎
10:22
|
я уже устал эту простынку читать. что не так? ругается?
|
|||
84
tg30000
10.08.11
✎
10:23
|
пишет.... выходит я сравниваю разные типы выходит..
{Форма.Форма.Форма(36)}: Ошибка при вызове метода контекста (Выполнить): {(6, 22)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. Хозрасчетный.Ссылка <<?>>= &СписокСчетов РезультатЗапроса = Запрос.Выполнить().Выбрать(); по причине: {(6, 22)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. Хозрасчетный.Ссылка <<?>>= &СписокСчетов |
|||
85
Wobland
10.08.11
✎
10:24
|
Ссылка - это одна штука, Список - много штук
|
|||
86
Wobland
10.08.11
✎
10:25
|
перечитай (73) и (76)
|
|||
87
tg30000
10.08.11
✎
10:29
|
наверно вот тут неправильно
ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка = &СписокСчетов"; |
|||
88
tg30000
10.08.11
✎
10:29
|
получается один элемент сравниваю с своим списком значений ?
|
|||
89
Wobland
10.08.11
✎
10:32
|
(88) тебе не хватает "да" в явном виде? ДА! В(&Список) или В ИЕРАРХИИ(&Список) - вот то, что работает со списком значений
|
|||
90
tg30000
10.08.11
✎
10:43
|
буду разбираться куда вставить..
|
|||
91
tg30000
10.08.11
✎
11:36
|
Решил начать с простого )
Напишу заново что бы понять что и как . Для начала просто выведу код счетов без сумм на один счет и с помощью "СпискаЗначений" а потом усложню.. Спасибо Wobland Вам за поддержку! |
|||
92
Wobland
10.08.11
✎
11:39
|
авек, как грится, плезир ;)
так может, лучше дойдёт |
|||
93
tg30000
11.08.11
✎
08:04
|
Сделал :)
вот как получилось. Спасибо всем за помощь, в особенности Wobland Вам большое спасибо! Вот код кому интересно.... Процедура Сформировать(Кнопка) Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Хозрасчетный.Ссылка КАК СсылкаСчет |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный" ; Если СЗ.Количество() >0 Тогда ТекстЗапроса = ТекстЗапроса + " |ГДЕ | Хозрасчетный.Ссылка В(&СЗ) "; Запрос.УстановитьПараметр("СЗ", СЗ); КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |УПОРЯДОЧИТЬ ПО | Хозрасчетный.Код"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить().Выбрать(); //-------------------------------------------------------------------------------- ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Главной_книги"; Макет = ПолучитьМакет("Макетик"); Если НачПериода = '00010101000000' И КонПериода = '00010101000000' Тогда ОписаниеПериода = "без ограничения."; Иначе Если НачПериода = '00010101000000' ИЛИ КонПериода = '00010101000000' Тогда ОписаниеПериода = Формат(НачПериода, "ДФ = ""дд.ММ.гггг""; ДП = ""без ограничения""") + " - " + Формат(КонПериода, "ДФ = ""дд.ММ.гггг""; ДП = ""без ограничения"""); Иначе ОписаниеПериода = ПредставлениеПериода(НачалоДня(НачПериода), КонецДня(КонПериода), "ФП = Истина"); КонецЕсли; КонецЕсли; ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.ЗаголовокОрганизация = мОрганизация.НаименованиеПолное; ОбластьШапка.Параметры.ТекПериод = ОписаниеПериода; ТабДок.Вывести(ОбластьШапка); ОбластьСтрокаСчет = Макет.ПолучитьОбласть("СтрокаСчет"); ОбластьСтрокаТабл = Макет.ПолучитьОбласть("СтрокаТаблицы"); ОбластьПодпись = Макет.ПолучитьОбласть("Подпись"); Пока РезультатЗапроса.Следующий() Цикл ОбластьСтрокаСчет.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; Если (ПоСубсчетам) И (РезультатЗапроса.СсылкаСчет.Уровень() = 0) Тогда ОбластьСтрокаСчет.Параметры.СсылкаСчетНаименование = РезультатЗапроса.СсылкаСчет.Наименование + " (общие обороты по счету)"; Иначе ОбластьСтрокаСчет.Параметры.СсылкаСчетНаименование = РезультатЗапроса.СсылкаСчет.Наименование; КонецЕсли; ТабДок.Вывести(ОбластьСтрокаСчет); ЗапросОбороты = Новый Запрос; ТекстЗапросОбороты = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Таблица.СуммаНачальныйОстатокДт КАК СуммаНачДт, | Таблица.СуммаНачальныйОстатокКт КАК СуммаНачКт, | Таблица.СуммаКонечныйОстатокДт КАК СуммаКонДт, | Таблица.СуммаКонечныйОстатокКт КАК СуммаКонКт, | Таблица.СуммаОборотДт КАК СуммаЕстьОборотДт, | Таблица.СуммаОборотКт КАК СуммаЕстьОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&счет), , Организация = &Организация) КАК Таблица |ИТОГИ | СУММА(СуммаНачДт), | СУММА(СуммаНачКт), | СУММА(СуммаКонДт), | СУММА(СуммаКонКт), | СУММА(СуммаЕстьОборотДт), | СУММА(СуммаЕстьОборотКт) |ПО | ОБЩИЕ |АВТОУПОРЯДОЧИВАНИЕ" ; ЗапросОбороты.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода)); ЗапросОбороты.УстановитьПараметр("ДатаКон", КонецДня(КонПериода)); ЗапросОбороты.УстановитьПараметр("Организация", мОрганизация); ЗапросОбороты.УстановитьПараметр("Счет", РезультатЗапроса.СсылкаСчет); ЗапросОбороты.Текст = ТекстЗапросОбороты; РезультатЗапросОбороты = ЗапросОбороты.Выполнить().Выбрать(); РезультатЗапросОбороты.Следующий(); ОборотыСчета = Новый Запрос; ТекстОборотыСчета = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | Таблица.КорСчет.Ссылка КАК КорСчет, | Таблица.КорСчет.Порядок КАК КорСчетПорядок, | Таблица.СуммаОборотДт КАК СуммаОборотДт, | Таблица.СуммаОборотКт КАК СуммаОборотКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация, , ) КАК Таблица | |СГРУППИРОВАТЬ ПО | Таблица.КорСчет.Ссылка, | Таблица.КорСчет.Порядок, | Таблица.СуммаОборотДт, | Таблица.СуммаОборотКт |УПОРЯДОЧИТЬ ПО | КорСчетПорядок |ИТОГИ | СУММА(СуммаОборотДт), | СУММА(СуммаОборотКт) |ПО | ОБЩИЕ, | КорСчет " + ?(ПоКоррСубсчетам, "", " ИЕРАРХИЯ") + " КАК КорСчет |АВТОУПОРЯДОЧИВАНИЕ" ; ОборотыСчета.УстановитьПараметр("ДатаНач", НачалоДня(НачПериода)); ОборотыСчета.УстановитьПараметр("ДатаКон", КонецДня(КонПериода)); ОборотыСчета.УстановитьПараметр("Организация", мОрганизация); ОборотыСчета.УстановитьПараметр("Счет", РезультатЗапроса.СсылкаСчет); Если РезультатЗапросОбороты.СуммаНачДт + РезультатЗапросОбороты.СуммаНачКт + РезультатЗапросОбороты.СуммаЕстьОборотДт + РезультатЗапросОбороты.СуммаЕстьОборотКт + РезультатЗапросОбороты.СуммаКонДт + РезультатЗапросОбороты.СуммаКонКт <> 0 Тогда ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаНачДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаНачКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Начальное сальдо"; ТабДок.Вывести(ОбластьСтрокаТабл); ОборотыСчета.Текст = ТекстОборотыСчета; РезультатОборотыСчета = ОборотыСчета.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "КорСчет"); Пока РезультатОборотыСчета.Следующий() Цикл Попытка ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = РезультатОборотыСчета.КорСчет; ОбластьСтрокаТабл.Параметры.Дебет = РезультатОборотыСчета.СуммаОборотДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатОборотыСчета.СуммаОборотКт; ОбластьСтрокаТабл.Параметры.мОперация = РезультатОборотыСчета.КорСчет.Наименование; Если НЕ ПоКоррСубсчетам Тогда Если РезультатОборотыСчета.Уровень() = 0 Тогда ТабДок.Вывести(ОбластьСтрокаТабл); КонецЕсли; Иначе ТабДок.Вывести(ОбластьСтрокаТабл); КонецЕсли; Исключение // КонецПопытки; ОбластьСтрокаТабл.Параметры.СсылкаСчет = ""; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = ""; ОбластьСтрокаТабл.Параметры.Кредит = ""; ОбластьСтрокаТабл.Параметры.мОперация = ""; Состояние("Выполняется сбор оборотов по счету: " + РезультатЗапроса.СсылкаСчет + " > корр. счет: " + РезультатОборотыСчета.КорСчет + " <"); КонецЦикла; ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаЕстьОборотДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаЕстьОборотКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Обороты"; ТабДок.Вывести(ОбластьСтрокаТабл); ОбластьСтрокаТабл.Параметры.СсылкаСчет = РезультатЗапроса.СсылкаСчет; ОбластьСтрокаТабл.Параметры.КоррСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = РезультатЗапросОбороты.СуммаКонДт; ОбластьСтрокаТабл.Параметры.Кредит = РезультатЗапросОбороты.СуммаКонКт; ОбластьСтрокаТабл.Параметры.мОперация = "> Конечное сальдо"; ТабДок.Вывести(ОбластьСтрокаТабл); ОбластьСтрокаТабл.Параметры.СсылкаСчет = ""; ОбластьСтрокаТабл.Параметры.Дебет = ""; ОбластьСтрокаТабл.Параметры.Кредит = ""; ОбластьСтрокаТабл.Параметры.мОперация = ""; КонецЕсли; ОбработкаПрерыванияПользователя(); КонецЦикла; ТабДок.Вывести(ОбластьПодпись); ТабДок.Показать("Главная книга", , Истина); КонецПроцедуры |
|||
94
tg30000
11.08.11
✎
08:05
|
В принципе рабочий вариант главной книги с выборкой списком значений.
|
|||
95
Wobland
11.08.11
✎
08:07
|
поздравляю, сэр!
//я ж говорил: я в него верю ;) |
|||
96
tg30000
11.08.11
✎
08:10
|
:)
Вроде не сложно как оказалось,но пока разобрался.... Просто нужно больше практики и стремления к результату. Еще раз спасибо) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |