Имя: Пароль:
1C
1C 7.7
v7: в операции нет документа
,
0 alex_reglament
 
07.12.11
10:47
привет всем

не получается получить документ из операции чего я там не того делаю

   спрБанка = СоздатьОбъект("Справочник.БанковскиеСчета");
ДатаКон  = Дата_;
Если Счет_62 = 1 Тогда
   
Счет_62_ = СчетПоКоду("62");
Иначе
   Счет_62_ = "";
КонецЕсли;
   Если Счет_76 = 1 Тогда
       Счет_76_ = СчетПоКоду("76");
   Иначе
       Счет_76_ = "";
   КонецЕсли;
   счет = Счет_62_ + Счет_76_;
   //*******************************************
   ТаблЗн = СоздатьОбъект("ТаблицаЗначений");
   ТаблЗн.НоваяКолонка("Наименование", "Справочник.Контрагент");
   ТаблЗн.НоваяКолонка("УНП");
   ТаблЗн.НоваяКолонка("РачетныйСчет");
   ТаблЗн.НоваяКолонка("СуммаОбщая", "Число", 19);
   ТаблЗн.НоваяКолонка("ЗуммаПросроченная", "Число", 19);
   Таб = СоздатьОбъект("Таблица");
   Таб.ВывестиСекцию("Шапка");
   //*******************************************
Ит_1 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит_2 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит_1.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
Ит_1.ВыполнитьЗапрос(,ДатаКон,счет,,,,"Операция");
   //*******************************************
Ит_1.ВыбратьСубконто(1);
Пока Ит_1.ПолучитьСубконто(1) = 1 Цикл
   РачетныйСчет = "";
   СуммаОбщая   = "";
   //*******************************************
   Если Ит_1.СКД() <> 0 Тогда    
    спрБанка.ИспользоватьВладельца(Ит_1.Субконто(1).ТекущийЭлемент());
    Контрагент            = Ит_1.Субконто(1);
    УНП                   = Ит_1.Субконто(1).УНН;
    спрБанка.ВыбратьЭлементы();
    Пока спрБанка.ПолучитьЭлемент() = 1 Цикл
       Если Число(спрБанка.Код) = 1 Тогда
    РачетныйСчет          = спрБанка.Наименование + ": р/с №" + СокрЛП(спрБанка.НомерСчета);//спрБанка.НомерСчета;//найти по контрагенту;
Иначе
   РачетныйСчет = "";
КонецЕсли;
КонецЦикла;
    СуммаОбщая            = Ит_1.СКД();
    СуммаПросроченная = "";
       ЧислоДней = Ит_1.Операция.Документ.ДнейТребования;
       ДатаПроводкиДокумента = Ит_1.Операция.Документ.ДатаДок;
       СуммаДат = ДатаПроводкиДокумента + ЧислоДней;
       Если СуммаДат > Дата_ Тогда
       Ит_2.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Ит_1.Субконто(1).ТекущийЭлемент());    
       Ит_2.ВыполнитьЗапрос(ДатаПроводкиДокумента,ДатаПроводкиДокумента,счет,,,,"Операция");
       Ит_2.ВыбратьСубконто(1);
       Пока Ит_2.ПолучитьСубконто(1) = 1 Цикл
           Если Ит_2.Операция.Документ.НомерДок = Ит_1.Операция.Документ.НомерДок Тогда
    СуммаПросроченная     = Ит_2.Операция.Документ.Итог("Сумма");
Иначе
   СуммаПросроченная    = "-";
КонецЕсли;
КонецЦикла;
КонецЕсли;
    Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
1 alex_reglament
 
07.12.11
10:48
интересуют имено эти строки
документа в них нет хотя в оборотке есть
        ЧислоДней = Ит_1.Операция.Документ.ДнейТребования;
        ДатаПроводкиДокумента = Ит_1.Операция.Документ.ДатаДок;
2 Андрей_Андреич
 
naïve
07.12.11
10:51
Ничего не понял. Периоды не выбираются. Запрос на конец периода, а не за период. Откуда докам взяться?
3 alex_reglament
 
07.12.11
10:51
я начинающий но что типа того уже делал  а щас чегото заклинило помогите плиз
4 alex_reglament
 
07.12.11
10:53
я конечно прошу прощения а что если на конец периода запрос формировать доки не выбираются??
5 Андрей_Андреич
 
naïve
07.12.11
10:54
1. Ит_1.ВыполнитьЗапрос(,ДатаКон,счет,,,,"Операция");
Данная строка смысла не имеет - не хватает конечной даты.
2. Для выборки операций надо Ит.ВыбратьПериоды()
6 Андрей_Андреич
 
naïve
07.12.11
10:55
+5 Т.е. начальной даты
(4) нет
7 alex_reglament
 
07.12.11
10:55
странно я делал и так но не чего не выходит
Ит_1.ВыполнитьЗапрос(НачМесяца(ДатаКон),ДатаКон,счет,,,,"Операция");
но эфект от этого ни какой
8 OnCheck
 
07.12.11
10:57
ты бы сначала порядок с форматировнаием навел, сложно читать текст
9 OnCheck
 
07.12.11
10:57
я так понимаю что ИТ1 не спозиционирована ни на какой записи в момент получения поля документ
10 alex_reglament
 
07.12.11
10:58
Ит_1 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит_2 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит_1.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
Ит_1.ВыполнитьЗапрос(,ДатаКон,счет,,,,"Операция");
   //*******************************************
   Ит_1.ВыбратьПериоды();
   Пока Ит_1.ПолучитьПериод() = 1 Цикл
       
Ит_1.ВыбратьСубконто(1);
то есть так нужно делать?
11 OnCheck
 
07.12.11
10:58
Ит_1.ВыбратьСубконто(2); попробуй заменить
12 alex_reglament
 
07.12.11
10:59
(11) шутишь?
13 alex_reglament
 
07.12.11
10:59
(10) правильно ?
14 OnCheck
 
07.12.11
11:00
(12) возможно с бухитогами мало работал
15 OnCheck
 
07.12.11
11:00
+ (14) возможно, с бухитогами мало работал
16 alex_reglament
 
07.12.11
11:01
вообще нет работал достаточно но с выборкой доков работал пару раз и тоже достаточно долго делал
17 alex_reglament
 
07.12.11
11:01
я только 3тий мес работаю с 1с
18 alex_reglament
 
07.12.11
11:03
начирикал такую вещь вообще перестало все формироваться
Ит_1 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит_2 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит_1.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
Ит_1.ВыполнитьЗапрос(,ДатаКон,счет,,,,"Операция");
   //*******************************************
   Ит_1.ВыбратьПериоды();
   Пока Ит_1.ПолучитьПериод() = 1 Цикл
Ит_1.ВыбратьСубконто(1);
Пока Ит_1.ПолучитьСубконто(1) = 1 Цикл
19 alex_reglament
 
07.12.11
11:04
да я понимаю что в моем запросе можно и так
Ит_1.ВыбратьСубконто();
Пока Ит_1.ПолучитьСубконто() = 1 Цикл
но я думаю что это не мешает
или я не прав?
20 alex_reglament
 
07.12.11
11:04
всеравно на 62 и 76 счетах одно субконто "Контрагенты" и все
21 alex_reglament
 
07.12.11
11:06
наверно мне кто то в кофе тормозной житкости подли
22 alex_reglament
 
07.12.11
11:07
ладненько буду сам бороться спасибо всем
23 Андрей_Андреич
 
naïve
07.12.11
11:10
Нет начальной даты в
Ит_1.ВыполнитьЗапрос(Где начдата!!!,ДатаКон,счет,,,,"Операция");
24 alex_reglament
 
07.12.11
11:11
Ит_1.ВыполнитьЗапрос(НачМесяца(ДатаКон),ДатаКон,счет,,,,"Операция");
   //*******************************************
   
Ит_1.ВыбратьСубконто(1);
Пока Ит_1.ПолучитьСубконто(1) = 1 Цикл
   Ит_1.ВыбратьПериоды();
   Пока Ит_1.ПолучитьПериод() = 1 Цикл
   РачетныйСчет = "";
   СуммаОбщая   = "";
но при этом в отладчике Ит_1.ВыбратьПериоды() = 0
25 alex_reglament
 
07.12.11
11:12
Ит_1.ВыполнитьЗапрос(НачМесяца(ДатаКон),ДатаКон,счет,,,,"Операция");
может не опрерацию нужно писать а Месяц ?
26 alex_reglament
 
07.12.11
11:12
(23) смотри (24)
27 vladko
 
07.12.11
11:14
автор, может воспользуешься конструктором бух.итогов в конфигураторе? и поправишь получившийся отчёт уже своими данными
28 alex_reglament
 
07.12.11
11:16
ну так интереснее же самому добиться да вы мне поможете я пойму как формировать а если в конструкторе то что я с него возму
29 alex_reglament
 
07.12.11
11:28
блин ну помогите люди
30 alex_reglament
 
07.12.11
11:29
в конструкторе чушь какаято получилась
31 Андрей_Андреич
 
naïve
07.12.11
11:32
Давай ты хоть суть расскажешь - чего надобно-то?
32 vladko
 
07.12.11
11:40
Исходя из твоего алгоритма, достаточно:

Ит_1= СоздатьОбъект("БухгалтерскиеИтоги");
Ит_1.ИспользоватьПланСчетов(ОсновнойПланСчетов());
Ит_1.ВыполнитьЗапрос(НачМесяца(ДатаКон),ДатаКон,счет,,, 1, "Операция", "С");
Ит_1.ВыбратьПериоды();
   Пока Ит_1.ПолучитьПериод() = 1 Цикл
   РачетныйСчет = "";
   СуммаОбщая   = "";
   //*******************************************

   Если Ит_1.СКД() <> 0 Тогда    
    спрБанка.ИспользоватьВладельца(Ит_1.Субконто(1).ТекущийЭлемент());
    Контрагент            = Ит_1.Субконто(1);
    УНП                   = Ит_1.Субконто(1).УНН;
    спрБанка.ВыбратьЭлементы();
    Пока спрБанка.ПолучитьЭлемент() = 1 Цикл
        Если Число(спрБанка.Код) = 1 Тогда
    РачетныйСчет          = спрБанка.Наименование + ": р/с №" + СокрЛП(спрБанка.НомерСчета);//спрБанка.НомерСчета;//найти по контрагенту;

Иначе
   РачетныйСчет = "";
КонецЕсли;
КонецЦикла;
    СуммаОбщая            = Ит_1.СКД();
    СуммаПросроченная = "";
        ЧислоДней = Ит_1.Операция.Документ.ДнейТребования;
        ДатаПроводкиДокумента = Ит_1.Операция.Документ.ДатаДок;
        СуммаДат = ДатаПроводкиДокумента + ЧислоДней;
        Если СуммаДат > Дата_ Тогда
        Ит_2.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Ит_1.Субконто(1).ТекущийЭлемент());    
        Ит_2.ВыполнитьЗапрос(ДатаПроводкиДокумента,ДатаПроводкиДокумента,счет,,,,"Операция");
        Ит_2.ВыбратьСубконто(1);
        Пока Ит_2.ПолучитьСубконто(1) = 1 Цикл
            Если Ит_2.Операция.Документ.НомерДок = Ит_1.Операция.Документ.НомерДок Тогда
    СуммаПросроченная     = Ит_2.Операция.Документ.Итог("Сумма");
Иначе
   СуммаПросроченная    = "-";
КонецЕсли;
КонецЦикла;
КонецЕсли;
    Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
33 vladko
 
07.12.11
11:40
но что-то мне подсказывает, что ты неправильный алгоритм избрал
34 vladko
 
07.12.11
11:40
хотя я задачи не знаю точной
35 alex_reglament
 
07.12.11
11:40
клиенту нужен отчет о дебиторской задолжности  он должен формироваться по счета "62,76 , СКД это сумма задолжности но мне нужно указать еще и сумму просроченной задолжности  каким оброзам на форме документа расход товара есть реквизит ДнейТребования в нем указывается сколько дней доется клиенту для погошения задолжности
я решил  сделать так получить значение реквизита ДнейТребования + занчения даты документа = дата и если эта дата > даты запроса тогда вывести сумму задолжности
36 vladko
 
07.12.11
11:51
к (32)
Если Ит_1.СКД() <> 0 Тогда    
    спрБанка.ИспользоватьВладельца(Ит_1.Субконто(1).ТекущийЭлемент());
    Контрагент            = Ит_1.Субконто(1);
    УНП                   = Ит_1.Субконто(1).УНН;
    спрБанка.ВыбратьЭлементы();
    Пока спрБанка.ПолучитьЭлемент() = 1 Цикл
        Если Число(спрБанка.Код) = 1 Тогда
    РачетныйСчет          = спрБанка.Наименование + ": р/с №" + СокрЛП(спрБанка.НомерСчета);//спрБанка.НомерСчета;//найти по контрагенту;


Иначе
   РачетныйСчет = "";
КонецЕсли;
КонецЦикла;

заменить на

Если Ит_1.СКД() <> 0 Тогда
  Ит_1.Операция.Документ.Контрагент    
    Контрагент            = Ит_1.Операция.Документ.Контрагент;
    спрБанка.ИспользоватьВладельца(Контрагент);
    УНП                   = Контрагент.УНН;
    спрБанка.ВыбратьЭлементы();
    Пока спрБанка.ПолучитьЭлемент() = 1 Цикл
        Если Число(спрБанка.Код) = 1 Тогда
    РачетныйСчет          = спрБанка.Наименование + ": р/с №" + СокрЛП(спрБанка.НомерСчета);//спрБанка.НомерСчета;//найти по контрагенту;


Иначе
   РачетныйСчет = "";
КонецЕсли;
КонецЦикла;
37 alex_reglament
 
07.12.11
12:17
(36) мне нужно не Р/С получить его я получаю
а не получаю я только док и периоды = 0
тоесть в отладчике выбратьпериод() = 0
38 alex_reglament
 
07.12.11
12:23
смотрите
если формировать так то
Процедура Сформировать()
   спрБанка = СоздатьОбъект("Справочник.БанковскиеСчета");
   Если Счет_62 = 1 Тогда
       
       Счет_62_ = СчетПоКоду("62");
   Иначе
       Счет_62_ = "";
   КонецЕсли;
   Если Счет_76 = 1 Тогда
       Счет_76_ = СчетПоКоду("76");
   Иначе
       Счет_76_ = "";
   КонецЕсли;
   счет = Счет_62_ + Счет_76_;
   //*******************************************
   Таб = СоздатьОбъект("Таблица");
   Таб.ВывестиСекцию("Шапка");
   Ит_1 = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит_1.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
   Ит_1.ВыполнитьЗапрос(НачМесяца(Дата_),Дата_,счет,,,,"Месяц");
   Ит_1.ВыбратьСубконто(1);
   Пока Ит_1.ПолучитьСубконто(1) = 1 Цикл
       РачетныйСчет = "";
       СуммаОбщая   = "";
       СуммаПросроченная = "";
       Если Ит_1.СКД() <> 0 Тогда    
           спрБанка.ИспользоватьВладельца(Ит_1.Субконто(1).ТекущийЭлемент());
           Контрагент            = Ит_1.Субконто(1);
           УНП                   = Ит_1.Субконто(1).УНН;
           спрБанка.ВыбратьЭлементы();
           Пока спрБанка.ПолучитьЭлемент() = 1 Цикл
               Если Число(спрБанка.Код) = 1 Тогда
                   РачетныйСчет          = спрБанка.Наименование + ": р/с №" + СокрЛП(спрБанка.НомерСчета); //значения выводятся и правельны
               Иначе
                   РачетныйСчет = "";
               КонецЕсли;
           КонецЦикла;
           СуммаОбщая            = Ит_1.СКД(); //значения тоже выводятся и правильны
           СуммаПросроченная     = Ит_1.Операция; //значение = Операция
           Таб.ВывестиСекцию("Строка");
       КонецЕсли;
   КонецЦикла;
   Таб.ПараметрыСтраницы(2, , , , , , , , , 1);
   Таб.Опции(0, 0, 5, 2, "дебиторская задолжность");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("дебиторская задолжность");
КонецПроцедуры
СуммаПросроченная     = Ит_1.Операция; //значение = Операция
почему
если делать так то значения вообще не выводятся и ошибок нет!
все то же самое за исключением следующих строк
Ит_1.ВыполнитьЗапрос(НачМесяца(Дата_),Дата_,счет,,,,"Месяц");
   Ит_1.ВыбратьПериоды();
   Пока Ит_1.ПолучитьПериод() = 1 Цикл

и при этом в отладчике Ит_1.ВыбратьПериоды() = 0
39 alex_reglament
 
07.12.11
12:25
+(38)
и еще так пробовал
Ит_1.ВыполнитьЗапрос(НачМесяца(Дата_),Дата_,счет,,,,"Операция");
и
(36)
тоже пробовал
40 alex_reglament
 
07.12.11
12:25
в оборотке формировал документы есть
41 alex_reglament
 
07.12.11
12:25
мне может кто нибуть объяснить что я не правильно пишу
42 alex_reglament
 
07.12.11
12:28
мне что ни кто не может помочь?
43 chief accountant
 
07.12.11
12:30
счет = Счет_62_ + Счет_76_
не взлетит одназначна
44 alex_reglament
 
07.12.11
12:34
и что изза этого не формирует
45 chief accountant
 
07.12.11
12:36
(44) смотри типовые на предмет бухзапросов
46 alex_reglament
 
07.12.11
12:41
хорошо спасибо
47 alex_reglament
 
07.12.11
16:37
люди кому не лень подрубиться помочь?
TeamViewer 7
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.