Подскажите, как настройки взять из *.ini файла

1. vlad_klg 16.10.07 10:18 Сейчас в теме
В Торговле и Склад ред. 9.2 в товарном отчете необходимо из диалога обработки запустить тест на соответствие фирмы и склада в документах (например фирма с кодом 01 соответствует складам с кодами 2 и 3, а фирма с кодом 02 соответствует только складу с кодом 1).
Настройку необходимо взять из ini - файла (пример ini-файла ниже)
D:\IZ_OFIS\
01
01
X:\Mncash\
D:\v_ofis\
d:\Zayavka\
X:\Mncash\
2=3;3=4;1=1;1=2
001,002,006
SLD
1=02;2=02;3=01;4=01
U2

в строчке №8 идет настройка соответствия склад-касса
в строчке № 11 идет настройка соответствия касса-фирма
Используя данный файл необходимо выйти на соответствие склад-фирма и использовать это соответствие в обработке.
Буду очень признателен если поможете)))))
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sashulyT 201 16.10.07 11:00 Сейчас в теме
У 1C нет средств для работы с ини-файлами, поэтому:
1. Читай файл как обыкновенный текстовой файл.
2. Ищи внешнюю компоненту для ини-файлов http://infostart.ru/forum/read.php?25,11090,11173,ref=4825#msg-11173
3. Используй средства 1С. Напимер: ВостановитьЗначения() и СохранитьЗначения()
3. vasilykushnir 63 16.10.07 13:27 Сейчас в теме
1C Рарус API Extender
там есть работа с ини-файлами.
4. vlad_klg 16.10.07 13:37 Сейчас в теме
Не слышал о 1C Рарус API Extender - это конфигурация, программа или что?
Может быть правда ini файл читать как txt, потом функцией
разложить 2 (две) эти строки, получить 2 (два) списка значений, а из них получить СписокЗначений (склад_фирма).
Правильно? Или есть более гибкое решение?
5. vasilykushnir 63 16.10.07 13:41 Сейчас в теме
Это Dll-ка. Че-то алсик не могу присобачить к сообщению.
6. vasilykushnir 63 16.10.07 13:42 Сейчас в теме
И как мне скинуть эту хрынь тебе - ни аськи, ни мыла не указано...?
7. vasilykushnir 63 16.10.07 13:50 Сейчас в теме
алсик - файл
Прикрепленные файлы:
RARUSAPI.rar
8. vlad_klg 16.10.07 13:53 Сейчас в теме
аська 369408001
мыло ovchinnikov_klg@mail.ru
18. vlad_klg 17.10.07 10:18 Сейчас в теме
Как я считаю (может быть неверно) данный код разбивает строки 8,11 , получается 2 (два) списка значений
Как из этих списков значений получить один - соответствие фирма-склад?


Перем Путь;
Функция гмРазобратьСтроку(Стр, Рзд) Экспорт
Перем _сз, _Цикл;

Если ПустаяСтрока(Стр) = 1 Тогда
Возврат "";
КонецЕсли;

_сз = СоздатьОбъект("СписокЗначений");
_КолВхожд = СтрЧислоВхождений(Стр,Рзд);
_ДлСтр = СтрДлина(Стр);
_СтПрав = _ДлСтр;

Для _Цикл = 1 По (_КолВхожд) Цикл
_ГтПоз = Найти(Прав(Стр,_СтПрав), Рзд);
_СтЛев = _ГтПоз - 1;
_сз.ДобавитьЗначение(Лев(Прав(Стр,_СтПрав), _СтЛев));
_СтПрав = _СтПрав - _ГтПоз;
КонецЦикла;

_сз.ДобавитьЗначение(Прав(Стр,_СтПрав));

Возврат _сз;
КонецФункции // гмРазобратьСтроку()
//_________________________________________________________
Функция ЧтениеИНИ()
Ткст = СоздатьОбъект("Текст"); // ИНИфайл
ФайлИНИ = Путь + "Tools\Sets.ini";
Если ФС.СуществуетФайл(ФайлИНИ) = 1 Тогда
Ткст.Открыть(ФайлИНИ);
КатПОС1 = СокрЛП(Ткст.ПолучитьСтроку(8));
КатПОС2 = СокрЛП(Ткст.ПолучитьСтроку(11));

Если (ПустоеЗначение( КатПОС1 ) = 0) И (ПустоеЗначение( КатПОС2 ) = 0) Тогда
СписНастроек1 = гмРазобратьСтроку( КатПОС1, ";" );
СписНастроек2 = гмРазобратьСтроку( КатПОС2, ";" );
КонецЕсли;
Иначе
Предупреждение("Файл с настройками " + ФайлИНИ + "' не обнаружен!",60);
Возврат 0;
КонецЕсли;
КонецФункции //ЧтениеИНИ()

20. vlad_klg 17.10.07 17:41 Сейчас в теме
Спецы помогите найти ошибку (цикл в Функция ЧтениеИНИ() не перебирает все строки), хотелось бы услышать мнение спеца под ником VasilyKushnir)
Функция гмРазобратьСтроку(Стр, Рзд, номерСтр) Экспорт
Перем _сз, _Цикл;

Если ПустаяСтрока(Стр) = 1 Тогда
Возврат "";
КонецЕсли;

//_сз = СоздатьОбъект("СписокЗначений");
_сз = СоздатьОбъект("ТаблицаЗначений");
_Сз.НоваяКолонка("Зн1");
_Сз.НоваяКолонка("Зн2");
_КолВхожд = СтрЧислоВхождений(Стр,Рзд);
_ДлСтр = СтрДлина(Стр);
_СтПрав = _ДлСтр;

Для _Цикл = 1 По (_КолВхожд) Цикл
_ГтПоз = Найти(Прав(Стр,_СтПрав), Рзд);
_СтЛев = _ГтПоз - 1;
//_сз.ДобавитьЗначение(Лев(Прав(Стр,_СтПрав), _СтЛев));
ст = Лев(Прав(Стр,_СтПрав), _СтЛев);
если НомерСтр = 8 Тогда
_Сз.НоваяСтрока();
_Сз.Зн1 = Сред(ст, 1,1); //склад
_Сз.Зн2 = Сред(ст, 3,1); //касса
ИначеЕсли НомерСтр = 11 Тогда
_Сз.НоваяСтрока();
_Сз.Зн1 = Сред(ст, 1,1); //касса
_Сз.Зн2 = Сред(ст, 3,2); //фирма
КонецЕсли;
_СтПрав = _СтПрав - _ГтПоз;
КонецЦикла;

//_сз.ДобавитьЗначение(Прав(Стр,_СтПрав));

Возврат _сз;
КонецФункции // гмРазобратьСтроку()
//__________________________________________________________­________________________
Функция ЧтениеИНИ()

Ткст = СоздатьОбъект("Текст"); // ИНИфайл
Путь = КаталогИБ()+"ExtForms\Tools\";
ФайлИНИ = Путь + "Sets.ini";
Если ФС.СуществуетФайл(ФайлИНИ) = 1 Тогда
Ткст.Открыть(ФайлИНИ);
КатПОС1 = СокрЛП(Ткст.ПолучитьСтроку(8));
КатПОС2 = СокрЛП(Ткст.ПолучитьСтроку(11));
Если (ПустоеЗначение( КатПОС1 ) = 0) И (ПустоеЗначение( КатПОС2 ) = 0) Тогда
СписНастроек1 = гмРазобратьСтроку( КатПОС1, ";" ,8); //скл-касса
СписНастроек2 = гмРазобратьСтроку( КатПОС2, ";" ,11); //касса-фирма
СкладФирма = СоздатьОбъект("ТаблицаЗначений");
СкладФирма.НоваяКолонка("Склад");
СкладФирма.НоваяКолонка("Фирма");
СписНастроек2.ВыбратьСтроки();
Пока СписНастроек2.ПолучитьСтроку() = 1 Цикл
К2 = СписНастроек2.Зн1;
Ф2 = СписНастроек2.Зн2;
с=0;
к=0;
есть = СписНастроек1.НайтиЗначение(к2, с,2);
Если есть=1 Тогда
//СкладФирма.НоваяСтрока();
СкладФирма.Склад = СписНастроек1.ПолучитьЗначение(с,"Зн1") ;
СкладФирма.Фирма = Ф2;
Сообщить(СкладФирма.Склад+" = "+Ф2);
Иначе
Сообщить(к2+ " - не найдено");


КонецЕсли;

КонецЦикла;


КонецЕсли;
Иначе
Предупреждение("Файл с настройками " + ФайлИНИ + " не обнаружен!",60);
Возврат 0;
КонецЕсли;
КонецФункции //ЧтениеИНИ()
9. vasilykushnir 63 16.10.07 13:54 Сейчас в теме
Сейчас DLL-ку скину
Прикрепленные файлы:
rarusapi.rar
10. vasilykushnir 63 16.10.07 13:55 Сейчас в теме
Правда, не знаю, что там за версия сидит - разберешся....
11. vlad_klg 16.10.07 13:56 Сейчас в теме
и как мне подцепить этот алсик, как использовать?
sorry не имею представления))
12. vasilykushnir 63 16.10.07 14:01 Сейчас в теме
А как работать с ini-файлами уже представляешь? Ладно, не обижайся:
1. алс и dll кидаешь в папку bin, где установлена 1С. Dll регистрируешь (http://infostart.ru/profile/440/projects/448/), алс (справка) сама появится в конфигураторе аптоматом.

Как всю эту лабуду вытащить с архива, надеюсь не надо рассказывать. Ладно, ладно - шучу я (настроение у меня сегодня стервозное...).
13. vlad_klg 16.10.07 14:10 Сейчас в теме
спасибо VasilyKushnr, с архивом и рег. DLL проблем не будет
14. vasilykushnir 63 16.10.07 14:12 Сейчас в теме
Во втором архиве оба файла.
15. sashulyT 201 16.10.07 14:50 Сейчас в теме
16. poppy 16.10.07 20:18 Сейчас в теме
Хм. Странно, но приведенный пример в (0) не похож на структуру ini-файла.
17. vasilykushnir 63 17.10.07 08:56 Сейчас в теме
poppy Написал:
-------------------------------------------------------
> Хм. Странно, но приведенный пример в (0) не похож
> на структуру ini-файла.

Правильное замечание.
Возможно ребята так его для удобства обозвали. Хотя. если честно, для такого файла "прикручивать" ВК - как-то не естественно смотрится. Лично я обрабатывал бы его как обычный текстовый, без всяких выпендронов.
19. vasilykushnir 63 17.10.07 10:25 Сейчас в теме
В СЗ из
2=3;3=4;1=1;1=2
ты получишь
2=3
3=4
1=1
1=2
потом каждый элемент списка разбиваешь до знака "=" и после.
21. poppy 17.10.07 21:12 Сейчас в теме
2vlad_klg

В функции гмРазобратьСтроку() в цикле создается количество строк ТЗ равное количеству символов ";" (в твоем примере, это 3), но колиество значений на единицу больше (т.е. 4).
Оставьте свое сообщение

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