×
×
+ Ответить в теме
Показано с 1 по 26 из 26
  1. #1
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144

    Вопрос Внешняя печатная форма, счет.

    Установила программу 1С 8.1 (8.1.15.14). Не устраивает печатная форма счета на оплату покупателю. Попыталась самостоятельно сформировать свой вариант на основе имеющейся формы (руководствовалась рекомендациями на сайте для программистов). Но при выборе моего варианта на печать, программа выдает:
    Не удалось сформировать внешнюю печатную форму!
    Поле объекта не обнаружено (Ссылка)

    Хоть убей не пойму где ошибка, может вы подскажете? Порграммисты не помогли((
    Может есть какой-то образец модуля этой внешней формы?
    Спасибо заранее!
    Поделиться с друзьями

  2. #2
    Клерк
    Регистрация
    18.03.2010
    Адрес
    Химки
    Сообщений
    1,459
    выложи его сюда

  3. #3
    Клерк
    Регистрация
    01.06.2005
    Адрес
    Новочеркасск
    Сообщений
    8,169
    Гдето вы в коде обработки обращаетесь к рекизиту Ссылка какого-то объекта. А унего такого реквизита нет. Рекомендации по созданию внешних печатных форм есть на ИТС в разделе "Методическая поддержка".

  4. #4
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144
    Функция Печать() Экспорт

    ФормаСчетаФактуры = ПолучитьФорму("ФормаДляПроцедурМодуляДокумента");
    ФормаСчетаФактуры.ДокументОбъект = СсылкаНаОбъект.ПолучитьОбъект();
    ФормаСчетаФактуры.ЭтаОбработка = ЭтотОбъект;

    Возврат ФормаСчетаФактуры.НапечататьВнешнююФорму();

    КонецФункции // Печать()


    Функция ВернутьРасчетныйСчет(СчетКонтрагента)

    БанкДляРасчетов = СчетКонтрагента.БанкДляРасчетов;
    Результат = ?(БанкДляРасчетов.Пустая(), СчетКонтрагента.НомерСчета, СчетКонтрагента.Банк.КоррСчет);

    Возврат Результат;

    КонецФункции // ВернутьРасчетныйСчет()

    Функция Печать(Тип = "Счет")Экспорт
    СтруктурнаяЕдиница = СсылкаНаОбъект.СтруктурнаяЕдиница;
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст ="
    |ВЫБРАТЬ
    | Номер,
    | Дата,
    | ДоговорКонтрагента,
    | Организация,
    | Контрагент КАК Получатель,
    | Организация КАК Руководители,
    | Организация КАК Поставщик,
    | СуммаДокумента,
    | ВалютаДокумента,
    | УчитыватьНДС,
    | СуммаВключаетНДС
    |ИЗ
    | Документ.СчетНаОплатуПокупателю КАК ЗаказПокупателя
    |
    |ГДЕ
    | ЗаказПокупателя.Ссылка = &ТекущийДокумент";

    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

    ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("ЗаказПокупателя");

    Запрос.Текст =
    "ВЫБРАТЬ
    | ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    | ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
    | ВложенныйЗапрос.Номенклатура.Код КАК Код,
    | ВложенныйЗапрос.Количество,
    | ВложенныйЗапрос.ЕдиницаИзмерения,
    | ВложенныйЗапрос.Цена,
    | ВложенныйЗапрос.Сумма,
    | ВложенныйЗапрос.СуммаНДС,
    | ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
    | 1 КАК ID
    |ИЗ
    | (ВЫБРАТЬ
    | ЗаказПокупателя.Номенклатура КАК Номенклатура,
    | ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
    | ЗаказПокупателя.Цена КАК Цена,
    | СУММА(ЗаказПокупателя.Количество) КАК Количество,
    | СУММА(ЗаказПокупателя.Сумма) КАК Сумма,
    | СУММА(ЗаказПокупателя.СуммаНДС) КАК СуммаНДС,
    | МИНИМУМ(ЗаказПокупателя.НомерСтроки) КАК НомерСтроки
    | ИЗ
    | Документ.СчетНаОплатуПокупателю.Товары КАК ЗаказПокупателя
    |
    | ГДЕ
    | ЗаказПокупателя.Ссылка = &ТекущийДокумент
    |
    | СГРУППИРОВАТЬ ПО
    | ЗаказПокупателя.Номенклатура,
    | ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
    | ЗаказПокупателя.Цена) КАК ВложенныйЗапрос
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
    | " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
    | NULL,
    | ЗаказПокупателя.Количество,
    | ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
    | ЗаказПокупателя.Цена,
    | ЗаказПокупателя.Сумма,
    | ЗаказПокупателя.СуммаНДС,
    | ЗаказПокупателя.НомерСтроки,
    | 2
    |ИЗ
    | Документ.СчетНаОплатуПокупателю.Услуги КАК ЗаказПокупателя
    |
    |ГДЕ
    | ЗаказПокупателя.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    | ID,
    | НомерСтроки";

    ЗапросТовары = Запрос.Выполнить().Выгрузить();

    Макет = ПолучитьМакет("СчетЗаказ");

    // Выводим шапку накладной

    СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата);
    Если Тип = "Счет" Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ОбластьМакета.Параметры.ИНН = СведенияОПоставщике.ИНН;
    ОбластьМакета.Параметры.КПП = СведенияОПоставщике.КПП;
    Если ТипЗнч(СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
    Банк = ?(НЕ ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов), СтруктурнаяЕдиница.Банк, СтруктурнаяЕдиница.БанкДляРасчетов);
    БИК = Банк.Код;
    КоррСчет = Банк.КоррСчет;
    ГородБанка = Банк.Город;
    НомерСчета = ВернутьРасчетныйСчет(СтруктурнаяЕдиница);

    ОбластьМакета.Параметры.БИКБанкаПолучателя = БИК;
    ОбластьМакета.Параметры.БанкПолучателя = Банк;
    ОбластьМакета.Параметры.БанкПолучателяПредставление = СокрЛП(Банк) + " " + ГородБанка;
    ОбластьМакета.Параметры.СчетБанкаПолучателя = КоррСчет;
    ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = КоррСчет;
    ОбластьМакета.Параметры.СчетПолучателяПредставление = НомерСчета;
    ОбластьМакета.Параметры.СчетПолучателя = НомерСчета;
    КонецЕсли;

    Если ПустаяСтрока(СтруктурнаяЕдиница.ТекстКорреспондента) Тогда
    ТекстКорреспондента = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "НаименованиеДляПечатныхФорм");
    Если ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов) Тогда
    ТекстКорреспондента = ТекстКорреспондента + " р/с " + СтруктурнаяЕдиница.НомерСчета
    + " в " + СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город;
    КонецЕсли;
    Иначе
    ТекстКорреспондента = СтруктурнаяЕдиница.ТекстКорреспондента;
    КонецЕсли;
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ТекстКорреспондента;

    ТабДокумент.Вывести(ОбластьМакета);
    КонецЕсли;

    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Счет на оплату");

    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ИНН,КПП,НаименованиеДляПечатныхФорм,ЮридическийАдрес,Телефоны,");
    ТабДокумент.Вывести(ОбластьМакета);

    СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ОбластьМакета.Параметры.ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), "ИНН,КПП,ПолноеНаименование,ЮридическийАдрес,Телефоны,");
    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
    ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
    ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

    ТабДокумент.Вывести(ОбластьНомера);
    ТабДокумент.Присоединить(ОбластьДанных);
    ТабДокумент.Присоединить(ОбластьСуммы);

    ОбластьКолонкаТовар = Макет.Область("Товар");

    ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
    ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
    ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");

    Сумма = 0;
    СуммаНДС = 0;
    ВсегоСкидок = 0;
    ВсегоБезСкидок = 0;

    Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

    ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
    ТабДокумент.Вывести(ОбластьНомера);

    ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
    ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар);
    ТабДокумент.Присоединить(ОбластьДанных);

    ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
    ТабДокумент.Присоединить(ОбластьСуммы);
    Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
    СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

    КонецЦикла;

    // Вывести Итого
    ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
    ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
    ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");

    ТабДокумент.Вывести(ОбластьНомера);
    ТабДокумент.Присоединить(ОбластьДанных);
    ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
    ТабДокумент.Присоединить(ОбластьСуммы);

    // Вывести ИтогоНДС
    ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
    ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
    ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

    ТабДокумент.Вывести(ОбластьНомера);
    Если СуммаНДС <> 0 Тогда
    ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
    ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
    Иначе
    ОбластьДанных.Параметры.НДС = "Без налога (НДС)";
    ОбластьСуммы.Параметры.ВсегоНДС = "-";
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);

    ТабДокумент.Присоединить(ОбластьСуммы);

    // Вывести Сумму прописью
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
    + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
    ТабДокумент.Вывести(ОбластьМакета);

    // Вывести подписи
    Если Тип = "Счет" Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");

    Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Руководители, Шапка.Дата,);
    Руководитель = Руководители.Руководитель;
    Бухгалтер = Руководители.ГлавныйБухгалтер;

    ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
    ОбластьМакета.Параметры.ФИОБухгалтера = Бухгалтер;

    Иначе
    ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
    КонецЕсли;
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ТабДокумент.Вывести(ОбластьМакета);

    Возврат ТабДокумент;
    КонецФункции // ПечатьСчетаЗаказа()

  5. #5
    Клерк
    Регистрация
    18.03.2010
    Адрес
    Химки
    Сообщений
    1,459
    вот тебе рыба, правь на здоровье
    скачать и изменить расширение txt на epf
    Вложения Вложения

  6. #6
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144
    Спасибо, добрый человек! Завтра попробую! А расширение как менять? Переименовать и заменить txt на epf, что ли?

  7. #7
    Клерк
    Регистрация
    12.11.2008
    Адрес
    Москва
    Сообщений
    61
    Нет просто замени функцию "Печать" в своей внешней печатной форме

  8. #8
    Клерк
    Регистрация
    18.03.2010
    Адрес
    Химки
    Сообщений
    1,459
    Переименовать и заменить txt на epf, что ли

    ну да, просто сюда с епф не выкладывается

  9. #9
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144
    Дорогой АнонимХ! Если вас не затруднит, пришлите мне на почту уже в epf-ском расширении, потому как не понимаю я как его менять! sreydes@gmail.com
    Заранее спасибо!

  10. #10
    Клерк
    Регистрация
    18.03.2010
    Адрес
    Химки
    Сообщений
    1,459
    ну переименуй впфСчетЗаказ.txt на впфСчетЗаказ.epf

  11. #11
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144
    АнонимХ, расширение вашего файла я поменяла, но он не открывается в Конфигураторе.

    Пишет следующее: Ошибка при выполнении файловой операции по причине: Неверный формат хранилища данных. Хотя у файла 1С-овская иконка, как и у других обработок...
    Может он не для моей версии программы?
    У меня 8.1 (8.1.15.14), Бухгалтерия предприятия (базовая), редакция 1.6 (1.6.24.7).

  12. #12
    Клерк
    Регистрация
    07.09.2005
    Сообщений
    89
    Цитата Сообщение от svetuek Посмотреть сообщение
    Установила программу 1С 8.1 (8.1.15.14). Не устраивает печатная форма счета на оплату покупателю. Попыталась самостоятельно сформировать свой вариант на основе имеющейся формы (руководствовалась рекомендациями на сайте для программистов). Но при выборе моего варианта на печать, программа выдает:
    Не удалось сформировать внешнюю печатную форму!
    Поле объекта не обнаружено (Ссылка)

    Хоть убей не пойму где ошибка, может вы подскажете? Порграммисты не помогли((
    Может есть какой-то образец модуля этой внешней формы?
    Спасибо заранее!
    В программе выберите пункт "Файл -> Открыть..."
    Найдите Вашу обработку и "запустите".
    В открывшейся форме обработки уведите поле ввода (выбора) документа - этот элемент и "отвечает" за наличие ссылки на документ.

  13. #13
    Клерк
    Регистрация
    07.09.2005
    Сообщений
    89
    Если Вы в функции Печать() запроса не переопределяли переменную ЭтотОбъект, то у вас ошибка здесь:

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

    Впам нужен документ, а ссылка указывает на текущий объект - обработку...

  14. #14
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144
    И что вы посоветуете? У меня переменная ЭтотОбъект несколько раз встречается...

  15. #15
    Клерк
    Регистрация
    07.09.2005
    Сообщений
    89
    Судя по тому как Вы "юзаете" код ( ) :
    1. Проверьте наличие в перечне реквизитов, а также на форме обработки реквизита - например "ДокументСсылка".
    2. Затем во всех местах, где устанавливается значение параметров запросов для документов ссылок записывать примерно так:

    Если в запросе записано -

    |ГДЕ
    | ЗаказПокупателя.Ссылка = &ТекущийДокумент

    то

    при установке запроса надо написать (если печатаете из документа в котором есть поле "Заказ покупателя") -

    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.ДокументСсылка.ЗаказПокупателя.Ссылка);

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

    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.ДокументСсылка.Ссылка);

    Обработка печати выходных форм вызывается в "фоновом" режиме и как правило предварительно передается (заполняется) ссылка на вызвавший эту печать документ...

  16. #16
    Клерк Аватар для TRIAN
    Регистрация
    09.11.2009
    Адрес
    г.Нефтеюганск
    Сообщений
    3,037
    руководствовалась рекомендациями на сайте для программистов
    Порграммисты не помогли((
    Супер программисты, из Вас тоже такой же горе-программист...
    Вы прочитали что Вам Климов Сергей рекомендовал: "Рекомендации по созданию внешних печатных форм на ИТС в разделе "Методическая поддержка".
    А расширение как менять? Переименовать и заменить txt на epf, что ли?
    но судя по этому - лучше оставь эту затею, заплати от 100 до 500 руб и обратись к истинным программистам...

  17. #17
    Клерк
    Регистрация
    18.03.2010
    Адрес
    Химки
    Сообщений
    1,459
    Цитата Сообщение от svetuek Посмотреть сообщение
    У меня 8.1 (8.1.15.14), Бухгалтерия предприятия (базовая), редакция 1.6 (1.6.24.7).
    хммм, интересный вопрос, а базовая ваще может редактировать формы, модули?

    выложенная форма сохранена на движке 8.1.15.14 не базовом.

  18. #18
    Клерк Аватар для TRIAN
    Регистрация
    09.11.2009
    Адрес
    г.Нефтеюганск
    Сообщений
    3,037
    а причем тут конфигурация, речь идет о внешнем отчете...

  19. #19
    Клерк
    Регистрация
    18.03.2010
    Адрес
    Химки
    Сообщений
    1,459
    а хрен его знает, никогда не сталкивался, мож там засада какая

  20. #20
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144
    Ладненько, всем
    Цитата Сообщение от TRIAN Посмотреть сообщение
    истинным программистам...
    спасибо за помощь!

  21. #21
    Клерк Аватар для TRIAN
    Регистрация
    09.11.2009
    Адрес
    г.Нефтеюганск
    Сообщений
    3,037
    Ладненько, всем
    Цитата:
    Сообщение от TRIANПосмотреть сообщение
    истинным программистам...
    к сведению, я себя к ним не отношу... - но все равно спасибо за комплимент...

  22. #22
    Клерк
    Регистрация
    07.09.2005
    Сообщений
    89
    Цитата Сообщение от svetuek Посмотреть сообщение
    И что вы посоветуете? У меня переменная ЭтотОбъект несколько раз встречается...
    Выложите внешнюю форму. Добавлю комментарии, прочтете на досуге, где были проблемсы...

  23. #23
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144
    Вот моя внешняя обработка в формате txt.
    Вложения Вложения

  24. #24
    Клерк
    Регистрация
    07.09.2005
    Сообщений
    89
    Цитата Сообщение от svetuek Посмотреть сообщение
    Вот моя внешняя обработка в формате txt.
    впфСчетЗаказ.zip

  25. #25
    Клерк
    Регистрация
    26.03.2009
    Сообщений
    144
    1C_rvoicer, спасибище.
    По крайней мере она открывается!
    Осталось макет поправить и все ок!

  26. #26
    Клерк
    Регистрация
    25.04.2018
    Сообщений
    1
    Спасибо и от меня!))

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы можете создавать новые темы
  • Вы можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •