Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 15:10

Модификация параметра <Основание> в УПД

Автор Labaman, 19 ноя 2015, 10:10

0 Пользователей и 1 гость просматривают эту тему.

Labaman

Доброго дня!
Столкнулся с проблемой во вроде как простой задаче:
Требуется дописать в УПД в графу "Основание передачи (сдачи) / получения (приемки)", помимо договора контрагента, дописать "Документ реализации №" ну и, собственно, номер документа "Реализация товаров и услуг", для которого этот УПД печатается.
Пытаюсь реализовать в виде внешней печатной формы.
На макете формы в соответствующей ячейке выведен параметр <Основание>, в модуле документа он встречается всего один раз:
Если ДанныеДокумента.Свойство("ДатаОтгрузкиПередачи") Тогда
ДанныеДляПечати.Вставить("ДатаОтгрузкиПередачи", ДанныеДокумента.ДатаОтгрузкиПередачи);
Иначе
ДанныеДляПечати.Вставить("ДатаОтгрузкиПередачи", ДанныеДокумента.Дата);
КонецЕсли;
ДанныеДляПечати.Вставить("СтатусУПД", 2);
ДанныеДляПечати.Вставить("Основание", Строка(ДанныеДокумента.ДоговорКонтрагента));

Возврат ДанныеДляПечати;

Собственно дописываю:

ДанныеДляПечати.Вставить("Основание", Строка(ДанныеДокумента.ДоговорКонтрагента)+" Документ реализации № "+Сторка(СсылкаНаДокумент.Номер));

Но в итоге в ячейке <Оснвание> все равно прописывает только ДоговорКонтрагента,без той строчки, чтоя дописал.
Так же обратил внимание на условие выше:

ДанныеДляПечати.Вставить("СтатусУПД", 2);

А у меня на формах всегда статус УПД 1, но тем не менее не смог найти в модуле отсылок к действиям при СтатусУПД=1.
Помогите понять чтоя  не так делаю? :dfbsdfbsdf:
P.S. Конфигурация Бух 2.0, экспериментирую с типовой внешней печатной формой УПД, выдранной из Бух 2.0.64.5 (во вложении)

Kironten

Статус 1 у УПД ставится если печать производится из модуля документа счет фактура выданный. Если же счет фактура не требуется, то печать производится со статусом 2.

Labaman

Цитата: Kironten от 19 ноя 2015, 11:26
Статус 1 у УПД ставится если печать производится из модуля документа счет фактура выданный. Если же счет фактура не требуется, то печать производится со статусом 2.
Это я понимаю, и получается моя дописка будет срабатывать только когда счет-фактура не требуется (то есть когда СтатусУПД=2).
Но я не пойму как дописать так, чтобы постоянно, независимо от СтатусУПД и от типа реализации (товар или услуга) в <Основание> постоянно после договора контрагента прописывался и номер документа реализации?

Kironten

Держите.
Надеюсь сами найдете 10 отличий?

Labaman

Цитата: Kironten от 19 ноя 2015, 16:24
Держите.
Надеюсь сами найдете 10 отличий?
Спасибо. Как я понимаю:
/ДанныеДляПечати = СчетФактураОбъект.ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумента();
ДанныеДляПечати = ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумента(ДанныеДокумента);

В СчетФактура была своя процедура формирования табличной части УПД?
И здесь мы указываем что в случае введения счета-фактуры данные все равно брать из встроенной функции?
//ИЛИ ДанныеСчетаФактуры.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитентаНаЗакупку
Здесь исключаем случай распечатать УПД с "Реализацией" для покупки?
ДанныеДляПечати.Вставить("Основание", Строка(ДанныеДокумента.ДоговорКонтрагента)+" Документ реализации № "+Строка(СсылкаНаОбъект.Номер));
Ну до этого я сам додумался так что все понятно.
Надеюсь я все правильно понял?
P.S. Прошу прощения за, возможно, излишнюю дотошность, но мне важно не получить гттовое решение, а понять принцип реализации :nhsrm:

Kironten

Цитата: Labaman от 19 ноя 2015, 18:18
Цитата: Kironten от 19 ноя 2015, 16:24
Держите.
Надеюсь сами найдете 10 отличий?
Спасибо. Как я понимаю:
/ДанныеДляПечати = СчетФактураОбъект.ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумента();
ДанныеДляПечати = ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумента(ДанныеДокумента);

В СчетФактура была своя процедура формирования табличной части УПД?
И здесь мы указываем что в случае введения счета-фактуры данные все равно брать из встроенной функции?
//ИЛИ ДанныеСчетаФактуры.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитентаНаЗакупку
Здесь исключаем случай распечатать УПД с "Реализацией" для покупки?
ДанныеДляПечати.Вставить("Основание", Строка(ДанныеДокумента.ДоговорКонтрагента)+" Документ реализации № "+Строка(СсылкаНаОбъект.Номер));
Ну до этого я сам додумался так что все понятно.
Надеюсь я все правильно понял?
P.S. Прошу прощения за, возможно, излишнюю дотошность, но мне важно не получить гттовое решение, а понять принцип реализации :nhsrm:

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

По второму пункту - Закомментировал, потому как в моем релизе не было перечисления "Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитентаНаЗакупку", соответственно отваливалось с ошибкой. Если в вашем релизе оно есть, то можно и раскомментить.

По третьему пункту - это я ваш код и взял.

Labaman

Цитата: Kironten от 19 ноя 2015, 18:27
Конечно можно было например после формирования Структуры ДанныеДляПечати просто найти в этой структуре по ключу нужный элемент и заменить на свой, но раз уж у вас добавлен модуль получения этой структуры, то, почему бы и не воспользоваться им.
А можно по-подробнее как это сделать, а то если пользоваться стандартной процедурой, то во-первых УПД имеет всегда Статус 2, а номер УПД  и так равен номеру Реализации, а мы работаем с НДС, поэтому номер УПД должен быть равен счету-фактуре, а Статус 1.
То есть конечная цель - номер УПД = номеру счета-фактуры, а номер реализации просто указывается в Основании в дополнение к договору.
В принципе, благодаря Вашим подсказкам я нашел процедуру формирования УПД в модуле СчетФактураВыданный, и даже знаю как его дописать :zebzdr:, но лезть в саму конфу не хотелось бы.
Поэтому буду Вам весьма признателен, если проясните как заменить данные. 

Kironten

Цитата: Labaman от 19 ноя 2015, 21:54
Цитата: Kironten от 19 ноя 2015, 18:27
Конечно можно было например после формирования Структуры ДанныеДляПечати просто найти в этой структуре по ключу нужный элемент и заменить на свой, но раз уж у вас добавлен модуль получения этой структуры, то, почему бы и не воспользоваться им.
А можно по-подробнее как это сделать, а то если пользоваться стандартной процедурой, то во-первых УПД имеет всегда Статус 2, а номер УПД  и так равен номеру Реализации, а мы работаем с НДС, поэтому номер УПД должен быть равен счету-фактуре, а Статус 1.
То есть конечная цель - номер УПД = номеру счета-фактуры, а номер реализации просто указывается в Основании в дополнение к договору.
В принципе, благодаря Вашим подсказкам я нашел процедуру формирования УПД в модуле СчетФактураВыданный, и даже знаю как его дописать :zebzdr:, но лезть в саму конфу не хотелось бы.
Поэтому буду Вам весьма признателен, если проясните как заменить данные.
Если вы про структуру данных печати, то просто после получение данных печати, в вашем коде это строки:
СчетФактураОбъект = СчетФактура.ПолучитьОбъект();
ДанныеДляПечати = СчетФактураОбъект.ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумента();

и
// УПД печатается по статусу 2
ДанныеДляПечати = ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумента(ДанныеДокумента);

пишете:

Если ДанныеДляПечати.Свойство("Основание") Тогда
    ДанныеДляПечати.Основание = Строка(ДанныеДокумента.ДоговорКонтрагента) + " Документ реализации № " + Строка(СсылкаНаОбъект.Номер);
КонецЕсли;

всё.

Labaman

Большое спасибо! Теперь заработало как надо!
Ну и я немного разобрался откуда в 8.2 у печатных форм ноги растут.B)

Теги: упд 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск