Константа с типом ХранилищеЗначения

1. vladislav25_00 12.10.24 22:15 Сейчас в теме
Просьба помочь с задачей, необходимо создать Константу с типом ХранилищаЗначения с записью в нее xls файла и после вызывать файл с другого места.Создаю Константу(ИнформацияПриЗапуске_КураторыПодразделений ) с типом ХранилищеЗначения ,также создаю свою форму с командой,реквизитом Строки (СсылкаНаФайл) :

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	
	Если ЭтоАдресВременногоХранилища(СсылкаНаФайл) Тогда
				
		ТекущийОбъект.ИнформацияПриЗапуске_КураторыПодразделений = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(СсылкаНаФайл));
				
	КонецЕсли;
	
КонецПроцедуры



&НаКлиенте
Процедура ПрикрепитьФайл(Команда)
	
		
	ДиалогОткрытия = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытия.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";
    ДиалогОткрытия.Заголовок = "Выберите файл для сохранения"; 
	ДиалогОткрытия.МножественныйВыбор = Ложь;
    ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗагрузкиФайла", ЭтотОбъект);
	ДиалогОткрытия.Показать(ОписаниеОповещения); 

                 	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗагрузкиФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	Если ВыбранныеФайлы = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
	НачатьПомещениеФайлаНаСервер(ОписаниеОповещения,,,,ВыбранныеФайлы[0], УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеПомещенияФайла(ОписаниеПомещенногоФайла, ДополнительныеПараметры) Экспорт
	Если ОписаниеПомещенногоФайла = Неопределено Тогда
		Возврат;
	КонецЕсли;
    СсылкаНаФайл = ОписаниеПомещенногоФайла.Адрес;
КонецПроцедуры

Показать

1 вопрос не совсем понимаю почему когда записываю форму Константы через "записать и закрыть" не проваливаюсь отладкой в событие ПередЗаписьюНаСервере.

2 Часть.Потом из Обработки пытаюсь вызвать мою константу с типом ХранилищеЗначения и после открыть файл.Но не совсем понимаю как это правильно сделать, спотыкаюсь на действии Записать.Натолкните пожалуйста.

&НаКлиенте
Процедура ДекорацияНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	Если НавигационнаяСсылкаФорматированнойСтроки = "FileOnServerKuratoryPodrazdeleniya_xlsx" Тогда
        СтандартнаяОбработка = Ложь;        
        ПутьКФайлу = ПолучитьКонстантуИнформацияПриЗапуске_КураторыПодразделений();
        
        // Проверяем, что путь не пустой
		Если ТипЗнч(ПутьКФайлу)<> Тип("Неопределено")   Тогда
		    // Открываем файл  
			//ВремФайл = КаталогВременныхФайлов()+ "Файл.xlsx";  
			Эксель = "xlsx" ;
			ПолучИмяВрФ = ПолучитьИмяВременногоФайла(Эксель);
			//(*.xlsx)|*.xlsx";
            //ДвоичныеДанные = Новый ДвоичныеДанные (ВремФайл);		
		    //ВремФайл = ПоместитьВоВременноеХранилище(ПутьКФайлу,ВремФайл);
			ПутьКФайлу.Записать(ПолучИмяВрФ);

			//НачатьПомещениеФайлаНаСервер(,,,ВремФайл,ПутьКФайлу,УникальныйИдентификатор);
			ЗапуститьПриложение(ПолучИмяВрФ);
		Иначе
		    // Сообщаем пользователю, что путь не задан
		    Сообщить("Файл отсутствует в базе !");
		КонецЕсли;
		Возврат;
    КонецЕсли;

	
	
КонецПроцедуры


&НаСервере
Функция ПолучитьКонстантуИнформацияПриЗапуске_КураторыПодразделений()
    Возврат Константы.ИнформацияПриЗапуске_КураторыПодразделений.Получить();
КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2033930 13.10.24 09:23 Сейчас в теме
Файл в константу? Не перестаю удивляться.
3. пользователь 13.10.24 09:29
Сообщение было скрыто модератором.
...
5. пользователь 13.10.24 10:15
Сообщение было скрыто модератором.
...
4. vladislav25_00 13.10.24 09:40 Сейчас в теме
(2) Ну вот так начальник мой поставил задачу для реализации, в целом звучит реально.Что не так? Если нам можно, чтобы Тестировщики сами обновляли файл через Константу, а не нас часто просили через Заявки.
6. user2033930 13.10.24 10:23 Сейчас в теме
(4) То есть начальник прямо так и сказал - "надо хранить файл в константе!" Да?
7. user1880116 13.10.24 10:48 Сейчас в теме
(4)
Тестировщики сами обновляли файл
Вот мне уже очень интересно.

Чем может заниматься контора, в которой тестировщики ставят задачи кураторам подразделений путём публикации ексель файла? Причем это всё на 1С.
8. vladislav25_00 13.10.24 10:50 Сейчас в теме
(7) Чел, тебе заняться нечем?
Я лишь попросил натолкнуть/помочь с задачей, а не спам от вас двоих бестолковый.
Если вариант через Константу не очень, то так бы и сказали.
9. user1880116 13.10.24 10:53 Сейчас в теме
(8)
попросил натолкнуть

Ночь, все спят. Вдруг в квартиру раздаётся звонок. Муж пошёл открывать, смотрит — на пороге стоит какой-то нетрезвый мужик:

— Приятель, помоги меня толкануть! Тут недалеко, во дворе.
— Мужик, ты офигел? Три часа ночи, какой толкануть! Иди отсюда! — и закрыл дверь. Только лёг в постель, как жена говорит ему:
— Я всё слышала. Иди, помоги мужику! Помнишь, мы как-то застряли ночью под дождём на дороге, и нам помогал какой-то незнакомый парнишка? Иди, помоги человеку!

Муж недовольно вылезает из кровати, одевается, спускается во двор и кричит:
— Эй, мужик, ты где?
Из темноты раздаётся голос:
— Я тут!
— Да где — тут?
— Тут недалеко, на качелях!


Очень похожая ситуация.
10. user2033930 13.10.24 11:19 Сейчас в теме
(8)
Если вариант через Константу не очень, то так бы и сказали.
А ты разве спрашивал про варианты? Может, ты сказал, что вот у тебя стоит задача такая-то, какими средствами её корректнее решить?
Нет. Ты сказал, что тебе уже необходимо затолкать файл в константу. То есть ты уже принял свой вариант решения как единственно верный. Зачем? ХЗ...
Если ты вдруг решишь, что научиться летать небходимо прыгая с небоскреба, и просишь тебя "подтолкнуть" (про качели, да) - то вряд ли ты от нас тут увидишь помощи.
И если ты считаешь слова "чел, прыгать с небоскреба - хреновая затея" спамом - ну... Тогда лучше прыгни. Приятного полёта!
11. vladislav25_00 13.10.24 11:22 Сейчас в теме
(10) Чем Константа плоха для Хранения файла если он небольшой?
12. user2033930 13.10.24 11:25 Сейчас в теме
(11) Ты реально считаешь, что дело в размере? Некоторые любят подлиньше да потолще, да.
Вот только 1С тут причем?
13. vladislav25_00 13.10.24 11:28 Сейчас в теме
(12) Хорошо, я в 1С около года и с курсов не проходил что можно, а что нельзя в Константу засовывать.По статье мне показалось это реализуемо, если нельзя, то в чем было сложность сразу сказать или объяснить нормально?
21. webester 26 30.10.24 10:52 Сейчас в теме
(8)
Чел, тебе заняться нечем?

Ну это интернет, пора уже привыкнуть. Тут можно спросить, что угодно, но и ответить тебе тоже могут, что угодно
16. webester 26 30.10.24 09:36 Сейчас в теме
(2) Русскими словами то можешь написать где проблема возникнет у ТС, если будет файл в константе? Или сам не понимаешь?
18. user2107184 30.10.24 10:32 Сейчас в теме
(16) А разве кто-то говорит о проблеме? Или о невозможности? Речь о целесообразности.
19. webester 26 30.10.24 10:40 Сейчас в теме
(18) Я правильно понял, что ты переживаешь, что ему будет неудобно пользоваться константой для получения файла и ты где-то предложил более удобный вариант?
20. user2107184 30.10.24 10:51 Сейчас в теме
(19) Неправильно.
Я прекрасно понимаю, что если ему удобно на танке возить рассаду на дачу - то кто я такой, чтобы ему запрещать?
22. webester 26 30.10.24 10:56 Сейчас в теме
(20) А кто тут говорил о том, чтобы запрещать? Речь об том, чтобы объяснить, что не так в том, чтобы танком возить рассаду.
23. user2107184 30.10.24 11:12 Сейчас в теме
(22)
Речь об том, чтобы объяснить
Не хочу.
24. webester 26 30.10.24 11:14 Сейчас в теме
(23) Ну понятно. Показывать остроумие и повышать самооценку конечно интереснее, чем возиться с детскими вопросами.
25. user2107184 30.10.24 11:24 Сейчас в теме
(24)
— …предлагаю вам взять несколько журналов — в пользу детей Германии! По полтиннику штука!
— Нет, не возьму.
— Но почему вы отказываетесь?
— Не хочу.
— Вы не сочувствуете детям Германии?
— Сочувствую.
— А, полтинника жалко?!
— Нет.
— Так почему же?
— Не хочу.
— Знаете ли, профессор — если бы вы не были европейским светилом и за вас не заступились бы самым возмутительным образом, вас следовало бы арестовать!
— За что?!..
— А вы не любите пролетариат!
Показать
26. webester 26 30.10.24 11:32 Сейчас в теме
(25)Ну никто не приходил к вам домой с вопросами "что делать с константой". Поэтому аналогия не уместна. Тут собственно только личное желание повозиться в этом. Точнее прийти в тему и показать какой же ты умный и все понимаешь. Но сказать по существу ничего не можешь\ не хочешь.
27. user2107184 30.10.24 11:46 Сейчас в теме
(26)
Ну никто не приходил к вам домой с вопросами
Публичный вопрос - публичное мнение. Или меня кто-то ограничивал?
28. webester 26 30.10.24 11:48 Сейчас в теме
(27)
Или меня кто-то ограничивал?
Кто так сказал? Без проблем вообще. Нет недопонимания в этом вопросе. см(21)(24)
14. user2033930 13.10.24 11:37 Сейчас в теме
Ну можешь для начала поразмышлять - что такое произвольный тип в 1С.
В ХЗ ты же можешь запаковать произвольный тип, правда?
Так вот вопрос: произвольный - это все, что тебе заблагорассудится?
15. xname 29.10.24 17:56 Сейчас в теме
ФайлДвоичныеДанные = Новый ДвоичныеДанные("С:\import\КураторыПодразделений.xls");
Хранилище_Файл = Новый ХранилищеЗначения(ФайлДвоичныеДанные, Новый СжатиеДанных(0));
Константы.КураторыПодразделений.Установить(Хранилище_Файл);
17. webester 26 30.10.24 09:57 Сейчас в теме

вопрос не совсем понимаю почему когда записываю форму Константы через "записать и закрыть" не проваливаюсь отладкой в событие ПередЗаписьюНаСервере.
Не включена отладка на сервере

Спотыкаюсь на действии Записать.Натолкните пожалуйста.
Если ты спотыкаешься, то здорово было бы понять еще, что с тобой происходит в этот момент. Программа наверняка сообщает в чем дело, приводи информацию об ошибке.

В приведенном тобой коде много проблем. Давай начнем сначала.
Вот здесь плохо
ТекущийОбъект.ИнформацияПриЗапуске_КураторыПодразделений = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(СсылкаНаФайл));

Тебе жалко одной строки, зачем такие километровые неотлаживаемые конструкции?
Давай разложим:

ЗначениеИзВременного = ПолучитьИзВременногоХранилища(СсылкаНаФайл);
ДанныеВРеквизит = Новый ХранилищеЗначения(ЗначениеИзВременного);
ТекущийОбъект.ИнформацияПриЗапуске_КураторыПодразделений = ДанныеВРеквизит;


Так уже легче дышится. Здесь можно(и нужно) посмотреть, что находится и в "ЗначениеИзВременного" и как оно ляжет (и можно ли его сразу же оттуда взять) в твой реквизит. На каком этапе ты ошибся, если ошибся. Тебе надо посмотреть, что на всех этапах у тебя двоичные данные. Проверять работает оно так или нет, не буду ибо лень, моделировать тестовые данные.

Переименуй переменную "ПутьКФайлу" ибо там никакой не путь. Должны там быть там двоичные данные. Судя по логике которую ты понимаешь. Но скорее всего, там значение с типом "ХранилищеЗначений". И именно поэтому, ты спотыкаешься на методе Записать()
nemo888; vladislav25_00; +2 Ответить
29. adhocprog 1142 01.11.24 15:47 Сейчас в теме
(0) Универсальная обработка просмотра констант с типом хранилище значений
https://infostart.ru/1c/tools/1278347/
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот