Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Вывод в одну колонку значений , из двух документов 2 страниц V   1 2 >          
wmatik Подменю пользователя
сообщение 16.08.11, 8:32
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Необходимо в отчет в отдельную колонку вывести значения реквизитов из двух документов. Из дока "ПриходнаяНакладнаяЗапасы" значение реквизита ТМЦ, а из документа "БанковскаяВыписка" содержание.
Вот такая процедура отчета:
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы Проведенные;
    |Док = Документ.ПриходнаяНакладнаяЗапасы.ТекущийДокумент, Документ.БанковскаяВыписка.ТекущийДокумент;
    |Группировка Док;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    //Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
  
    Табл = СоздатьОбъект("ТаблицаЗначений");  

    ФорматЧисел = "Ч020.3";

    Табл.НоваяКолонка("КодДК");
    Табл.НоваяКолонка("Закупки");
    Табл.НоваяКолонка("СуммаСНДС");
    Табл.НоваяКолонка("ДатаДок");
    Табл.НоваяКолонка("Наименование");

    Док = "";
    Пока Запрос.Группировка(1) = 1 Цикл
        Док = Запрос.Док;    
        
        Если (Док.Вид() = "БанковскаяВыписка") ИЛИ
            (Док.Вид() = "ПриходнаяНакладнаяЗапасы") Тогда
            Док.ВыбратьСтроки();
            Сумма = 0;
            Пока Док.ПолучитьСтроку() = 1 Цикл
                Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                    Продолжить;
                КонецЕсли;
                Если (ПустоеЗначение(ВыбКод) = 0)и((Лев(СокрЛП(Док.КодДК),СтрДлина(СокрЛП(ВыбКод))) <> СокрЛП(ВыбКод))или(СтрДлина(СокрЛП(ВыбКод))>СтрДлина(СокрЛП(Док.КодДК)))) Тогда
                    Продолжить;
                КонецЕсли;
                
                Табл.НоваяСтрока();
                Табл.КодДК = Док.КодДК;
                Табл.СуммаСНДС = Док.СуммаСНДС;
                Табл.ДатаДок = Док.ДатаДок;
                Табл.Наименование = Док.Содержание;
                Таб.ВывестиСекцию("Строка");
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;        

    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");  
КонецПроцедуры

Когда я добавляю в строку Табл.Наименование = Док.Содержание; выводится содержание, когда тмц, выводится тмц, а вот каким образом указать и оба реквизита. Я пробовала так:
Табл.Наименование = Док.Содержание;
Табл.Наименование = Док.ТМЦ;

Выдает ошибку


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Flexy Подменю пользователя
сообщение 16.08.11, 9:23
Сообщение #2

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Дык может в ТЗ надо добавить новую колонку "Содержание"?
Табл.НоваяКолонка("Содержание);

далее
Табл.Содержание = Док.Содержание;
Табл.Наименование = Док.ТМЦ;

wmatik Подменю пользователя
сообщение 16.08.11, 9:38
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Тогда получится две колонки, в одной будет отражаться содержание в другой тмц, я так понимаю, а мне желательно чтобы в одной колонке было. Но все же я сделала так, но выдает ошибку не обнаружено поле агрегатного объекта. Причем есть еще одна особенность, в приходе коды ДК одни, в банковских выписках они другие, конфликт происходит из-за этого. Только вот как его нейтрализовать(


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

endru Подменю пользователя
сообщение 16.08.11, 9:40
Сообщение #4

Говорящий
Иконка группы
Группа: Местный
Сообщений: 90
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

Цитата
Табл.Наименование = Док.ТМЦ;


Попробуйте так

Табл.Наименование = сокрлп(Док.ТМЦ.Наименование);

Спасибо сказали: wmatik,

wmatik Подменю пользователя
сообщение 16.08.11, 9:49
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

поле агрегатного объекта не обнаружено

причем когда выбираю код который есть 100% в приходе (т.е. тмц) пишет "Поле агрегатного объекта не обнаружено (Содержание)", а когда выбираю код который есть в банковской выписке (т.е. содержание) пишет "Поле агрегатного объекта не обнаружено (ТМЦ)"


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

endru Подменю пользователя
сообщение 16.08.11, 9:54
Сообщение #6

Говорящий
Иконка группы
Группа: Местный
Сообщений: 90
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

Значит проверяйте
(Док.Вид() = "БанковскаяВыписка")

или (Док.Вид() = "ПриходнаяНакладнаяЗапасы")

и в зависимости от этого пишите или ТМЦ или Содержание

wmatik Подменю пользователя
сообщение 16.08.11, 10:01
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

не совсем поняла зачем проверять, если и так понятно, что если поставить тмц, будут отбираться только с прихода,


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

endru Подменю пользователя
сообщение 16.08.11, 10:04
Сообщение #8

Говорящий
Иконка группы
Группа: Местный
Сообщений: 90
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

Вы в запросе проходите по двум видам документов, при этом в "БанковскаяВыписка" нет поля ТМЦ, а в "ПриходнаяНакладнаяЗапасы"
наверно нет поля содержание.

wmatik Подменю пользователя
сообщение 16.08.11, 10:07
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

да, все так, может я не правильно вас поняла, как мне проверить?
Цитата
Значит проверяйте
(Док.Вид() = "БанковскаяВыписка")

или (Док.Вид() = "ПриходнаяНакладнаяЗапасы")

и в зависимости от этого пишите или ТМЦ или Содержание


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

endru Подменю пользователя
сообщение 16.08.11, 10:09
Сообщение #10

Говорящий
Иконка группы
Группа: Местный
Сообщений: 90
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

     Если (Док.Вид() = "БанковскаяВыписка") Тогда
            Табл.Наименование = сокрлп(Док.Содержание);
     ИначЕсли  (Док.Вид() = "ПриходнаяНакладнаяЗапасы") Тогда
            Табл.Наименование = сокрлп(Док.ТМЦ.Наименование);
     КонецЕсли;


как то так

Спасибо сказали: wmatik,

kalyamov Подменю пользователя
сообщение 16.08.11, 10:16
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

У Вас в запросе сначала всегда будет документ одного вида, потом другого. Одновременно два - не получится. В БанковскойВыписке, наверное, есть в строке реквизит с основанием оплаты (или что-то подобное), в котором указана Ваша ПрихНакладнаяЗапасы. Вот через это значение надо пробовать и найти Наименование ТМЦ.

wmatik Подменю пользователя
сообщение 16.08.11, 10:26
Сообщение #12

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Да в том то и дело, что в банковской выписке тмц нет и быть не может, потому что в банковской выписке указываются услуги, с тмц они не связаны. Так что получается только два отчета разные делать?


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

endru Подменю пользователя
сообщение 16.08.11, 10:31
Сообщение #13

Говорящий
Иконка группы
Группа: Местный
Сообщений: 90
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

Не совсем понятно что вы хотите сделать, но
отчеты делать лучше на основании данных регистров, а не на основании документов.

Цитата
банковской выписке указываются услуги


не совсем понял какие такие услуги?

wmatik Подменю пользователя
сообщение 16.08.11, 10:36
Сообщение #14

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

сейчас в отчет выводятся следующие поля: код, наименование кода, сумма и дата документа. Эти все реквизиты есть в этих двух документах (приходная накл и банк выписка). Мне надо еще вывести колонку в которой указывалось бы, если это приходная накладная - тмц, соответствующая коду, и если это банковская выписка - содержание, также соответствующее коду.

Цитата
не совсем понял какие такие услуги?

в реквизит содержание вручную вводятся услуги


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

endru Подменю пользователя
сообщение 16.08.11, 10:40
Сообщение #15

Говорящий
Иконка группы
Группа: Местный
Сообщений: 90
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

А какая перед вами стоит задача в целом.
Что нужно в отчете видеть?

kalyamov Подменю пользователя
сообщение 16.08.11, 10:41
Сообщение #16

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

Цитата(endru @ 16.08.11, 11:09) *
     Если (Док.Вид() = "БанковскаяВыписка") Тогда
            Табл.Наименование = сокрлп(Док.Содержание);
     ИначЕсли  (Док.Вид() = "ПриходнаяНакладнаяЗапасы") Тогда
            Табл.Наименование = сокрлп(Док.ТМЦ.Наименование);
     КонецЕсли;


Вам же уже ответили на вопрос. Хотя с такой постановкой его трудно было понять, что Вы вообще хотите добиться.

wmatik Подменю пользователя
сообщение 16.08.11, 10:56
Сообщение #17

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата
А какая перед вами стоит задача в целом.
Что нужно в отчете видеть?

Нужно видеть фактические суммы по всем кодам ДК и расшифровку, не только наименование кода, но и конкретное тмц и услугу. Просто на каждый код приходится не одна услуга или тмц, а несколько

Цитата
Если (Док.Вид() = "БанковскаяВыписка") Тогда
Табл.Наименование = сокрлп(Док.Содержание);
ИначЕсли (Док.Вид() = "ПриходнаяНакладнаяЗапасы") Тогда
Табл.Наименование = сокрлп(Док.ТМЦ.Наименование);
КонецЕсли;

Та же ошибка


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

endru Подменю пользователя
сообщение 16.08.11, 10:59
Сообщение #18

Говорящий
Иконка группы
Группа: Местный
Сообщений: 90
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

поставьте точку останова и в отладчике посмотрите что там за значения

kalyamov Подменю пользователя
сообщение 16.08.11, 11:14
Сообщение #19

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 186
Спасибо сказали: 31 раз
Рейтинг: 0

А почему бы Вам в условие запроса не вставить ВыбКод ? Чтоб не перебирать строки и лишние проверки не писать ?

Я не уверен, но может быть такое, что он не получает документ в этом моменте Док = Запрос.Док и не выбирает строки. Может его надо будет найти. СоздатьОбъект("Документ."+Запрос.Док.Вид()) и НайтиДокумент(Запрос.Док). И уже тут перебирать строки. Но лучше в запросе описать все условия и получить по возможности конечный результат.

wmatik Подменю пользователя
сообщение 16.08.11, 11:16
Сообщение #20

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

выводит коды только с приходных накладных, т.е. с тмц, причем в отчете колонка пустая


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 21.05.24, 17:19
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!