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

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

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

внешний отчёт по списанию с ценой и суммой ТИС 9.2

Flava_John
читатель
офлайн
Дата регистрации: 01.11.2010
Сообщений: 6
Пост №1
 
01.11.2010 17:19

"Помогите пожалуйста с внешним отчётом, <br>это выгрузка актов списаний в ексель из 1с, дело в том что не выводится цена и сумма. <br><br>// Предопределенная процедура<br>Процедура ПриОткрытии(ФлагВосстановленияНастройки)<br>Если ФлагВосстановленияНастройки = 0 Тогда<br>ВидРазделителя = 1;<br>ВидЕдиницы = 1;<br>ПоГруппам = 1;<br>ДатаНачала = глЗначениеПоУмолчанию("ОсновнаяДатаНачалаОтчетов");<br>Если ПустоеЗначение(ДатаНачала) = 1 Тогда<br>ДатаНачала = НачМесяца(ДатаКонца);<br>КонецЕсли;<br>КонецЕсли;<br>Если глФлагРасшифровки = 1 Тогда<br>Обновить = глОбновить;<br>// восстанавливаем настройки из списка<br>ДатаНачала = глРасшифровка.Получить("ДатаНачала");<br>ДатаКонца = глРасшифровка.Получить("ДатаКонца");<br>ВыбКонтр = глРасшифровка.Получить("ВыбКонтр");<br>Если Обновить <> 0 Тогда<br>Таб = глТаблица;<br>КонецЕсли;<br>Иначе<br>Обновить = 0;<br>КонецЕсли;<br>КонецПроцедуры // ПриОткрытии()<br>Процедура Сформировать()<br>Док=СоздатьОбъект("Документ");<br>Док.УстановитьФильтр(1,0,0,2,1,1);<br>Если ВыбФирма.Выбран()=1 Тогда<br>Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Фирма",ВыбФирма);<br>ИначеЕсли ВыбСклад.Выбран()=1 Тогда<br>Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Склад",ВыбСклад);<br>ИначеЕсли ВыбПроект.Выбран()=1 Тогда<br>Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Проект",ВыбПроект);<br>Иначе<br>Док.ВыбратьДокументы(ДатаНачала,ДатаКонца);<br>КонецЕсли;<br>Загол="""";<br>Если ВыбФирма.Выбран()=1 Тогда<br>Загол=Загол + "По фирме "+ВыбФирма.Наименование+". ";<br>КонецЕсли;<br>Если ВыбСклад.Выбран()=1 Тогда<br>Загол=Загол + "По складу "+ВыбСклад.Наименование+". ";<br>КонецЕсли;<br>Если ВыбПроект.Выбран()=1 Тогда<br>Загол=Загол + "По трактору "+ВыбСклад.Наименование+". ";<br>КонецЕсли;<br>Таб = СоздатьОбъект("Таблица");<br>Таб.ВывестиСекцию("Шапка");<br>Счетчик=1;<br>ИтогСумма=0;<br>Пока Док.ПолучитьДокумент()=1 Цикл<br>Если Док.Вид()<>"СписаниеТМЦ" Тогда<br>Продолжить;<br>КонецЕсли;<br>РегПартии=СоздатьОбъект("Регистр.ПартииНаличие");<br>Если (ВыбФирма.Выбран()=1) и (Док.Фирма<>ВыбФирма.ТекущийЭлемент()) Тогда<br>Продолжить;<br>ИначеЕсли (ВыбСклад.Выбран()=1) и (Док.Склад<>ВыбСклад.ТекущийЭлемент()) Тогда<br>Продолжить;<br>ИначеЕсли (ВыбПроект.Выбран()=1) и (Док.Проект<>ВыбПроект.ТекущийЭлемент()) Тогда<br>Продолжить;<br>ИначеЕсли (ДокТрактор=1) и (ПустоеЗначение(Док.Проект)=1) Тогда<br>Продолжить;<br>КонецЕсли;<br>Таб.ВывестиСекцию("Строка");<br>Если Док.Вид()="СписаниеТМЦ" Тогда<br>Если Док.Проведен()=1 Тогда<br>ИтогСумма=0;<br>РегПартии.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());<br>Пока РегПартии.ПолучитьДвижение()=1 Цикл<br>Если РегПартии.КодОперации=глКО.Списание Тогда<br>ИтогСумма=ИтогСумма+РегПартии.СуммаРуб;<br>КонецЕсли;<br>КонецЦикла;<br>Иначе<br>ИтогСумма=0;<br>КонецЕсли;<br>Иначе<br>ИтогСумма = глСуммаДокументаВЖурнале(Док.ТекущийДокумент(), "число");<br>КонецЕсли;<br>КонецЦикла;<br>Таб.ВывестиСекцию("Итого");<br>Состояние("Отчет сформирован. Печать...");<br>Таб.Опции(0, 0, 3, 0, "Реестр документов");<br>Таб.ТолькоПросмотр(1);<br>Таб.Показать("Реестр документов","""");<br>КонецПроцедуры<br>Процедура ПечатьСписания()<br>Док=СоздатьОбъект("Документ");<br>Док.УстановитьФильтр(1,0,0,2,1,1);<br>Если ВыбФирма.Выбран()=1 Тогда<br>Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Фирма",ВыбФирма);<br>ИначеЕсли ВыбСклад.Выбран()=1 Тогда<br>Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Склад",ВыбСклад);<br>ИначеЕсли ВыбПроект.Выбран()=1 Тогда<br>Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Проект",ВыбПроект);<br>Иначе<br>Док.ВыбратьДокументы(ДатаНачала,ДатаКонца);<br>КонецЕсли;<br>Загол="""";<br>Если ВыбФирма.Выбран()=1 Тогда<br>Загол=Загол + "По фирме "+ВыбФирма.Наименование+". ";<br>КонецЕсли;<br>Если ВыбСклад.Выбран()=1 Тогда<br>Загол=Загол + "По складу "+ВыбСклад.Наименование+". ";<br>КонецЕсли;<br>Если ВыбПроект.Выбран()=1 Тогда<br>Загол=Загол + "По трактору "+ВыбСклад.Наименование+". ";<br>КонецЕсли;<br>Проект=СоздатьОбъект("ТаблицаЗначений");<br>Проект.НоваяКолонка("Док", "Документ.СписаниеТМЦ");<br>Проект.НоваяКолонка("Трактор", "Строка");<br>Пока Док.ПолучитьДокумент()=1 Цикл<br>Если Док.Вид()<>"СписаниеТМЦ" Тогда<br>Продолжить;<br>КонецЕсли;<br>Если (ВыбФирма.Выбран()=1) и (Док.Фирма<>ВыбФирма.ТекущийЭлемент()) Тогда<br>Продолжить;<br>ИначеЕсли (ВыбСклад.Выбран()=1) и (Док.Склад<>ВыбСклад.ТекущийЭлемент()) Тогда<br>Продолжить;<br>ИначеЕсли (ВыбПроект.Выбран()=1) и (Док.Проект<>ВыбПроект.ТекущийЭлемент()) Тогда<br>Продолжить;<br>ИначеЕсли (ДокТрактор=1) и (ПустоеЗначение(Док.Проект)=1) Тогда<br>Продолжить;<br>КонецЕсли;<br>Проект.НоваяСтрока();<br>Проект.Док=Док.ТекущийДокумент();<br>Проект.Трактор=Док.Проект.Наименование;<br>КонецЦикла;<br>Проект.Сортировать("Трактор, Док");<br>Счетчик=1;<br>ПечСумма=0;<br>Если ВЭксель=1 Тогда<br>ВыбФ=""""; ВыбКат="""";<br>Зн=ФС.ВыбратьФайл(1,ВыбФ,ВыбКат,"Сохранить файл как...","Файлы Excel|*.xls","xls",10);<br>Если ВыбФ="""" Тогда СтатусВозврата(0); Возврат; КонецЕсли;<br>_Ч=0;_м=0;_с=0;_сч1=0;<br>ТекущееВремя(_ч,_м,_с);<br>маскаФайл="~"+ДатаГод(ТекущаяДата())+ДатаМесяц(ТекущаяДата())+ДатаЧисло(ТекущаяДата())+_<br>маска=КаталогВременныхФайлов()+маскафайл;<br>ИмяФФ = ВыбКат + ВыбФ;<br>Файлы=СоздатьОбъект("ТаблицаЗначений");<br>Файлы.НоваяКолонка("Файл", "Строка");<br>Файлы.НоваяКолонка("ИмяЛиста", "Строка");<br>КонецЕсли;<br>Таб = СоздатьОбъект("Таблица");<br>Таб.ИсходнаяТаблица("Списания");<br>Проект.ВыбратьСтроки();<br>КолвоВременныхФайлов=0;<br>СтарыйПроект=ПолучитьПустоеЗначение("Справочник.Проекты");<br>Пока Проект.ПолучитьСтроку()=1 Цикл<br>Док.НайтиДокумент(Проект.Док);<br>Если (СтарыйПроект<>Док.Проект) и (ВЭксель=1) Тогда<br>КолвоВременныхФайлов=КолвоВременныхФайлов+1;<br>Таб.Записать(Маска+КолвоВременныхФайлов+".xls",1);<br>Файлы.НоваяСтрока();<br>Файлы.Файл=Маска+КолвоВременныхФайлов+".xls";<br>Если ПустоеЗначение(СтарыйПроект)=1 Тогда<br>Файлы.ИмяЛиста="Без трактора";<br>Иначе<br>Файлы.ИмяЛиста=СокрЛП(СтарыйПроект.Наименование);<br>КонецЕсли;<br>Таб = СоздатьОбъект("Таблица");<br>Таб.ИсходнаяТаблица("Списания");<br>КонецЕсли;<br>// выводим табличную часть<br>НомСтроки = 0;<br>СуммаИтог=0;<br>Таб.ВывестиСекцию("Заголовок");<br>Док.ВыбратьСтроки();<br>Пока Док.ПолучитьСтроку() = 1 Цикл<br>НомСтроки = НомСтроки + 1;<br>Таб.ВывестиСекцию("Строка");<br>СуммаИтог=СуммаИтог+Док.Сумма;<br>КонецЦикла;<br>Таб.ВывестиСекцию("Итого");<br>СтарыйПроект=Док.Проект;<br>Счетчик = Счетчик + 1;<br>КонецЦикла;<br>Если ВЭксель=1 Тогда<br>КолвоВременныхФайлов=КолвоВременныхФайлов+1;<br>Таб.Записать(Маска+КолвоВременныхФайлов+".xls",1);<br>Файлы.НоваяСтрока();<br>Файлы.Файл=Маска+КолвоВременныхФайлов+".xls";<br>Если ПустоеЗначение(СтарыйПроект)=1 Тогда<br>Файлы.ИмяЛиста="Без трактора";<br>Иначе<br>Файлы.ИмяЛиста=СокрЛП(СтарыйПроект.Наименование);<br>КонецЕсли;<br>Таб = СоздатьОбъект("Таблица");<br>Таб.ИсходнаяТаблица("Списания");<br>КонецЕсли;<br>//ChDir "C:\"<br>//Workbooks.Open Filename:="C:\q.xls"<br>//Workbooks.Open Filename:="C:\~2008922125281.xls"<br>//Cells.Select<br>//Selection.Copy<br>//Windows("Книга1").Activate<br>//ActiveSheet.Paste<br>Если ВЭксель=1 Тогда<br>Если КолвоВременныхФайлов=0 Тогда<br>Таб.Записать(Маска+"1.xls",1);<br>КонецЕсли;<br>Эксель=СоздатьОбъект("Excel.Application");<br>РабочаяКнига = Эксель.Workbooks.Add();<br>РабочаяКнига.Activate();<br>// Удалить все листы, оставить один<br>Колво = РабочаяКнига.WorkSheets.Count;<br>Для I = 1 По Колво-1 Цикл<br>//РабочаяКнига.WorkSheets(I).Select();<br>Эксель.Application.DisplayAlerts = 0;<br>РабочаяКнига.WorkSheets(I).Delete();<br>Эксель.Application.DisplayAlerts = 1;<br>КонецЦикла;<br>Файлы.ВыбратьСтроки();<br>Пока Файлы.ПолучитьСтроку()=1 Цикл<br>Если Файлы.НомерСтроки=Файлы.КоличествоСтрок() Тогда<br>Продолжить;<br>КонецЕсли;<br>РабочаяКнига.WorkSheets().Add();<br>КонецЦикла;<br>// Изменение названий ярлычкой листов рабочей книги<br>Файлы.ВыбратьСтроки();<br>Пока Файлы.ПолучитьСтроку()=1 Цикл<br>РабочаяКнига.WorkSheets(Файлы.НомерСтроки).Name = Файлы.ИмяЛиста;<br>КонецЦикла;<br>// Копируем содержимое листов книг в созданную книгу<br>Эксель.Application.DisplayAlerts = 0;<br>Файлы.ВыбратьСтроки();<br>Пока Файлы.ПолучитьСтроку()=1 Цикл<br>Сч=Файлы.НомерСтроки;<br>Книга2=Эксель.Workbooks.Open(маска+Сч+".xls");<br>Книга2.ActiveSheet.Select();<br>Эксель.Cells.Select();<br>Эксель.Selection.Copy();<br>РабочаяКнига.WorkSheets(Сч).Paste();<br>Книга2.Close();<br>КонецЦикла;<br>Эксель.Application.DisplayAlerts = 1;<br>Файлы.ВыбратьСтроки();<br>Пока Файлы.ПолучитьСтроку()=1 Цикл<br>Эксель.Sheets(Файлы.ИмяЛиста).Select();<br>Эксель.Range("A1").Select();<br>КонецЦикла;<br>// Спозиционируемся в рабочей книге на 1-й лист<br>Файлы.ПолучитьСтрокуПоНомеру(1);<br>Эксель.Sheets(Файлы.ИмяЛиста).Select();<br>Эксель.DisplayAlerts=0;<br>Эксель.ActiveWorkbook.SaveAs(ИмяФФ,-4143);<br>Эксель.DisplayAlerts=1;<br>Эксель.Visible=1;<br>Для й=1 по КолвоВременныхФайлов Цикл<br>Попытка<br>ФС.УдалитьФайл(Маска+й+".xls");<br>Исключение КонецПопытки;<br>КонецЦикла;<br>Эксель = 0;<br>Иначе<br>Состояние("Отчет сформирован. Печать...");<br>Таб.Опции(0, 0, 0, 0, "Списания");<br>Таб.ТолькоПросмотр(1);<br>Таб.Показать("Списания","""");<br>КонецЕсли;<br>КонецПроцедуры<br>ДатаНачала=РабочаяДата();<br>ДатаКонца=РабочаяДата();<br><br>"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №2
 
01.11.2010 19:44

"Макет бы увидеть, может там форматирование сумм для Excel-я непонятное и при Таб.Записать(Маска+КолвоВременныхФайлов+".xls",1); он их теряет."

Flava_John
читатель
офлайн
Дата регистрации: 01.11.2010
Сообщений: 6
Пост №3
 
02.11.2010 08:31

я отправил вам обработку, форматирование для экселя здесь не при чём, он их и в обычную печатную форму не выводит. тут просто движения по регистрам и не получается цену вывести.<br>

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №4
 
02.11.2010 10:25

"Да, я получил.<br>Не совсем понял пару моментов.<br>Обрабатываются документы "Списание ТМЦ", формируются печатные формы на основе макета "Списания", выносятся в Excel, при этом в алгоритме есть такие места:<br>1. СуммаНДСИтог=СуммаНДСИтог+Док.СуммаНДС;<br>В типовой в документе "Списание ТМЦ" нет реквизита СуммаНДС и нет реквизита УчитыватьНДС и СуммаВклНДС. И даже в вашем макете "Списание" нет места, куда данные сведения могли бы быть выведены. Так зачем в алгоритме как то собираются данные по НДС? В общем, я пока закомментарил это место, чтобы посмотреть потерю данных о сумме и цене.<br>2. В макете "Списания" некорректно обращение сделано к сведениям о руководителе и бухгалтере. Почему то через переменную Докум в то время, когда в цикле оперируют переменной Док.<br>3. По получению суммы по строке и цены. Вы пытаетесь взять эти сведения из реквизитов документа Цена и Сумма, на самом деле данные реквизиты используются только при списаниях с розничного склада и равны 0 для всех остальных ситуаций. Поэтому определять данные значения нужно просматривая движения регистра Партии, которые данный документ сформировал. При этом есть два подхода - собрать сумму с учетом НДС или без него. Это вы сами решайте как вам надо, но, по идее, правильно - без НДС. Чтобы все заработало, нужно в вашем алгоритме сделать так:<br>- В самом верху процедуры ПечатьСписания() добавляем:<br>Процедура ПечатьСписания()<br> РегПартии=СоздатьОбъект("Регистр.ПартииНаличие");<br>- в цикле вычисления сумм вместо ваших:<br> СуммаИтог=СуммаИтог+Док.Сумма;<br> СуммаНДСИтог=СуммаНДСИтог+Док.СуммаНДС<br>перед Таб.ВывестиСекцию("Строка");<br>пишем:<br>СуммаПоСтроке=0;<br>КоличествоПоСтроке=0;<br>Если Док.Проведен()=1 Тогда<br> РегПартии.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());<br> Пока РегПартии.ПолучитьДвижение()=1 Цикл<br>       Если РегПартии.НомерСтроки()=Док.НомерСтроки Тогда<br>             СуммаПоСтроке=СуммаПоСтроке+РегПартии.СуммаБезНДС;<br>             КоличествоПоСтроке=КоличествоПоСтроке+РегПартии.Количество;<br>       КонецЕсли;<br> КонецЦикла; <br>КонецЕсли;<br>СуммаИтог=СуммаИтог+СуммаПоСтроке;<br><br>- в шаблоне "Списания" меняем формулу в колонке Сумма с глФрм(Док.Сумма) на глФрм(СуммаПоСтроке)<br>- в шаблоне "Списания" меняем формулу в колонке Цена с глФрм(Док.Цена) на глФрм(?(КоличествоПоСтроке=0,СуммаПоСтроке,Окр(СуммаПоСтроке*Док.Коэффициент/КоличествоПоСтроке,2)))<br><br>Количество, в принципе, можно было брать не по регистру, а прямо из реквизита строки документа.<br>Вот что вышло: http://zalil.ru/29906216<br&gt;"

Flava_John
читатель
офлайн
Дата регистрации: 01.11.2010
Сообщений: 6
Пост №5
 
02.11.2010 10:44

Спасибо. <br>отправь пожалуйста обработку мне на почту, а то с zalil я не могу её скачать

Flava_John
читатель
офлайн
Дата регистрации: 01.11.2010
Сообщений: 6
Пост №6
 
02.11.2010 12:24

ещё один маленький вопросик, а в макете таблица, как вывести цену документа??<br>ведь она есть, для ни надо никаких движений так ведь??

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №7
 
02.11.2010 12:33

Макет "Таблица" в вашей обработке показывает сведения о документе целиком. Понятие "цена" для документа в целом - это нечто такое, что понять я не могу, поэтому, будем думать, что вы имели ввиду итоговую сумму по документу. Цена - свойство товара все таки.<br>Для токумента "Списание ТМЦ", как уже было сказано выше, суммы в реквизитах документа не фиксируются никак и определяются при проведении, поэтому, само собой, снова нужно перебирать движения документа по регистру "ПартииНаличие" и по ним посчитать сумму.

Flava_John
читатель
офлайн
Дата регистрации: 01.11.2010
Сообщений: 6
Пост №8
 
02.11.2010 13:12

помоги пожалуйста, что-то не получается итоговую сумму документа вывести

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №9
 
02.11.2010 13:30

Отправил

Flava_John
читатель
офлайн
Дата регистрации: 01.11.2010
Сообщений: 6
Пост №10
 
02.11.2010 13:37

Спасибо!<br>

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

Читают тему:

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