Понимаю, что вопрос наверно несложный, для опытных программистов, но я совсем новичок. Прошу помочь по возможности, показав пример или дав ссылку на то, где подобное может разобрано.
Например, как можно "встроить" внешнюю обработку, выложенную здесь
http://forum.infostart.ru/forum24/topic23435/message514544/?result=reply#message514544 и вопрос подобный оттуда "Доброго времени суток. Возможно, я и задаю простейший вопрос (но я новичок и ни разу пока не сталкивался с подобными задачами), но не могли бы вы подсказать как, например, эту внешнюю печатную форму (обработку) "встроить" в документ Инвентаризации расчетов с контрагентами, т.е. не использовать внешнюю обработку, а именно доработать стандартный документ в УПП. Передо мной возникли несколько подобных задач с разными документами, делать как внешнюю обработку у меня получилось, а вот на "встраивании" запнулся ввиду недостатка знаний. Может быть подобные примеры были разобраны где-то и методика разобрана, не могли бы дать ссылку где почитать можно? платформа 8.2.13 или 8.2.14, конфигурация УПП, редакция 1.3. "
с тем как создавать внешнюю обработку на примере доработки заполнения Подвала счет-фактуры451 из Документа счет фактуры я вроде бы разобрался и внешнюю обработку сделал (надо было добавить вывод фамилий тех, кто имеет право заверять счет-фактуры за руководителя и за главного бухгалтера). а вот как "встроить" ее в документ, без использования внешней печатной формы пока не могу понять. Если, можете, покажите на примере (этом или подобном) или покажите где копать теорию.
Был бы очень благодарен за информацию.
(2),(3) я это понимаю про обновление, но поставлена именно подобная задача - "встроить в типовую конфигурацию. с этим и пытаюсь разобраться впервые, т.к. опыта до этого не было.
(2) для второй задачи с доработкой счет-фактуры я так и сделал с помощью внешней обработки, найдя материал по тому как примерно это делается, а для первой задачи со справкой я вроде бы нашел похожую внешнюю обработку здесь. но надо как-то либо "встроить" эти внешние печатные формы, либо с нуля разрабатывать в них?
Извините, но зачем вносить изменения непосредственно в документ? Возникает риск при очередном обновлении забыть про них и потерять. Мне кажется, механизм внешних печатных форм достаточно удобен. Или вы спрашиваете просто "для общего развития"?
согласен с varkolak, нужно использовать внешнюю печатную форму, кот. легко подключается к документу и в 8 сохраняется в базе. на практике у меня были случаи, когда с помощью внешней печатной формы не только печать организовывал, но и изменения в документе, если других возможностей для его изменения не было, а конфигурацию изменять нельзя (напр. для удалённого узла)
(4)сказали надо "встроить".. :) копаюсь пока в коде документа счетфактуравыданный (что где берется и как это безболезненно дополнить модифицированной счетфактурой451, чтобы была у пользователя возможность выбора какую счет-фактуру печатать.. туго идет пока поначалу..), т.к. ее с помощью внешней обработки я все же сам обновлял уже..
(10) Airman81, не совсем тебя понимаю - при регистрации печатной формы, если специально не задать замещаемую типовую, пользователь сможет выбрать нужную форму. а "про сказали надо ""встроить"".... то тут совсем непонятка - зарегистрированная печатная форма лежит в базе, от встроенной практически ничем не отличается. проблемы с ней могут возникнуть только при изменении состава реквизитов документа, или при переходе с платформы на платформу (напр. с 8.1 на 8.2) и легко решаются. главное преимущество - полная обновляемость конфигурации.
(12) Alex_E, возможно не совсем правильно выразился по поводу встроить, попробую по другому. Надо сделать так, чтобы при нажатии на Печать в документе СчетФактуравыданный кроме стандартной автоматически выбираемой счетфактуры была возможность выбора для вывода и модифицированной счет-фактуры. При этом не использовать разработанную ранее внешнюю обработку, а дописывать типовой код.
Посмотри в модуле формы документа Процедура ПриОткрытии - там д.б. строки
// Создать кнопки печати
ФормированиеПечатныхФорм.СоздатьКнопкиПечати(ЭтотОбъект, ЭтаФорма);
дальше через общие модули программа переходит к функции модуля объекта документа
Функция ПолучитьСтруктуруПечатныхФорм(), где задается список встроенных печатных форм
сама печать - из функции Печать() модуля объекта документа
(8) до этого я вставил макет модифицированной Счетфактуры451 в документ СчетфактураВыданный (исходный макет счетфактуры451 находится в разделе общих макетов) и на всякий случай вставил его добавление в получение структуры в процедуру модуля объекта
Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
СтруктураМакетов = Новый Структура;
Если НЕ ЗначениеЗаполнено(Дата) Тогда
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура 283");
СтруктураМакетов.Вставить("СчетФактура575", "Счет-фактура 575");
СтруктураМакетов.Вставить("СчетФактура84" , "Счет-фактура 84");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
Иначе
Если Дата < '20040216' Тогда
СтруктураМакетов.Вставить("СчетФактура575", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
ИначеЕсли Дата < '20060530' Тогда
СтруктураМакетов.Вставить("СчетФактура84", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
Иначе
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
КонецЕсли;
КонецЕсли;
Возврат СтруктураМакетов;
теперь при печати пункт этой счетфактуры появляется. но как его дальше заставить запускаться без ошибок?
(13) katya0702, надо как-то дописывать только эту функцию ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати), а не копировать дополнительно подобную функцию из обработки? как и где формируются ее параметры МассивОбъектов, ОбъектыПечати и как их дополнить еще новым макетом, чтобы была возможность выбора макетов 451 и модифицированного451? если бы стояла задача просто "заменить" макет 451 на модифицированный, то в это функции в части
Для каждого Ссылка Из МассивОбъектов Цикл
Если Ссылка.Дата < '20040216' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура575";
Макет = ПолучитьОбщийМакет("СчетФактура575");
ИначеЕсли Ссылка.Дата < '20060530' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура84";
Макет = ПолучитьОбщийМакет("СчетФактура84");
ИначеЕсли Ссылка.Дата < '20090609' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура283";
Макет = ПолучитьОбщийМакет("СчетФактура283");
Иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451";
Макет = ПолучитьОбщийМакет("СчетФактура451");
КонецЕсли;
наверно достаточно было бы замены последнего случая на Макет = ПолучитьМакет("СчетФактура451модиф"); ?
а как правильно дополнить возможность выбора новым макетом?
(15) Airman81, наверное надо было мне немного подробнее объяснить...
Итак, свой макет вы добавили, структуру печатных форм сформировали.
Дальше у вас 2 варианта:
1. Вносим изменения в модуль менеджера документа.
В процедуру модуля менеджера Печать(...) добавляем строки
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура451_модиф") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура451_модиф", "Счет фактура", ПечатьСчетаФактуры_модиф(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
и добавляем также в модуль менеджера новую функцию ПечатьСчетаФактуры_модиф, в которой выбираем нужный макет и вносим все необходимые изменения и дополнения.
2. Вносим изменения в модуль объекта документа.
В модуле объекта ищем функцию Печать, меняем строки
Если ТипЗнч(ИмяМакета) = Тип("ДвоичныеДанные") Тогда
(19) katya0702, спасибо, буду пробовать. а по поводу подробнее и правда, если можно, то поначалу лучше в подробностях расписать по возможности (что где и как), т.к. опыта до этого не было и знаний пока недостаточно.
(11)после попытки выбора нового пункта модифицированного макета выдается ошибка
{ОбщийМодуль.УправлениеПечатью.Модуль(29)}: В обработчике печати не был сформирован табличный документ для: Структура ВызватьИсключение(ТекстСообщенияОбОшибке);
как можно ее исправить?
(12) Alex_E, возможно не совсем правильно выразился по поводу встроить, попробую по другому. Надо сделать так, чтобы при нажатии на Печать в документе СчетФактуравыданный кроме стандартной автоматически выбираемой счетфактуры была возможность выбора для вывода и модифицированной счет-фактуры. При этом не использовать разработанную ранее внешнюю обработку, а дописывать типовой код.
дописанный типовой код уже типовым не является, а внешних печатных форм подключить можно сколько угодно к одному документу, те же разные варианты счетов-фактур (справедливо и обратное - одна внешняя форма может быть использована для нескольких документов). Выбор нужной формы, при регистрации внешней, появляется в форме документа. ничего писать в конфе не надо - пусть типовой и остается, для этого в неё (типовую) и встроен механизм регистрации внешних форм
(17) Alex_E, и все же надо как-то дописать процедуры и функции, чтобы она была не внешней, наверно как-то дополнять МассивОбъектов, ОбъектыПечати, Праметры печати и т.д. в разных процедурах.. как это сделать пока не разобрался. Если можете объяснить как это можно сделать, буду признателен. Вопрос дальнейшего универсального обновления поставлен не был.
Из этой функции либо вызываются соответствующие функции модуля объекта, либо через модуль УправлениеПечатьюКлиент вызываются функции модуля менеджера документа.
модифицированная процедура ПечатьСчетаФактуры в обработке внешней у меня отличалась лишь тем, что я закомментировал начальный цикл по массивуобъектов и сразу брал макет модифицированный
//Для каждого Ссылка Из МассивОбъектов Цикл
// Если СсылкаНаОбъект.Дата < '20040216' Тогда
// ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура575";
// Макет = ПолучитьОбщийМакет("СчетФактура575");
// ИначеЕсли СсылкаНаОбъект.Дата < '20060530' Тогда
// ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура84";
// Макет = ПолучитьОбщийМакет("СчетФактура84");
// ИначеЕсли СсылкаНаОбъект.Дата < '20090609' Тогда
// ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура283";
// Макет = ПолучитьОбщийМакет("СчетФактура283");
// Иначе
// ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451";
// Макет = ПолучитьМакет("СчетФактура451модиф");
// КонецЕсли;
Макет = ПолучитьМакет("СчетФактура451модиф");
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
и далее до момента вывода нового подвала все оставалось как есть, только переменная Ссылка везде заменялась на Ссылканаобъект, передача которой происходила благодаря внешней обработки.
Модификация вывода подвала начиналась после исходного вывода "ИТОГО". Подвал был поделен на части и был доработан справочник организации с добавлением вкладки Счет-фактура, где хранились уполномоченные расписываться за руководителя и главбуха в виде 2 табличных частей. Оттуда потом и брались данные для вывода в подвал.
Возврат ТабДокумент;
А как быть в этом случае? После того как скопировал функцию эту дополнительно (изменив имя)в модуль менеджера, то появились ошибки по поводу того, что переменная ссылка не определена (Раньше то она бралась либо из внешней обработки, либо в исходном коде из массива объектов по циклу (в обработке цикл по ним был закомментирован). чему приравнивать ссылку или как и чем дополнять массив объектов? {Документ.СчетФактураВыданный.МодульМенеджера(77,26)}: Переменная не определена (Ссылка)
СобратьДанныеДляПечати(<<?>>Ссылка, ДанныеДляПечати, УчетнаяПолитика);
{Документ.СчетФактураВыданный.МодульМенеджера(84,105)}: Переменная не определена (Ссылка)
СведенияОбПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Покупатель, <<?>>Ссылка.Дата);
{Документ.СчетФактураВыданный.МодульМенеджера(85,104)}: Переменная не определена (Ссылка)
СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Поставщик, <<?>>Ссылка.Дата);
{Документ.СчетФактураВыданный.МодульМенеджера(86,177)}: Переменная не определена (Ссылка)
СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(?(ДанныеДляПечати.Грузоотправитель = "он же", Неопределено, ДанныеДляПечати.Грузоотправитель), <<?>>Ссылка.Дата);
{Документ.СчетФактураВыданный.МодульМенеджера(87,115)}: Переменная не определена (Ссылка)
СведенияОГрузополучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Грузополучатель, <<?>>Ссылка.Дата);
{Документ.СчетФактураВыданный.МодульМенеджера(1
Если цикл по ссылке закомментировал и игнорировал пока ошибки про ссылку и вставил просто
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451модиф";
Макет = ПолучитьМакет("СчетФактура451модиф");
не уверен, что я правильно делал.. то после запуска и пробного выбора на вывод встроенной формы появилась ошибка:
{ОбщийМодуль.УправлениеПечатью.Модуль(29)}: В обработчике печати не был сформирован табличный документ для: Структура ВызватьИсключение(ТекстСообщенияОбОшибке);
как можно исправить ошибку с ссылкой, подскажите плиз пошагово если можно. что за массив объектов? может быть не обязательно вставлять функцию из обработчика, а как-то дополнить исходную функцию печати, разница ведь в них невелика?
(22) Airman81, не нужно комментировать цикл по массиву объектов. Массив объектов - это список тех документов, которые нужно распечатать. А вообще попробуйте пройти процедуру печати по шагам в отладчике, сразу многое станет понятней.
(27) katya0702, спасибо большое за подсказки и советы, вроде бы разобрались как сделать (сейчас попробую перенести из локальной версии где работает в основную), массив объектов действительно не причем был (заморачивал себе по неопытности голову не совсем тем.
Встраивание печатной формы внутрь документа.
1) встроить макет модифицированный
2) внести в модуле объектакоррективы в функцию
Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
СтруктураМакетов = Новый Структура;
Если НЕ ЗначениеЗаполнено(Дата) Тогда
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура 283");
СтруктураМакетов.Вставить("СчетФактура575", "Счет-фактура 575");
СтруктураМакетов.Вставить("СчетФактура84" , "Счет-фактура 84");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
Иначе
Если Дата < '20040216' Тогда
СтруктураМакетов.Вставить("СчетФактура575", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
ИначеЕсли Дата < '20060530' Тогда
СтруктураМакетов.Вставить("СчетФактура84", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
Иначе
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
КонецЕсли;
КонецЕсли;
Возврат СтруктураМакетов;
КонецФункции // ПолучитьСтруктуруПечатныхФорм()
3) внести дополнения в Печать и ПечатьСчетаФактуры в модуле менеджера
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура283") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура283", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура84") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура84", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура575") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура575", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура451модиф") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура451модиф", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати, "СчетФактура451модиф"));
КонецЕсли;
КонецПроцедуры
Функция ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати, Модификация451 = "")
мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДокумент.ПолеСверху = 13;
ПервыйДокумент = Истина;
Для каждого Ссылка Из МассивОбъектов Цикл
Если Модификация451 <> "СчетФактура451модиф" тогда
Если Ссылка.Дата < '20040216' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура575";
Макет = ПолучитьОбщийМакет("СчетФактура575");
ИначеЕсли Ссылка.Дата < '20060530' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура84";
Макет = ПолучитьОбщийМакет("СчетФактура84");
ИначеЕсли Ссылка.Дата < '20090609' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура283";
Макет = ПолучитьОбщийМакет("СчетФактура283");
Иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451";
Макет = ПолучитьОбщийМакет("СчетФактура451");
КонецЕсли;
иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451";
Макет = ПолучитьМакет("СчетФактура451модиф");
конецесли;
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
Если ДанныеДляПечати.Свойство("АдресДоставки")
И Не ПустаяСтрока(ДанныеДляПечати.АдресДоставки) Тогда
ПредставлениеГрузополучателя = ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель),
ДанныеДляПечати.АдресДоставки,
ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование") + ", " + ДанныеДляПечати.АдресДоставки);
Иначе
ПредставлениеГрузополучателя = ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель),
"",
ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование, ФактическийАдрес,"));
КонецЕсли;
Если ВыборкаПоТоварам.Количество() > 0 Тогда
ТолькоУслуги = Истина;
Для Каждого СтрокаТовар Из ВыборкаПоТоварам Цикл
Если (ТипЗнч(СтрокаТовар.Товар) = Тип("СправочникСсылка.Номенклатура")
И Не СтрокаТовар.Товар.Услуга)
ИЛИ ТипЗнч(СтрокаТовар.Товар) = Тип("СправочникСсылка.ОсновныеСредства") Тогда
ТолькоУслуги = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
ТолькоУслуги = Ложь;
КонецЕсли;
Если ТолькоУслуги Тогда
ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + "--";
ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + "--";
Иначе
ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + ?(НЕ ЗначениеЗаполнено(ДанныеДляПечати.Грузоотправитель), "", ?(ДанныеДляПечати.Грузоотправитель = "он же", ДанныеДляПечати.Грузоотправитель, ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес,")));
ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ПредставлениеГрузополучателя;
КонецЕсли;
Если Ссылка.Дата < '20040216' Тогда
ОбластьМакета.Параметры.ИННпоставщика = "Идентификационный номер продавца (ИНН): " + ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "ИНН,", Ложь);
ОбластьМакета.Параметры.ИННПокупателя = "Идентификационный номер покупателя (ИНН): " + ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбПокупателе, "ИНН,", Ложь);
Иначе
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "КПП,", Ложь);
Если ЗначениеЗаполнено(КПП) Тогда
КПП = "/" + КПП;
КонецЕсли;
ОбластьМакета.Параметры.ИННпоставщика = "ИНН/КПП продавца: " + ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "ИНН,", Ложь) + КПП;
Если не ТолькоУслуги
и ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель)
и не ДанныеДляПечати.Грузополучатель = ДанныеДляПечати.Покупатель
и ДанныеДляПечати.Грузополучатель.ГоловнойКонтрагент = ДанныеДляПечати.Покупатель
Тогда
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, "КПП,", Ложь);
Если не ЗначениеЗаполнено(КПП) Тогда
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбПокупателе, "КПП,", Ложь);
КонецЕсли;
Иначе
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбПокупателе, "КПП,", Ложь);
КонецЕсли;
Если (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120)
Или (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118)
Или (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110) Тогда
Строчка.СуммаБезНДС = Строчка.СуммаСНДС;
Если Не Строчка.СуммаВключаетНДС тогда
Строчка.Цена = 0;
КонецЕсли;
Иначе
Строчка.СуммаБезНДС = Строчка.СуммаСНДС - Строчка.СуммаНДС;
Если Строчка.СуммаВключаетНДС тогда
Строчка.Цена = 0;
КонецЕсли;
КонецЕсли;
Если Строчка.Цена = 0 Тогда
Строчка.Цена = ?(Строчка.Количество = 0, 0, Строчка.СуммаБезНДС / Строчка.Количество);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строчка.ТоварНаименование) Тогда
ОбластьМакета.Параметры.ТоварНаименование = Строчка.Товар;
КонецЕсли;
ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ОбластьМакета.Параметры.ТоварНаименование);
Если Строка(Строчка.ПредставлениеСтраны) = "Россия"
Или Строка(Строчка.ПредставлениеСтраны) = "Российская Федерация"
Или Строчка.СтранаПроисхождения = Справочники.КлассификаторСтранМира.РОССИЯ Тогда
ОбластьМакета.Параметры.ПредставлениеСтраны = "--";
КонецЕсли;
Если ОчищатьКоличество И ТипЗнч(ОбластьМакета.Параметры.Товар) <> Тип("СправочникСсылка.ОсновныеСредства")
И (ОбластьМакета.Параметры.ЕдиницаИзмерения = "--"
Или Не ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмерения)) Тогда
Строчка.Количество = 0;
КонецЕсли;
Если Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НаАванс
Или Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НаСуммовуюРазницу
Или Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НалоговыйАгент
Тогда
Если Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НалоговыйАгент Тогда
ОбластьМакета.Параметры.Стоимость = Строчка.СуммаБезНДС;
Иначе
// В счетах-фактурах на аванс колонка 5 не выводится
ОбластьМакета.Параметры.Стоимость = 0;
КонецЕсли;
ОбластьМакета.Параметры.Количество = 0;
ОбластьМакета.Параметры.Цена = 0;
Иначе
ОбластьМакета.Параметры.Стоимость = Строчка.СуммаБезНДС;
ОбластьМакета.Параметры.Цена = Строчка.Цена;
КонецЕсли;
Если ВыборкаСтрокТовары.Количество()>0 Тогда
ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ВместеСоСледующим = Истина;
КонецЕсли;
Если Модификация451 <> "СчетФактура451модиф" тогда
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати);
Если не Ссылка.Дата < '20040216' Тогда
Если Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НалоговыйАгент Тогда
ОбластьМакета.Параметры.Свидетельство = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбПокупателе, "Свидетельство,");
Иначе
ОбластьМакета.Параметры.Свидетельство = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "Свидетельство,");
КонецЕсли;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
иначе
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалНач");
ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати);
ОбластьМакета.Параметры.Приказ = Ссылка.Организация.ПриказПраваПодписи;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("подпись");
колСтрок = Макс(Ссылка.Организация.ПодписываютСФЗаРук.Количество(),Ссылка.Организация.ПодписываютСФЗаГлавБуха.Количество());
Для с=0 по колСтрок-1 цикл
Если с< Ссылка.Организация.ПодписываютСФЗаРук.Количество() Тогда
стр=Ссылка.Организация.ПодписываютСФЗаРук.Получить(с);
ОбластьМакета.Параметры.ФИО1 = стр.ФизическоеЛицо;
ОбластьМакета.Параметры.Должность1 = стр.Должность;
КонецЕсли;
Если с< Ссылка.Организация.ПодписываютСФЗаГлавБуха.Количество() Тогда
стр=Ссылка.Организация.ПодписываютСФЗаГлавБуха.Получить(с);
ОбластьМакета.Параметры.ФИО2 = стр.ФизическоеЛицо;
ОбластьМакета.Параметры.Должность2 = стр.Должность;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета.Параметры.ФИО1="";
ОбластьМакета.Параметры.Должность1="";
ОбластьМакета.Параметры.ФИО2="";
ОбластьМакета.Параметры.Должность2="";
КонецЦикла;
вот вроде все, что достаточно по минимуму, если знать раньше как то сделать оказываеца не очень долго. буду теперь другое задание пытаться разобрать по аналогии.
(27) katya0702, спасибо большое за подсказки и советы, вроде бы разобрались как сделать (сейчас попробую перенести из локальной версии где работает в основную), массив объектов действительно не причем был (заморачивал себе по неопытности голову не совсем тем.
Встраивание печатной формы внутрь документа.
1) встроить макет модифицированный
2) внести в модуле объектакоррективы в функцию
Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
СтруктураМакетов = Новый Структура;
Если НЕ ЗначениеЗаполнено(Дата) Тогда
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура 283");
СтруктураМакетов.Вставить("СчетФактура575", "Счет-фактура 575");
СтруктураМакетов.Вставить("СчетФактура84" , "Счет-фактура 84");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
Иначе
Если Дата < '20040216' Тогда
СтруктураМакетов.Вставить("СчетФактура575", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
ИначеЕсли Дата < '20060530' Тогда
СтруктураМакетов.Вставить("СчетФактура84", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
Иначе
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура");
СтруктураМакетов.Вставить("СчетФактура451модиф" , "Счет-фактура 451модиф");
КонецЕсли;
КонецЕсли;
Возврат СтруктураМакетов;
КонецФункции // ПолучитьСтруктуруПечатныхФорм()
3) внести дополнения в Печать и ПечатьСчетаФактуры в модуле менеджера
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура283") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура283", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура84") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура84", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура575") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура575", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактура451модиф") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетФактура451модиф", "Счет фактура", ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати, "СчетФактура451модиф"));
КонецЕсли;
КонецПроцедуры
Функция ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати, Модификация451 = "")
мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДокумент.ПолеСверху = 13;
ПервыйДокумент = Истина;
Для каждого Ссылка Из МассивОбъектов Цикл
Если Модификация451 <> "СчетФактура451модиф" тогда
Если Ссылка.Дата < '20040216' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура575";
Макет = ПолучитьОбщийМакет("СчетФактура575");
ИначеЕсли Ссылка.Дата < '20060530' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура84";
Макет = ПолучитьОбщийМакет("СчетФактура84");
ИначеЕсли Ссылка.Дата < '20090609' Тогда
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура283";
Макет = ПолучитьОбщийМакет("СчетФактура283");
Иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451";
Макет = ПолучитьОбщийМакет("СчетФактура451");
КонецЕсли;
иначе
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451";
Макет = ПолучитьМакет("СчетФактура451модиф");
конецесли;
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
Если ДанныеДляПечати.Свойство("АдресДоставки")
И Не ПустаяСтрока(ДанныеДляПечати.АдресДоставки) Тогда
ПредставлениеГрузополучателя = ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель),
ДанныеДляПечати.АдресДоставки,
ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование") + ", " + ДанныеДляПечати.АдресДоставки);
Иначе
ПредставлениеГрузополучателя = ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель),
"",
ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование, ФактическийАдрес,"));
КонецЕсли;
Если ВыборкаПоТоварам.Количество() > 0 Тогда
ТолькоУслуги = Истина;
Для Каждого СтрокаТовар Из ВыборкаПоТоварам Цикл
Если (ТипЗнч(СтрокаТовар.Товар) = Тип("СправочникСсылка.Номенклатура")
И Не СтрокаТовар.Товар.Услуга)
ИЛИ ТипЗнч(СтрокаТовар.Товар) = Тип("СправочникСсылка.ОсновныеСредства") Тогда
ТолькоУслуги = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
ТолькоУслуги = Ложь;
КонецЕсли;
Если ТолькоУслуги Тогда
ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + "--";
ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + "--";
Иначе
ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + ?(НЕ ЗначениеЗаполнено(ДанныеДляПечати.Грузоотправитель), "", ?(ДанныеДляПечати.Грузоотправитель = "он же", ДанныеДляПечати.Грузоотправитель, ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес,")));
ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ПредставлениеГрузополучателя;
КонецЕсли;
Если Ссылка.Дата < '20040216' Тогда
ОбластьМакета.Параметры.ИННпоставщика = "Идентификационный номер продавца (ИНН): " + ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "ИНН,", Ложь);
ОбластьМакета.Параметры.ИННПокупателя = "Идентификационный номер покупателя (ИНН): " + ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбПокупателе, "ИНН,", Ложь);
Иначе
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "КПП,", Ложь);
Если ЗначениеЗаполнено(КПП) Тогда
КПП = "/" + КПП;
КонецЕсли;
ОбластьМакета.Параметры.ИННпоставщика = "ИНН/КПП продавца: " + ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "ИНН,", Ложь) + КПП;
Если не ТолькоУслуги
и ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель)
и не ДанныеДляПечати.Грузополучатель = ДанныеДляПечати.Покупатель
и ДанныеДляПечати.Грузополучатель.ГоловнойКонтрагент = ДанныеДляПечати.Покупатель
Тогда
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОГрузополучателе, "КПП,", Ложь);
Если не ЗначениеЗаполнено(КПП) Тогда
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбПокупателе, "КПП,", Ложь);
КонецЕсли;
Иначе
КПП = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбПокупателе, "КПП,", Ложь);
КонецЕсли;
Если (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120)
Или (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118)
Или (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110) Тогда
Строчка.СуммаБезНДС = Строчка.СуммаСНДС;
Если Не Строчка.СуммаВключаетНДС тогда
Строчка.Цена = 0;
КонецЕсли;
Иначе
Строчка.СуммаБезНДС = Строчка.СуммаСНДС - Строчка.СуммаНДС;
Если Строчка.СуммаВключаетНДС тогда
Строчка.Цена = 0;
КонецЕсли;
КонецЕсли;
Если Строчка.Цена = 0 Тогда
Строчка.Цена = ?(Строчка.Количество = 0, 0, Строчка.СуммаБезНДС / Строчка.Количество);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строчка.ТоварНаименование) Тогда
ОбластьМакета.Параметры.ТоварНаименование = Строчка.Товар;
КонецЕсли;
ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ОбластьМакета.Параметры.ТоварНаименование);
Если Строка(Строчка.ПредставлениеСтраны) = "Россия"
Или Строка(Строчка.ПредставлениеСтраны) = "Российская Федерация"
Или Строчка.СтранаПроисхождения = Справочники.КлассификаторСтранМира.РОССИЯ Тогда
ОбластьМакета.Параметры.ПредставлениеСтраны = "--";
КонецЕсли;
Если ОчищатьКоличество И ТипЗнч(ОбластьМакета.Параметры.Товар) <> Тип("СправочникСсылка.ОсновныеСредства")
И (ОбластьМакета.Параметры.ЕдиницаИзмерения = "--"
Или Не ЗначениеЗаполнено(ОбластьМакета.Параметры.ЕдиницаИзмерения)) Тогда
Строчка.Количество = 0;
КонецЕсли;
Если Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НаАванс
Или Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НаСуммовуюРазницу
Или Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НалоговыйАгент
Тогда
Если Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НалоговыйАгент Тогда
ОбластьМакета.Параметры.Стоимость = Строчка.СуммаБезНДС;
Иначе
// В счетах-фактурах на аванс колонка 5 не выводится
ОбластьМакета.Параметры.Стоимость = 0;
КонецЕсли;
ОбластьМакета.Параметры.Количество = 0;
ОбластьМакета.Параметры.Цена = 0;
Иначе
ОбластьМакета.Параметры.Стоимость = Строчка.СуммаБезНДС;
ОбластьМакета.Параметры.Цена = Строчка.Цена;
КонецЕсли;
Если ВыборкаСтрокТовары.Количество()>0 Тогда
ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ВместеСоСледующим = Истина;
КонецЕсли;
Если Модификация451 <> "СчетФактура451модиф" тогда
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати);
Если не Ссылка.Дата < '20040216' Тогда
Если Ссылка.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НалоговыйАгент Тогда
ОбластьМакета.Параметры.Свидетельство = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбПокупателе, "Свидетельство,");
Иначе
ОбластьМакета.Параметры.Свидетельство = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "Свидетельство,");
КонецЕсли;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
иначе
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалНач");
ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати);
ОбластьМакета.Параметры.Приказ = Ссылка.Организация.ПриказПраваПодписи;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("подпись");
колСтрок = Макс(Ссылка.Организация.ПодписываютСФЗаРук.Количество(),Ссылка.Организация.ПодписываютСФЗаГлавБуха.Количество());
Для с=0 по колСтрок-1 цикл
Если с< Ссылка.Организация.ПодписываютСФЗаРук.Количество() Тогда
стр=Ссылка.Организация.ПодписываютСФЗаРук.Получить(с);
ОбластьМакета.Параметры.ФИО1 = стр.ФизическоеЛицо;
ОбластьМакета.Параметры.Должность1 = стр.Должность;
КонецЕсли;
Если с< Ссылка.Организация.ПодписываютСФЗаГлавБуха.Количество() Тогда
стр=Ссылка.Организация.ПодписываютСФЗаГлавБуха.Получить(с);
ОбластьМакета.Параметры.ФИО2 = стр.ФизическоеЛицо;
ОбластьМакета.Параметры.Должность2 = стр.Должность;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета.Параметры.ФИО1="";
ОбластьМакета.Параметры.Должность1="";
ОбластьМакета.Параметры.ФИО2="";
ОбластьМакета.Параметры.Должность2="";
КонецЦикла;
вот вроде все, что достаточно по минимуму, если знать раньше как то сделать оказываеца не очень долго. буду теперь другое задание пытаться разобрать по аналогии.
использовать внешнюю печатную форму, кот. легко подключается к документу и в 8 сохраняется в базе. на практике у меня были случаи, когда с помощью внешней печатной формы не только печать организовывал, но и изменения в документе, если других возможностей для его изменения не было, а конфигурацию изменять нельзя
Airman81 пишет:
goodwin12, как я уже писал выше проблема в том, что надо сделать это без внешней печатной формы, а как сделать это пока не пойму..
Все же интересно, это просто тестовое задание для программиста, чтобы узнать его навыки или действительно задание от работодателя "покурочить" реально работающую конфигурацию.
Если второе, то напрашивается мысль о полной неадекватности того, кто это требует. Хотя возможно он просто не представляет, что такое ВПФ.
(25) Diego_Iv, это мизерная часть задачи в переработке стандартной конфигурации под определенное производство, в котором было решено отказаться от множества внешних обработок. ну и соответственно и проверка уровня знаний паралельно.. а это мое ПЕРВОЕ ЗАДАНИЕ после завершения курсов программирования (на которых в глубины УПП вообще не залезали, а создавали какие-то свои программы не такого уровня.. показал бы мне кто-нибудь пошагово разок как это делается, далее по аналогии было бы проще думаю подобное сделать.. материалов где расписано подробно где что находится и формируется в процедурах, связанных с выводом печатных форм в УПП я не нашел пока, не знаю есть ли такие (комментариев к ним мне не хватает для окончательного понимания)
Приветствую форумчан. продолжение темы, начал встраивать печатную форму справки к Акту ИНВ-17 документа ИнвентаризацияРасчетовСКонтрагентами http://forum.infostart.ru/forum24/topic23435/, но т.к. выложенная там обработка при подключении выдавала ошибку, причину которой я так и не смог понять, то начал встраивать и заполнять ее сам, анализируя частично код обработки и что надо получить в итоге, встроил в печать форму и частично заполнил ее, но возникли сложности с заполнением некоторых колонок, ввиду недостатка знаний и опыта,проблему описал в последнем сообщении по ссылке, если у кого-то из опытных специалистов (для вас я думаю это наверно легко и времени много не займет) найдется свободное время для просвещения и помощи новичку-программисту, то был бы вам признателен. :)