1. Stanislav1993 08.10.19 08:58 Сейчас в теме

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

Конфигурация ЕРП

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

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

Показать



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

3. Stanislav1993 08.10.19 09:22 Сейчас в теме
(2) При отладке, при перемещении , в цикл не попадаем..
4. user675041_start2011ruslan 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 Сейчас в теме
22. Stanislav1993 08.10.19 10:49 Сейчас в теме
(21)
Прикрепленные файлы:
ProAkvadiv; +1 Ответить
24. xSavantx 5 08.10.19 10:58 Сейчас в теме
(22) У числа нет реквизита "Родитель"))
25. xSavantx 5 08.10.19 10:59 Сейчас в теме
(22) Он похоже туда номер строки забирает, а не ссылку на элемент
Stanislav1993; +1 Ответить
26. Stanislav1993 08.10.19 11:00 Сейчас в теме
(25) Есть варианты как исправить?
27. xSavantx 5 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 Сейчас в теме
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 Сейчас в теме
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 18 08.10.19 16:29 Сейчас в теме
(39) Посмотрите какая версия БСП установлена в вашем релизе ERP (открыть регистр сведений Версии подсистем).
Скачайте БСП такой же версии со страницы поддержки.
Там есть обработка ПроверкаВнедренияБСП.
Открыть обработку и запустить проверку без исправления ошибок.
Возможно есть ошибки внедрения подсистемы РаботаСФайлами.
Stanislav1993; +1 Ответить
42. Stanislav1993 08.10.19 16:31 Сейчас в теме
(41) Вот скрин
Прикрепленные файлы:
43. Sashares 18 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 18 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. ogidni 150 10.10.19 16:17 Сейчас в теме
плохая практика хранить файлы в базе
Stanislav1993; +1 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Технический лидер, архитектор 1С, руководитель проектов
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С
Набережные Челны
зарплата до 90 000 руб.
Полный день

Программист 1С
Набережные Челны
зарплата от 40 000 руб. до 110 000 руб.
Полный день

Программист 1С
Казань
зарплата от 40 000 руб. до 110 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству