|
Откуда данный код берет макет? | ☑ | ||
---|---|---|---|---|
0
bebibo
14.02.20
✎
08:22
|
Здравствуйте!
Вчера тема не закрылась. Вопрос остается открытым. Помогите пожалуйста. Есть обработка обмена 1С и СРМ. Кидаю в папку файл запрос счета, код мне возвращает ответ и печатную форму в формате пдф. Вот эта печатная берется из базы. Вот таким образом: НайденаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Счет на бланке"); Открываю данный справочник, беру печатную форму "Счет на бланке", сохраняю к себе на пк. Меняю макет (текст только немного, 2 предложения добавлено). Сохраняю эту ПФ.Загружаю опять в базу обратно. Печатаю из 1с - печатается с моими изменениями. А если запускаю обработку обмена СРМ и 1С,то оттуда макет печатается без моих изменений! Как такое может быть, если эта печатная форма берется из базы, а в базе то она нормальная, с изменениями, а печатается без изменений? |
|||
1
END
14.02.20
✎
08:25
|
"Есть обработка обмена 1С и СРМ" вот у вас есть, вы и смотрите в отладчике откуда что берется. Или вы думаете, что у всех "Есть обработка обмена 1С и СРМ"?
|
|||
2
bebibo
14.02.20
✎
08:26
|
(1) Что конкретно смотреть???
|
|||
3
bebibo
14.02.20
✎
08:27
|
Переменная НайденнаяОбработка.
Значение: Счет на бланке Тип: СправочникСсылка.ДополнительныеотчетыИОбработки |
|||
4
bebibo
14.02.20
✎
08:27
|
(1) Вы думаете я не смотрела???
|
|||
5
bebibo
14.02.20
✎
08:30
|
Вообще как такое может быть? Это какой то бред.Никак не могу понять((
|
|||
6
arsik
гуру
14.02.20
✎
08:31
|
Кеш почисти
|
|||
7
bebibo
14.02.20
✎
08:33
|
(6) где?
|
|||
8
arsik
гуру
14.02.20
✎
08:34
|
Везде.
|
|||
9
bebibo
14.02.20
✎
08:39
|
В общем понятно..Никто не знает тоже
|
|||
10
bebibo
14.02.20
✎
08:39
|
Голову можно блин сломать!
Как додуматься, почему такое происходит |
|||
11
bebibo
14.02.20
✎
08:47
|
как такое может быть? Если обработка тащит ПФ из БАЗЫЫЫ
|
|||
12
ДенисЧ
14.02.20
✎
08:50
|
(9) "Ты знаешь, как переводится I don't konw"?
"Я не знаю". "Вот блин! Никто не знает!..." |
|||
13
bebibo
14.02.20
✎
08:50
|
Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда
НайденаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Счет на бланке"); Если Не НайденаяОбработка.Пустая() Тогда МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(ДокументСсылка); ОбъектыПечати = Новый СписокЗначений; ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = НайденаяОбработка.ХранилищеОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайла, Истина); ПечатнаяФорма = ОбработкаОбъект.ПечатьДокумента(МассивОбъектов, ОбъектыПечати, (Число(СтруктураДанных.sign) = 1)); ОбработкаОбъект = Неопределено; УдалитьФайлы(ИмяФайла); КонецЕсли; |
|||
14
Михаил Михайлович
14.02.20
✎
08:58
|
(13) хороший код.
|
|||
15
bebibo
14.02.20
✎
08:59
|
(14) эх, к сожалению мне ваши слова не помогли в решении проблемы..
|
|||
16
Михаил Михайлович
14.02.20
✎
08:59
|
(15) может потому, что проблемы нет?
|
|||
17
bebibo
14.02.20
✎
09:01
|
(16) Как нет? Если она есть. Откуда берется тот макет?
|
|||
18
Михаил Михайлович
14.02.20
✎
09:02
|
(17) а подумать?
|
|||
19
djekting
14.02.20
✎
09:03
|
хорошая тема... пятничная... пойду чаю заварю...
|
|||
20
bebibo
14.02.20
✎
09:05
|
(18) Тут думать нет смысла. Ситуация не логичная. Код тащит ПФ из базы. В базе ПФ нормальная, с изменениями. Откуда он там еще этот старый макет берет - ну вообще не понятно
|
|||
21
bebibo
14.02.20
✎
09:05
|
(19) ааа(((((
|
|||
22
dka80
14.02.20
✎
09:07
|
Добавить сообщить() в каждое место: в форму твоей обработки, в форму внешней печатной формы в начало каждой процедуры, в каждый цикл, в каждое условие и смотри выводится твое сообщение или нет.
|
|||
23
Михаил Михайлович
14.02.20
✎
09:09
|
(20) про кэш уже кажется упоминали в этой теме, но автор не читатель, автор писатель
|
|||
24
Сияющий в темноте
14.02.20
✎
09:09
|
ну поставь уже точку останова на этом месте и смотри,что происходит.
найти по наименованию,иногда,преподносит сюрпризы. с учетом того,что в команде обработка подключается не по наименованию. |
|||
25
acht
14.02.20
✎
09:14
|
(22) ... в каждую базу (:
|
|||
26
Ifkerri
14.02.20
✎
09:14
|
Да в базе 100% две или больше внешних обработок с таким наименование (или похожим). Вторым параметром в методе НайтиПоНаименованию() можно указать необходимость поиска по точному соответствию.
Автор меняет макет в одной обработке, а в коде используется другая. А вообще пользоваться этим методом не стоит -_- |
|||
27
Lama12
14.02.20
✎
09:17
|
(0) А кэш то почищен?
|
|||
28
Lama12
14.02.20
✎
09:19
|
Кстати. Еще можно сделать замер производительности и посмотреть всю трассу выполнения кода. Может там действительно, как говорит (26), две обработки.
|
|||
29
strange2007
14.02.20
✎
09:26
|
Автор, почисти кэш. Точно говорю.
По правде для многих просто нереально найти ответ в такой ситуации. Первый раз с этим столкнулся лет 12-13 назад, когда дружбан попросил совета по вопросу, что счётчик документов, сделанный на константе (!!!!!!) вызывает блокировки базы. Сказал ему переделать на регистр и мозг не парить. Мы час стояли и рассуждали об этом. Я ему объяснял, что тестовая моделька за 20 минут делается. Проверил, принял решение и проблемы нет. А он задумчиво всё твердил "ну чего же она блокируется". Через пол года мы встретились опять и он к этому времени так и не решил проблему. Да и тут, на мисте, подобные хохмы случаются. Сначала я смеялся и удивлялся, а потом понял, что большинству людей просто трудно собрать алгоритм отладки в голове. Так что, друзья, отнеситесь с пониманием к автору |
|||
30
strange2007
14.02.20
✎
09:30
|
Ох, автор, если бы ты только представлял на сколько жесток мир. Я вот тут вижу одну печатную форму из бизнес-процесса, которая тянет часть готового макета из РТУ, который тянет кусок печатной формы из внешней обработки, которая получает отчёт из внешнего отчёта, который на выбор получает макеты и данные из разных баз. А ещё иногда это всё вытягивает какие-то обработки из сети. Всё это без описания. Таких обработок тут под сотню. Некоторые из них инициируются при помощи вёб-приложений, то ли сишный, то ли ассемблерный механизм ещё есть. Не удивлюсь, если тут найду солнечный индикатор, от которого тоже что-то будет запускаться
|
|||
31
bebibo
14.02.20
✎
10:01
|
(27) почистила в папке темп, не помогло, где еще надо может?
|
|||
32
bebibo
14.02.20
✎
10:02
|
(28) посмотрю сейчас
|
|||
33
Salimbek
14.02.20
✎
10:06
|
(31) %appdata%
|
|||
34
D_E_S_131
14.02.20
✎
10:17
|
"ОбработкаОбъект.ПечатьДокумента(..." - вот внутри этой функции нужно смотреть откуда берется макет.
|
|||
35
pechkin
14.02.20
✎
10:18
|
а где собственно код получения макета?
|
|||
36
bebibo
14.02.20
✎
10:21
|
(34) СОдержит табличный документ. Но почему то там макет - Ложь - булево
|
|||
37
Очевидно
14.02.20
✎
10:21
|
О, пятничные тролли подъехали)
|
|||
38
bebibo
14.02.20
✎
10:22
|
(35) Так вот он наверно при "НайтиПоНаименованию" берет же эту печатную форму, вот там этот макет и берется наверно. Разве нет? Зачем тогда он ищет эту ПФ? Чтобы наверно взять ее вместе с макетом
|
|||
39
D_E_S_131
14.02.20
✎
10:24
|
(36) Код из этой процедуры давай, а не что там "содержит". :)
|
|||
40
bebibo
14.02.20
✎
10:25
|
(39)
Функция СформироватьИСохранитьПечатнуюФорму(ДокументСсылка, СтруктураДанных, НастройкиОбмена) ПечатнаяФорма = Неопределено; ПутьКФайлу = ""; Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда НайденаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Счет на бланке"); Если Не НайденаяОбработка.Пустая() Тогда МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(ДокументСсылка); ОбъектыПечати = Новый СписокЗначений; ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = НайденаяОбработка.ХранилищеОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайла, Истина); ПечатнаяФорма = ОбработкаОбъект.ПечатьДокумента(МассивОбъектов, ОбъектыПечати, (Число(СтруктураДанных.sign) = 1)); ОбработкаОбъект = Неопределено; УдалитьФайлы(ИмяФайла); КонецЕсли; ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда НайденаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("ТОРГ12 на бланке"); Если Не НайденаяОбработка.Пустая() Тогда МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(ДокументСсылка); ОбъектыПечати = Новый СписокЗначений; ВключатьУслуги = Истина; ТаблицаСведенийТОРГ12 = Документы.РеализацияТоваровУслуг.ПолучитьТаблицуСведенийТОРГ12(МассивОбъектов, ВключатьУслуги); ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_ТОРГ12"; ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = НайденаяОбработка.ХранилищеОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайла, Истина); ПечатнаяФорма = ОбработкаОбъект.ПечатьДокумента(ТаблицаСведенийТОРГ12, ОбъектыПечати, ИмяПараметровПечати); ОбработкаОбъект = Неопределено; УдалитьФайлы(ИмяФайла); КонецЕсли; ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(ДокументСсылка); ОбъектыПечати = Новый СписокЗначений; ПечатнаяФорма = УчетНДС.ПечатьСчетовФактур1137(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур()); ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.АктСверкиВзаиморасчетов") Тогда МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(ДокументСсылка); ОбъектыПечати = Новый СписокЗначений; ПечатнаяФорма = ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати) КонецЕсли; Если ПечатнаяФорма <> Неопределено Тогда Если Число(СтруктураДанных.format) = 0 Тогда ПутьКФайлу = СтруктураДанных.ПутьКаталога + "\" + СтруктураДанных.Представление + ".xlsx"; ПечатнаяФорма.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX); ИначеЕсли Число(СтруктураДанных.format) = 1 Тогда ПутьКФайлу = СтруктураДанных.ПутьКаталога + "\" + СтруктураДанных.Представление + ".pdf"; ПечатнаяФорма.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF); КонецЕсли; Иначе ПутьКФайлу = ""; КонецЕсли; Возврат ПутьКФайлу; КонецФункции |
|||
41
D_E_S_131
14.02.20
✎
10:29
|
(40) Какой мрак!
Возьми элемент справочника "ДополнительныеОтчетыИОбработки", который находится по наименованию "Счет на бланке". Потом из его реквизита "ХранилищеОбработки" сохрани во внешний файл саму обработку печати. Потом открой эту сохраненную обработку в конфигураторе и в ее модуле объекта посмотри функцию "ПечатьДокумента()". Именно в ней будет код для получения макета. |
|||
42
Мимохожий Однако
14.02.20
✎
10:31
|
(0) Встань отладчиком на начало процедуры и шагая до места, где получаешь макет. Как найдёшь это место, долго думай.
|
|||
43
acht
14.02.20
✎
10:31
|
(38) >наверно
Вероятностное женское программирования (: Откуда такая уверенность, что: 1) НайденаяОбработка найдена верно 2) ОбработкаОбъект.ПечатьДокумента при этом наборе параметров использует исправленный макет, а не, например, общий? 3) Все это происходит вообще в нужной базе? |
|||
44
Мимохожий Однако
14.02.20
✎
10:36
|
(38) Повторюсь: Не гадай, встань на проблемное место отладчиком. Анализируй.
|
|||
45
Ifkerri
14.02.20
✎
10:38
|
(38) Надо просто ответить на все вопросы указанные в (43). Вот прямо все как надо написано
Либо обработка не та, либо макет не тот, либо база. |
|||
46
malem13
14.02.20
✎
10:44
|
1) в внешнюю печатную форму в какое-нибудь поле типа комментарий написать свое и при обращении в коде в журнал регистрации вывести значение этого поля
2) можно еще глобальный поиск по макетам сделать текста из печатной формы |
|||
47
bebibo
14.02.20
✎
10:45
|
Я решила!!!
Вы представляете!! Вы будете удивлены! Оказывается, эта ПФ содержит несколько областей, которые используются каждая в своем назначении! То есть область "ПодвалСчета" - я ней меняла текст. В 1С печатаю - всё хорошо. А через обмен -нет. Просто область "ПодвалСчета" - используется при печати из 1С. А есть еще область - ниже в макете (только сейчас увидела и чисто случайно пролистнула макет вниз, а там спустя пробелы есть еще области!!) А для СРМ точно такой же подвал, но по другому называется область"ПодвалСчетаСПодписьюИПечатью" - но данные там одни и те же, что в том подвале, что в том. Просто одна область подвала нужна для 1с, а другая для СРМ(не понятно зачем, но видимо может быть такое, что при печати из 1С одна и при печати из СРМ информация может меняться, поэтому и сделали 2 подвала). Боже мой, вот как так)) Печатную форму видела впервые. Зашла, изменила в подвале текст и сохранила -всё. Кто ж знал, что там ниже прокрутишь и потом появятся еще области)) Всем спасибо огромное, кто пытался помочь!!! |
|||
48
strange2007
14.02.20
✎
11:12
|
(47) Ох сколько же ещё сюрпризов тебя ожидает. Главное не сдаваться!
|
|||
49
Мимохожий Однако
14.02.20
✎
11:22
|
(47) ОФФ: Если ты мадама, то поменяй это в профиле.
|
|||
50
dka80
14.02.20
✎
11:29
|
(49) тебе это зачем?
|
|||
51
strange2007
14.02.20
✎
11:37
|
(49) Мадама? А я так понял это мужиГ
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |