НаСервереБезКонтекста
Процедура ПереместитьФайлыВГруппу(Знач Файлы, Знач Группа)
НачатьТранзакцию();
Попытка
Для Каждого ФайлСсылка Из Файлы Цикл
ФайлОбъект = ФайлСсылка.ПолучитьОбъект();
ФайлОбъект.Родитель = Группа;
ФайлОбъект.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Показать
{Обработка.РаботаСФайлами.Форма.ВыборГруппы.Форма(115)}: Значение не является значением объектного типа (ПолучитьОбъект)
ФайлОбъект = ФайлСсылка.ПолучитьОбъект();
(5) Наоборот, если мы попадаем в цикл, то и будет перемещение, иначе мы просто попадаем в исключение.
Модуль типовой...странно...что они не предусмотрели.
(9) Вот тут я создал две группы и загрузил один файл. До меня уже кто-то загрузил файл.
ТО есть не могу даже перемести группу в другую.
А в другом документе по ЗДС - получается это сделать.
(3) (6) Как раз в цикл и попадает, иначе и ошибки не было.
Смотрите, что содержится в ФайлСсылка внутри цикла.
И в Файлы соответственно тоже посмотреть
(14) где точку остановки делаете?
Сделайте точку остановки на строке "ФайлОбъект = ФайлСсылка.ПолучитьОбъект();". Т.е. до момента выполнения этой строки по которой выбрасывается исключение.
(26) В конфигураторе нужно копаться, но у меня нет ЕРП под рукой. По-идее нужно найти вызов функции ПереместитьФайлыВГруппу и посмотреть как формируется первый входящий параметр. И на всякий случай кэш почистить.
(31) вот, а говорили ничего в нем нет. В нем число. Вполне допускаю предположение из (25), что вместо ссылки передается номер строки (или идентификатор).
Так как в Параметры.ПеремещаемыеФайлы попадают значения?
(35) У Вас как-то поломалась типовая форма присоединенных файлов. Судя по возникшей проблеме у динамического списка файлов не назначена основная таблица. В результате в качестве идентификаторов строк стали использоваться не ссылки на элементы справочника файлов, а числа.
Найдите в форме списка файлов процедуру "НастроитьДинамическийСписок" и поставьте точку останова в конце процедуры. Когда исполнение остановится на этой точке, посмотрите и напишите сюда, какой текст запроса у списка и какая основная таблица.
Я бы попробовал с чистки кеша 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) Посмотрите какая версия БСП установлена в вашем релизе ERP (открыть регистр сведений Версии подсистем).
Скачайте БСП такой же версии со страницы поддержки.
Там есть обработка ПроверкаВнедренияБСП.
Открыть обработку и запустить проверку без исправления ошибок.
Возможно есть ошибки внедрения подсистемы РаботаСФайлами.
(44)Если конфигурация типовая и ничего не менялось в ней, возможно это ошибка внедрения БСП.
Еще возможно, что это ошибка в самой БСП.
Можно проверить вручную, что для документа Заявка на расходование ДС и справочника Заявка на расходование ДС ПрисоединенныеФайлы выполнены все пункты встраивания подсистемы по документации БСП https://its.1c.ru/db/bsp302doc#content:64:hdoc
Еще вариант - написать на линию консультации в 1С. Адрес v8@1c.ru
Есть вариант что проблема в том, что при создании на сервере форма списка отрабатывает отображение формы списка как иерархия , а при вторичном не иерархию.
&НаСервере
Процедура НастроитьДинамическийСписок(ИмяСправочникаХранилищаФайлов, Знач ЕстьРеквизитСлужебный = Ложь)
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
// Добавлен расчет поля СТ_ПолныйПутьКФайлу
ТекстЗапроса =
"ВЫБРАТЬ
| Файлы.Ссылка КАК Ссылка,
| Файлы.ПометкаУдаления,
| ВЫБОР
| КОГДА Файлы.ПометкаУдаления = ИСТИНА
| ТОГДА ЕСТЬNULL(Файлы.ИндексКартинки, 2) + 1
| ИНАЧЕ ЕСТЬNULL(Файлы.ИндексКартинки, 2)
| КОНЕЦ КАК ИндексКартинки,
| Файлы.Наименование КАК Наименование,
| ВЫРАЗИТЬ(Файлы.Описание КАК СТРОКА(500)) КАК Описание,
| Файлы.Автор,
| Файлы.ДатаСоздания,
| Файлы.Изменил КАК Отредактировал,
| ДОБАВИТЬКДАТЕ(Файлы.ДатаМодификацииУниверсальная, СЕКУНДА, &СекундДоМестногоВремени) КАК ДатаИзменения,
| ВЫРАЗИТЬ(Файлы.Размер / 1024 КАК ЧИСЛО(10, 0)) КАК Размер,
| Файлы.ПодписанЭП,
| Файлы.Зашифрован,
| ВЫБОР
| КОГДА Файлы.ПодписанЭП
| И Файлы.Зашифрован
| ТОГДА 2
| КОГДА Файлы.Зашифрован
| ТОГДА 1
| КОГДА Файлы.ПодписанЭП
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК НомерКартинкиПодписанЗашифрован,
| ВЫБОР
| КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ФайлРедактируется,
| ВЫБОР
| КОГДА Файлы.Редактирует = &ТекущийПользователь
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ФайлРедактируетТекущийПользователь,
| ВЫБОР
| КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи)
| И Файлы.Редактирует <> &ТекущийПользователь
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ФайлРедактируетДругойПользователь,
| Файлы.Расширение КАК Расширение,
| ВЫБОР
| КОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись <> НЕОПРЕДЕЛЕНО
| И Файлы.Редактирует = НЕОПРЕДЕЛЕНО
| ТОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись
| ИНАЧЕ Файлы.Редактирует
| КОНЕЦ КАК Редактирует,
| Файлы.Редактирует КАК РедактируетПользователь,
| &ЭтоГруппа КАК ЭтоГруппа,
| &Служебный КАК Служебный,
| Файлы.ВладелецФайла КАК ВладелецФайла,
| Файлы.ХранитьВерсии КАК ХранитьВерсии,
| (ВЫРАЗИТЬ(Файлы.Том.ПолныйПутьWindows КАК СТРОКА(500))) + (ВЫРАЗИТЬ(Файлы.ПутьКФайлу КАК СТРОКА(500))) КАК СТ_ПолныйПутьКФайлу
|ИЗ
| &ИмяСправочника КАК Файлы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыСинхронизацииФайловСОблачнымСервисом КАК СтатусыСинхронизацииФайловСОблачнымСервисом
| ПО Файлы.Ссылка = СтатусыСинхронизацииФайловСОблачнымСервисом.Файл
|ГДЕ
| Файлы.ВладелецФайла = &ВладелецФайлов";
Если ВладелецФайлаДополнительно.Количество()>0 Тогда
МассивПолноеИмяСправочника = Новый Массив;
МассивПолноеИмяСправочника.Добавить("Справочник.ЗаказПоставщикуПрисоединенныеФайлы");
МассивПолноеИмяСправочника.Добавить("Справочник.ПриобретениеТоваровУслугПрисоединенныеФайлы");
ТекстЗапросаШаблон = ТекстЗапроса;
Для Каждого ПолноеИмяСправочника ИЗ МассивПолноеИмяСправочника Цикл
ТекстЗапросаОбъединение = СтрЗаменить(ТекстЗапросаШаблон, "Файлы.ВладелецФайла = &ВладелецФайлов", "Файлы.ВладелецФайла В (&ВладелецФайлаДополнительно)");
ТекстЗапросаОбъединение = СтрЗаменить(ТекстЗапросаОбъединение, "&ИмяСправочника", ПолноеИмяСправочника);
ТекстЗапроса = ТекстЗапроса + " ОБЪЕДИНИТЬ ВСЕ " + ТекстЗапросаОбъединение;
КонецЦикла;
КонецЕсли;
ПолноеИмяСправочника = "Справочник." + ИмяСправочникаХранилищаФайлов;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", ПолноеИмяСправочника);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Служебный", ?(ЕстьРеквизитСлужебный, "Файлы.Служебный", "ЛОЖЬ"));
СвойстваСписка.ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЭтоГруппа",
?(ВозможностьСоздаватьГруппыФайлов, "Файлы.ЭтоГруппа", "ЛОЖЬ"));
СвойстваСписка.ОсновнаяТаблица = ПолноеИмяСправочника;
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
Если ВладелецФайлаДополнительно.Количество()>0 Тогда
Список.ОсновнаяТаблица = "";
Список.ДинамическоеСчитываниеДанных = Истина;
Список.Параметры.УстановитьЗначениеПараметра("ВладелецФайлаДополнительно", ВладелецФайлаДополнительно);
КонецЕсли;
ПустыеПользователи = Новый Массив;
ПустыеПользователи.Добавить(Неопределено);
ПустыеПользователи.Добавить(Справочники.Пользователи.ПустаяСсылка());
ПустыеПользователи.Добавить(Справочники.ВнешниеПользователи.ПустаяСсылка());
ПустыеПользователи.Добавить(Справочники.УчетныеЗаписиСинхронизацииФайлов.ПустаяСсылка());
Список.Параметры.УстановитьЗначениеПараметра("ВладелецФайлов", Параметры.ВладелецФайла);
Список.Параметры.УстановитьЗначениеПараметра("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
Список.Параметры.УстановитьЗначениеПараметра("ПустыеПользователи", ПустыеПользователи);
ДатаУниверсальная = ТекущаяДатаСеанса();
Список.Параметры.УстановитьЗначениеПараметра("СекундДоМестногоВремени",
МестноеВремя(ДатаУниверсальная, ЧасовойПоясСеанса()) - ДатаУниверсальная);
КонецПроцедуры
Показать
Проблема с этой процедурой, не могу пока найти где ошибка.
Процедура по ДС была модифицирована.
Не типовая процедура.
(54) Малой кровью Вы свою проблему не решите. Рекомендую Вам отключить доступность кнопки перемещения файлов в папки. Рассудите сами. Как Вы себе представляете отображение иерархического списка двух различных справочников? Более того, один из них может оказаться и вовсе не иерархическим. Как должна будет повести себя 1С, если Вы перемещаете файл Заказа в папку ПТиУ? А если выделены и файлы Заказа и файлы ПТиУ? И предлагать пользователю папки нужно из обоих справочников, или только из одного?
Отработка всех этих ситуаций ляжет на Ваши плечи. Зная примерно Ваш уровень знаний платформы, рекомендую Вам: в ситуациях, когда в списке отображаются файлы из нескольких источников, лучше спрячьте кнопку подальше. :-)
Кстати, уточните, пожалуйста, а какую версию платформы Вы используете?