Помогите найти ошибку в коде 1с 7.7

1. Linda1C 31.10.19 12:01 Сейчас в теме
Добрый день!
Пишу обработку по выгрузке остатков по счету 002.1.
Процедура Выгрузить002() 
    ДБФ = СоздатьОбъект("XBase");
    ДБФ.ДобавитьПоле("StKod", "S", 9, );
    ДБФ.ДобавитьПоле("KONTR", "S", 150, );
    ДБФ.ДобавитьПоле("KontrIdent", "S", 150, );
    ДБФ.ДобавитьПоле("DOGOVOR", "S",150 , );
    ДБФ.ДобавитьПоле("DATAV", "D", , ); 
    ДБФ.ДобавитьПоле("DATAP", "D", , );
    ДБФ.ДобавитьПоле("Shcet","S",15,);
    ДБФ.ДобавитьПоле("Summa", "N", 15, 2); 
    ДБФ.ДобавитьПоле("Kol", "N", 15, 5);
    ДБФ.ДобавитьПоле("RODKONTR", "S", 150, );
    ДБФ.ДобавитьПоле("INNKONTR", "S", 20, );
    ДБФ.ДобавитьПоле("DATANST", "D", , ); 
    ДБФ.ДобавитьПоле("DATAPST", "D", , );
    ДБФ.ДобавитьПоле("STVKST", "N", 5, 2);
    ДБФ.ДобавитьПоле("EDRSST", "S",25 , ); 
    ДБФ.ДобавитьПоле("SKANKAT", "S",150 , ); 
    ДБФ.ДобавитьПоле("SKANDOG", "S",150 , ); 
    ДБФ.ДобавитьПоле("MatKod", "S", 9, );
    ДБФ.ДобавитьПоле("MatIdent", "S", 150, );
    ДБФ.ДобавитьПоле("MatName", "S", 100, );
    ДБФ.ДобавитьПоле("MatED", "S", 50, );
    ДБФ.ДобавитьПоле("MatEDKOD", "S", 10, );
    ДБФ.ДобавитьПоле("MatVid", "S", 150, );
    ДБФ.ДобавитьПоле("Sklad", "S", 45, ); 
    ДБФ.ДобавитьПоле("SkladKOD", "S", 45, ); 
    ДБФ.ДобавитьПоле("MOL", "S", 150, ); 
    //ДБФ.СоздатьФайл("C:\ТАИФ СТ\60_2_2_1.DBF"); 
    ДБФ.СоздатьФайл("D:\1cBases\temp\Обработки\002_1.DBF"); 
    СтрокаУслСчета = "002.1";        
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");       
    Ит.ИспользоватьСубконто(ВидыСубконто.Материалы);
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
    Ит.ИспользоватьСубконто(ВидыСубконто.Договоры);
    Ит.ИспользоватьСубконто(ВидыСубконто.ОбъектыСтроительства);
    Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); 
    Ит.ВыполнитьЗапрос(Дата1, Дата1, СтрокаУслСчета); 
    Ит.ВыбратьСчета();

    Пока Ит.ПолучитьСчет() = 1 Цикл
        Ит.ВыбратьСубконто(1); 
        Сообщить("В цикле");
        Пока Ит.ПолучитьСубконто(1) = 1 Цикл
            ОстатокСумма = Ит.СКД("С") - Ит.СКК("С");  
            Ит.ВыбратьСубконто(2);
            Пока Ит.ПолучитьСубконто(2) = 1 Цикл  
                Если (Ит.СКД("С") = 0 ) и (Ит.СКК("С") = 0) Тогда
                    Продолжить;
                КонецЕсли;   
                Ит.ВыбратьСубконто(3);
                Пока Ит.ПолучитьСубконто(3) = 1 Цикл  
                    Если (Ит.СКД("С") = 0 ) и (Ит.СКК("С") = 0) Тогда
                        Продолжить;
                        КонецЕсли; 
                        Ит.ВыбратьСубконто(4);
                        Пока Ит.ПолучитьСубконто(4) = 1 Цикл  
                            Если (Ит.СКД("С") = 0 ) и (Ит.СКК("С") = 0) Тогда
                                Продолжить;
                            КонецЕсли; 
                        Ит.ВыбратьСубконто(5);
                        Пока Ит.ПолучитьСубконто(5) = 1 Цикл  
                            Если (Ит.СКД("С") = 0 ) и (Ит.СКК("С") = 0) Тогда
                                Продолжить;        
                        КонецЕсли; 
                        ДБФ.Добавить();
                        
                        Контрагент=Ит.Субконто(1);
                        Номенклатура = Ит.Субконто(4);
                       
                        Склад =  Ит.Субконто(5); 
                    
                        //ДБФ.DOGOVOR = Договор.Наименование;
                        //ДБФ.DATAV = Договор.ДатаВозникновенияОбязательства; 
                        //ДБФ.DATAP = Договор.ДатаПогашенияОбязательства;
                        ДБФ.Shcet = Ит.Счет.Код;
                        ДБФ.StKod =  Контрагент.Код; 
                        ДБФ.KONTR = КОнтрагент.Наименование;
                        ДБФ.KontrIdent = ЗначениеВСтрокуВнутр(Контрагент); 
                        ДБФ.Summa = Ит.СКД("С") - Ит.СКК("С");
                        ДБФ.Kol = Ит.СКД("К") - Ит.СКК("К");
                        //ДБФ.RODKONTR = Контрагент.Родитель.Наименование;
                        //ПоискИНН = Найти(Контрагент.ИНН, "/");
                        //Если ПоискИНН > 0 Тогда
                        //    ДБФ.INNKONTR = Лев(Контрагент.ИНН, ПоискИНН-1);
                        //Иначе
                        //    ДБФ.INNKONTR = Контрагент.ИНН;
                        //КонецЕсли;
                        //ДБФ.DATANST = Договор.ДатаНачалаНачисленияШтрафныхСанкций; 
                        //ДБФ.DATAPST = Договор.ДатаПрекращенияНачисленияШтрафныхСанкций; 
                        //ДБФ.STVKST = Договор.СтавкаШтрафныхСанкций; 
                        //ДБФ.EDRSST = Договор.ВременнаяЕдиницаРасчетаШтрафныхСанкций;
                        //ДБФ.SKANKAT = Договор.КаталогОтсканированныйДоговор;
                        //ДБФ.SKANDOG = Договор.ОтсканированныйДоговор;
                        ДБФ.MatKod =  Номенклатура.Код; 
                        ДБФ.MatName = Номенклатура.Наименование;
                        ДБФ.MatIdent = ЗначениеВСтрокуВнутр(Номенклатура); 
                        ДБФ.MatED = Номенклатура.ЕдиницаИзмерения.Наименование;
                        ДБФ.MatEDKOD = Номенклатура.ЕдиницаИзмерения.Код;
                    //    ДБФ.MatVid = СокрЛП(Строка(Номенклатура.СубСчет10.Код));
                        ДБФ.Sklad = Склад.Наименование;
                        ДБФ.SkladKOD = Склад.Код;
                        ДБФ.MOL = Склад.МОЛ.Наименование;
                    
                        ДБФ.Записать();
                        
                    КонецЦикла; 
                    КонецЦикла; 
                КонецЦикла;
            КонецЦикла;    
        КонецЦикла;    
    КонецЦикла;      
    
    Сообщить("Закончили002","!!!");    
КонецПроцедуры

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
12. nvilku 31.10.19 14:19 Сейчас в теме
У вас 002.1 забалансовый счет, необходимо добавить: Ит.Опции(1);
2. Linda1C 31.10.19 12:02 Сейчас в теме
Вот эта строка не срабатывает, и я не попадаю в цикл

Пока Ит.ПолучитьСубконто(1) = 1 Цикл
4. FetisovAN 31.10.19 12:18 Сейчас в теме
(2) в вашем коде не вижу где вы задаете значение "Дата1"
5. user705522_constantin_h 37 31.10.19 12:19 Сейчас в теме
(2)
Пока Ит.ПолучитьСубконто(1) = 1 Цикл

Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
7. YannikAlx 28 31.10.19 12:46 Сейчас в теме
(5) Вы не внимательны...
 Пока Ит.ПолучитьСчет() = 1 Цикл
<b>        Ит.ВыбратьСубконто(1); </b>
        Сообщить("В цикле");
        Пока Ит.ПолучитьСубконто(1) = 1 Цикл
8. user705522_constantin_h 37 31.10.19 12:52 Сейчас в теме
3. Linda1C 31.10.19 12:04 Сейчас в теме
Вот план счетов
Прикрепленные файлы:
6. VictorRGB2 14 31.10.19 12:21 Сейчас в теме
Ит.ВыбратьСчета();

вот тут надо так Ит.ВыбратьСчета(, , , 1); иначе субконто счетов просто не получить

а еще лучше даже так Ит.ВыбратьСчета(1, , , 1); чтобы толко данные с итогами по обороту на счете выбрались, но это если не нужны пустые итоги по счету
9. Linda1C 31.10.19 13:15 Сейчас в теме
(6) не помогает,к сожалению.
У меня код работал,когда я по другим счетам выгружала данные(там другие субконто немного были)

Может эту строку программа не понимает

СтрокаУслСчета = "002.1";
10. user705522_constantin_h 37 31.10.19 14:10 Сейчас в теме
(9)Оборотно-сальдовую ведомость покажите. Ит.ВыбратьСубконто(1) судя по всему Материалы. Есть обороты по материалам?
11. nvilku 31.10.19 14:18 Сейчас в теме
Синтаксис:
Опции(<ВклЗабалансСуммы>,<ВклОборотСубкСуммы>)
Назначение:
Устанавливает режим включения сумм в итоги.
Параметры:
<ВклЗабалансСуммы> - признак включения в итоги сумм по забалансовым счетам. Число: 0 - не включаются суммы по забалансовым счетам; 1 - включаются суммы по забалансовым счетам.
<ВклОборотСубкСуммы> -признак включения в итоги сумм по оборотным субконто. Число: 0 - не включаются суммы по оборотным суб-конто; 1 - включаются суммы по оборотным субконто.
user705522_constantin_h; +1 Ответить
13. Dnki 4 31.10.19 15:18 Сейчас в теме
Замечу только, что можно обойтись без
Ит.ВыбратьСчета();
Пока Ит.ПолучитьСчет() = 1 Цикл
потому что в запросе указал нужный счет
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот