Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010) Необходимо в отчет в отдельную колонку вывести значения реквизитов из двух документов. Из дока "ПриходнаяНакладнаяЗапасы" значение реквизита ТМЦ, а из документа "БанковскаяВыписка" содержание. Вот такая процедура отчета:
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы Проведенные; |Док = Документ.ПриходнаяНакладнаяЗапасы.ТекущийДокумент, Документ.БанковскаяВыписка.ТекущийДокумент; |Группировка Док; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Док = ""; Пока Запрос.Группировка(1) = 1 Цикл Док = Запрос.Док;
Если (Док.Вид() = "БанковскаяВыписка") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяЗапасы") Тогда Док.ВыбратьСтроки(); Сумма = 0; Пока Док.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(Док.КодДК) = 1 Тогда Продолжить; КонецЕсли; Если (ПустоеЗначение(ВыбКод) = 0)и((Лев(СокрЛП(Док.КодДК),СтрДлина(СокрЛП(ВыбКод))) <> СокрЛП(ВыбКод))или(СтрДлина(СокрЛП(ВыбКод))>СтрДлина(СокрЛП(Док.КодДК)))) Тогда Продолжить; КонецЕсли;
Когда я добавляю в строку Табл.Наименование = Док.Содержание; выводится содержание, когда тмц, выводится тмц, а вот каким образом указать и оба реквизита. Я пробовала так:
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
Тогда получится две колонки, в одной будет отражаться содержание в другой тмц, я так понимаю, а мне желательно чтобы в одной колонке было. Но все же я сделала так, но выдает ошибку не обнаружено поле агрегатного объекта. Причем есть еще одна особенность, в приходе коды ДК одни, в банковских выписках они другие, конфликт происходит из-за этого. Только вот как его нейтрализовать(
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
поле агрегатного объекта не обнаружено
причем когда выбираю код который есть 100% в приходе (т.е. тмц) пишет "Поле агрегатного объекта не обнаружено (Содержание)", а когда выбираю код который есть в банковской выписке (т.е. содержание) пишет "Поле агрегатного объекта не обнаружено (ТМЦ)"
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Вы в запросе проходите по двум видам документов, при этом в "БанковскаяВыписка" нет поля ТМЦ, а в "ПриходнаяНакладнаяЗапасы" наверно нет поля содержание.
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0
У Вас в запросе сначала всегда будет документ одного вида, потом другого. Одновременно два - не получится. В БанковскойВыписке, наверное, есть в строке реквизит с основанием оплаты (или что-то подобное), в котором указана Ваша ПрихНакладнаяЗапасы. Вот через это значение надо пробовать и найти Наименование ТМЦ.
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
Да в том то и дело, что в банковской выписке тмц нет и быть не может, потому что в банковской выписке указываются услуги, с тмц они не связаны. Так что получается только два отчета разные делать?
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
сейчас в отчет выводятся следующие поля: код, наименование кода, сумма и дата документа. Эти все реквизиты есть в этих двух документах (приходная накл и банк выписка). Мне надо еще вывести колонку в которой указывалось бы, если это приходная накладная - тмц, соответствующая коду, и если это банковская выписка - содержание, также соответствующее коду.
Цитата
не совсем понял какие такие услуги?
в реквизит содержание вручную вводятся услуги
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
Цитата
А какая перед вами стоит задача в целом. Что нужно в отчете видеть?
Нужно видеть фактические суммы по всем кодам ДК и расшифровку, не только наименование кода, но и конкретное тмц и услугу. Просто на каждый код приходится не одна услуга или тмц, а несколько
Цитата
Если (Док.Вид() = "БанковскаяВыписка") Тогда Табл.Наименование = сокрлп(Док.Содержание); ИначЕсли (Док.Вид() = "ПриходнаяНакладнаяЗапасы") Тогда Табл.Наименование = сокрлп(Док.ТМЦ.Наименование); КонецЕсли;
Та же ошибка
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0
А почему бы Вам в условие запроса не вставить ВыбКод ? Чтоб не перебирать строки и лишние проверки не писать ?
Я не уверен, но может быть такое, что он не получает документ в этом моменте Док = Запрос.Док и не выбирает строки. Может его надо будет найти. СоздатьОбъект("Документ."+Запрос.Док.Вид()) и НайтиДокумент(Запрос.Док). И уже тут перебирать строки. Но лучше в запросе описать все условия и получить по возможности конечный результат.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!