Новая форма счета фактуры

Новая тема
Показывать по 10 20 40 сообщений
"1с "Предприятие" комплексная v.515

При выводе на печать новой формы счета фактуры выдается след. сообщение об ошибке:
МнЧ.СтранаК     = РаспредГТД.Страна.Код;
{D:\ATC TD\EXTFORMS\PRNFORMS\SF1137.ERT(504)}: Значение не представляет агрегатный объект (Код)

Причем данная ошибка появляется только в том случае когда товар списывается с разных партий товара
Если товар находится в пределах одной партии такой ошибки не возникает.
Подскажите что делать? Нет возможности распечатывать наовые счета фактуры."
"Точно такая же ошибка возникла при списании товара с разных поставок. Прошлая С/ф выводится без проблем.
ТиС 7.70.970
UP: нашел на просторах инета
Конфигуратором открываете внешнюю печатную форму счета-фактуры и добавляете строку в следующее место:

Если КолСтрокГТД = 0 Тогда
// нет распределения по ГТД
// Заполним номер ГТД и Страну из Номенклатуры, если там есть...
Если ПустоеЗначение(ТекТМЦ.Номе рГТД) = 0 Тогда
МнЧ.НомерГТД = СокрЛП(ТекТМЦ.НомерГТД);
КонецЕсли;

Если ПустоеЗначение(ТекТМЦ.Стра наПроисхождения) = 0 Тогда
МнЧ.СтранаН = СокрЛП(ТекТМЦ.СтранаПроисх ождения);
МнЧ.СтранаК = СокрЛП(ТекТМЦ.СтранаПроисх ождения.Код);
КонецЕсли;

ИначеЕсли КолСтрокГТД = 1 Тогда
РаспредГТД.ПолучитьСтрокуПоНомеру(КолСтрокГТД);
// одна строка в таблице. Товара с номером ГТД и страной в одной строке
МнЧ.НомерГТД = РаспредГТД.Номер;
МнЧ.СтранаН = РаспредГТД.Страна;
МнЧ.СтранаК = РаспредГТД.Страна.Код;"
Столкнулся еще с одной проблемой:
Нет возможности этим видом печатной формы С/Ф, распечатать авансовую С/Ф. Выдает сообщение в диалоговом окне: "Данная форма не предназначена для печати счетов-фактур на аванс!"
Подскажите как с этой граблей боротся?
"Всё просто - несколькими строками выше есть вот такой код:

РаспредГТД.Страна = СокрЛП(ТекТМЦ.СтранаПроисхождения);

Его нужно переписать:

РаспредГТД.Страна = ТекТМЦ.СтранаПроисхождения;

Тогда в таблицу значений РаспредГТД будет попадать не строка с наименованием страны, а сам элемент справочника. И код будет браться.
А вот строчку, начинающуюся с:

МнЧ.Hоменклатура = ТаблицаОснования.Hоменклатура.ПолнHаименование

нужно, наоборот, переписать в СокрЛП:

МнЧ.Hоменклатура = СокрЛП(ТаблицаОснования.Hоменклатура.ПолнHаименование)

Тогда в таблицу значений будет попадать не бесконечная строка, а только само полное наименование, без пробелов спереди и сзади. Процедура печати существенно ускорится, особенно на длинных СФ. В общем и целом, эту процедуру оптимизировать и оптимизировать..."
Выложели на http://its.1c.ru/invoice1137/ обновленные с/ф (версия для ТиС от 01.02.12), авансовая печатная форма стала выводиться на печать, но в "наименовании товара" выводится "пердварительный платеж", а не конкретная номенклатура, не смотря на то, что в с/ф была указана ссылка на счет, по которому прошел авансовый платеж. Подскажите как справится с этой ситуацией?

В обновленной версии всё так же не учли ошибку с выводом на печать с/ф с товаром собранным из разных поставок, поэтому лечим методом ранее описанным.
"За "предварительный платёж" не скажу, не разбирался, а вот про это скажу.
> В обновленной версии всё так же не учли ошибку с выводом на печать с/ф с товаром собранным из разных поставок, поэтому лечим методом ранее описанным.

Попробуйте проверить мои наблюдения на обновлённой форме:
1. Заводим для чистоты новую номенклатуру (базовая единица штука, основная единица упаковка по 12 шт). Страна происхождения Азербайджан, ГТД №1;
2. Приходуем 34 штуки от 1-го числа. Страна происхождения Армения, ГТД №2.
3. Выключаем контроль остатков и продаём 4 упаковки от 4-го числа.
4. Запускаем Диспетчер задач и переходим на закладку "Быстродействие" -- присмотреть за расходованием памяти.
5. Создаём, проводим и печатаем счёт-фактуру. Смотрим на часы и память в Диспетчере задач. Когда надоест, жмём Escape.

Причина подобного поведения -- строка 454:

               Если ТаблицаГТД.Количество <= 0 Тогда

В описанных условиях значение (ТаблицаГТД.Количество) равно не нулю, а 10^-26 (примерно) -- из-за округлений. И сравнение не проходит :-( Если строчку переписать хотя бы так:

               Если Число(Строка(ТаблицаГТД.Количество)) <= 0 Тогда

то СФ печатается мгновенно. Впрочем, и это одно решение не панацея. Если последовательно оприходовать 3 раза по 16 штук с разными странами и ГТД, то СФ на продажу 4-х упаковок напечатается с 4-ми подстроками вместо трёх:

Новый    778    упак         4.000              11.87              47.46    без акциза    18%    8.54              56.00              
в т.ч.    778    упак         1.333               0.00               0.00         -    -               0.00    051    Армения    2
в т.ч.    778    упак         1.333               0.00               0.00         -    -               0.00    112    Беларусь    3
в т.ч.    778    упак         1.333               0.00               0.00         -    -               0.00    100    Болгария    4
в т.ч.    778    упак         0.000               0.00               0.00         -    -               0.00    031    Азербайджан    1

И кстати, никакой оптимизации при обновлении обработки я не заметил. По-прежнему бесконечную строку запихивают в ТЗ (на одну эту строчку тратится порядка 15% времени исполнения!). По-прежнему в цикле по строкам табличной части через две точки выясняют реквизиты шапки:

           Если (Докум.ДокОснование.УчитыватьНДС = 1)
              и (Докум.ДокОснование.СуммаВклНДС  = 0) Тогда"
То есть для "комплексной" надо пользоваться С/Ф от ТиС ?
Не мог бы кто-нибудь выложить максимально корректные файлы?
Здесь не выкладывают, все есть на пользовательском сайте!
http://its.1c.ru/invoice1137/
"Привожу полный код вместе с добавленными поправками к коду от #bilbo 21.01.2012# может кому еще пригодится. Не претендую на авторство, просто взял и всё собрал воедино. После этого счет-фактура 2012 не брыкается. Теперь вот думаю как авансовую счет-фактуру замутить.


Если КолСтрокГТД = 0 Тогда
  // нет распределения по ГТД
  // Заполним номер ГТД и Страну из Номенклатуры, если там есть...
Если ПустоеЗначение(ТекТМЦ.НомерГТД) = 0 Тогда
  МнЧ.НомерГТД = СокрЛП(ТекТМЦ.НомерГТД);  
КонецЕсли;

Если ПустоеЗначение(ТекТМЦ.СтранаПроисхождения) = 0 Тогда
   МнЧ.СтранаН = СокрЛП(ТекТМЦ.СтранаПроисхождения);
   МнЧ.СтранаК = СокрЛП(ТекТМЦ.СтранаПроисхождения.Код);
  КонецЕсли;

ИначеЕсли КолСтрокГТД = 1 Тогда
РаспредГТД.ПолучитьСтрокуПоНомеру(КолСтрокГТД);
  // одна строка в таблице. Товара с номером ГТД и страной в одной строке

МнЧ.НомерГТД    = РаспредГТД.Номер;
МнЧ.СтранаН     = РаспредГТД.Страна;
МнЧ.СтранаК     = РаспредГТД.Страна.Код;

 Иначе

РаспредГТД.ВыбратьСтроки();
Пока РаспредГТД.ПолучитьСтроку() = 1 Цикл

МнЧ.НоваяСтрока();
МнЧ.Номенклатура = "     в т.ч.";
МнЧ.Цена = КороткийПрочерк;
МнЧ.Сумма = КороткийПрочерк;
МнЧ.СтавкаНДС = КороткийПрочерк;
МнЧ.СуммаНДС = КороткийПрочерк;
МнЧ.СуммаНП = КороткийПрочерк;
МнЧ.ВсегоСНДС = КороткийПрочерк;

МнЧ.Единица     = ТекЕдиница;
МнЧ.ЕдиницаКод  = ТекЕдиницаКод;
МнЧ.Количество  = РаспредГТД.Колво;
МнЧ.НомерГТД    = РаспредГТД.Номер;
МнЧ.СтранаН     = РаспредГТД.Страна;


Если ПустоеЗначение (РаспредГТД.Страна) = 1 Тогда
МнЧ.СтранаН = " ----- ";
МнЧ.СтранаК = " ----- ";
КонецЕсли;
Если ПустоеЗначение (РаспредГТД.Страна) = 0 Тогда
МнЧ.СтранаН = РаспредГТД.Страна;
МнЧ.СтранаК = РаспредГТД.Страна.Код;
КонецЕсли;


выделено изменения внесенные в код (в первом случае это поправки к коду от #bilbo 21.01.2012#)
во вотором весь абзац ставится вместо строчки МнЧ.СтранаК = РаспредГТД.Страна.Код; типовой печатной формы от 1С,  в данном коде эта строчка уже заменена."
Читают тему
(гостей: 1)

Быстрый переход