|
Определить форму печатного документа с приложением или без | ☑ | ||
---|---|---|---|---|
0
serg-lom89
11.01.17
✎
11:38
|
Добрый день!
Возникла у нас проблема печати ТТН. Постараюсь как то расписать проблему , надеюсь меня услышат! В АРМ печати когда пользователь нажимает на кнопку печать по выбранному документу,происходит проверка следующего типа По данному документу выбираются объединённые документы(если таковые есть конечно),берутся все документы, считается количество строк+ добавляется число строк шапки(задано программно) и проверяется влезет ли на лист(количество строк на листе также задано программно ) Проблема возникает следующая,она как бы определило что должно печататься без приложения,но в итого в печатной форме стоит Автовысота строк и если наименование номенклатуры в выборке короткое то все ок,а если нет то получается переползает на след лист.и бух негодует типа что за фигня. Я ей проблему обрисовал.Но как всегда "сделай,что бы работало". Какие можно сделать что бы такого не было результата? Предварительно печатать документ ,проверять какое количество строк и определять с приложением или нет? Подскажите как уйти от проблемы.(от буха уйти не удастся=)) ) |
|||
1
Cool_Profi
11.01.17
✎
11:41
|
ПроверитьВывод() ?
|
|||
2
serg-lom89
11.01.17
✎
11:43
|
(1)
КоличествоСтрокТаб = 0; Для каждого Строка из МассивРеализаций Цикл КоличествоСтрокТаб = КоличествоСтрокТаб + Строка.Товары.Количество(); КонецЦикла; Если КоличествоСтрокТаб > 0 Тогда ВсегоСтраниц = ОпределитьКолСтраниц(СтрокШапки, СтрокПодвала, КоличествоСтрокТаб, СтрокНаСтранице); КонецЕсли; Если ВсегоСтраниц = 1 Тогда ВидФормыПечати = "Без"; ИначеЕсли ВсегоСтраниц > 1 Тогда ВидФормыПечати = "приложение"; КонецЕсли; Возврат ВидФормыПечати; |
|||
3
serg-lom89
11.01.17
✎
11:43
|
которая определяет с приложением или нет процедура
|
|||
4
serg-lom89
11.01.17
✎
11:48
|
Функция которая определяет количество строк
Функция ОпределитьКолСтраниц(СтрокШапки, СтрокПодвала, КоличествоСтрокТаб, СтрокНаСтранице) ЦелыхСтраниц = Цел(КоличествоСтрокТаб/(СтрокНаСтранице - СтрокШапки)); ОстатокСтрок = КоличествоСтрокТаб - ЦелыхСтраниц * (СтрокНаСтранице - СтрокШапки); Если (ОстатокСтрок + СтрокШапки + СтрокПодвала) > СтрокНаСтранице Тогда ЦелыхСтраниц = ЦелыхСтраниц + 2; Иначе ЦелыхСтраниц = ЦелыхСтраниц + 1; КонецЕсли; Возврат ЦелыхСтраниц; КонецФункции |
|||
5
serg-lom89
11.01.17
✎
11:52
|
у кого какие идеи есть?
|
|||
6
FIXXXL
11.01.17
✎
11:56
|
что есть "приложение"?
по ходу надо менять тупую логику определения варианта печати, смотреть в сторону "По данному документу выбираются объединённые документы", если "объединенных" больше 0 тогда "приложение" |
|||
7
serg-lom89
11.01.17
✎
11:58
|
(6) не факт,могут быть 3 документа и в каждом по 2 товара(клиент в течении дня заказы делает),и что бы по каждой накладной не печатать и не тратить бумагу дешевле в них поставить номер БСО
|
|||
8
serg-lom89
11.01.17
✎
12:03
|
(6) А если накладных много ,то клиенту печатается ТТН с прилжением
На Бланке оригинальном (количество ,сумма по всем товарам ) и на обычных листах затем перечь всего товара что он берет |
|||
9
FIXXXL
11.01.17
✎
12:06
|
(7) (8) я к сожалению (или к счастью :)) не в курсе ваших заморочек с бумагой и печатью
но вышеуказанный код тупо смотрит "влезет-не влезет", если это норм.работает, тогда добавляй доп.условие проверки ПроверитьВывод() и там решай чего надо бушкам |
|||
10
serg-lom89
11.01.17
✎
12:11
|
(9) так оно то понимает что только количеству строк из ДОКУМЕНТОВ,оно не предусматривает что промониторить печ форму надо ,и влезет или нет
|
|||
11
serg-lom89
11.01.17
✎
16:43
|
up тему
|
|||
12
mistеr
11.01.17
✎
17:02
|
Что непонятно? (2) это ленивый сопсоб определения "влезет-не-влезет", а правильный способ - (1).
Еще вариант (тоже ленивый) - поставить везде заполнение "Обрезать", чтобы не разъезжалось. Но бухов это вряд ли устроит. |
|||
13
serg-lom89
11.01.17
✎
17:32
|
(12) и как тогда интересно использовать проверитьВывод() если в него передается массив из проверяемых таблиц или табличный документ. ?а у меня определяет числовым значениям
|
|||
14
serg-lom89
11.01.17
✎
17:33
|
это по старой схеме
|
|||
15
serg-lom89
11.01.17
✎
17:36
|
(14) как в (2)
|
|||
16
FIXXXL
11.01.17
✎
17:41
|
(13) неправильно это, числом определять
ибо завтра в макете пару строк добавят и алга |
|||
17
mistеr
11.01.17
✎
17:58
|
(13) Да, это придется много переписывать. Примеров в Сети полно.
http://programna1c.narod.ru/docs/Articles/CheckPut/PrintCheckPut.html |
|||
18
serg-lom89
12.01.17
✎
08:47
|
(17) наверное не очень поняли меня
В (2) определяю Сприложением или Без приложения и затем выполняю вот такой вот код Если ВидПечатнойФормы = "БезПриложения" Тогда ИмяМакета = Справочники.ДополнительныеПечатныеФормы.НайтиПоНаименованию("ТТН без приложения"); текДокументОбъект.Печать(ИмяМакета); ИначеЕсли ВидПечатнойФормы = "СПриложением" Тогда ИмяМакета = Справочники.ДополнительныеПечатныеФормы.НайтиПоНаименованию("ТТН с приложением"); текДокументОбъект.Печать(ИмяМакета); КонецЕсли; И вопрос как мне более лучше сделать в (2) |
|||
19
mistеr
12.01.17
✎
09:37
|
(18) Это ты не понял.
Еще раз. (2) и (4) работает ненадежно, писал скорее всего семерошник, там не было ПроверитьВывод(). Если ты хочешь, чтобы вот это: >проверяется влезет ли на лист(количество строк на листе также задано программно ) работало правильно даже в случае переноса строк, нужно использовать ПроверитьВывод(), другого пути нет. Другой путь - сделать так, чтобы переносов не случалось. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |