Просьба помочь с задачей, необходимо создать Константу с типом ХранилищаЗначения с записью в нее xls файла и после вызывать файл с другого места.Создаю Константу(ИнформацияПриЗапуске_КураторыПодразделений ) с типом ХранилищеЗначения ,также создаю свою форму с командой,реквизитом Строки (СсылкаНаФайл) :
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(СсылкаНаФайл) Тогда
ТекущийОбъект.ИнформацияПриЗапуске_КураторыПодразделений = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(СсылкаНаФайл));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрикрепитьФайл(Команда)
ДиалогОткрытия = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытия.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";
ДиалогОткрытия.Заголовок = "Выберите файл для сохранения";
ДиалогОткрытия.МножественныйВыбор = Ложь;
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗагрузкиФайла", ЭтотОбъект);
ДиалогОткрытия.Показать(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗагрузкиФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
НачатьПомещениеФайлаНаСервер(ОписаниеОповещения,,,,ВыбранныеФайлы[0], УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(ОписаниеПомещенногоФайла, ДополнительныеПараметры) Экспорт
Если ОписаниеПомещенногоФайла = Неопределено Тогда
Возврат;
КонецЕсли;
СсылкаНаФайл = ОписаниеПомещенногоФайла.Адрес;
КонецПроцедуры
Показать
1 вопрос не совсем понимаю почему когда записываю форму Константы через "записать и закрыть" не проваливаюсь отладкой в событие ПередЗаписьюНаСервере.
2 Часть.Потом из Обработки пытаюсь вызвать мою константу с типом ХранилищеЗначения и после открыть файл.Но не совсем понимаю как это правильно сделать, спотыкаюсь на действии Записать.Натолкните пожалуйста.
&НаКлиенте
Процедура ДекорацияНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = "FileOnServerKuratoryPodrazdeleniya_xlsx" Тогда
СтандартнаяОбработка = Ложь;
ПутьКФайлу = ПолучитьКонстантуИнформацияПриЗапуске_КураторыПодразделений();
// Проверяем, что путь не пустой
Если ТипЗнч(ПутьКФайлу)<> Тип("Неопределено") Тогда
// Открываем файл
//ВремФайл = КаталогВременныхФайлов()+ "Файл.xlsx";
Эксель = "xlsx" ;
ПолучИмяВрФ = ПолучитьИмяВременногоФайла(Эксель);
//(*.xlsx)|*.xlsx";
//ДвоичныеДанные = Новый ДвоичныеДанные (ВремФайл);
//ВремФайл = ПоместитьВоВременноеХранилище(ПутьКФайлу,ВремФайл);
ПутьКФайлу.Записать(ПолучИмяВрФ);
//НачатьПомещениеФайлаНаСервер(,,,ВремФайл,ПутьКФайлу,УникальныйИдентификатор);
ЗапуститьПриложение(ПолучИмяВрФ);
Иначе
// Сообщаем пользователю, что путь не задан
Сообщить("Файл отсутствует в базе !");
КонецЕсли;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьКонстантуИнформацияПриЗапуске_КураторыПодразделений()
Возврат Константы.ИнформацияПриЗапуске_КураторыПодразделений.Получить();
КонецФункции
(2) Ну вот так начальник мой поставил задачу для реализации, в целом звучит реально.Что не так? Если нам можно, чтобы Тестировщики сами обновляли файл через Константу, а не нас часто просили через Заявки.
(7) Чел, тебе заняться нечем?
Я лишь попросил натолкнуть/помочь с задачей, а не спам от вас двоих бестолковый.
Если вариант через Константу не очень, то так бы и сказали.
Ночь, все спят. Вдруг в квартиру раздаётся звонок. Муж пошёл открывать, смотрит — на пороге стоит какой-то нетрезвый мужик:
— Приятель, помоги меня толкануть! Тут недалеко, во дворе.
— Мужик, ты офигел? Три часа ночи, какой толкануть! Иди отсюда! — и закрыл дверь. Только лёг в постель, как жена говорит ему:
— Я всё слышала. Иди, помоги мужику! Помнишь, мы как-то застряли ночью под дождём на дороге, и нам помогал какой-то незнакомый парнишка? Иди, помоги человеку!
Муж недовольно вылезает из кровати, одевается, спускается во двор и кричит:
— Эй, мужик, ты где?
Из темноты раздаётся голос:
— Я тут!
— Да где — тут?
— Тут недалеко, на качелях!
Если вариант через Константу не очень, то так бы и сказали.
А ты разве спрашивал про варианты? Может, ты сказал, что вот у тебя стоит задача такая-то, какими средствами её корректнее решить?
Нет. Ты сказал, что тебе уже необходимо затолкать файл в константу. То есть ты уже принял свой вариант решения как единственно верный. Зачем? ХЗ...
Если ты вдруг решишь, что научиться летать небходимо прыгая с небоскреба, и просишь тебя "подтолкнуть" (про качели, да) - то вряд ли ты от нас тут увидишь помощи.
И если ты считаешь слова "чел, прыгать с небоскреба - хреновая затея" спамом - ну... Тогда лучше прыгни. Приятного полёта!
(12) Хорошо, я в 1С около года и с курсов не проходил что можно, а что нельзя в Константу засовывать.По статье мне показалось это реализуемо, если нельзя, то в чем было сложность сразу сказать или объяснить нормально?
(18) Я правильно понял, что ты переживаешь, что ему будет неудобно пользоваться константой для получения файла и ты где-то предложил более удобный вариант?
— …предлагаю вам взять несколько журналов — в пользу детей Германии! По полтиннику штука!
— Нет, не возьму.
— Но почему вы отказываетесь?
— Не хочу.
— Вы не сочувствуете детям Германии?
— Сочувствую.
— А, полтинника жалко?!
— Нет.
— Так почему же?
— Не хочу.
— Знаете ли, профессор — если бы вы не были европейским светилом и за вас не заступились бы самым возмутительным образом, вас следовало бы арестовать!
— За что?!..
— А вы не любите пролетариат!
(25)Ну никто не приходил к вам домой с вопросами "что делать с константой". Поэтому аналогия не уместна. Тут собственно только личное желание повозиться в этом. Точнее прийти в тему и показать какой же ты умный и все понимаешь. Но сказать по существу ничего не можешь\ не хочешь.
Ну можешь для начала поразмышлять - что такое произвольный тип в 1С.
В ХЗ ты же можешь запаковать произвольный тип, правда?
Так вот вопрос: произвольный - это все, что тебе заблагорассудится?
ФайлДвоичныеДанные = Новый ДвоичныеДанные("С:\import\КураторыПодразделений.xls");
Хранилище_Файл = Новый ХранилищеЗначения(ФайлДвоичныеДанные, Новый СжатиеДанных(0));
Константы.КураторыПодразделений.Установить(Хранилище_Файл);
вопрос не совсем понимаю почему когда записываю форму Константы через "записать и закрыть" не проваливаюсь отладкой в событие ПередЗаписьюНаСервере.
Не включена отладка на сервере
Спотыкаюсь на действии Записать.Натолкните пожалуйста.
Если ты спотыкаешься, то здорово было бы понять еще, что с тобой происходит в этот момент. Программа наверняка сообщает в чем дело, приводи информацию об ошибке.
В приведенном тобой коде много проблем. Давай начнем сначала.
Вот здесь плохо
ТекущийОбъект.ИнформацияПриЗапуске_КураторыПодразделений = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(СсылкаНаФайл));
Тебе жалко одной строки, зачем такие километровые неотлаживаемые конструкции?
Давай разложим:
ЗначениеИзВременного = ПолучитьИзВременногоХранилища(СсылкаНаФайл);
ДанныеВРеквизит = Новый ХранилищеЗначения(ЗначениеИзВременного);
ТекущийОбъект.ИнформацияПриЗапуске_КураторыПодразделений = ДанныеВРеквизит;
Так уже легче дышится. Здесь можно(и нужно) посмотреть, что находится и в "ЗначениеИзВременного" и как оно ляжет (и можно ли его сразу же оттуда взять) в твой реквизит. На каком этапе ты ошибся, если ошибся. Тебе надо посмотреть, что на всех этапах у тебя двоичные данные. Проверять работает оно так или нет, не буду ибо лень, моделировать тестовые данные.
Переименуй переменную "ПутьКФайлу" ибо там никакой не путь. Должны там быть там двоичные данные. Судя по логике которую ты понимаешь. Но скорее всего, там значение с типом "ХранилищеЗначений". И именно поэтому, ты спотыкаешься на методе Записать()