Помогите найти ошибку в коде 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 Цикл
        Ит.ВыбратьСубконто(1); 
        Сообщить("В цикле");
        Пока Ит.ПолучитьСубконто(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 Цикл
потому что в запросе указал нужный счет
Оставьте свое сообщение

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