Новая форма счета фактуры
Показывать по
10
20
40
сообщений
- 1
- 2
24.01.2012
11:52
#1
"1с "Предприятие" комплексная v.515
При выводе на печать новой формы счета фактуры выдается след. сообщение об ошибке:
МнЧ.СтранаК = РаспредГТД.Страна.Код;
{D:\ATC TD\EXTFORMS\PRNFORMS\SF1137.ERT(504)}: Значение не представляет агрегатный объект (Код)
Причем данная ошибка появляется только в том случае когда товар списывается с разных партий товара
Если товар находится в пределах одной партии такой ошибки не возникает.
Подскажите что делать? Нет возможности распечатывать наовые счета фактуры."
При выводе на печать новой формы счета фактуры выдается след. сообщение об ошибке:
МнЧ.СтранаК = РаспредГТД.Страна.Код;
{D:\ATC TD\EXTFORMS\PRNFORMS\SF1137.ERT(504)}: Значение не представляет агрегатный объект (Код)
Причем данная ошибка появляется только в том случае когда товар списывается с разных партий товара
Если товар находится в пределах одной партии такой ошибки не возникает.
Подскажите что делать? Нет возможности распечатывать наовые счета фактуры."
27.01.2012
16:13
#2
"Точно такая же ошибка возникла при списании товара с разных поставок. Прошлая С/ф выводится без проблем.
ТиС 7.70.970
UP: нашел на просторах инета
Конфигуратором открываете внешнюю печатную форму счета-фактуры и добавляете строку в следующее место:
Если КолСтрокГТД = 0 Тогда
// нет распределения по ГТД
// Заполним номер ГТД и Страну из Номенклатуры, если там есть...
Если ПустоеЗначение(ТекТМЦ.Номе рГТД) = 0 Тогда
МнЧ.НомерГТД = СокрЛП(ТекТМЦ.НомерГТД);
КонецЕсли;
Если ПустоеЗначение(ТекТМЦ.Стра наПроисхождения) = 0 Тогда
МнЧ.СтранаН = СокрЛП(ТекТМЦ.СтранаПроисх ождения);
МнЧ.СтранаК = СокрЛП(ТекТМЦ.СтранаПроисх ождения.Код);
КонецЕсли;
ИначеЕсли КолСтрокГТД = 1 Тогда
РаспредГТД.ПолучитьСтрокуПоНомеру(КолСтрокГТД);
// одна строка в таблице. Товара с номером ГТД и страной в одной строке
МнЧ.НомерГТД = РаспредГТД.Номер;
МнЧ.СтранаН = РаспредГТД.Страна;
МнЧ.СтранаК = РаспредГТД.Страна.Код;"
ТиС 7.70.970
UP: нашел на просторах инета
Конфигуратором открываете внешнюю печатную форму счета-фактуры и добавляете строку в следующее место:
Если КолСтрокГТД = 0 Тогда
// нет распределения по ГТД
// Заполним номер ГТД и Страну из Номенклатуры, если там есть...
Если ПустоеЗначение(ТекТМЦ.Номе рГТД) = 0 Тогда
МнЧ.НомерГТД = СокрЛП(ТекТМЦ.НомерГТД);
КонецЕсли;
Если ПустоеЗначение(ТекТМЦ.Стра наПроисхождения) = 0 Тогда
МнЧ.СтранаН = СокрЛП(ТекТМЦ.СтранаПроисх ождения);
МнЧ.СтранаК = СокрЛП(ТекТМЦ.СтранаПроисх ождения.Код);
КонецЕсли;
ИначеЕсли КолСтрокГТД = 1 Тогда
РаспредГТД.ПолучитьСтрокуПоНомеру(КолСтрокГТД);
// одна строка в таблице. Товара с номером ГТД и страной в одной строке
МнЧ.НомерГТД = РаспредГТД.Номер;
МнЧ.СтранаН = РаспредГТД.Страна;
МнЧ.СтранаК = РаспредГТД.Страна.Код;"
27.01.2012
16:51
#3
Столкнулся еще с одной проблемой:
Нет возможности этим видом печатной формы С/Ф, распечатать авансовую С/Ф. Выдает сообщение в диалоговом окне: "Данная форма не предназначена для печати счетов-фактур на аванс!"
Подскажите как с этой граблей боротся?
Нет возможности этим видом печатной формы С/Ф, распечатать авансовую С/Ф. Выдает сообщение в диалоговом окне: "Данная форма не предназначена для печати счетов-фактур на аванс!"
Подскажите как с этой граблей боротся?
31.01.2012
11:45
#4
"Всё просто - несколькими строками выше есть вот такой код:
РаспредГТД.Страна = СокрЛП(ТекТМЦ.СтранаПроисхождения);
Его нужно переписать:
РаспредГТД.Страна = ТекТМЦ.СтранаПроисхождения;
Тогда в таблицу значений РаспредГТД будет попадать не строка с наименованием страны, а сам элемент справочника. И код будет браться.
А вот строчку, начинающуюся с:
МнЧ.Hоменклатура = ТаблицаОснования.Hоменклатура.ПолнHаименование
нужно, наоборот, переписать в СокрЛП:
МнЧ.Hоменклатура = СокрЛП(ТаблицаОснования.Hоменклатура.ПолнHаименование)
Тогда в таблицу значений будет попадать не бесконечная строка, а только само полное наименование, без пробелов спереди и сзади. Процедура печати существенно ускорится, особенно на длинных СФ. В общем и целом, эту процедуру оптимизировать и оптимизировать..."
РаспредГТД.Страна = СокрЛП(ТекТМЦ.СтранаПроисхождения);
Его нужно переписать:
РаспредГТД.Страна = ТекТМЦ.СтранаПроисхождения;
Тогда в таблицу значений РаспредГТД будет попадать не строка с наименованием страны, а сам элемент справочника. И код будет браться.
А вот строчку, начинающуюся с:
МнЧ.Hоменклатура = ТаблицаОснования.Hоменклатура.ПолнHаименование
нужно, наоборот, переписать в СокрЛП:
МнЧ.Hоменклатура = СокрЛП(ТаблицаОснования.Hоменклатура.ПолнHаименование)
Тогда в таблицу значений будет попадать не бесконечная строка, а только само полное наименование, без пробелов спереди и сзади. Процедура печати существенно ускорится, особенно на длинных СФ. В общем и целом, эту процедуру оптимизировать и оптимизировать..."
03.02.2012
15:09
#5
Выложели на обновленные с/ф (версия для ТиС от 01.02.12), авансовая печатная форма стала выводиться на печать, но в "наименовании товара" выводится "пердварительный платеж", а не конкретная номенклатура, не смотря на то, что в с/ф была указана ссылка на счет, по которому прошел авансовый платеж. Подскажите как справится с этой ситуацией?
В обновленной версии всё так же не учли ошибку с выводом на печать с/ф с товаром собранным из разных поставок, поэтому лечим методом ранее описанным.
В обновленной версии всё так же не учли ошибку с выводом на печать с/ф с товаром собранным из разных поставок, поэтому лечим методом ранее описанным.
04.02.2012
11:09
#6
"За "предварительный платёж" не скажу, не разбирался, а вот про это скажу.
> В обновленной версии всё так же не учли ошибку с выводом на печать с/ф с товаром собранным из разных поставок, поэтому лечим методом ранее описанным.
Попробуйте проверить мои наблюдения на обновлённой форме:
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) Тогда"
> В обновленной версии всё так же не учли ошибку с выводом на печать с/ф с товаром собранным из разных поставок, поэтому лечим методом ранее описанным.
Попробуйте проверить мои наблюдения на обновлённой форме:
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) Тогда"
15.02.2012
15:00
#7
То есть для "комплексной" надо пользоваться С/Ф от ТиС ?
Не мог бы кто-нибудь выложить максимально корректные файлы?
Не мог бы кто-нибудь выложить максимально корректные файлы?
01.05.2012
00:17
#10
"Привожу полный код вместе с добавленными поправками к коду от #bilbo 21.01.2012# может кому еще пригодится. Не претендую на авторство, просто взял и всё собрал воедино. После этого счет-фактура 2012 не брыкается. Теперь вот думаю как авансовую счет-фактуру замутить.
Если КолСтрокГТД = 0 Тогда
// нет распределения по ГТД
// Заполним номер ГТД и Страну из Номенклатуры, если там есть...
Если ПустоеЗначение(ТекТМЦ.НомерГТД) = 0 Тогда
МнЧ.НомерГТД = СокрЛП(ТекТМЦ.НомерГТД);
КонецЕсли;
Если ПустоеЗначение(ТекТМЦ.СтранаПроисхождения) = 0 Тогда
МнЧ.СтранаН = СокрЛП(ТекТМЦ.СтранаПроисхождения);
МнЧ.СтранаК = СокрЛП(ТекТМЦ.СтранаПроисхождения.Код);
КонецЕсли;
ИначеЕсли КолСтрокГТД = 1 Тогда
РаспредГТД.ПолучитьСтрокуПоНомеру(КолСтрокГТД);
// одна строка в таблице. Товара с номером ГТД и страной в одной строке
МнЧ.НомерГТД = РаспредГТД.Номер;
МнЧ.СтранаН = РаспредГТД.Страна;
МнЧ.СтранаК = РаспредГТД.Страна.Код;
Иначе
РаспредГТД.ВыбратьСтроки();
Пока РаспредГТД.ПолучитьСтроку() = 1 Цикл
МнЧ.НоваяСтрока();
МнЧ.Номенклатура = " в т.ч.";
МнЧ.Цена = КороткийПрочерк;
МнЧ.Сумма = КороткийПрочерк;
МнЧ.СтавкаНДС = КороткийПрочерк;
МнЧ.СуммаНДС = КороткийПрочерк;
МнЧ.СуммаНП = КороткийПрочерк;
МнЧ.ВсегоСНДС = КороткийПрочерк;
МнЧ.Единица = ТекЕдиница;
МнЧ.ЕдиницаКод = ТекЕдиницаКод;
МнЧ.Количество = РаспредГТД.Колво;
МнЧ.НомерГТД = РаспредГТД.Номер;
МнЧ.СтранаН = РаспредГТД.Страна;
Если ПустоеЗначение (РаспредГТД.Страна) = 1 Тогда
МнЧ.СтранаН = " ----- ";
МнЧ.СтранаК = " ----- ";
КонецЕсли;
Если ПустоеЗначение (РаспредГТД.Страна) = 0 Тогда
МнЧ.СтранаН = РаспредГТД.Страна;
МнЧ.СтранаК = РаспредГТД.Страна.Код;
КонецЕсли;
выделено изменения внесенные в код (в первом случае это поправки к коду от #bilbo 21.01.2012#)
во вотором весь абзац ставится вместо строчки МнЧ.СтранаК = РаспредГТД.Страна.Код; типовой печатной формы от 1С, в данном коде эта строчка уже заменена."
Если КолСтрокГТД = 0 Тогда
// нет распределения по ГТД
// Заполним номер ГТД и Страну из Номенклатуры, если там есть...
Если ПустоеЗначение(ТекТМЦ.НомерГТД) = 0 Тогда
МнЧ.НомерГТД = СокрЛП(ТекТМЦ.НомерГТД);
КонецЕсли;
Если ПустоеЗначение(ТекТМЦ.СтранаПроисхождения) = 0 Тогда
МнЧ.СтранаН = СокрЛП(ТекТМЦ.СтранаПроисхождения);
МнЧ.СтранаК = СокрЛП(ТекТМЦ.СтранаПроисхождения.Код);
КонецЕсли;
ИначеЕсли КолСтрокГТД = 1 Тогда
РаспредГТД.ПолучитьСтрокуПоНомеру(КолСтрокГТД);
// одна строка в таблице. Товара с номером ГТД и страной в одной строке
МнЧ.НомерГТД = РаспредГТД.Номер;
МнЧ.СтранаН = РаспредГТД.Страна;
МнЧ.СтранаК = РаспредГТД.Страна.Код;
Иначе
РаспредГТД.ВыбратьСтроки();
Пока РаспредГТД.ПолучитьСтроку() = 1 Цикл
МнЧ.НоваяСтрока();
МнЧ.Номенклатура = " в т.ч.";
МнЧ.Цена = КороткийПрочерк;
МнЧ.Сумма = КороткийПрочерк;
МнЧ.СтавкаНДС = КороткийПрочерк;
МнЧ.СуммаНДС = КороткийПрочерк;
МнЧ.СуммаНП = КороткийПрочерк;
МнЧ.ВсегоСНДС = КороткийПрочерк;
МнЧ.Единица = ТекЕдиница;
МнЧ.ЕдиницаКод = ТекЕдиницаКод;
МнЧ.Количество = РаспредГТД.Колво;
МнЧ.НомерГТД = РаспредГТД.Номер;
МнЧ.СтранаН = РаспредГТД.Страна;
Если ПустоеЗначение (РаспредГТД.Страна) = 1 Тогда
МнЧ.СтранаН = " ----- ";
МнЧ.СтранаК = " ----- ";
КонецЕсли;
Если ПустоеЗначение (РаспредГТД.Страна) = 0 Тогда
МнЧ.СтранаН = РаспредГТД.Страна;
МнЧ.СтранаК = РаспредГТД.Страна.Код;
КонецЕсли;
выделено изменения внесенные в код (в первом случае это поправки к коду от #bilbo 21.01.2012#)
во вотором весь абзац ставится вместо строчки МнЧ.СтранаК = РаспредГТД.Страна.Код; типовой печатной формы от 1С, в данном коде эта строчка уже заменена."
- 1
- 2
Читают тему
(гостей: 1)