Имя: Пароль:
1C
1C 7.7
v7: не правильно выполняется запрос
0 nacinayu1c
 
16.08.11
16:59
привет всем отчет книга учета товара (готовой продукции) за год четыре печатных формы поквартально

вот код с запросом за первый квартал но есть одно но ни как не получается в графе отгружено номер , дату документа(РасходТовара)
я написал следующее
Если (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваров") и (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваровВРозницу") Тогда
                   Продолжить;
               Иначе
                   ПТЕНИД1       = (ИТ.Субконто(1).Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+Ит.Операция.Документ.ДатаДок);
               //Иначе
               //    ПТЕНИД1 = "-";
               КонецЕсли;
это для графы поступило

а это для  отгружено
Если (ИТ.Операция.Документ.Вид() <> "РасходТовара") и (ИТ.Операция.Документ.Вид() <> "РасходТовараРозница") Тогда
                   
                   ОПДЕНИД1      = (ИТ.Субконто(1).Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+ИТ.Операция.Документ.ДатаДок);
                   Продолжить;
               КонецЕсли;
но если использовать их то  данные вообще не выводятся  
если не использовать первое условие тогда выводится почемуто только одна строка с расходом хотя за первый квартал есть расходы почти по всему товару
вот весь код

   
   Если (КВ1 = 1) И (КВ2 <>  1) И (КВ3 <> 1) И (КВ4 <> 1)  Тогда
       Табл1 = 1;
   КонецЕсли;
   
   Если (КВ1 <>  1) И (КВ2 = 1) И (КВ3 <>  1) И (КВ4 <> 1)  Тогда
       Табл1 = 2;
   КонецЕсли;
   
   Если (КВ1 <>  1) И (КВ2 <>  1) И (КВ3 = 1) И (КВ4 <>  1)  Тогда
       Табл1 = 3;
   КонецЕсли;
   
   Если (КВ1 <>  1) И (КВ2 <>  1) И (КВ3 <> 1) И (КВ4 = 1)  Тогда
       Табл1 = 4;
   КонецЕсли;
   
   Если (КВ1 = 1) И (КВ2 =  1) И (КВ3 <> 1) И (КВ4 <> 1)  Тогда
       Табл1 = 12;
   КонецЕсли;
   
   Если (КВ1 = 1) И (КВ2 =  1) И (КВ3 = 1) И (КВ4 <> 1)  Тогда
       Табл1 = 13;
   КонецЕсли;
   
   Если (КВ1 = 1) И (КВ2 =  1) И (КВ3 = 1) И (КВ4 = 1)  Тогда
       Табл1 = 14;
   КонецЕсли;
   
   
   Если (Табл1 = 1) или (Табл1 = 12) или (Табл1 = 13) или (Табл1 = 14)   Тогда
       Табл_1 = СоздатьОбъект("Таблица");
       Табл_1.ИсходнаяТаблица("1Квартал");
       Табл_1.ПараметрыСтраницы(2,90);
       Табл_1.ВывестиСекцию("Шапка");
       //Получим бух итоги со счета по коду "004.3"
       ИТ = СоздатьОбъект("БухгалтерскиеИтоги");
       ИТ.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
       ИТ.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
       ИТ.ИспользоватьСубконто(ВидыСубконто.Партии);
       ИТ.ПериодКВ(1,ГодОтчета);
       ИТ.ВыполнитьЗапрос(ИТ.НачПериода(),ИТ.КонПериода(), "004.3",,,,"Проводка");
       ИТ.ВыбратьСубконто(1);
       Пока ИТ.ПолучитьСубконто(1) = 1 Цикл
           ИТ.ВыбратьСубконто(2);
           Пока ИТ.ПолучитьСубконто(2) = 1 Цикл
               ОстКолВо = ИТ.СКД("К");
               остСтоимость = ИТ.СКД("С");
               
               //1Квартал
               оНДПИ1 = "-";
               оСумма1 = "-";
               рРасходы1 = "-";            
               рНДПИ1 = "-";
               рСуммаД1 = 0;
               рКолВо1  = 0;
               ИТоСумма2 = 0;
               СуммаРасс =0;
               //Получим данные 1вого квартала и выведем их на секцию "строка"
               //объщие колонки (Поставщик товара, документ, его номер и дата),(наименование, вид (сорт, артикул) товара);
               
               //Поставщик товара, документ, его номер и дата
               Если (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваров") и (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваровВРозницу") Тогда
                   Продолжить;
               Иначе
                   ПТЕНИД1       = (ИТ.Субконто(1).Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+Ит.Операция.Документ.ДатаДок);
               //Иначе
               //    ПТЕНИД1 = "-";
               КонецЕсли;
               ////наименование, вид (сорт, артикул) товара
               НВСАТ1        = ИТ.Субконто(2);    
               
               ////Остаток нереализованного товара    
               ////Кол-во
               ОНТКолВо1     = ИТ.СНД("К");
               ////стоимость(руб.)
               ОНТСтоимость1 = ИТ.СНД("С");
               
               ////поступило (изготовлено)        
               ////Цена
               Если ИТ.ДО("К")<>0  Тогда
                   Если ИТ.ДО("С")<>0 Тогда
                       Если ИТ.ДО("К")<>""  Тогда
                           Если ИТ.ДО("С")<>"" Тогда
                               ПИЦена1        = Окр(ИТ.ДО("С") / ИТ.ДО("К"));
                           Иначе
                               ПИЦена1 = 0;
                           КонецЕсли;
                       КонецЕсли;
                   КонецЕсли;
               КонецЕсли;
               ////Кол-во
               ПИКолВо1      =ИТ.ДО("К");
               ////стоимость(руб.)
               ПИСтоимость1  = ИТ.ДО("С");
               
               ////Оплачено    //не заполняется
               
               ////отгружено        
               ////покупатель, документ, его номер и дата
               Если (ИТ.Операция.Документ.Вид() <> "РасходТовара") и (ИТ.Операция.Документ.Вид() <> "РасходТовараРозница") Тогда
                   
                   ОПДЕНИД1      = (ИТ.Субконто(1).Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+ИТ.Операция.Документ.ДатаДок);
                   Продолжить;
               КонецЕсли;
                   ////Кол-во
                   оКолВо1        = ИТ.КО("К");
                   ////стоимость по отпускным ценам (руб.)
                   оСПОЦ1        = ИТ.КО("С");
                   Спр = СоздатьОбъект("Справочник.Договоры");
                   Спр.ИспользоватьВладельца(ИТ.Субконто(1).Наименование);
                   спр.ВыбратьЭлементы();
                   Проц = Спр.ПроцентКомиссии;
                   ////реализовано    
                   ////номер, дата платежной инструкции
                   //рНДПИ1        =;
                   ////Сумма дохода (руб.)
                   рСуммаД1    = ИТ.КО("С") * Проц/100;
                   ////Кол-во
                   рКолВо1        = ИТ.КО("К");
               //Иначе
                   //ОПДЕНИД1 = "-";
               //    оКолВо1  = "-";
               //    оСПОЦ1   = "-";
               //КонецЕсли;
               СуммРуб = 0;
                   СуммРуб = рСуммаД1 + СуммРуб;
               Табл_1.ВывестиСекцию("Строка");
           КонецЦикла;
       КонецЦикла;
       Табл_1.ВывестиСекцию("Итого1");
       Табл_1.Показать("1 Квартал");
   КонецЕсли;
1 andrewks
 
16.08.11
17:01
пля... пойду-ка я лучше домой...
2 nacinayu1c
 
16.08.11
17:06
помогите пожалуйста
3 Drac0
 
16.08.11
17:06
(0) А где у тебя ВыбратьПериоды()?
4 nacinayu1c
 
16.08.11
17:07
а где их вуберать???
5 Drac0
 
16.08.11
17:07
+(3) Ну и соответсвенно цикл по получитьпериод()
6 Сияющий Асинхраль
 
16.08.11
17:08
Ошибок куча, и невнятностей. Зачем пишешь использовать три субконто, при выборе однако используешь 2, пишешь запрос с периодичностью по проводкам, а периоды не выбираешь, и вот такие
Если ИТ.ДО("С")<>"" Тогда
вещи тоже очень странными кажутся.
7 nacinayu1c
 
16.08.11
17:10
ИТ.ВыбратьСубконто(1);
       Пока ИТ.ПолучитьСубконто(1) = 1 Цикл
           ИТ.ВыбратьСубконто(2);
           Пока ИТ.ПолучитьСубконто(2) = 1 Цикл
ИТ.ВыбратьПериоды();
Пока Ит.ПолучитьПериод() = 1 Цикл
так будет правильно?
8 Drac0
 
16.08.11
17:10
(4)
ИТ.ВыбратьПериоды();
Пока ИТ.ПолучитПериод() = 1 Цикл

  Если (ИТ.Операция.Документ.Вид() <> "РасходТовара") и (ИТ.Операция.Документ.Вид() <> "РасходТовараРозница") Тогда
                   
                   ОПДЕНИД1      = (ИТ.Субконто(1).Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+ИТ.Операция.Документ.ДатаДок);
                   Продолжить;
               КонецЕсли;



КонецЦикла
9 Drac0
 
16.08.11
17:11
+(8) Это к примеру. Вместо ИТ.Субконто(1) лучше обращаться к субконто дебета или кредита проводки.
10 Mnemonic1C
 
16.08.11
17:15
А потом появляются темы Почему на habrahabr не любят 1С-ников?
11 nacinayu1c
 
16.08.11
17:15
всеравно расход не получаю
12 nacinayu1c
 
16.08.11
17:18
так же правильно будет или я опять чтото не правильно сделал
ИТ.ВыбратьПериоды();
               Пока Ит.ПолучитьПериод() = 1 Цикл
               //Поставщик товара, документ, его номер и дата
               Если (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваров") и (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваровВРозницу") Тогда
                   Продолжить;
               Иначе
                   ПТЕНИД1       = (ИТ.Субконто(1).Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+Ит.Операция.Документ.ДатаДок);
           
               КонецЕсли;
               
               ////отгружено        
               ////покупатель, документ, его номер и дата
               Если (ИТ.Операция.Документ.Вид() <> "РасходТовара") и (ИТ.Операция.Документ.Вид() <> "РасходТовараРозница") Тогда
                   Продолжить;
               Иначе
                   
                   ОПДЕНИД1      = (ИТ.Субконто(1).Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+ИТ.Операция.Документ.ДатаДок);

               КонецЕсли;
           КонецЦикла;
13 nacinayu1c
 
16.08.11
17:18
в этом случае я в ОПДЕНИД1 получаю приход
14 zak555
 
16.08.11
17:20
зачем проверять вид дока ?
нужно смотреть ДО по 41.1 (!)
15 nacinayu1c
 
16.08.11
17:20
почему по 41.1?
16 Drac0
 
16.08.11
17:21
(14)Он же вроде из Белоруссии. Не знаю их план счетов, но может там не через 41.
17 nacinayu1c
 
16.08.11
17:23
в графе нужно указать вид документа его номер и дату
18 Сияющий Асинхраль
 
16.08.11
17:23
Ты сначала исправь уже отмеченные глупости, а потом уже и остальное править будем. Я тебе уже говорил как-то, если копипастешь, то вычищай полученный код, без этого у тебя такая фигня получается, что смотреть тошно... Одно вот это:

Если ИТ.ДО("К")<>0  Тогда
                   Если ИТ.ДО("С")<>0 Тогда
                       Если ИТ.ДО("К")<>""  Тогда
                           Если ИТ.ДО("С")<>"" Тогда
                               ПИЦена1        = Окр(ИТ.ДО("С") / ИТ.ДО("К"));
                           Иначе
                               ПИЦена1 = 0;
                           КонецЕсли;
                       КонецЕсли;
                   КонецЕсли;
               КонецЕсли;
               
Чего стоит
19 nacinayu1c
 
16.08.11
17:26
странно но вид постоянно равен "ПоступлениеТоваров"
20 zak555
 
16.08.11
17:28
(16) ну так там они в любом случае Активы
т.е. можно всё увидеть
21 nacinayu1c
 
16.08.11
17:30
вот исправил только помагите
22 nacinayu1c
 
16.08.11
17:31
Если (Табл1 = 1) или (Табл1 = 12) или (Табл1 = 13) или (Табл1 = 14)   Тогда
       Табл_1 = СоздатьОбъект("Таблица");
       Табл_1.ИсходнаяТаблица("1Квартал");
       Табл_1.ПараметрыСтраницы(2,90);
       Табл_1.ВывестиСекцию("Шапка");
       //Получим бух итоги со счета по коду "004.3"
       ИТ = СоздатьОбъект("БухгалтерскиеИтоги");
       ИТ.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
       ИТ.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
       ИТ.ПериодКВ(1,ГодОтчета);
       ИТ.ВыполнитьЗапрос(ИТ.НачПериода(),ИТ.КонПериода(), "004.3",,,,"Проводка");
       ИТ.ВыбратьСубконто(1);
       Пока ИТ.ПолучитьСубконто(1) = 1 Цикл
           ИТ.ВыбратьСубконто(2);
           Пока ИТ.ПолучитьСубконто(2) = 1 Цикл
               ОстКолВо = ИТ.СКД("К");
               остСтоимость = ИТ.СКД("С");    
               //1Квартал
               оНДПИ1 = "-";
               оСумма1 = "-";
               рРасходы1 = "-";            
               рНДПИ1 = "-";
               рСуммаД1 = 0;
               рКолВо1  = 0;
               ИТоСумма2 = 0;
               СуммаРасс =0;
               //Получим данные 1вого квартала и выведем их на секцию "строка"
               //объщие колонки (Поставщик товара, документ, его номер и дата),(наименование, вид (сорт, артикул) товара);
               
   
               ////наименование, вид (сорт, артикул) товара
               НВСАТ1        = ИТ.Субконто(2);    
               
               ////Остаток нереализованного товара    
               ////Кол-во
               ОНТКолВо1     = ИТ.СНД("К");
               ////стоимость(руб.)
               ОНТСтоимость1 = ИТ.СНД("С");
               
               ////поступило (изготовлено)        
               ////Цена
               ПИЦена1        = Окр(ИТ.ДО("С") / ИТ.ДО("К"));
                           
               ////Кол-во
               ПИКолВо1      =ИТ.ДО("К");
               ////стоимость(руб.)
               ПИСтоимость1  = ИТ.ДО("С");
               
               ////Оплачено    //не заполняется
               ИТ.ВыбратьПериоды();
               Пока Ит.ПолучитьПериод() = 1 Цикл
               //Поставщик товара, документ, его номер и дата
               Если (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваров") и (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваровВРозницу") Тогда
                   Продолжить;
               Иначе
                   ПТЕНИД1       = (ИТ.Операция.Дебет.Контрагенты.Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+Ит.Операция.Документ.ДатаДок);
           
               КонецЕсли;
               
               ////отгружено        
               ////покупатель, документ, его номер и дата
               Если (ИТ.Операция.Документ.Вид() <> "РасходТовара") и (ИТ.Операция.Документ.Вид() <> "РасходТовараРозница") Тогда
                   Продолжить;
               Иначе
                   
                   ОПДЕНИД1      = (ИТ.Операция.Кредит.Контрагенты.Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+ИТ.Операция.Документ.ДатаДок);

               КонецЕсли;
           КонецЦикла;
                   ////Кол-во
                   оКолВо1        = ИТ.КО("К");
                   ////стоимость по отпускным ценам (руб.)
                   оСПОЦ1        = ИТ.КО("С");
                   Спр = СоздатьОбъект("Справочник.Договоры");
                   Спр.ИспользоватьВладельца(ИТ.Субконто(1).Наименование);
                   спр.ВыбратьЭлементы();
                   Проц = Спр.ПроцентКомиссии;
                   ////реализовано    
                   ////номер, дата платежной инструкции
                   //рНДПИ1        =;
                   ////Сумма дохода (руб.)
                   рСуммаД1    = ИТ.КО("С") * Проц/100;
                   ////Кол-во
                   рКолВо1        = ИТ.КО("К");
               //Иначе
                   //ОПДЕНИД1 = "-";
               //    оКолВо1  = "-";
               //    оСПОЦ1   = "-";
               //КонецЕсли;
               СуммРуб = 0;
                   СуммРуб = рСуммаД1 + СуммРуб;
               Табл_1.ВывестиСекцию("Строка");
           КонецЦикла;
       КонецЦикла;
       Табл_1.ВывестиСекцию("Итого1");
       Табл_1.Показать("1 Квартал");
   КонецЕсли;
23 zak555
 
16.08.11
17:31
срочно увольняться
24 nacinayu1c
 
16.08.11
17:31
теперь ОПДЕНИД1 просто пустой
25 nacinayu1c
 
16.08.11
17:32
я не работаю
26 zak555
 
16.08.11
17:33
я тоже
27 nacinayu1c
 
16.08.11
17:34
:))
28 nacinayu1c
 
16.08.11
17:34
ну что поможете?
29 zak555
 
16.08.11
17:35
мне нужно : рассписать проводки двух документов
30 Сияющий Асинхраль
 
16.08.11
17:35
А что ты хотел, ты сам отсекаешь все документы, кроме приходов:


               Если (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваров") и (ИТ.Операция.Документ.Вид() <> "ПоступлениеТоваровВРозницу") Тогда
                   Продолжить;
               Иначе
31 nacinayu1c
 
16.08.11
17:38
в таком случае как мне получить для ПТЕНИД1 вид номер и дату приход
а для оПТЕНИД1 расход??
32 zak555
 
16.08.11
17:39
(31) запрос по операциям смотреть только оборот
33 Сияющий Асинхраль
 
16.08.11
17:39
Очевидно сравнивать на равенство:
ИТ.Операция.Документ.Вид() = "ПоступлениеТоваров"
34 Сияющий Асинхраль
 
16.08.11
17:41
Если Ит.ДО() <> 0 Тогда
ПТЕНИД1       = (ИТ.Операция.Дебет.Контрагенты.Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+Ит.Операция.Документ.ДатаДок);
ИначеЕсли Ит.КО() <> 0 Тогда
ОПДЕНИД1      = (ИТ.Операция.Кредит.Контрагенты.Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+ИТ.Операция.Документ.ДатаДок);
КонецЕсли;
35 zak555
 
16.08.11
17:52
то за изврат с договорами ?
36 nacinayu1c
 
16.08.11
17:54
Если Ит.ДО() <> 0 Тогда
ПТЕНИД1       = (ИТ.Операция.Дебет.Контрагенты.Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+Ит.Операция.Документ.ДатаДок);
ИначеЕсли Ит.КО() <> 0 Тогда
ОПДЕНИД1      = (ИТ.Операция.Кредит.Контрагенты.Наименование+" "+ИТ.Операция.Документ.Вид()+" "+ИТ.Операция.Документ.НомерДок+" "+ИТ.Операция.Документ.ДатаДок);
КонецЕсли;
при этом получил расход но контрагент ИТ.Операция.Кредит.Контрагенты.Наименование почемуто тот же что и в дебете да и если Ит.КО() <> 0 то всеравно поподает  запись верхней строки
37 Сияющий Асинхраль
 
16.08.11
17:57
Ну так обнули их перед этим если, свои мозги надо хоть иногда включать:
ПТЕНИД1 = "";
ОПДЕНИД1 = "";
38 nacinayu1c
 
16.08.11
18:03
спасибо всео огромное
39 nacinayu1c
 
16.08.11
18:03
все ок
40 zak555
 
16.08.11
18:04
(39) тебе кажется
41 Сияющий Асинхраль
 
16.08.11
18:06
Вот здесь:

ПИЦена1        = Окр(ИТ.ДО("С") / ИТ.ДО("К"));

Надо таки проверять на равенство нулю ИТ.ДО("К"), но только один раз, и только нулю, а не пустому значению...
42 Сияющий Асинхраль
 
16.08.11
18:09
Но (40) прав, даже в таком варианте фигня какая-то
43 nacinayu1c
 
16.08.11
18:09
(41) понял уже по (37) и по ошибке "деление на ноль"
44 nacinayu1c
 
17.08.11
11:10
Табл_1.ПараметрыСтраницы(2,90);
это может как нибудь влеять на предварительный просмотр дло в том что после того как запрос сформирован нажимаю предварительный просмотр и не чего после нажимаю ФАЙЛ , параметры страницы выподает окно с настройками параметров потом жму просто отмена после жму просмотр все ок
45 nacinayu1c
 
17.08.11
11:11
в других отчетах все работает на ура
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.