Подскажите, как настройки взять из *.ini файла
В Торговле и Склад ред. 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 идет настройка соответствия касса-фирма
Используя данный файл необходимо выйти на соответствие склад-фирма и использовать это соответствие в обработке.
Буду очень признателен если поможете)))))
Настройку необходимо взять из 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 идет настройка соответствия касса-фирма
Используя данный файл необходимо выйти на соответствие склад-фирма и использовать это соответствие в обработке.
Буду очень признателен если поможете)))))
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
У 1C нет средств для работы с ини-файлами, поэтому:
1. Читай файл как обыкновенный текстовой файл.
2. Ищи внешнюю компоненту для ини-файловhttp://infostart.ru/forum/read.php?25,11090,11173,ref=4825#msg-11173
3. Используй средства 1С. Напимер: ВостановитьЗначения() и СохранитьЗначения()
1. Читай файл как обыкновенный текстовой файл.
2. Ищи внешнюю компоненту для ини-файлов
3. Используй средства 1С. Напимер: ВостановитьЗначения() и СохранитьЗначения()
Не слышал о 1C Рарус API Extender - это конфигурация, программа или что?
Может быть правда ini файл читать как txt, потом функцией
разложить 2 (две) эти строки, получить 2 (два) списка значений, а из них получить СписокЗначений (склад_фирма).
Правильно? Или есть более гибкое решение?
Может быть правда ini файл читать как txt, потом функцией
разложить 2 (две) эти строки, получить 2 (два) списка значений, а из них получить СписокЗначений (склад_фирма).
Правильно? Или есть более гибкое решение?
Как я считаю (может быть неверно) данный код разбивает строки 8,11 , получается 2 (два) списка значений
Как из этих списков значений получить один - соответствие фирма-склад?
Перем Путь;
Функция гмРазобратьСтроку(Стр, Рзд) Экспорт
Перем _сз, _Цикл;
Если ПустаяСтрока(Стр) = 1 Тогда
Возврат "";
КонецЕсли;
_сз = СоздатьОбъект("СписокЗначений");
_КолВхожд = СтрЧислоВхождений(Стр,Рзд);
_ДлСтр = СтрДлина(Стр);
_СтПрав = _ДлСтр;
Для _Цикл = 1 По (_КолВхожд) Цикл
_ГтПоз = Найти(Прав(Стр,_СтПрав), Рзд);
_СтЛев = _ГтПоз - 1;
_сз.ДобавитьЗначение(Лев(Прав(Стр,_СтПрав), _СтЛев));
_СтПрав = _СтПрав - _ГтПоз;
КонецЦикла;
_сз.ДобавитьЗначение(Прав(Стр,_СтПрав));
Возврат _сз;
КонецФункции // гмРазобратьСтроку()
//_________________________________________________________
Функция ЧтениеИНИ()
Ткст = СоздатьОбъект("Текст"); // ИНИфайл
ФайлИНИ = Путь + "Tools\Sets.ini";
Если ФС.СуществуетФайл(ФайлИНИ) = 1 Тогда
Ткст.Открыть(ФайлИНИ);
КатПОС1 = СокрЛП(Ткст.ПолучитьСтроку(8));
КатПОС2 = СокрЛП(Ткст.ПолучитьСтроку(11));
Если (ПустоеЗначение( КатПОС1 ) = 0) И (ПустоеЗначение( КатПОС2 ) = 0) Тогда
СписНастроек1 = гмРазобратьСтроку( КатПОС1, ";" );
СписНастроек2 = гмРазобратьСтроку( КатПОС2, ";" );
КонецЕсли;
Иначе
Предупреждение("Файл с настройками " + ФайлИНИ + "' не обнаружен!",60);
Возврат 0;
КонецЕсли;
КонецФункции //ЧтениеИНИ()
Как из этих списков значений получить один - соответствие фирма-склад?
Перем Путь;
Функция гмРазобратьСтроку(Стр, Рзд) Экспорт
Перем _сз, _Цикл;
Если ПустаяСтрока(Стр) = 1 Тогда
Возврат "";
КонецЕсли;
_сз = СоздатьОбъект("СписокЗначений");
_КолВхожд = СтрЧислоВхождений(Стр,Рзд);
_ДлСтр = СтрДлина(Стр);
_СтПрав = _ДлСтр;
Для _Цикл = 1 По (_КолВхожд) Цикл
_ГтПоз = Найти(Прав(Стр,_СтПрав), Рзд);
_СтЛев = _ГтПоз - 1;
_сз.ДобавитьЗначение(Лев(Прав(Стр,_СтПрав), _СтЛев));
_СтПрав = _СтПрав - _ГтПоз;
КонецЦикла;
_сз.ДобавитьЗначение(Прав(Стр,_СтПрав));
Возврат _сз;
КонецФункции // гмРазобратьСтроку()
//_________________________________________________________
Функция ЧтениеИНИ()
Ткст = СоздатьОбъект("Текст"); // ИНИфайл
ФайлИНИ = Путь + "Tools\Sets.ini";
Если ФС.СуществуетФайл(ФайлИНИ) = 1 Тогда
Ткст.Открыть(ФайлИНИ);
КатПОС1 = СокрЛП(Ткст.ПолучитьСтроку(8));
КатПОС2 = СокрЛП(Ткст.ПолучитьСтроку(11));
Если (ПустоеЗначение( КатПОС1 ) = 0) И (ПустоеЗначение( КатПОС2 ) = 0) Тогда
СписНастроек1 = гмРазобратьСтроку( КатПОС1, ";" );
СписНастроек2 = гмРазобратьСтроку( КатПОС2, ";" );
КонецЕсли;
Иначе
Предупреждение("Файл с настройками " + ФайлИНИ + "' не обнаружен!",60);
Возврат 0;
КонецЕсли;
КонецФункции //ЧтениеИНИ()
Спецы помогите найти ошибку (цикл в Функция ЧтениеИНИ() не перебирает все строки), хотелось бы услышать мнение спеца под ником 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;
КонецЕсли;
КонецФункции //ЧтениеИНИ()
Функция гмРазобратьСтроку(Стр, Рзд, номерСтр) Экспорт
Перем _сз, _Цикл;
Если ПустаяСтрока(Стр) = 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;
КонецЕсли;
КонецФункции //ЧтениеИНИ()
А как работать с ini-файлами уже представляешь? Ладно, не обижайся:
1. алс и dll кидаешь в папку bin, где установлена 1С. Dll регистрируешь (http://infostart.ru/profile/440/projects/448/) , алс (справка) сама появится в конфигураторе аптоматом.
Как всю эту лабуду вытащить с архива, надеюсь не надо рассказывать. Ладно, ладно - шучу я (настроение у меня сегодня стервозное...).
1. алс и dll кидаешь в папку bin, где установлена 1С. Dll регистрируешь (
Как всю эту лабуду вытащить с архива, надеюсь не надо рассказывать. Ладно, ладно - шучу я (настроение у меня сегодня стервозное...).
В развитие темы, вот что нашел:
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=4001
poppy Написал:
-------------------------------------------------------
> Хм. Странно, но приведенный пример в (0) не похож
> на структуру ini-файла.
Правильное замечание.
Возможно ребята так его для удобства обозвали. Хотя. если честно, для такого файла "прикручивать" ВК - как-то не естественно смотрится. Лично я обрабатывал бы его как обычный текстовый, без всяких выпендронов.
-------------------------------------------------------
> Хм. Странно, но приведенный пример в (0) не похож
> на структуру ini-файла.
Правильное замечание.
Возможно ребята так его для удобства обозвали. Хотя. если честно, для такого файла "прикручивать" ВК - как-то не естественно смотрится. Лично я обрабатывал бы его как обычный текстовый, без всяких выпендронов.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот