8.х Необходим легкий тюнинг УПД (БП 3.0 1С 8.3)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем BBDragon, 21 сен 2015.

  1. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    У бухгалтеров главной фирмы появилась хотелка - чтобы при печати универсального передаточного документа (УПД) из документа "Реализация товаров" на распечатке не прописывалось "он же" в поле "Грузоотправитель и его адрес" (как это делается сейчас если они совпадают), а дублировались данные из первых полей шапки "Продавец" и "Адрес".
    Потратил несколько часов, но понял лишь, что дело это не самое простое. Ибо данные берутся из запросов, потом запускается общий модуль УчетНДС и там уже формируется окончательно всё. Пробовал отлаживать, но явно не там ставлю точки останова, все уже сформировано когда я останавливаю. Подскажите, пожалуйста, где правильно остановить то
  2. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    на инфостарте можно найти впф
    BBDragon нравится это.
  3. IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    В УТ 10.3 в модуле "УчетНДС", в процедуре: ВывестиСчетФактуруВТабличныйДокумент(...) есть код:
    Код:
    ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = ?(ЭтоПечатьУПД, "", "Грузоотправитель и его адрес: ")
                    + ?(НЕ ЗначениеЗаполнено(ДанныеДляПечати.Грузоотправитель),
                    "--",
                    ?(ДанныеДляПечати.Грузоотправитель = "он же",
                        ДанныеДляПечати.Грузоотправитель,
                        ФормированиеПечатныхФорм.ОписаниеОрганизации(
                            СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес,")));
    
    При печати УПД, отладчик попадает в эту процедуру, походите по этой процедуре, там еще есть места связанные с заполнением грузоотправителя и грузополучателя.
    BBDragon нравится это.
  4. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    rshakiro
    спасибо! Если вы говорите об этом http://infostart.ru/public/334037/, то это не, что мне нужно. Изменения нужны именно при печати УПД
    --- Объединение сообщений, 21 сен 2015 ---
    IceBeerG
    Спасибо, но у меня БП 3.0
  5. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    BBDragon нравится это.
  6. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Хех, а это бесплатно не скачать))
  7. IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    В БП 3.0
    Процедура
    ВывестиСчетФактуруВТабличныйДокумент(ТабДокумент, Макет, ВыборкаСФ, ЭтоУниверсальныйПередаточныйДокумент = Ложь)
    Так же в общем модуле УчетНДС
    Код:
    Если ЭтоУниверсальныйПередаточныйДокумент Тогда
           
            НомерСчетаФактуры = "Универсальный передаточный документ № " + ДанныеШапки.Номер + " от " + Формат(ДанныеШапки.Дата, "ДЛФ='ДД'");
           
            ОбластьМакета.Параметры.Номер = ДанныеШапки.Номер;
    
    Итд, увидите заполнение грузополучателей и грузоотправителей
    BBDragon нравится это.
  8. NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    194
    Симпатии:
    1
    Баллы:
    29
    Как уже указал IceBeerG в общем модуле есть процедура, где описываются условия печати значения "он же". Или же напишите внешнюю форму. Я сделал для Поступления, чтобы конфигурацию не править.
    BBDragon нравится это.
  9. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    IceBeerG
    Это все я видел, ставил точки останова, но все не то - данные уже сформированы и у меня пустые значения в Табло. Надо где-то раньше, но вот где конкретно - я пока не нашел. Все, что нужно - скопировать в поле "Грузоотправитель и его адрес" данные из "Продавец" и "Адрес".
    Кто-нибудь может скачать ту ВПФ с инфостарта?

    NovinNik
    Увы, я пока только осваиваю 8.3, сходу я такое не сделаю. А надо реально быстро сделать..
    Вечно занят устанениями каких-то странных глюков (одна эта тема чего стоит: http://1c-pro.ru/posts/362806/), все нет времени нормально посидеть и покодить.
  10. IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Реально быстро, отладчиком зайти в учет ндс, найти нужный параметр в макете и подставить нужное значение. 100% это делается, где я написал, так как в процедуре "ВывестиСчетФактуруВТабличныйДокумент" идет заполнение параметров. Если хочется посмотреть, что происходило раньше, тогда "Отладка - Стек вызовов", но уверяю заполнение параметров именно здесь:)

    Кстати, с чего вы взяли, что если скачаете обработку с инфостарта, все взлетит с первого раза и как вам нужно? С большей долей вероятности могу сказать, что заполнить один параметр в макете проще и быстрее.
    BBDragon нравится это.
  11. NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    194
    Симпатии:
    1
    Баллы:
    29
    Скинул в личку свою. Исправь поля под себя
  12. IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Если я правильно понял, нужно сделать:
    Код:
    ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ДанныеШапки.ПредставлениеПоставщика + ДанныеШапки.АдресПоставщика;
    в место:
    Код:
    ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ДанныеШапки.ПредставлениеГрузополучателя;
    Вот же оригинальное заполнение всех полей(для удобства поиска):
    Код:
    ОбластьМакета.Параметры.Номер = НомерСчетаФактуры;
            ОбластьМакета.Параметры.НомерИсправления = "Исправление № " + ДанныеШапки.НомерИсправления + " от " + Формат(ДанныеШапки.ДатаИсправления, "ДЛФ='ДД'");
            ОбластьМакета.Параметры.ПредставлениеПоставщика = "Продавец: " + ДанныеШапки.ПредставлениеПоставщика;
            ОбластьМакета.Параметры.АдресПоставщика = "Адрес: " + ДанныеШапки.АдресПоставщика;
            ОбластьМакета.Параметры.ИННПоставщика = "ИНН/КПП продавца: " + ?(ДанныеШапки.Свойство("ИННКПППоставщика"),
                ДанныеШапки.ИННКПППоставщика,
                "" + ДанныеШапки.ИННПоставщика + ?(ЗначениеЗаполнено(ДанныеШапки.КПППоставщика), "/" + ДанныеШапки.КПППоставщика, ""));
            ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + ДанныеШапки.ПредставлениеГрузоотправителя;
            ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ДанныеШапки.ПредставлениеГрузополучателя;
            ОбластьМакета.Параметры.ПоДокументу = "К платежно-расчетному документу № " + ДанныеШапки.ПоДокументу;
            ОбластьМакета.Параметры.ПредставлениеПокупателя = "Покупатель: " + ДанныеШапки.ПредставлениеПокупателя;
            ОбластьМакета.Параметры.АдресПокупателя = "Адрес: " + ДанныеШапки.АдресПокупателя;
            ОбластьМакета.Параметры.ИННПокупателя = "ИНН/КПП покупателя: " + ?(ДанныеШапки.Свойство("ИННКПППокупателя"),
                ДанныеШапки.ИННКПППокупателя,
                "" + ДанныеШапки.ИННПокупателя + ?(ЗначениеЗаполнено(ДанныеШапки.КПППокупателя), "/" + ДанныеШапки.КПППокупателя, ""));
            ОбластьМакета.Параметры.Валюта = "Валюта: наименование, код " + ДанныеШапки.ВалютаНаименование;
    
    Последнее редактирование: 21 сен 2015
    BBDragon нравится это.
  13. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    IceBeerG
    Спасибо огромное, сейчас буду пробовать!
    Хм.. Так не совсем верно, ибо получается что в любом случае продавец и грузоотправитель совпадают!
    А у нас ведь должно заполняться по условию..
    Похоже надо копать запрос из самого документа "РеализацияТоваровУслуг", именно там проходит эта проверка.
    Имеется Функция ТекстЗапросаДанныеДляПечатиСчетовФактур(НомераТаблиц) Экспорт и там код:
    ВЫБОР
    | КОГДА Реквизиты.Организация.ОбособленноеПодразделение
    | ТОГДА Реквизиты.Организация
    | КОГДА Реквизиты.Грузоотправитель <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
    | ТОГДА Реквизиты.Грузоотправитель
    | ИНАЧЕ ""он же""
    | КОНЕЦ КАК Грузоотправитель

    Но вот, что там конкретно сделать - никак не разберусь. Пробую разные варианты - не подходит
  14. IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    В модуле УчктНДС есть процедура ПодготовитьДанныеШапкиСчетаФактуры1137(ВыборкаСФ, Реквизиты, ПлатежноРасчетныеДокументы, ДополнитьДаннымиУПД), но я бы проверку делал вконце, на этапе заполнения параметров. Установите проверку на то, что у вас одинаковые адреса и выводите то, что я писал выше, иначе выводите как в типовом варианте.

    Как-то так:
    Код:
    Если ЗначениеЗаполнено(СведенияОСчетеФактуре.ДанныеШапки.Грузополучатель)
        И СведенияОСчетеФактуре.ДанныеШапки.Грузополучатель <> "он же" Тогда
        ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ДанныеШапки.ПредставлениеГрузополучателя;
    Иначе
        ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ДанныеШапки.ПредставлениеПоставщика + ДанныеШапки.АдресПоставщика;
    КонецЕсли
    
    Последнее редактирование: 21 сен 2015
    BBDragon нравится это.
  15. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Попробовал по-вашему, ошибка: Переменная (СведенияОСчетеФактуре) не определена
    Сам делал так:
    Если ДанныеШапки.ПредставлениеГрузополучателя="он же" Тогда
    ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ДанныеШапки.ПредставлениеПоставщика + ДанныеШапки.АдресПоставщика;
    Иначе ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ДанныеШапки.ПредставлениеГрузополучателя;
    КонецЕсли;
    Однако он у меня везде пишет "Он же".

    Походу наши конфигурации несколько отличаются (у меня БП 3.0.40.30).

    Если же принудительно ставлю (как вы советовали вначале)
    ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ДанныеШапки.ПредставлениеПоставщика + ДанныеШапки.АдресПоставщика
    То он выводит все в 2 строки: и "он же", и Поставщика с адресом!
  16. IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Я не проверял как работает код, а написал саму идею.
    Может быть нужно написать:
    Код:
    Если ЗначениеЗаполнено(ДанныеШапки.Грузополучатель)
    Можно ограничиться этим:
    Код:
    Если ДанныеШапки.Грузополучатель <> "он же" Тогда
        ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ДанныеШапки.ПредставлениеГрузополучателя;
    Иначе
        ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ДанныеШапки.ПредставлениеПоставщика + ДанныеШапки.АдресПоставщика;
    КонецЕсли
    Прежде чем запускать скопированный код, пройдитесь отладчиком, посмотрите чем заполняются параметры, подредактируйте что нужно.

    Я мог напутать грузоотправителя и грузополучателя, все досконально проверяйте, что чем заполняете. Мой код всего навсего идея как можно сделать, а переменные сами свои подставляете правильно.

    Заполнение УПД одинаковое у нас.
    Последнее редактирование: 21 сен 2015
    BBDragon нравится это.
  17. TopicStarter Overlay
    BBDragon
    Offline

    BBDragon Опытный в 1С

    Регистрация:
    11 мар 2010
    Сообщения:
    183
    Симпатии:
    2
    Баллы:
    29
    Всё, сделал наконец-то!

    Код:
    Если ДанныеШапки.ПредставлениеГрузоотправителя=СокрЛП(Строка("он же")) Тогда
                ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = ДанныеШапки.ПредставлениеПоставщика + "; " + ДанныеШапки.АдресПоставщика
            Иначе ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = ДанныеШапки.ПредставлениеГрузоотправителя;
    КонецЕсли;
    
    IceBeerG
    Большое спасибо:)

    Главбух говорит, что у нас всегда так - и продавец и грузооотправитель совпадают (это мы сами), но лучше оставлю эту проверку)
Похожие темы
  1. Completum
    Ответов:
    3
    Просмотров:
    586
  2. CSCO12103692
    Ответов:
    9
    Просмотров:
    552
  3. Дмитрий1985
    Ответов:
    6
    Просмотров:
    2.732
Загрузка...

Поделиться этой страницей