Имя: Пароль:
1C
1С v8
Написал обработку "Главная книга" , как сделать выборку по нескольким счетам ?
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
:)
Вроде не сложно как оказалось,но пока разобрался....
Просто нужно больше практики и стремления к результату.
Еще раз спасибо)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.