Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Внешняя обработка и Табл. значений

kalisto
читатель
офлайн
Дата регистрации: 12.01.2005
Сообщений: 216
Пост №1
 
13.09.2005 13:43

Привет, всем.<br><br>Написала внешнюю обработку. Оня предназначена для сбора данных по актам списания материалов сч.10.9. Сначала данные собираются в таблицу значений, а потом выводятся на печать. Проблема в том, что таблица значений не хочет сохранять данные (через раз), не хочет удалять нулевые строки и вообще "не слушается", хотя код проверяла триста раз, через отладчик смотрела, как - будто все попадает, но результата нет. Что это за глюки?

Seregil
читатель
офлайн
Дата регистрации: 15.07.2002
Сообщений: 90
Пост №2
 
13.09.2005 14:25

Если бы еще код был... А так - черт его знает...

kalisto
читатель
офлайн
Дата регистрации: 12.01.2005
Сообщений: 216
Пост №3
 
13.09.2005 15:05

"Вот, такой замудренный код. Налоговый регистр. Причем, если данные собирать не по операциям, а именно по проводкам документов списания, то все нормально. Только ручные проводки не попадают тогда. Но бухгалтер не хочет совершать лишние колебания руками, чтобы дополнить таблицу вручеую.<br><br><br><br>Процедура Сформировать() <br><br> <br><br> ДокОсн = СоздатьОбъект("Операция");<br><br> ДокОсн.ВыбратьОперации(Дата1, Дата2); <br><br> Д1 = 0; <br><br> <br><br> ТЗ1.ВыбратьСтроки();<br><br> Пока ТЗ1.ПолучитьСтроку() = 1 Цикл<br><br> ТЗ1.УдалитьСтроку();<br><br> КонецЦикла;<br><br> <br><br> Пока ДокОсн.ПолучитьОперацию() = 1 Цикл <br><br> Если ДокОсн.ПометкаУдаления() = 0 Тогда<br><br> // Если ДокОсн.Вид() = "УслугиСтороннихОрганизаций11" Тогда<br><br> // ТЗ.Ст = <br><br> // ДокОсн = Док.ДокументОприходования.ТекущийДокумент();<br><br> <br><br> //ДокОсн.ВыбратьСтроки(); <br><br> а=0;<br><br> б=0;<br><br> в=0;<br><br> г=0;<br><br> д=0;<br><br> е=0;<br><br> ж=0;<br><br> з=0;<br><br> к=0;<br><br> л=0; <br><br> ф=0;<br><br> м=0; <br><br> н=0;<br><br> о=0;<br><br> п=0;<br><br> р=0;<br><br> с=0;<br><br> т=0;<br><br> у=0;<br><br> <br><br> <br><br>ДокОсн.ВыбратьПроводки();<br><br>Пока ДокОсн.ПолучитьПроводку() = 1 Цикл <br><br>Если ДокОсн.Кредит.Счет = СчетПоКоду("10.9") ТОгда <br><br>ТЗ1.НоваяСтрока(); <br><br>ТЗ1.Название = "Акт списания № " +" " +ДокОсн.Документ.НомерДок + " "+ ДокОсн.Кредит.МОЛ +"       "+ ДокОсн.ДатаОперации; //+ " " + ДокОсн.НомерДок; <br><br>Если (Лев(ДокОсн.Дебет.Субконто(2), 5) = "Ст254") или (Лев(ДокОсн.Дебет.Субконто(3), 5) = "Ст254") Тогда<br><br> <br><br> // Если ДокОсн.Субконто2.Родитель.Наименование = "Материальные расходы ст.254" Тогда<br><br> // Если ДокОсн.Субконто2.ВидРасходовДляНалоговогоУчета = "Материальные расходы" Тогда<br><br> Если ДокОсн.Дебет.Счет = СчетПоКоду("20.1") Тогда<br><br> а = а + ДокОсн.Сумма; <br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("20.2") Тогда<br><br> б = б + ДокОсн.Сумма;<br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("20.3") Тогда<br><br> в = в + ДокОсн.Сумма; <br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("20.4") Тогда<br><br> г = г + ДокОсн.Сумма; <br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("20.5") Тогда<br><br> д = д + ДокОсн.Сумма;<br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("20.6") Тогда<br><br> е = е + ДокОсн.Сумма;<br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("23.1") Тогда<br><br> ж = ж + ДокОсн.Сумма; <br><br> <br><br> //ИначеЕсли ДокОсн.КоррСчет = СчетПоКоду("44.1") Тогда<br><br> // л = л + (ДокОсн.Всего - ДокОсн.НДС);<br><br> // ТЗ.Код = "Стр. 020";<br><br> КонецЕсли;<br><br> ТЗ1.Код = "Стр. 020";<br><br> КонецЕсли; <br><br> <br><br> Если (Лев(ДокОсн.Дебет.Субконто(2), 5) = "Ст264") или (Лев(ДокОсн.Дебет.Субконто(3), 5) = "Ст264") Тогда<br><br> <br><br> // Если ДокОсн.Субконто2.Родитель.Наименование = "Материальные расходы ст.254" Тогда<br><br> // Если ДокОсн.Субконто2.ВидРасходовДляНалоговогоУчета = "Материальные расходы" Тогда<br><br> Если ДокОсн.Дебет.Счет = СчетПоКоду("20.1") Тогда<br><br> м = м + ДокОсн.Сумма; <br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("20.2") Тогда<br><br> н = н + ДокОсн.Сумма;<br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("20.3") Тогда<br><br> о = о + ДокОсн.Сумма; <br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("20.4") Тогда<br><br> п = п + ДокОсн.Сумма;<br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("25") Тогда<br><br> т = т + ДокОсн.Сумма; <br><br> ИначеЕсли ДокОсн.Дебет.Счет = СчетПоКоду("26.0") Тогда<br><br> у = у + ДокОсн.Сумма; <br><br> // ИначеЕсли ДокОсн.КоррСчет = СчетПоКоду("44.1") Тогда<br><br> // ф = ф + (ДокОсн.Всего - ДокОсн.НДС); <br><br> //ТЗ.Код = "Стр. 060, 100";<br><br> КонецЕсли;<br><br> ТЗ1.Код = "Стр. 060, 100";<br><br> КонецЕсли; <br><br> <br><br> Если (Лев(ДокОсн.Дебет.Субконто(3), 5) = "Ст254") или (Лев(ДокОсн.Дебет.Субконто(3), 5) = "Ст264") Тогда<br><br> Если ДокОсн.Дебет.Счет = СчетПоКоду("25") Тогда<br><br> т = т + ДокОсн.Сумма;<br><br> КонецЕсли;<br><br> Если ДокОсн.Дебет.Счет = СчетПоКоду("26.0") Тогда<br><br> у = у + ДокОсн.Сумма;<br><br> КонецЕсли;<br><br> КонецЕсли;<br><br> // ТЗ.Расход = ДокОсн.НаименованиеУслуги; <br><br> Если (Лев(ДокОсн.Дебет.Субконто(2), 5) = "Ст254") или (Лев(ДокОсн.Дебет.Субконто(2), 5) = "Ст264") Тогда<br><br> ТЗ1.Ст = ДокОсн.Дебет.Субконто(2); <br><br> ИначеЕсли (Лев(ДокОсн.Дебет.Субконто(3), 5) = "Ст254") или (Лев(ДокОсн.Дебет.Субконто(3), 5) = "Ст264") Тогда<br><br> ТЗ1.Ст = ДокОсн.Дебет.Субконто(3);<br><br> КонецЕсли;<br><br> <br><br> КонецЕсли; <br><br> КонецЦикла; <br><br> <br><br> ТЗ1.М201 = а; <br><br> ТЗ1.М202М = б;<br><br> ТЗ1.М203М = в;<br><br> ТЗ1.М204М = г; ///здесь должна заполняться таблица<br><br> ТЗ1.М205М = д; //через отладчик видно, что заполняется<br><br> ТЗ1.М206М = е; //но при просмотре, данных нет<br><br> ТЗ1.М231М = ж;<br><br> <br><br> <br><br> ТЗ1.П201П = м; <br><br> ТЗ1.П202П = н;<br><br> ТЗ1.П203П = о;<br><br> ТЗ1.П205П = п;<br><br> <br><br> <br><br> ТЗ1.П25П = т;<br><br> ТЗ1.П26П = у;<br><br> КонецЕсли; <br><br> КонецЦикла; <br><br>ТЗ1.Сортировать("Название");<br><br>ТЗ1.ВыбратьСтроки();<br><br>Пока ТЗ1.ПолучитьСтроку() = 1 Цикл<br><br>ТЗ1.Всего = ТЗ1.М201+ТЗ1.М202М+ТЗ1.М203М+ТЗ1.М204М+ ТЗ1.М205М+ТЗ1.М231М+ ТЗ1.М206М+ ТЗ1.П206П+ТЗ1.П205П+ТЗ1.П203П+ТЗ1.П201П +ТЗ1.П202П+ ТЗ1.П231П+ ТЗ1.П25П+ ТЗ1.П26П+ ТЗ1.П44;<br><br> //Если ТЗ.Всего = 0 Тогда<br><br> // ТЗ.УдалитьСтроку(); // здесь должны были строки удаляться, но <br><br> //КонецЕсли;             // увы...<br><br> Всего1 = Всего1 + ТЗ1.Всего;<br><br> М2011 = М2011+ТЗ1.М201; <br><br> М2021 = М2021+ТЗ1.М202М; <br><br> М2031 = М2031+ТЗ1.М203М;<br><br> М2041 = М2041+ТЗ1.М204М;<br><br> М2051 = М2051+ТЗ1.М205М;<br><br> М2061 = М2061+ТЗ1.М206М;<br><br> М2311 = М2311+ТЗ1.М231М;<br><br> П2011 = П2011+ТЗ1.П201П;<br><br> П2021 = П2021+ТЗ1.П202П;<br><br> П2031 = П2031+ТЗ1.П203П;<br><br> П2051 = П2051+ТЗ1.П205П;<br><br> П2061 = П2061+ТЗ1.П206П;<br><br> <br><br> П251 = П251+ТЗ1.П25П;<br><br> П261 = П261+ТЗ1.П26П;<br><br> <br><br> КонецЦикла; <br><br><br><br> <br><br>КонецПроцедуры"

kalisto
читатель
офлайн
Дата регистрации: 12.01.2005
Сообщений: 216
Пост №4
 
13.09.2005 15:06

Может предложите что-то грамотнее. Я, конечно, понимаю, что код можно оптимизировать, но пока речь об этом не идет.

Квазимодо
читатель
офлайн
Дата регистрации: 12.05.2004
Сообщений: 559
Пост №5
 
13.09.2005 15:38

"по поводу неудаления строки....заполняется Таблица значений ТЗ1, а удаляешь строку ТЗ.... непорядок<br><br>по несохранению данных...какой тип у незаполняемых колонок?<br><br>попробуй перед <br><br>ТЗ1.М204М = г;<br><br>написать вывод переменной "г"<br><br>Сообщить(г,"!!!");"

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация