Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/89: Рейтинг темы: голосов - 89, средняя оценка - 4.88
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886

Загрузить значение из файла

30.10.2013, 13:12. Показов 19419. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В файл на локальном компьютере записана ТаблицаЗначений с данными.

На форме обработки имеется команда "Загрузить";
При нажатии на команду выбирается файл (через режим диалога выбора файла)
Дальше идет попытка получить переменную типа ТаблицаЗначений из выбранного файла.

1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура МояПроц1(Команда)
    ТЗ = ЗагрузитьТЗИзФайла(ТекФайл); 
КонецПроцедуры
 
&НаСервере
Функция  ЗагрузитьТЗИзФайла(ТекФайл)    
    Возврат  ЗначениеИзФайла(ТекФайл);     
КонецФункции
Если конфигурация установлена в файловом варианте, то такой вот прием срабатывает
======================================== ===========================
Если конфигурация установлена в серверном варианте, то выводится ошибка
{Форма.Форма.Форма(51)}: Ошибка при вызове метода контекста (ЗначениеИзФайла)
Возврат ЗначениеИзФайла(ТекФайл);
по причине:
Ошибка преобразования

======================================== ============================
Можно как-нибудь перекинуть данные из файла в процедуру, которая выполняется на клиенте?

Добавлено через 16 минут
Управляемое приложение 1С8.2 (толстый клиент)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2013, 13:12
Ответы с готовыми решениями:

Как загрузить в edit значение из текстового файла
Допустим есть текстовый файл с 10 строчками,в каждой строчке записано число.Как можно загрузить в 10 едитов по соответствующей...

Даны два файла целых чисел. Определите, больше ли min значение первого файла, чем max значение второго
1. Пусть даны два файла целых чисел. Определите, больше ли минимальное значение первого файла, чем максимальное значение второго.

загрузить значение в clipboard
Как загнать в Clipboard какое-то стороковое значение?

31
 Аватар для archlink87
16 / 16 / 3
Регистрация: 22.03.2012
Сообщений: 85
30.10.2013, 14:55
На сервере быстрее обработка идет и файл нужно передать на сервер. Что за функция ЗначениеИзФайла?
1
30.10.2013, 15:23  [ТС]

Не по теме:

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

и простите за бессмысленный набор слов.

0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.10.2013, 16:25
А в ТекФайл правильный путь для сервера указан?
Права у сервера есть на файл?
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
30.10.2013, 16:40  [ТС]
Xomych,
Не знаю. Я не знаю, что значит правильный путь для сервера.

Без переменной ТекФайл у меня было бы как-то так
1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура МояПроц1(Команда)
    ТЗ = ЗагрузитьТЗИзФайла("C:екФайл"); 
КонецПроцедуры
 
&НаСервере
Функция  ЗагрузитьТЗИзФайла(ТекФайл)    
    Возврат  ЗначениеИзФайла(ТекФайл);    //C:\ТекФайл 
КонецФункции
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.10.2013, 17:27
Сервер у вас на другом компе?

А ты потом кстати таблицузначений не передашь на клиент возвратом. Надо прям на сервере обрабатывать будет.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
30.10.2013, 17:28  [ТС]
Да.
0
212 / 185 / 32
Регистрация: 24.10.2011
Сообщений: 762
30.10.2013, 17:53
&НаСервере этот оператор заставит выполниться код на сервере. Соответственно, все ресурсы под данным оператором должны быть доступны серверу.

В вашем случае "C:\ТекФайл" будет искаться на сервере.
Файловой БД наплевать на операторы &НаСервере и &НаКлиенте, все выполняется на локальной машине.
Решение:
1) Расшарить файл в сети, что бы сервер смог его взять по полному пути (пример для сети \\имя_компа\ресурс)
2) Удалить описатель &НаСервере.
3) Создать на сервере таблицу, потом передать управление клиенту, на клиенте записать в нее данные, обработать данные на сервере. (по сути будет равносильно копированию файла по сети).

В принципе я повторил Xomych.
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
30.10.2013, 18:41  [ТС]
В общем, ситуация следующая.
Я имею файл с ТЗ, который мне надо поместить на форму. Форма должна открыться и ТабЧасть этой формы должна заполниться из ТЗ, которая в файле.

Т.к. в файловом варианте проблем не было, то и вопроса не возникало (там с сервера на клиент возврат происходит). Но если в серверном варианте с сервера на клиент возврата не получится, то я не особо представляю как открыть форму с уже заполненной табличной частью, причем открыть так, чтоб без записи в базу.

Если я передаю на сервер Табличную часть формы и там что-то в ней изменяю, то после этого на самой форме Табличное поле не изменяется. Это первое
Второе о речах Volexovich, чего-то я тут не понял. То, что файловая база работает в файловом варианте без сервера совсем не обозначает то, что её наплевать на директивы. Без этих директив даже в файловом варианте очень много задач не решить. И про передачу управления. Форма - это в любом случае клиент, взятие значение из файла - это сервер. Нельзя передать что-то с сервера на клиент (как выше сказано).

в общем, я в тупике.
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.10.2013, 18:53
Тебе надо просто прописать правильный путь для сервера, положить файл в папку, которую видит сервер и прописать правильный путь в ТекФайл для сервера, а не для клиента. Потом просто заполнить форму на сервере. Передавать надо только правильный путь с клиента, возвращать ничего не надо. Причем надо учитывать, что подключенные сетевые диски &НаСервере не понимаются через буквы и надо писать \\ИмяКомпа\Диск\Файл
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
30.10.2013, 19:00  [ТС]
А то что в локальном варианте сама форма так не меняется ничего?.
Т.е. сначала выполняется событие, описанное под диррективой &НаСервере внутри которой я добавляю, например, строку к Табличному полю, потом в событие под &НаКлиенте открываю форму.
Новой Строки в табчасти нет.
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.10.2013, 19:09
Таблицей на форме можно программно оперировать как на клиенте так и на сервере, но передать таблицузначений как параметр процедуры между сервером и клиентом нельзя, поэтому ты должен загрузить таблицу на форме &НаСервере

Добавлено через 59 секунд
1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура МояПроц1(Команда)
    ЗагрузитьТЗИзФайла(ТекФайл); 
КонецПроцедуры
 
&НаСервере
Процедура ЗагрузитьТЗИзФайла(ТекФайл)    
    ТЗ.Загрузить(ЗначениеИзФайла(ТекФайл));      
КонецПроцедуры
Где ТЗ - твоя таблица на форме, с такими же колонками как и в файле, причем если ТекФайл - это реквизит Формы, то его можно не передавать
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
30.10.2013, 19:17  [ТС]
Моя таблица, в которую я хочу записать ТЗ из файла - это прикладной объект, который я получил из элементов формы и тип его ТабличноеПоле.

наверное ваш предложенный - это другой вариант.
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.10.2013, 19:21
Это без разницы.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
30.10.2013, 19:38  [ТС]
аа.не. Всё то же самое, извиняюсь.
спасибо.

Добавлено через 12 минут
не. Не совсем все.
Я уже сказал. так вот
1C
1
2
3
4
5
6
7
8
9
10
&НаКлиенте
Процедура МояПроц1(Команда)
    ЗагрузитьТЗИзФайла(ТекФайл,ТЗ);  //ТЗ - это ТабПолеФормы
    мФорма.Открыть();  //мФорма - это форма с ТабПолем, которое должно измениться
КонецПроцедуры
 
&НаСервере
Процедура ЗагрузитьТЗИзФайла(ТекФайл,ТЗ)    
    ТЗ.Загрузить(ЗначениеИзФайла(ТекФайл));      
КонецПроцедуры
В отладчике ТЗ такое какое и должно стать.
Форма же открывается со старым значением. Не изменяется ТабПоле.
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.10.2013, 19:51
Для дальнейшего обсуждения мне не хватает данных. Я не вижу, что ты там куда записываешь, что за форма, что за механизм открытия этой формы нужен, что за объект конфигурации, в которой находится форма.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
30.10.2013, 20:21  [ТС]
Вот, прикрепил.
Там при открытии должна добавиться пустая строка, но этого не происходит.
Вложения
Тип файла: rar Upload.rar (16.5 Кб, 11 просмотров)
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.10.2013, 21:43
В обработке пишешь
1C
1
2
3
4
5
6
&НаКлиенте
Процедура Команда1(Команда)
    ТекФайл = "E:\1CекФайл";;
   
    ОткрытьФорму("Справочник.Тестовый.Форма.ФормаЭлемента", Новый Структура("Файл",ТекФайл));
КонецПроцедуры
В модуле формы справочника на событие
1C
1
2
3
4
5
6
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    if Параметры.Свойство("Файл") then
        Объект.ТабличнаяЧасть1.Загрузить(ЗначениеИзФайла(Параметры.Файл));
    endif;  
КонецПроцедуры
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
30.10.2013, 22:37  [ТС]
Цитата Сообщение от Xomych Посмотреть сообщение
В модуле формы справочника на событие
в модуль формы справочника мне ничего писать нельзя будет.

только обработкой.

Добавлено через 1 минуту
наверное подпиской на событие можно (не сильно с этим знаком пока еще)

Добавлено через 49 минут
основной недостаток подписок - нельзя подписаться на события форм, да?
значит такой вариант не вариант
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.10.2013, 22:43
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
&НаКлиенте
Процедура Команда1(Команда)
    ТекФайл = "E:\1CекФайл";
   
    Массив=Тест(ТекФайл);
    мф=ПолучитьФорму("Справочник.Тестовый.Форма.ФормаЭлемента");
    for each Структ in Массив do
        НС=Мф.Объект.ТабличнаяЧасть1.Добавить();
        for each Стр in Структ do 
            НС[Стр.Ключ]=Стр.Значение;
        enddo;  
    enddo;  
    мф.Открыть();
КонецПроцедуры
 
&НаСервере
Функция Тест(ИФ)
    МассивКолонок=Новый Массив;
    МассивСтрок=Новый Массив;
    ТЗ=ЗначениеИЗФайла(ИФ);
    for each Кол in ТЗ.Колонки do
        МассивКолонок.Добавить(Кол.Имя);
    enddo;  
    for each Стр in ТЗ do
        Структ=Новый Структура;
        for each Кол in МассивКолонок do
            Структ.Вставить(Кол,Стр[Кол]);
        enddo;  
        МассивСтрок.Добавить(Структ);
    enddo;  
        
    return МассивСтрок;
КонецФункции
И не благодари. Я вот до общения с тобой, никогда этой темой не занимался и не интересовался. Я час порылся в синтакс-помощнике и нашел способ. Надо тебе что-то менять в изучении 1С
Разложил Таблицу значений на Массив Структур
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2013, 22:43
Помогаю со студенческими работами здесь

Как в dblookupcombobox загрузить значение
Как в dblookupcombobox загрузить значение, изначально при загрузке формы кликаю на запись в dbgrid и значение в dblookup пустое, настроено...

Загрузить матрицу из файла
помогите справиться с таким задание в Matlab, пожалуйста! мне нужно в матлаб загрузить данные из файла в виде матрицы. причем нужно...

Загрузить словарь из файла
Есть файл .txt с n количеством слов. Нужно создать словарь, разве @"\dict\fast.txt" не должно считывать мои слова из файла? ...

1с 8.2 загрузить конфигурацию из файла
Столкнулся со странной проблемой, то ли глюк, то ли я чего-то не понимаю или не знаю. У меня есть 2 конфигурации (одна дома, одна рабочая...

Загрузить картинку из файла
загружаю картинку в imageList1 imageList1->Images->Add(Image::FromFile("C:\\images\\0.bmp" )); пытаюсь задать кнопке эту картинку по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru