Имя: Пароль:
1C
1С v8
У пользователей "теряются" некоторые реквизиты формы.
0 ahmato
 
15.06.15
17:49
Добрый день, коллеги!
Обнаружился очень интересный момент.
Платформа: 8.2.19.80
Конфигурация: БП 2.0 релиз из последних.
Написал не большой функциональчик, чтоб подцеплять копии документов (счетов, договоров) в любом формате на форме документа. Для сохранения пути до копии документа в сети завел реквизит "файл"(тип - строка, длина - 1024), для сохранения наименования документа создал реквизит "файл1"(тип - строка, длина - 1024).
Код:
Процедура ПрисоединенныйфайлНажатие(Элемент)
если ЗначениеЗаполнено(файл) тогда
        Кнопки ();
        //создаем меню
                иначе
                ПутьКФайлу = "\\optimus\1cdoc$\";
                КатПроект = проект.Наименование;
                ИмяКаталога = ПутьКФайлу+КатПроект+"\";
                ИмяСчета = ИмяКаталога+"счета"+"\";
                КаталогНаДиске = Новый Файл(ИмяКаталога);
                СчетНаДиске =  Новый Файл(ИмяСчета);
                Если КаталогНаДиске.Существует() Тогда
                    Если СчетНаДиске.Существует() Тогда
                        Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
                        Диалог.Заголовок = "Выберите файл:";
                        Диалог.ПолноеИмяФайла = "";
                        Диалог.ПредварительныйПросмотр = Истина;
                        Диалог.Фильтр =
                        "Все форматы (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.emf|"
                        + "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|"
                        + "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
                        + "Формат TIFF (*.tif)|*.tif|"
                        + "Формат GIF (*.gif)|*.gif|"
                        + "Формат PNG (*.png)|*.png|"
                        + "Формат icon (*.ico)|*.ico|"
                        + "Формат PDF (*.pdf)|*.pdf|"
                        + "Формат PDF (*.doc)|*.doc|"
                        + "Формат PDF (*.docx)|*.docx|"
                        + "Формат XSL (*.xls)|*.xls|"
                        + "Формат XSLX (*.xlsx)|*.xlsx|"
                        + "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; // картинки
                        
                        Если Диалог.Выбрать() Тогда
                            ВыбФайл = Новый Файл(Диалог.ПолноеИмяФайла);
                            КопироватьФайл(Диалог.ПолноеИмяФайла, СчетНаДиске.ПолноеИмя+"\"+"Счет_к_заявке_"+номер+"_от_"+формат(Дата,"ДЛФ=Д")+"_"+ВыбФайл.Имя);
                            СсылкаФайл=СчетНаДиске.ПолноеИмя+"\"+"Счет_к_заявке_"+номер+"_от_"+формат(Дата,"ДЛФ=Д")+"_"+ВыбФайл.Имя;
                            ЭлементыФормы.Присоединенныйфайл.Значение = "Копия счета к заявке "+номер+" от "+формат(Дата,"ДЛФ=Д");
                            файл = СсылкаФайл;
                            файл1 = "Копия счета к заявке "+номер+" от "+формат(Дата,"ДЛФ=Д");
                            т=файл1;
                        Иначе
                            Отказ = Истина;
                            Возврат;
                        КонецЕсли;
                    иначе
                        СоздатьКаталог(ИмяСчета);
                        Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
                        Диалог.Заголовок = "Выберите файл со счетом:";
                        Диалог.ПолноеИмяФайла = "";
                        Диалог.ПредварительныйПросмотр = Истина;
                        Диалог.Фильтр =
                        "Все форматы (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.emf|"
                        + "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|"
                        + "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
                        + "Формат TIFF (*.tif)|*.tif|"
                        + "Формат GIF (*.gif)|*.gif|"
                        + "Формат PNG (*.png)|*.png|"
                        + "Формат icon (*.ico)|*.ico|"
                        + "Формат PDF (*.pdf)|*.pdf|"
                        + "Формат PDF (*.doc)|*.doc|"
                        + "Формат PDF (*.docx)|*.docx|"
                        + "Формат XSL (*.xls)|*.xls|"
                        + "Формат XSLX (*.xlsx)|*.xlsx|"
                        + "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; // картинки
                        
                        Если Диалог.Выбрать() Тогда
                            ВыбФайл = Новый Файл(Диалог.ПолноеИмяФайла);
                            КопироватьФайл(Диалог.ПолноеИмяФайла, СчетНаДиске.ПолноеИмя+"\"+"Счет_к_заявке_"+номер+"_от_"+формат(Дата,"ДЛФ=Д")+"_"+ВыбФайл.Имя);
                            
                            СсылкаФайл=СчетНаДиске.ПолноеИмя+"\"+"Счет_к_заявке_"+номер+"_от_"+формат(Дата,"ДЛФ=Д")+"_"+ВыбФайл.Имя;
                            ЭлементыФормы.Присоединенныйфайл.Значение = "Копия счета к заявке "+номер+" от "+формат(Дата,"ДЛФ=Д");
                            файл = СсылкаФайл;
                            файл1 = "Копия счета к заявке "+номер+" от "+формат(Дата,"ДЛФ=Д");
                            
                            
                        Иначе
                            Отказ = Истина;
                            Возврат;
                        КонецЕсли;
                        
                    КонецЕсли;
                Иначе
                    СоздатьКаталог(ИмяКаталога);
                    СоздатьКаталог(ИмяСчета);
                    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
                    Диалог.Заголовок = "Выберите файл со счетом:";
                    Диалог.ПолноеИмяФайла = "";
                    Диалог.ПредварительныйПросмотр = Истина;
                    Диалог.Фильтр =
                    "Все форматы (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.emf|"
                        + "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|"
                        + "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
                        + "Формат TIFF (*.tif)|*.tif|"
                        + "Формат GIF (*.gif)|*.gif|"
                        + "Формат PNG (*.png)|*.png|"
                        + "Формат icon (*.ico)|*.ico|"
                        + "Формат PDF (*.pdf)|*.pdf|"
                        + "Формат DOC (*.doc)|*.doc|"
                        + "Формат DOCX (*.docx)|*.docx|"
                        + "Формат XSL (*.xls)|*.xls|"
                        + "Формат XSLX (*.xlsx)|*.xlsx|"
                        + "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; // картинки
                    
                    Если Диалог.Выбрать() Тогда
                        ВыбФайл = Новый Файл(Диалог.ПолноеИмяФайла);
                        КопироватьФайл(Диалог.ПолноеИмяФайла, СчетНаДиске.ПолноеИмя+"\"+"Счет_к_заявке_"+номер+"_от_"+формат(Дата,"ДЛФ=Д")+"_"+ВыбФайл.Имя);
                        
                        СсылкаФайл=СчетНаДиске.ПолноеИмя+"\"+"Счет_к_заявке_"+номер+"_от_"+формат(Дата,"ДЛФ=Д")+"_"+ВыбФайл.Имя;
                        ЭлементыФормы.Присоединенныйфайл.Значение = "Копия счета к заявке "+номер+" от "+формат(Дата,"ДЛФ=Д");
                        файл = СсылкаФайл;
                        файл1 = "Копия счета к заявке "+номер+" от "+формат(Дата,"ДЛФ=Д");
                        
                        
                    Иначе
                        Отказ = Истина;
                        Возврат;
                    КонецЕсли;
                    
                КонецЕсли;
            КонецЕсли;    
        КонецПроцедуры

Ситуация:
Звонит пользователь, говорит что при попытке открыть любой документ в журнале выскакивает ошибка: "Переменная не определена...",  как раз переменные файл и файл1. Думаю что за хрен, запускаю 1С у себя на компе под этим пользователем, все нормально. Звоню обратно, говорю что все работает, он утверждает обратное. Подхожу значит, действительно ошибка. Захожу под своей учеткой тоже самое, что интересно, захожу в режиме конфигуратора, в этом документе действительно этих реквизитов нет. Думаю нифигассе, немного пободавшись , почистил все по пути -C:\Users\XXXXXXXX\AppData\Local\1C\1Cv82/, и о чудо, все заработало. Как бы сделал и забыл. Но сегодня опять та же ошибка, теперь только у другого пользователя. Может кто сталкивался с таким, что это?
1 ВРедная
 
15.06.15
17:51
2 fisher
 
15.06.15
17:51
Это сбой демонического обновления.
3 Nuobu
 
15.06.15
17:51
(0) Кэш.
4 ahmato
 
15.06.15
17:59
(1) Уважаемая, по описанию моих действии выше, уже должно ясно что локальный кэш 1С чистить умею, меня интересует почему это приходится делать? Так сказать предпосылки.

(2) Сбой? Сдается мне, что это из за самих переменных, возможно из за их длины.
Короче вот незнаю что думать.
5 Nuobu
 
15.06.15
18:02
(4) Человек из (2) написал "сбой" не потому, что у Вас что-то не правильно обновилось, а от того, что при динамическом обновлении не всегда правильно обновляются формы в 1С.
Когда такое случается, то у многих пользователей остаются старые формы с новым кодом.
И лечение - это (1) , то есть чистка кэша.
6 ВРедная
 
15.06.15
18:07
(4) Если умеете, то видимо знаете почему и зачем его чистят. Но в этом случае не было бы и топика, верно?

А про цепочку "сбои при динамическом обновлении -> проблемы с конфигурацией - > очистка кэша" не знает только очень ленивый нечитатель мисты.
7 ahmato
 
15.06.15
18:22
(5) Да я уже примерно догадался, правда пошел с другой стороны, я начал вспоминать что делал с этой формой кроме того что функциональцик добавил.

(6) Знаю и почему и зачем, но про цепочку скажем так забыл. Поэтому Вы меня убедительно убедили, что я очень ленивый не читатель мисты! :)))

Из того что вспомнил: данная форма имеет несколько страниц (как пример можно взять форму СписаниеСРасчетногоСчета), недавно, как раз перед жалобами пользователей, перелопатил все страницы, меняя состав реквизитов и некоторый код связанный сними. Придется у всех пользователей почистить Кэш.

Тема закрыта. Спасибо за помощь в понимании сути проблемы.