Не работает перемещение файла в группу

1. Stanislav1993 08.10.19 08:58 Сейчас в теме
Конфигурация ЕРП

Механизм "Виды присоединенных файлов"

Ошибка возникает при перемещении файла в группу
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Stanislav1993 08.10.19 09:08 Сейчас в теме
НаСервереБезКонтекста
Процедура ПереместитьФайлыВГруппу(Знач Файлы, Знач Группа)
	НачатьТранзакцию();
	Попытка
		Для Каждого ФайлСсылка Из Файлы Цикл
			ФайлОбъект = ФайлСсылка.ПолучитьОбъект();
			ФайлОбъект.Родитель = Группа;
			ФайлОбъект.Записать();
		КонецЦикла;
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		ВызватьИсключение;
	КонецПопытки;
КонецПроцедуры

Показать



{Обработка.РаботаСФайлами.Форма.ВыборГруппы.Форма(115)}: Значение не является значением объектного типа (ПолучитьОбъект)
ФайлОбъект = ФайлСсылка.ПолучитьОбъект();

3. Stanislav1993 08.10.19 09:22 Сейчас в теме
(2) При отладке, при перемещении , в цикл не попадаем..
4. Ruslan2011 08.10.19 09:25 Сейчас в теме
(3)ооо, только не это :)
опять пас...изини
Stanislav1993; +1 Ответить
5. alex-l19041 8 08.10.19 09:36 Сейчас в теме
(3) уточните, если
в цикл не попадаем
значит и ошибки нет ???
6. Stanislav1993 08.10.19 09:38 Сейчас в теме
(5) Наоборот, если мы попадаем в цикл, то и будет перемещение, иначе мы просто попадаем в исключение.
Модуль типовой...странно...что они не предусмотрели.
7. Stanislav1993 08.10.19 09:40 Сейчас в теме
(6) Оказывается с другими объектами например со справочниками работает, а вот для одного документа - нет.
9. spacecraft 08.10.19 09:49 Сейчас в теме
(7) а для документа и недолжно в принципе работать. Какие группы у документа? У документа нет реквизита Родитель.
12. Stanislav1993 08.10.19 09:57 Сейчас в теме
(9) Вот тут я создал две группы и загрузил один файл. До меня уже кто-то загрузил файл.
ТО есть не могу даже перемести группу в другую.
А в другом документе по ЗДС - получается это сделать.
Прикрепленные файлы:
13. spacecraft 08.10.19 09:59 Сейчас в теме
(12) так в отладчике что показывает в Файлы?
10. alex-l19041 8 08.10.19 09:50 Сейчас в теме
(6) включите Остановка по ошибке
8. spacecraft 08.10.19 09:45 Сейчас в теме
(3) (6) Как раз в цикл и попадает, иначе и ошибки не было.
Смотрите, что содержится в ФайлСсылка внутри цикла.
И в Файлы соответственно тоже посмотреть
11. Stanislav1993 08.10.19 09:54 Сейчас в теме
(8) Ошибка выскакивает не со всеми документами + ошибка вылезает даже если переместить одну группу в другую.
14. Stanislav1993 08.10.19 10:00 Сейчас в теме
Где все работает показывает наименование файлов, а где не работает - то просто переходит в "ОтменитьТранзакцию()"
15. spacecraft 08.10.19 10:18 Сейчас в теме
(14) где точку остановки делаете?
Сделайте точку остановки на строке "ФайлОбъект = ФайлСсылка.ПолучитьОбъект();". Т.е. до момента выполнения этой строки по которой выбрасывается исключение.
16. Stanislav1993 08.10.19 10:28 Сейчас в теме
(15) Так и сделал - скидывает на исключение.
17. spacecraft 08.10.19 10:33 Сейчас в теме
(16) а на строку "Для Каждого ФайлСсылка Из Файлы Цикл" и посмотреть Файлы
18. Stanislav1993 08.10.19 10:35 Сейчас в теме
(17) Число 3 - ФайлСсылка, Файлы - Массив
19. spacecraft 08.10.19 10:36 Сейчас в теме
(18) встать на Массив и нажать F2
20. Stanislav1993 08.10.19 10:39 Сейчас в теме
21. spacecraft 08.10.19 10:39 Сейчас в теме
(20) скрины хоть приведите
22. Stanislav1993 08.10.19 10:49 Сейчас в теме
(21)
Прикрепленные файлы:
ProAkvadiv; +1 Ответить
24. xSavantx 25 08.10.19 10:58 Сейчас в теме
(22) У числа нет реквизита "Родитель"))
25. xSavantx 25 08.10.19 10:59 Сейчас в теме
(22) Он похоже туда номер строки забирает, а не ссылку на элемент
Stanislav1993; +1 Ответить
26. Stanislav1993 08.10.19 11:00 Сейчас в теме
(25) Есть варианты как исправить?
27. xSavantx 25 08.10.19 11:06 Сейчас в теме
(26) В конфигураторе нужно копаться, но у меня нет ЕРП под рукой. По-идее нужно найти вызов функции ПереместитьФайлыВГруппу и посмотреть как формируется первый входящий параметр. И на всякий случай кэш почистить.
28. Stanislav1993 08.10.19 11:08 Сейчас в теме
(27)
&НаКлиенте
Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
	ПереместитьФайлыВГруппу(Параметры.ПеремещаемыеФайлы, Значение);
	ОповеститьОбИзменении(ТипЗнч(Параметры.ПеремещаемыеФайлы[0]));
	Оповестить("Запись_Файл", Новый Структура, Параметры.ПеремещаемыеФайлы);
	Закрыть();
КонецПроцедуры


Показать
29. spacecraft 08.10.19 11:18 Сейчас в теме
(28)
ПереместитьФайлыВГруппу(Параметры.ПеремещаемыеФайлы, Значение);

И что там в этих параметрах и как туда попадают значения?
31. Stanislav1993 08.10.19 11:21 Сейчас в теме
(29)
Прикрепленные файлы:
32. spacecraft 08.10.19 11:24 Сейчас в теме
(31) вот, а говорили ничего в нем нет. В нем число. Вполне допускаю предположение из (25), что вместо ссылки передается номер строки (или идентификатор).
Так как в Параметры.ПеремещаемыеФайлы попадают значения?
Stanislav1993; +1 Ответить
33. Stanislav1993 08.10.19 11:26 Сейчас в теме
34. spacecraft 08.10.19 11:33 Сейчас в теме
(33) смотреть как в Параметры.ПеремещаемыеФайлы попадают значения.
35. Stanislav1993 08.10.19 11:47 Сейчас в теме
36. dhurricane 08.10.19 13:34 Сейчас в теме
(35) У Вас как-то поломалась типовая форма присоединенных файлов. Судя по возникшей проблеме у динамического списка файлов не назначена основная таблица. В результате в качестве идентификаторов строк стали использоваться не ссылки на элементы справочника файлов, а числа.

Найдите в форме списка файлов процедуру "НастроитьДинамическийСписок" и поставьте точку останова в конце процедуры. Когда исполнение остановится на этой точке, посмотрите и напишите сюда, какой текст запроса у списка и какая основная таблица.
40. Stanislav1993 08.10.19 16:23 Сейчас в теме
(36)
&НаСервере
Процедура НастроитьДинамическийСписок()
	
	ВладелецФайлов = Параметры.ВладелецФайлов;
	
	ЗаголовокОшибки = НСтр("ru = 'Ошибка при настройке динамического списка присоединенных файлов.';
							|en = 'An error occurred when configuring the dynamic list of attached files.'");
	ОкончаниеОшибки = НСтр("ru = 'В этом случае настройка динамического списка невозможна.';
							|en = 'In this case, dynamic list configuration is not supported.'");
	ИмяСправочникаХранилищаФайлов = РаботаСФайламиСлужебный.ИмяСправочникаХраненияФайлов(
		ВладелецФайлов, "", ЗаголовокОшибки, ОкончаниеОшибки);
	
	ТипСправочникаСФайлами = Тип("СправочникСсылка." + ИмяСправочникаХранилищаФайлов);
	МетаданныеСправочникаСФайлами = Метаданные.НайтиПоТипу(ТипСправочникаСФайлами);
	ВозможностьСоздаватьГруппыФайлов = МетаданныеСправочникаСФайлами.Иерархический;
	
	СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	Файлы.Ссылка КАК Ссылка,
	|	Файлы.ПометкаУдаления КАК ПометкаУдаления,
	|	ВЫБОР
	|		КОГДА Файлы.ПометкаУдаления = ИСТИНА
	|			ТОГДА ЕСТЬNULL(Файлы.ИндексКартинки, 2) + 1
	|		ИНАЧЕ ЕСТЬNULL(Файлы.ИндексКартинки, 2)
	|	КОНЕЦ КАК ИндексКартинки,
	|	Файлы.Наименование КАК Наименование,
	|	&ЭтоГруппа КАК ЭтоГруппа,
	|	Файлы.ВладелецФайла КАК ВладелецФайла
	|ИЗ
	|	&ИмяСправочника КАК Файлы
	|ГДЕ
	|	Файлы.ВладелецФайла = &ВладелецФайлов
	|	И &ОтборГрупп";
	
	ПолноеИмяСправочника = "Справочник." + ИмяСправочникаХранилищаФайлов;
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", ПолноеИмяСправочника);
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборГрупп", "Файлы.ЭтоГруппа");
	СвойстваСписка.ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЭтоГруппа",
		?(ВозможностьСоздаватьГруппыФайлов, "Файлы.ЭтоГруппа", "ЛОЖЬ"));
		
	СвойстваСписка.ОсновнаяТаблица  = ПолноеИмяСправочника;
	СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
	ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
	Список.Параметры.УстановитьЗначениеПараметра("ВладелецФайлов", ВладелецФайлов);
	
КонецПроцедуры

Показать
Прикрепленные файлы:
46. dhurricane 08.10.19 19:10 Сейчас в теме
(40) Не структура интересует, а сам список. Покажите, что в поле "Список" в конце процедуры.
49. Stanislav1993 09.10.19 09:10 Сейчас в теме
(46)
Список.Параметры.УстановитьЗначениеПараметра("ВладелецФайлов", ВладелецФайлов);

50. dhurricane 09.10.19 09:14 Сейчас в теме
(49) Нет же. На скрине выше у Вас в отладчике переменная СвойстваСписка. Нам она не интересна. Интересен сам Список.
51. Stanislav1993 09.10.19 09:20 Сейчас в теме
(50)
Прикрепленные файлы:
52. Stanislav1993 09.10.19 09:27 Сейчас в теме
30. spacecraft 08.10.19 11:19 Сейчас в теме
(22) где скрин содержимого массива?
23. Stanislav1993 08.10.19 10:58 Сейчас в теме
Механизм типовой, не понятно с чем может быть вызвана ошибка.
37. xioxao 08.10.19 14:58 Сейчас в теме
Я бы попробовал с чистки кеша 1с
Нужно почистить следующие папки:

В Windows XP:
%userprofile%\Local Settings\Application Data\1C\1Cv82
%userprofile%\Application Data\1C\1Cv82
В Windows 7:
%userprofile%\AppData\Roaming\1C\1Cv82
%userprofile%\AppData\Local\1C\1Cv82
В серверных операционныхсистемах Windows 2008
C:\Users\<username>\AppData\Local\1C
C:\Users\<username>\AppData\Roaming\1C
39. Stanislav1993 08.10.19 16:16 Сейчас в теме
(37) Дело не в кеше, а в том, что с другими документами, данный типовой модуль работает
41. Sashares 34 08.10.19 16:29 Сейчас в теме
(39) Посмотрите какая версия БСП установлена в вашем релизе ERP (открыть регистр сведений Версии подсистем).
Скачайте БСП такой же версии со страницы поддержки.
Там есть обработка ПроверкаВнедренияБСП.
Открыть обработку и запустить проверку без исправления ошибок.
Возможно есть ошибки внедрения подсистемы РаботаСФайлами.
Stanislav1993; +1 Ответить
42. Stanislav1993 08.10.19 16:31 Сейчас в теме
(41) Вот скрин
Прикрепленные файлы:
43. Sashares 34 08.10.19 16:35 Сейчас в теме
(42) БСП это в списке СтандартныеПодсистемы. То есть 3.0.2.314.
Тут https://releases.1c.ru/version_files?nick=SSL30&ver=3.0.2.314 скачиваете полный дистрибутив и устанавливаете. Обработка будет в каталоге шаблонов.
Stanislav1993; +1 Ответить
44. Stanislav1993 08.10.19 17:09 Сейчас в теме
(43) А есть у Вас идеи в чем может быть проблема еще?
45. Sashares 34 08.10.19 17:26 Сейчас в теме
(44)Если конфигурация типовая и ничего не менялось в ней, возможно это ошибка внедрения БСП.
Еще возможно, что это ошибка в самой БСП.

Можно проверить вручную, что для документа Заявка на расходование ДС и справочника Заявка на расходование ДС ПрисоединенныеФайлы выполнены все пункты встраивания подсистемы по документации БСП https://its.1c.ru/db/bsp302doc#content:64:hdoc

Еще вариант - написать на линию консультации в 1С. Адрес v8@1c.ru
47. spacecraft 08.10.19 20:41 Сейчас в теме
(44) расширения подключены?
Stanislav1993; +1 Ответить
48. Stanislav1993 08.10.19 21:49 Сейчас в теме
(47) Да, но там всего лишь используется одна процедура.
Проблема с динамическом списке, как было сказано одним пользователем в теме.
38. xioxao 08.10.19 15:01 Сейчас в теме
Ещё как вариант можно попробовать запустить на другой платформе
53. Stanislav1993 09.10.19 11:02 Сейчас в теме
Есть вариант что проблема в том, что при создании на сервере форма списка отрабатывает отображение формы списка как иерархия , а при вторичном не иерархию.
54. Stanislav1993 09.10.19 16:14 Сейчас в теме
&НаСервере
Процедура НастроитьДинамическийСписок(ИмяСправочникаХранилищаФайлов, Знач ЕстьРеквизитСлужебный = Ложь)
	
	СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
	
	
	// Добавлен расчет поля СТ_ПолныйПутьКФайлу
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	Файлы.Ссылка КАК Ссылка,
	|	Файлы.ПометкаУдаления,
	|	ВЫБОР
	|		КОГДА Файлы.ПометкаУдаления = ИСТИНА
	|			ТОГДА ЕСТЬNULL(Файлы.ИндексКартинки, 2) + 1
	|		ИНАЧЕ ЕСТЬNULL(Файлы.ИндексКартинки, 2)
	|	КОНЕЦ КАК ИндексКартинки,
	|	Файлы.Наименование КАК Наименование,
	|	ВЫРАЗИТЬ(Файлы.Описание КАК СТРОКА(500)) КАК Описание,
	|	Файлы.Автор,
	|	Файлы.ДатаСоздания,
	|	Файлы.Изменил КАК Отредактировал,
	|	ДОБАВИТЬКДАТЕ(Файлы.ДатаМодификацииУниверсальная, СЕКУНДА, &СекундДоМестногоВремени) КАК ДатаИзменения,
	|	ВЫРАЗИТЬ(Файлы.Размер / 1024 КАК ЧИСЛО(10, 0)) КАК Размер,
	|	Файлы.ПодписанЭП,
	|	Файлы.Зашифрован,
	|	ВЫБОР
	|		КОГДА Файлы.ПодписанЭП
	|				И Файлы.Зашифрован
	|			ТОГДА 2
	|		КОГДА Файлы.Зашифрован
	|			ТОГДА 1
	|		КОГДА Файлы.ПодписанЭП
	|			ТОГДА 0
	|		ИНАЧЕ -1
	|	КОНЕЦ КАК НомерКартинкиПодписанЗашифрован,
	|	ВЫБОР
	|		КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ФайлРедактируется,
	|	ВЫБОР
	|		КОГДА Файлы.Редактирует = &ТекущийПользователь
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ФайлРедактируетТекущийПользователь,
	|	ВЫБОР
	|		КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи)
	|				И Файлы.Редактирует <> &ТекущийПользователь
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ФайлРедактируетДругойПользователь,
	|	Файлы.Расширение КАК Расширение,
	|	ВЫБОР
	|		КОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись <> НЕОПРЕДЕЛЕНО
	|				И Файлы.Редактирует = НЕОПРЕДЕЛЕНО
	|			ТОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись
	|		ИНАЧЕ Файлы.Редактирует
	|	КОНЕЦ КАК Редактирует,
	|	Файлы.Редактирует КАК РедактируетПользователь,
	|	&ЭтоГруппа КАК ЭтоГруппа,
	|	&Служебный КАК Служебный,
	|	Файлы.ВладелецФайла КАК ВладелецФайла,
	|	Файлы.ХранитьВерсии КАК ХранитьВерсии,
	|	(ВЫРАЗИТЬ(Файлы.Том.ПолныйПутьWindows КАК СТРОКА(500))) + (ВЫРАЗИТЬ(Файлы.ПутьКФайлу КАК СТРОКА(500))) КАК СТ_ПолныйПутьКФайлу
	|ИЗ
	|	&ИмяСправочника КАК Файлы
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыСинхронизацииФайловСОблачнымСервисом КАК СтатусыСинхронизацииФайловСОблачнымСервисом
	|		ПО Файлы.Ссылка = СтатусыСинхронизацииФайловСОблачнымСервисом.Файл
	|ГДЕ
	|	Файлы.ВладелецФайла = &ВладелецФайлов";
	
	
	Если ВладелецФайлаДополнительно.Количество()>0 Тогда 
		
		МассивПолноеИмяСправочника = Новый Массив;
		МассивПолноеИмяСправочника.Добавить("Справочник.ЗаказПоставщикуПрисоединенныеФайлы");
		МассивПолноеИмяСправочника.Добавить("Справочник.ПриобретениеТоваровУслугПрисоединенныеФайлы");
		
		ТекстЗапросаШаблон = ТекстЗапроса;
		Для Каждого ПолноеИмяСправочника ИЗ МассивПолноеИмяСправочника Цикл
			
			ТекстЗапросаОбъединение = СтрЗаменить(ТекстЗапросаШаблон, "Файлы.ВладелецФайла = &ВладелецФайлов", "Файлы.ВладелецФайла В (&ВладелецФайлаДополнительно)");
			ТекстЗапросаОбъединение = СтрЗаменить(ТекстЗапросаОбъединение, "&ИмяСправочника", ПолноеИмяСправочника);
			ТекстЗапроса = ТекстЗапроса + " ОБЪЕДИНИТЬ ВСЕ " + ТекстЗапросаОбъединение;
			
		КонецЦикла;
		
	КонецЕсли;
	
	
	ПолноеИмяСправочника = "Справочник." + ИмяСправочникаХранилищаФайлов;
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", ПолноеИмяСправочника);
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Служебный", ?(ЕстьРеквизитСлужебный, "Файлы.Служебный", "ЛОЖЬ"));
	
	СвойстваСписка.ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЭтоГруппа",
		?(ВозможностьСоздаватьГруппыФайлов, "Файлы.ЭтоГруппа", "ЛОЖЬ"));
		
	СвойстваСписка.ОсновнаяТаблица  = ПолноеИмяСправочника;
	СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
	ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
	
	
	Если ВладелецФайлаДополнительно.Количество()>0 Тогда 

		Список.ОсновнаяТаблица  = "";
		Список.ДинамическоеСчитываниеДанных = Истина;
	
		Список.Параметры.УстановитьЗначениеПараметра("ВладелецФайлаДополнительно",      ВладелецФайлаДополнительно);
		
	КонецЕсли;
	
	
	ПустыеПользователи = Новый Массив;
	ПустыеПользователи.Добавить(Неопределено);
	ПустыеПользователи.Добавить(Справочники.Пользователи.ПустаяСсылка());
	ПустыеПользователи.Добавить(Справочники.ВнешниеПользователи.ПустаяСсылка());
	ПустыеПользователи.Добавить(Справочники.УчетныеЗаписиСинхронизацииФайлов.ПустаяСсылка());
	
	Список.Параметры.УстановитьЗначениеПараметра("ВладелецФайлов",      Параметры.ВладелецФайла);
	Список.Параметры.УстановитьЗначениеПараметра("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
	Список.Параметры.УстановитьЗначениеПараметра("ПустыеПользователи",  ПустыеПользователи);
	
	ДатаУниверсальная = ТекущаяДатаСеанса();
	Список.Параметры.УстановитьЗначениеПараметра("СекундДоМестногоВремени",
		МестноеВремя(ДатаУниверсальная, ЧасовойПоясСеанса()) - ДатаУниверсальная);
	
КонецПроцедуры


Показать



Проблема с этой процедурой, не могу пока найти где ошибка.
Процедура по ДС была модифицирована.
Не типовая процедура.
56. dhurricane 11.10.19 08:49 Сейчас в теме
(54) Малой кровью Вы свою проблему не решите. Рекомендую Вам отключить доступность кнопки перемещения файлов в папки. Рассудите сами. Как Вы себе представляете отображение иерархического списка двух различных справочников? Более того, один из них может оказаться и вовсе не иерархическим. Как должна будет повести себя 1С, если Вы перемещаете файл Заказа в папку ПТиУ? А если выделены и файлы Заказа и файлы ПТиУ? И предлагать пользователю папки нужно из обоих справочников, или только из одного?

Отработка всех этих ситуаций ляжет на Ваши плечи. Зная примерно Ваш уровень знаний платформы, рекомендую Вам: в ситуациях, когда в списке отображаются файлы из нескольких источников, лучше спрячьте кнопку подальше. :-)

Кстати, уточните, пожалуйста, а какую версию платформы Вы используете?
55. Indgo 364 10.10.19 16:17 Сейчас в теме
плохая практика хранить файлы в базе
Stanislav1993; +1 Ответить
Оставьте свое сообщение

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