Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Откуда данный код берет макет?

Откуда данный код берет макет?
Я
   bebibo
 
14.02.20 - 08:22
Здравствуйте!
Вчера тема не закрылась. Вопрос остается открытым.
Помогите пожалуйста.
Есть обработка обмена 1С и СРМ.
Кидаю в папку файл запрос счета, код мне возвращает ответ и печатную форму в формате пдф.
Вот эта печатная берется из базы. Вот таким образом: НайденаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Счет на бланке");
Открываю данный справочник, беру печатную форму "Счет на бланке", сохраняю к себе на пк. Меняю макет (текст только немного, 2 предложения добавлено). Сохраняю эту ПФ.Загружаю опять в базу обратно. Печатаю из 1с - печатается с моими изменениями.
А если запускаю обработку обмена СРМ и 1С,то оттуда макет печатается без моих изменений!
Как такое может быть, если эта печатная форма берется из базы, а в базе то она нормальная, с изменениями, а печатается без изменений?
   END
 
1 - 14.02.20 - 08:25
"Есть обработка обмена 1С и СРМ" вот у вас есть, вы и смотрите в отладчике откуда что берется. Или вы думаете, что у всех "Есть обработка обмена 1С и СРМ"?
   bebibo
 
2 - 14.02.20 - 08:26
(1) Что конкретно смотреть???
   bebibo
 
3 - 14.02.20 - 08:27
Переменная НайденнаяОбработка.
Значение: Счет на бланке
Тип: СправочникСсылка.ДополнительныеотчетыИОбработки
   bebibo
 
4 - 14.02.20 - 08:27
(1) Вы думаете я не смотрела???
   bebibo
 
5 - 14.02.20 - 08:30
Вообще как такое может быть? Это какой то бред.Никак не могу понять((
   arsik
 
6 - 14.02.20 - 08:31
Кеш почисти
   bebibo
 
7 - 14.02.20 - 08:33
(6) где?
   arsik
 
8 - 14.02.20 - 08:34
Везде.
   bebibo
 
9 - 14.02.20 - 08:39
В общем понятно..Никто не знает тоже
   bebibo
 
10 - 14.02.20 - 08:39
Голову можно блин сломать!
Как додуматься, почему такое происходит
   bebibo
 
11 - 14.02.20 - 08:47
как такое может быть? Если обработка тащит ПФ из БАЗЫЫЫ
   ДенисЧ
 
12 - 14.02.20 - 08:50
(9) "Ты знаешь, как переводится I don't konw"?
не знаю".
"Вот блин! Никто не знает!..."
   bebibo
 
13 - 14.02.20 - 08:50
Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда
            
            НайденаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Счет на бланке");
            
            Если Не НайденаяОбработка.Пустая() Тогда
                
                МассивОбъектов = Новый Массив;
                МассивОбъектов.Добавить(ДокументСсылка);
                
                ОбъектыПечати = Новый СписокЗначений;
                
                ИмяФайла = ПолучитьИмяВременногоФайла();
                ДвоичныеДанные = НайденаяОбработка.ХранилищеОбработки.Получить();
                ДвоичныеДанные.Записать(ИмяФайла); 
                
                ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайла, Истина);
                ПечатнаяФорма = ОбработкаОбъект.ПечатьДокумента(МассивОбъектов, ОбъектыПечати, (Число(СтруктураДанных.sign) = 1));
                ОбработкаОбъект = Неопределено;
                
                УдалитьФайлы(ИмяФайла);
                
            КонецЕсли;
   Михаил Михайлович
 
14 - 14.02.20 - 08:58
(13) хороший код.
   bebibo
 
15 - 14.02.20 - 08:59
(14) эх, к сожалению мне ваши слова не помогли в решении проблемы..
   Михаил Михайлович
 
16 - 14.02.20 - 08:59
(15) может потому, что проблемы нет?
   bebibo
 
17 - 14.02.20 - 09:01
(16) Как нет? Если она есть. Откуда берется тот макет?
   Михаил Михайлович
 
18 - 14.02.20 - 09:02
(17) а подумать?
   djekting
 
19 - 14.02.20 - 09:03
хорошая тема... пятничная... пойду чаю заварю...
   bebibo
 
20 - 14.02.20 - 09:05
(18) Тут думать нет смысла. Ситуация не логичная. Код тащит ПФ из базы. В базе ПФ нормальная, с изменениями. Откуда он там еще этот старый макет берет - ну вообще не понятно
   bebibo
 
21 - 14.02.20 - 09:05
(19) ааа(((((
   dka80
 
22 - 14.02.20 - 09:07
Добавить сообщить() в каждое место: в форму твоей обработки, в форму внешней печатной формы в начало каждой процедуры, в каждый цикл, в каждое условие и смотри выводится твое сообщение или нет.
   Михаил Михайлович
 
23 - 14.02.20 - 09:09
(20) про кэш уже кажется упоминали в этой теме, но автор не читатель, автор писатель
   Сияющий в темноте
 
24 - 14.02.20 - 09:09
ну поставь уже точку останова на этом месте и смотри,что происходит.
найти по наименованию,иногда,преподносит сюрпризы.
с учетом того,что в команде обработка подключается не по наименованию.
   acht
 
25 - 14.02.20 - 09:14
(22) ... в каждую базу (:
   Ifkerri
 
26 - 14.02.20 - 09:14
Да в базе 100% две или больше внешних обработок с таким наименование (или похожим). Вторым параметром в методе НайтиПоНаименованию() можно указать необходимость поиска по точному соответствию.
Автор меняет макет в одной обработке, а в коде используется другая.
А вообще пользоваться этим методом не стоит -_-
   Lama12
 
27 - 14.02.20 - 09:17
(0) А кэш то почищен?
   Lama12
 
28 - 14.02.20 - 09:19
Кстати. Еще можно сделать замер производительности и посмотреть всю трассу выполнения кода. Может там действительно, как говорит (26), две обработки.
   strange2007
 
29 - 14.02.20 - 09:26
Автор, почисти кэш. Точно говорю.

По правде для многих просто нереально найти ответ в такой ситуации. Первый раз с этим столкнулся лет 12-13 назад, когда дружбан попросил совета по вопросу, что счётчик документов, сделанный на константе (!!!!!!) вызывает блокировки базы. Сказал ему переделать на регистр и мозг не парить. Мы час стояли и рассуждали об этом. Я ему объяснял, что тестовая моделька за 20 минут делается. Проверил, принял решение и проблемы нет. А он задумчиво всё твердил "ну чего же она блокируется". Через пол года мы встретились опять и он к этому времени так и не решил проблему.
Да и тут, на мисте, подобные хохмы случаются. Сначала я смеялся и удивлялся, а потом понял, что большинству людей просто трудно собрать алгоритм отладки в голове. Так что, друзья, отнеситесь с пониманием к автору
   strange2007
 
30 - 14.02.20 - 09:30
Ох, автор, если бы ты только представлял на сколько жесток мир. Я вот тут вижу одну печатную форму из бизнес-процесса, которая тянет часть готового макета из РТУ, который тянет кусок печатной формы из внешней обработки, которая получает отчёт из внешнего отчёта, который на выбор получает макеты и данные из разных баз. А ещё иногда это всё вытягивает какие-то обработки из сети. Всё это без описания. Таких обработок тут под сотню. Некоторые из них инициируются при помощи вёб-приложений, то ли сишный, то ли ассемблерный механизм ещё есть. Не удивлюсь, если тут найду солнечный индикатор, от которого тоже что-то будет запускаться
 
 Рекламное место пустует
   bebibo
 
31 - 14.02.20 - 10:01
(27) почистила в папке темп, не помогло, где еще надо может?
   bebibo
 
32 - 14.02.20 - 10:02
(28) посмотрю сейчас
   Salimbek
 
33 - 14.02.20 - 10:06
(31) %appdata%
   D_E_S_131
 
34 - 14.02.20 - 10:17
"ОбработкаОбъект.ПечатьДокумента(..." - вот внутри этой функции нужно смотреть откуда берется макет.
   pechkin
 
35 - 14.02.20 - 10:18
а где собственно код получения макета?
   bebibo
 
36 - 14.02.20 - 10:21
(34) СОдержит табличный документ. Но почему то там макет - Ложь - булево
   Очевидно
 
37 - 14.02.20 - 10:21
О, пятничные тролли подъехали)
   bebibo
 
38 - 14.02.20 - 10:22
(35) Так вот он наверно при "НайтиПоНаименованию" берет же эту печатную форму, вот там этот макет и берется наверно. Разве нет? Зачем тогда он ищет эту ПФ? Чтобы наверно взять ее вместе с макетом
   D_E_S_131
 
39 - 14.02.20 - 10:24
(36) Код из этой процедуры давай, а не что там "содержит". :)
   bebibo
 
40 - 14.02.20 - 10:25
(39)
Функция СформироватьИСохранитьПечатнуюФорму(ДокументСсылка, СтруктураДанных, НастройкиОбмена)
        
        ПечатнаяФорма = Неопределено;
        
        ПутьКФайлу = "";
        
        Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда
            
            НайденаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Счет на бланке");
            
            Если Не НайденаяОбработка.Пустая() Тогда
                
                МассивОбъектов = Новый Массив;
                МассивОбъектов.Добавить(ДокументСсылка);
                
                ОбъектыПечати = Новый СписокЗначений;
                
                ИмяФайла = ПолучитьИмяВременногоФайла();
                ДвоичныеДанные = НайденаяОбработка.ХранилищеОбработки.Получить();
                ДвоичныеДанные.Записать(ИмяФайла); 
                
                ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайла, Истина);
                ПечатнаяФорма = ОбработкаОбъект.ПечатьДокумента(МассивОбъектов, ОбъектыПечати, (Число(СтруктураДанных.sign) = 1));
                ОбработкаОбъект = Неопределено;
                
                УдалитьФайлы(ИмяФайла);
                
            КонецЕсли;            
            
        ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда    
            
            НайденаяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("ТОРГ12 на бланке");
            
            Если Не НайденаяОбработка.Пустая() Тогда
                
                МассивОбъектов = Новый Массив;
                МассивОбъектов.Добавить(ДокументСсылка);
                
                ОбъектыПечати = Новый СписокЗначений;
                
                ВключатьУслуги = Истина;
                ТаблицаСведенийТОРГ12 = Документы.РеализацияТоваровУслуг.ПолучитьТаблицуСведенийТОРГ12(МассивОбъектов, ВключатьУслуги);
                ИмяПараметровПечати    = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_ТОРГ12";
                
                ИмяФайла = ПолучитьИмяВременногоФайла();
                ДвоичныеДанные = НайденаяОбработка.ХранилищеОбработки.Получить();
                ДвоичныеДанные.Записать(ИмяФайла);
                
                ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайла, Истина);
                ПечатнаяФорма = ОбработкаОбъект.ПечатьДокумента(ТаблицаСведенийТОРГ12, ОбъектыПечати, ИмяПараметровПечати);
                ОбработкаОбъект = Неопределено;
                
                УдалитьФайлы(ИмяФайла);
                
            КонецЕсли;
            
        ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
            
            МассивОбъектов = Новый Массив;
            МассивОбъектов.Добавить(ДокументСсылка);
            
            ОбъектыПечати = Новый СписокЗначений;
            
            ПечатнаяФорма = УчетНДС.ПечатьСчетовФактур1137(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур());
            
        ИначеЕсли ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.АктСверкиВзаиморасчетов") Тогда
            
            МассивОбъектов = Новый Массив;
            МассивОбъектов.Добавить(ДокументСсылка);
            
            ОбъектыПечати = Новый СписокЗначений;
            
            ПечатнаяФорма = ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати)
            
        КонецЕсли;    
        
        Если ПечатнаяФорма <> Неопределено Тогда
            
            Если Число(СтруктураДанных.format) = 0 Тогда
                
                ПутьКФайлу = СтруктураДанных.ПутьКаталога + "\" + СтруктураДанных.Представление + ".xlsx";
                
                ПечатнаяФорма.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
                
            ИначеЕсли Число(СтруктураДанных.format) = 1 Тогда
                
                ПутьКФайлу = СтруктураДанных.ПутьКаталога + "\" + СтруктураДанных.Представление + ".pdf";
                
                ПечатнаяФорма.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);
                
            КонецЕсли;    
            
        Иначе
            
            ПутьКФайлу = "";
            
        КонецЕсли;    
        
        Возврат ПутьКФайлу;    
        
    КонецФункции
   D_E_S_131
 
41 - 14.02.20 - 10:29
(40) Какой мрак!
Возьми элемент справочника "ДополнительныеОтчетыИОбработки", который находится по наименованию "Счет на бланке". Потом из его реквизита "ХранилищеОбработки" сохрани во внешний файл саму обработку печати. Потом открой эту сохраненную обработку в конфигураторе и в ее модуле объекта посмотри функцию "ПечатьДокумента()". Именно в ней будет код для получения макета.
   МимохожийОднако
 
42 - 14.02.20 - 10:31
(0) Встань отладчиком на начало процедуры и шагая до места, где получаешь макет. Как найдёшь это место, долго думай.
   acht
 
43 - 14.02.20 - 10:31
(38) >наверно
Вероятностное женское программирования (:

Откуда такая уверенность, что:
1) НайденаяОбработка найдена верно
2) ОбработкаОбъект.ПечатьДокумента при этом наборе параметров использует исправленный макет, а не, например, общий?
3) Все это происходит вообще в нужной базе?
   МимохожийОднако
 
44 - 14.02.20 - 10:36
(38) Повторюсь: Не гадай, встань на проблемное место отладчиком. Анализируй.
   Ifkerri
 
45 - 14.02.20 - 10:38
(38) Надо просто ответить на все вопросы указанные в (43). Вот прямо все как надо написано
Либо обработка не та, либо макет не тот, либо база.
   malem13
 
46 - 14.02.20 - 10:44
1) в внешнюю печатную форму в какое-нибудь поле типа комментарий написать свое и при обращении в коде в журнал регистрации вывести значение этого поля
2) можно еще глобальный поиск по макетам сделать текста из печатной формы
   bebibo
 
47 - 14.02.20 - 10:45
Я решила!!!
Вы представляете!! Вы будете удивлены!
Оказывается, эта ПФ содержит несколько областей, которые используются каждая в своем назначении!
То есть область "ПодвалСчета" - я  ней меняла текст. В 1С печатаю - всё хорошо. А через обмен -нет.
Просто область "ПодвалСчета" - используется при печати из 1С. А есть еще область - ниже в макете (только сейчас увидела и чисто случайно пролистнула макет вниз, а там спустя пробелы есть еще области!!)
А для СРМ точно такой же подвал, но по другому называется область"ПодвалСчетаСПодписьюИПечатью" - но данные там одни и те же, что в том подвале, что в том. Просто одна область подвала нужна для 1с, а другая для СРМ(не понятно зачем, но видимо может быть такое, что при печати из 1С одна и при печати из СРМ информация может меняться, поэтому и сделали 2 подвала).
Боже мой, вот как так))
Печатную форму видела впервые. Зашла, изменила в подвале текст и сохранила -всё.
Кто ж знал, что там ниже прокрутишь и потом появятся еще области))
Всем спасибо огромное, кто пытался помочь!!!
   strange2007
 
48 - 14.02.20 - 11:12
(47) Ох сколько же ещё сюрпризов тебя ожидает. Главное не сдаваться!
   МимохожийОднако
 
49 - 14.02.20 - 11:22
(47) ОФФ: Если ты мадама, то поменяй это в профиле.
   dka80
 
50 - 14.02.20 - 11:29
(49) тебе это зачем?
   strange2007
 
51 - 14.02.20 - 11:37
(49) Мадама? А я так понял это мужиГ


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.