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

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

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

помогите с кодом

ЗаЕц
читатель
офлайн
Дата регистрации: 09.02.2009
Сообщений: 560
Пост №1
 
02.12.2010 08:34

"Леплю отчет на семерке, но конфигурация самописная. Сказали доделать отчет, а у меня что-то недополучается.<br>Задача выглядит так Есть ТЗ в ней есть к примеру доки 1 и 2. Есть Док11 туда входят доки 2 и 3.<br>В итоговую таблицу должны войти:<br><br>1. все документы из ТЗ и Док11, только не повторятся естественно.<br>2. у документов из ТЗ в строках должны печататься все данные для печати, а если док. в таблицу пришел из Док11, то его поля кроме номера, должны быть пустыми<br><br>т.е должно получится:<br><br>док1 - с данными<br>док2 - с данными<br>док3 - пусто<br><br><br>Вот код, который у меня получился, я не могу его исправить так, чтобы получить нужный результат, при таком раскладе<br>в итоговая таблица выглядит примерно так:<br><br>док1 - с данными<br>док1 - с данными<br>док2 - с данными<br>док2 - пусто<br><br><br>т.е. дубли и док3 вообще не попал.<br><br>КОД:<br><br>Пока ТЗ.ПолучитьСтроку()=1 Цикл <br> <br> Док11 = СоздатьОбъект("Документ.Письмо");<br> Док11.ВыбратьДокументы(НачДата,КонДата);<br> Пока Док11.ПолучитьДокумент()=1 Цикл<br> Если Док11.Проведен()<>1 Тогда<br> Продолжить;<br> КонецЕсли;<br> <br> p = Док11.НомерПисьма;<br> <br> Если ТЗ.Письмо.НомерПисьма <> p Тогда <br> <br> <br> Ном = Ном + 1;<br> ПечПисьмо = СокрЛП(ТЗ.Письмо.ДатаПисьма)+РазделительСтрок+СокрЛП(ТЗ.Письмо.НомерПисьма);<br>        ПечМедикамент = "Данные"; <br> ПечСерия = "Данные";<br> Таб.ВывестиСекцию("Строка");<br>       <br>       иначе <br> <br> Ном = Ном + 1;<br> ПечПисьмо = СокрЛП(Док11.ДатаПисьма)+РазделительСтрок+СокрЛП(Док11.НомерПисьма);<br>        ПечМедикамент = "пусто" ;<br> ПечСерия       = "пусто";<br>        <br> Таб.ВывестиСекцию("Строка");<br> <br>       КонецЕсли;<br>       <br>             КонецЦикла;<br> КонецЦикла; <br> <br><br><br>посоветуйте, пожалуйста как изменить, по отладчику вижу, что происходит, но как исправить не пойму.<br>"

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №2
 
02.12.2010 09:21

Что-то какая-то муть...<br><br>Может сначала выбрать все Док11 за период, из них выбрать подчиненные документы и поместить в ТЗПодчиненных (с колонками "Документ"=Док1, Док2 и "Владелец"=Док11, Док22 и т.п.). Далее пройтись циклом по ТЗ, искать документ из ТЗ в ТЗПодчиненных. Если находится, то брать данные из поля "Владелец", если не находится, то из самого документа.

ЗаЕц
читатель
офлайн
Дата регистрации: 09.02.2009
Сообщений: 560
Пост №3
 
02.12.2010 12:08

нет...не так...я поясню, может не понятно<br><br>изначально есть список "писем" и есть список "уведомлений"<br>отчет формировался по уведомлениям входящим в период отчета, но в таблице отчета выдаются данные не самого уведомления, а "письма", которое было указано в "уведомлении". Есть много писем и допустим три уведомления, каждый из которых содержит ссылку только на одно письмо. Письмо и уведомление не подчиненные...Изначально отчет включал только те письма, которые были в уведомлениях, а бух просить включить все остальные письма тоже за выбранный период. Только для тех, которые с уведомлением у них там еще данные, а для тех которые без = только номер, остальные графы пустые...<br><br>блин, если все равно не понятно, то пипец...не знаю как объяснить (((

ЗаЕц
читатель
офлайн
Дата регистрации: 09.02.2009
Сообщений: 560
Пост №4
 
02.12.2010 12:23

"сначала сделана выборка ТЗ которая содержит только данные писем с уведомлениями<br>ниже я создаю список документов Док11:<br><br> Док11 = СоздатьОбъект("Документ.Письмо");<br> Док11.ВыбратьДокументы(НачДата,КонДата);<br> Пока Док11.ПолучитьДокумент()=1 Цикл<br> Если Док11.Проведен()<>1 Тогда<br> Продолжить;<br> КонецЕсли;<br><br>который перебирает письма за выбранный период и их номера сравнивает с теми которые в ТЗ<br><br> p = Док11.НомерПисьма;<br> <br> Если ТЗ.Письмо.НомерПисьма <> p Тогда <br><br>а дальше после тогда идет что-то не верное потому что в итоге я получаю дублированные строки и некоторые письма вообще не попадают...значит действия после "тогда" (см.первый пост) написаны с ошибкой...<br>"

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №5
 
02.12.2010 13:55

Не понятно как связаны документы "Уведомление" и "Письмо". Кто-то содержится в табличной части кого-то?

ЗаЕц
читатель
офлайн
Дата регистрации: 09.02.2009
Сообщений: 560
Пост №6
 
02.12.2010 14:23

да, в документе "уведомление" в табличной части можно выбрать "письмо" (при выборе открывается журнал писем)

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №7
 
02.12.2010 14:55

Ну значит изначально отчет строился по выборке писем из тч Уведомления. Если нужно в конец отчета добавить письма прочие, то надо:<br>1. В текущий механизм вывода добавить заполнение ТЗ выведенными письмами.<br>2. Добавить в конец отчета выборку писем за период. Проверять нахождение письма в ТЗ выведенных и, если письма там еще нет, то выводить новую строку отчета.

ЗаЕц
читатель
офлайн
Дата регистрации: 09.02.2009
Сообщений: 560
Пост №8
 
02.12.2010 15:02

"1. тут чуть-чуть непонятно, у меня в ТЗ уже содержаться письма из уведомлений, я не стала приводить этот кусок кода<br>2. верно, теперь к ним нужно добавить остальные письма, которые есть в выбранном периоде, но которые не встретились в уведомлениях...<br>что я и пытаюсь делать <br> p = Док11.НомерПисьма;<br>Если ТЗ.Письмо.НомерПисьма <> p Тогда ...<br><br>а после "тогда" у меня в коде что-то не так... <br><br>"

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №9
 
02.12.2010 15:22

"а-аа, понял кажется...<br><br>В ТЗ какая колонка отвечает за письмо (интересует ее название и тип)?<br><br>Вариант для номера письма<br><br>p = Док11.НомерПисьма;<br><br>СтрТЗ = 0;<br><br>Если ТЗ.НайтиЗначение(р, СтрТЗ, "НомерПисьма") = 1 Тогда<br> Продолжить;<br>КонецЕсли;<br><br>ТЗ.НоваяСтрока();<br>ТЗ.НомерПисьма = р;"

ЗаЕц
читатель
офлайн
Дата регистрации: 09.02.2009
Сообщений: 560
Пост №10
 
02.12.2010 15:35

ТЗ.Письмо.НомерПисьма - тип строка<br><br>спасибо, ваше предложение завтра рассмотрю, у нас уже почти 12 ночи, не соображаю уже...но завтра обязательно отпишусь...

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

Читают тему:

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