|
Сохранение настроек в файл и чтение из него | ☑ | ||
---|---|---|---|---|
0
Фантазер
31.07.22
✎
22:56
|
Была обработка обычных форм. В ней настройки табличной части сохранялись в текстовый файл, потом из него же можно было и прочитать.
Сейчас адаптирую для управляемых - вообще не въеду - как оно должно работать? База клиента на SQL, моя тестовая - в файловом режиме у меня. У меня такой код работает, у клиента - нет: ///////////////////////////////////////// &НаКлиенте Процедура ФайлНастроекНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбораФайла.Заголовок = "Выберите файл настроек"; ДиалогВыбораФайла.Фильтр = "Файл TXT(*.TXT)|*.TXT"; ДиалогВыбораФайла.Выбрать(); ИмяФайла = ДиалогВыбораФайла.ПолноеИмяФайла; Объект.ФайлНастроек = ИмяФайла; КонецПроцедуры ///////////////////////////////////////// &НаКлиенте Процедура ПрочитатьНастройкиИзФайла(Команда) ПрочитатьНастройкиИзФайлаНаСервере() КонецПроцедуры &НаСервере Процедура ПрочитатьНастройкиИзФайлаНаСервере() Объект.СопоставленияПлатежей.Очистить(); ТекНастройки = Новый ЧтениеТекста; ТекНастройки.Открыть(Объект.ФайлНастроек); СтрокаНастроек = ТекНастройки.ПрочитатьСтроку(); // первая строка - шапка попытка СтрокаНастроек = ТекНастройки.ПрочитатьСтроку(); // наша вторая строка Исключение Сообщить("Не прочитался файл"); КонецПопытки; //"НомерСтроки, Контрагент, ДоговорКонтрагента,СтатьяДвиженияДенежныхСредств,МаскаНазначениеПлатежа" Пока СтрокаНастроек <> Неопределено Цикл //строки читаются до символа перевода строки МассивСтроки = СтрРазделить(СтрокаНастроек, "&"); СтрСопоставленияПлатежей = Объект.СопоставленияПлатежей.Добавить(); СтрСопоставленияПлатежей.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(МассивСтроки[1]); СтрСопоставленияПлатежей.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивСтроки[2]); СтрСопоставленияПлатежей.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(МассивСтроки[3]); СтрСопоставленияПлатежей.МаскаНазначениеПлатежа = МассивСтроки[4]; СтрокаНастроек = ТекНастройки.ПрочитатьСтроку(); КонецЦикла; КонецПроцедуры ///////////////////////////////////////// &НаКлиенте Процедура СохранитьНастройкиВФайл(Команда) СохранитьНастройкиВФайлНаСервере(); КонецПроцедуры &НаСервере Процедура СохранитьНастройкиВФайлНаСервере() Если Объект.СопоставленияПлатежей.Количество()= 0 тогда Сообщить("Настройки пустые, сохраняться не будут"); КонецЕсли; Если ЗначениеЗаполнено(Объект.ФайлНастроек) тогда ТекНастройки = Новый ТекстовыйДокумент; РазделительПолей = "&"; ТекНастройки.ДобавитьСтроку("НомерСтроки, Контрагент, ДоговорКонтрагента,СтатьяДвиженияДенежныхСредств,МаскаНазначениеПлатежа"); Для Каждого СтрСопоставленияПлатежей Из Объект.СопоставленияПлатежей Цикл НоваяСтрокаФайла = Строка(СтрСопоставленияПлатежей.НомерСтроки) + РазделительПолей + Строка(?(ЗначениеЗаполнено(СтрСопоставленияПлатежей.Контрагент),СтрСопоставленияПлатежей.Контрагент, "---" )) + РазделительПолей + Строка(?(ЗначениеЗаполнено(СтрСопоставленияПлатежей.ДоговорКонтрагента),СтрСопоставленияПлатежей.ДоговорКонтрагента, "---")) + РазделительПолей + Строка(?(ЗначениеЗаполнено(СтрСопоставленияПлатежей.СтатьяДвиженияДенежныхСредств), СтрСопоставленияПлатежей.СтатьяДвиженияДенежныхСредств, "---")) + РазделительПолей + Строка(СтрСопоставленияПлатежей.МаскаНазначениеПлатежа); ТекНастройки.ДобавитьСтроку(НоваяСтрокаФайла); КонецЦикла; //ТекНастройки.Записать(СтрЗаменить(Объект.ФайлНастроек, ".txt", "_" + ФОрмат (ТекущаяДата(), "ДФ=yyyy_MM_dd_hh_mm"))+ ".txt"); ТекНастройки.Записать(Объект.ФайлНастроек); иначе Сообщить("Не прочитался файл"); КонецЕсли; КонецПроцедуры |
|||
2
H A D G E H O G s
31.07.22
✎
23:11
|
Жестяночка
|
|||
3
Фантазер
31.07.22
✎
23:17
|
(1) Из описалова я это уже понял. Не понял как использовать сохранение через хранилище.
|
|||
4
Фантазер
31.07.22
✎
23:58
|
Да, чего-то затупил. Стоило все перенести в процедуры НаКлиенте и все заработало. Видимо я все усложнил.
|
|||
5
6awkup_true
01.08.22
✎
09:04
|
неудивительно, что работать на сервере не будет. указываешь путь к файлу на клиентской машине, а на сервере пытаешься по этому пути открыть. а файла то нет. нужно читать файл на клиенте, помещать в врем хранилище и уже потом производить чтение содержимого на сервере
|
|||
6
Фантазер
01.08.22
✎
10:29
|
(5) Тупил. Ночь на дворе была, жарко. Спустя час дошло )))
|
|||
7
VladZ
01.08.22
✎
10:33
|
Жесть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |