|
Как считать из текстового файла в Регистр сведений? | ☑ | ||
---|---|---|---|---|
0
hello19
10.06.12
✎
16:08
|
Пишу функционал, который будет решать систему линейных уравнений (СЛУ) для подсчета себестоимости.
Для начала нужно считать данные из текстового файла в регистр сведений. как это сделать? Программирую под 1с недавно. Вот до чего дошел: Процедура СчитываниеСвободныхЧленов() // Создаем объект типа "Текстовый документ" Текст = Новый ТекстовыйДокумент(); // Пусть к файлу Путь = "C:\Users\mikhailyuk_s\Documents\InfoBase6\свободные.txt"; // Считываем файл Текст.Открыть(Путь); // Разделитель Разделитель = ПС; // Перебираем строки файла, заполняя документ Для а = 1 по Текст.КоличествоСтрок() Цикл // Получаем строку Стр = Текст.ПолучитьСтроку(а); // Заносим строку во временную переменную ТекущаяСтрока = Стр; // Найдем разделитель НомерСимвола = Найти(ТекущаяСтрока, Разделитель); // Выбираем значение до разделителя ДоРазделителя = СокрЛП(Лев(ТекущаяСтрока, НомерСимвола-1)); // Обрезаем строчку до первого символа после разделителя ТекущяаСтрока = Сред(ТекущаяСтрока, НомерСимвола+1); // Ищем следующий разделитель // Если это последний реквизити, то просто берем // оставшуюся строчку НомерСимвола = Найти(ТекущаяСтрока, Разделитель); ПослеРазделителя = Число(Лев(ТекущаяСтрока, НомерСимвола-1)); |
|||
78
pumbaEO
11.06.12
✎
16:24
|
Запись = РегистрыСведений.СвободныеЧлены.СоздатьМенеджерЗаписи();
перенеси в середину цикла. |
|||
79
m-serg74
11.06.12
✎
16:24
|
может как то так)))
Процедура СчитатьСвободныеЧлены() Экспорт Путь = "C:\Users\mikhailyuk_s\Documents\InfoBase6\свободные.txt"; Текст = Новый ТекстовыйДокумент; Текст.Прочитать(Путь); Для а = 1 По Текст.КоличествоСтрок() Цикл Запись = РегистрыСведений.СвободныеЧлены.СоздатьМенеджерЗаписи(); Запись.Уравнение = а; Запись.Значение = Текст.ПолучитьСтроку(а); Запись.Записать(); КонецЦикла; КонецПроцедуры |
|||
80
m-serg74
11.06.12
✎
16:24
|
(78) вот ты быстрый)))
|
|||
81
hello19
11.06.12
✎
16:26
|
Да, все работает. Спасибо!
|
|||
82
pumbaEO
11.06.12
✎
16:27
|
(80) судя, по теме твой ответ лучше... (не надо доп. объяснений)
|
|||
83
hello19
11.06.12
✎
16:41
|
теперь остается другой вопрос - как считать матрицу коэффициентов?
она задана в таком вот виде: (пример) (1;1)(3;2) (1;2) (3;1) Что эквивалентно такой записи: 1*Х1 + 2* Х3 2* Х1 1* Х3 Хочу считать это дело в регистр сведений с соответственно полями "Х" "У" и "Коэффициент". Как это лучше реализовать? Вот что у меня получилось: Процедура СчитатьКоэффициенты() Экспорт Путь = "C:\Users\слу.txt"; ТекстовыйФайл = Новый ЧтениеТекста(Путь, КодировкаТекста.ANSI); СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); Разделитель1 = "("; Разделитель2 = ";"; Разделитель3 = ")"; ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); // Переменная Х НомерУравнения = 1; // Цикл по строкам файла Пока СтрокаФайла <> Неопределено Цикл // Цикл по строкам файла Если ПозицияРазделителя1 <> 0 Тогда Запись = РегистрыСведений.СЛУ.СоздатьМенеджерЗаписи(); ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); ПозицияРазделителя2 = Найти(СтрокаФайла, Разделитель2); ПозицияРазделителя3 = Найти(СтрокаФайла, Разделитель3); Разница12 = ПозицияРазделителя2 - ПозицияРазделителя1-1; Разница23 = ПозицияРазделителя3 - ПозицияРазделителя2-1; Запись.х = НомерУравнения; Запись.у = Сред(СтрокаФайла, ПозицияРазделителя1+1, Разница12 ); Запись.Коэффициент = Сред(СтрокаФайла, ПозицияРазделителя2+1, Разница23 ); Запись.Записать(); Запись.Записать(); Запись.Записать(); СтрокаФайла = Прав(СтрокаФайла,СтрДлина(СтрокаФайла)-ПозицияРазделителя3) КонецЕсли; НомерУравнения = НомерУравнения + 1; КонецЦикла; КонецПроцедуры |
|||
84
m-serg74
11.06.12
✎
16:57
|
опять ты за свое:
Запись = РегистрыСведений.СЛУ.СоздатьМенеджерЗаписи(); Запись.х = НомерУравнения; Запись.у = Сред(СтрокаФайла, ПозицияРазделителя1+1, Разница12 ); Запись.Коэффициент = Сред(СтрокаФайла, ПозицияРазделителя2+1, Разница23 ); Запись.Записать(); Запись.Записать(); Запись.Записать(); запись создаешь одну а записываешь ее 3 раза!!! зачем? |
|||
85
m-serg74
11.06.12
✎
16:59
|
и как ты отсюда:
(1;1)(3;2) = 1*Х1 + 2* Х3 (1;2) = 2* Х1 (3;1) = 1* Х3 получаешь X, Y, Коэффициент??? |
|||
86
m-serg74
11.06.12
✎
17:01
|
и из своего файла ты прочитаешь всего одну (первую) строку:
СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); |
|||
87
hello19
11.06.12
✎
17:02
|
ну понятно как - сначала работаем со строкой (номер строки - это х)
дальше в строке ищу то, то между 1 и 2 разделителем - это у то, что между 2 и 3 разделителями - то коэффициент |
|||
88
m-serg74
11.06.12
✎
17:02
|
наведи в голове порядок... тогда записать в программе проще будет... без обид
|
|||
89
m-serg74
11.06.12
✎
17:05
|
напиши как в регистре будут выглядеть две записи из файла:
1) (1;1)(3;2) 2) (1;2) ??? |
|||
90
hello19
11.06.12
✎
17:09
|
кстати, при считывании свободных членов он округляет их.. .как от этого избавиться?
|
|||
91
m-serg74
11.06.12
✎
17:11
|
приведи пример: про округление
|
|||
92
m-serg74
11.06.12
✎
17:11
|
разделитель дес. знаков кто?
|
|||
93
hello19
11.06.12
✎
17:12
|
все, сам исправил
разделитель - запятая |
|||
94
m-serg74
11.06.12
✎
17:12
|
молодец, так что с (89)
|
|||
95
hello19
11.06.12
✎
17:14
|
как переходить в цикле в следующей строчке?
Процедура СчитатьКоэффициенты() Экспорт Путь = "C:\Users\mikhailyuk_s\Documents\InfoBase6\слу.txt"; ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.Прочитать(Путь); Разделитель1 = "("; Разделитель2 = ";"; Разделитель3 = ")"; ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); // Переменная Х НомерУравнения = 1; // Цикл по строкам файла Пока СтрокаФайла <> Неопределено Цикл // Цикл по строкам файла Если ПозицияРазделителя1 <> 0 Тогда Запись = РегистрыСведений.СЛУ.СоздатьМенеджерЗаписи(); ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); ПозицияРазделителя2 = Найти(СтрокаФайла, Разделитель2); ПозицияРазделителя3 = Найти(СтрокаФайла, Разделитель3); Разница12 = ПозицияРазделителя2 - ПозицияРазделителя1-1; Разница23 = ПозицияРазделителя3 - ПозицияРазделителя2-1; Запись.х = НомерУравнения; Запись.у = Сред(СтрокаФайла, ПозицияРазделителя1+1, Разница12 ); Запись.Коэффициент = Сред(СтрокаФайла, ПозицияРазделителя2+1, Разница23 ); Запись.Записать(); СтрокаФайла = Прав(СтрокаФайла,СтрДлина(СтрокаФайла)-ПозицияРазделителя3) КонецЕсли; НомерУравнения = НомерУравнения + 1; КонецЦикла; КонецПроцедуры |
|||
96
m-serg74
11.06.12
✎
17:17
|
я говорю определись...
то ТекстовыйФайл = Новый ТекстовыйДокумент; то ТекстовыйФайл = Новый ЧтениеТекста(Путь, КодировкаТекста.ANSI); |
|||
97
m-serg74
11.06.12
✎
17:17
|
хватит метаться из стороны в сторону)
|
|||
98
pumbaEO
11.06.12
✎
17:17
|
Я так понимаю, плавно переходим к рассчету симплекс метода или системы линейных уровнений на 1С ?
|
|||
99
m-serg74
11.06.12
✎
17:18
|
так он для того все это и делает, правда так и осталось не выясненным зачем РС, а не ТабЗнач)
|
|||
100
Grusswelle
11.06.12
✎
17:20
|
100!
|
|||
101
m-serg74
11.06.12
✎
17:22
|
(100) а пользы из 100 на 3 поста)))
|
|||
102
hello19
11.06.12
✎
17:24
|
>pumbaEO
Нет, буду искать решение СЛУ итерационными методами >m-serg74 просто хочу реализовать одно и тоже действие несколькими способами... |
|||
103
m-serg74
11.06.12
✎
17:26
|
для начала сделай одним, когда будет правильно работать, если хочешь потренироваться сделаешь вторым, знаешь поговорку про 2х зайцев?
|
|||
104
m-serg74
11.06.12
✎
17:28
|
человек не Windows(многозадачный) и все делает последовательно...
|
|||
105
m-serg74
11.06.12
✎
17:29
|
так что с (89) ?
|
|||
106
hello19
11.06.12
✎
17:34
|
Да как-то глухо с (89)
Пока учусь и хочу, чтобы было несколько правильных шаблонов считывания... |
|||
107
m-serg74
11.06.12
✎
17:35
|
да ты не в программе (89), а на бумаге что ли придумай как будешь обрабатывать...
|
|||
108
hello19
11.06.12
✎
17:39
|
Так я же писал уже как:
Считываем строчку х - номер строки Ищем в ней первые 3 разделителя. То, что между 1 и 2 - то у. То, что между 2 и 3 - то коэффициент. После чего берем остаток стоки и продолжаем до тех пор пока строка не станет пустой. Строка - пустая, берем новую строчку... |
|||
109
hello19
11.06.12
✎
17:41
|
По идее должно работать, но что-то не очень..
Процедура СчитатьКоэффициенты() Экспорт Путь = "C:\Users\слу.txt"; ТекстовыйФайл = Новый ЧтениеТекста(Путь, КодировкаТекста.ANSI); СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); Разделитель1 = "("; Разделитель2 = ";"; Разделитель3 = ")"; ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); // Переменная Х НомерУравнения = 1; // Цикл по строкам файла Пока СтрокаФайла <> Неопределено Цикл // Цикл по строкам файла Если ПозицияРазделителя1 <> 0 Тогда Запись = РегистрыСведений.СЛУ.СоздатьМенеджерЗаписи(); ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); ПозицияРазделителя2 = Найти(СтрокаФайла, Разделитель2); ПозицияРазделителя3 = Найти(СтрокаФайла, Разделитель3); Разница12 = ПозицияРазделителя2 - ПозицияРазделителя1-1; Разница23 = ПозицияРазделителя3 - ПозицияРазделителя2-1; Запись.х = НомерУравнения; Запись.у = Сред(СтрокаФайла, ПозицияРазделителя1+1, Разница12 ); Запись.Коэффициент = Сред(СтрокаФайла, ПозицияРазделителя2+1, Разница23 ); Запись.Записать(); СтрокаФайла = Прав(СтрокаФайла,СтрДлина(СтрокаФайла)-ПозицияРазделителя3) КонецЕсли; НомерУравнения = НомерУравнения + 1; СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); КонецЦикла; КонецПроцедуры |
|||
110
m-serg74
11.06.12
✎
17:44
|
ты из строки в этом коде возьмешь только первое (...;...)
|
|||
111
m-serg74
11.06.12
✎
17:45
|
и что значит "По идее должно работать"? ты в блокноте что ли программу пишешь, проверить нет возможности и огласить результат работы...
|
|||
112
hello19
11.06.12
✎
17:47
|
запускаю программу - результата нет..
алгоритм правильный |
|||
113
hello19
11.06.12
✎
17:47
|
почему возьму только первое?
|
|||
114
m-serg74
11.06.12
✎
17:48
|
потому что:
СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); КонецЦикла; |
|||
115
m-serg74
11.06.12
✎
17:49
|
больше циклов не вижу...О-О
|
|||
116
m-serg74
11.06.12
✎
17:50
|
>алгоритм правильный
- смелое заявление, почему тогда >запускаю программу - результата нет.. |
|||
117
hello19
11.06.12
✎
17:50
|
не вижу ошибки(
я же как делаю - беру строчку: СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); Работаю с ней: Если ПозицияРазделителя1 <> 0 Тогда Запись = РегистрыСведений.СЛУ.СоздатьМенеджерЗаписи(); ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); ПозицияРазделителя2 = Найти(СтрокаФайла, Разделитель2); ПозицияРазделителя3 = Найти(СтрокаФайла, Разделитель3); Разница12 = ПозицияРазделителя2 - ПозицияРазделителя1-1; Разница23 = ПозицияРазделителя3 - ПозицияРазделителя2-1; Запись.х = НомерУравнения; Запись.у = Сред(СтрокаФайла, ПозицияРазделителя1+1, Разница12 ); Запись.Коэффициент = Сред(СтрокаФайла, ПозицияРазделителя2+1, Разница23 ); Запись.Записать(); СтрокаФайла = Прав(СтрокаФайла,СтрДлина(СтрокаФайла)-ПозицияРазделителя3) КонецЕсли и как только с ней отработал, то перехожу к следующей.. НомерУравнения = НомерУравнения + 1; СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); КонецЦикла; Разве нет? |
|||
118
hello19
11.06.12
✎
17:51
|
результата нет, потому что реализация алгоритма неправильная
|
|||
119
m-serg74
11.06.12
✎
17:52
|
не "как только с ней отработал", а обработал первые скобочки и взял следующую строку...
|
|||
120
m-serg74
11.06.12
✎
17:53
|
может
Если ПозицияРазделителя1 <> 0 Тогда //////////////// КонецЕсли заменить на Пока ПозицияРазделителя1 <> 0 Цикл //////////////// КонецЦикла; |
|||
121
m-serg74
11.06.12
✎
17:55
|
Считываем строчку
х - номер строки это номер строки в файле или порядковый номер (...)? |
|||
122
hello19
11.06.12
✎
17:55
|
заменил, но ничего не поменялось - результата нет
а почему я "обработал первые скобочки и взял следующую строку..." я же работаю вроде с одной и той же.. |
|||
123
hello19
11.06.12
✎
17:55
|
х - это номер строки
|
|||
124
m-serg74
11.06.12
✎
17:56
|
покажи место где ты в строчке обрабатываешь вторые (...)
|
|||
125
m-serg74
11.06.12
✎
17:57
|
(123) т.е. если в строчке несколько (...) то Х все равно не будет меняться? я правильно понял?
|
|||
126
hello19
11.06.12
✎
17:57
|
СтрокаФайла = Прав(СтрокаФайла,СтрДлина(СтрокаФайла)-ПозицияРазделителя3)
Здесь я беру все что справа от обработанной скобки. Разве нет? |
|||
127
m-serg74
11.06.12
✎
17:58
|
правильно берешь а обрабатываешь то где?
|
|||
128
m-serg74
11.06.12
✎
18:00
|
сразу после этого ты берешь след. строку
СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); |
|||
129
m-serg74
11.06.12
✎
18:00
|
отладчик включи и посмотри очередность действий твоей проги
|
|||
130
hello19
11.06.12
✎
18:01
|
если в строчке несколько скобок, то Х не меняется - остается тем же
Пока СтрокаФайла <> Неопределено Цикл // Цикл по строке файла Пока ПозицияРазделителя1 <> 0 Цикл Запись = РегистрыСведений.СЛУ.СоздатьМенеджерЗаписи(); ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); ПозицияРазделителя2 = Найти(СтрокаФайла, Разделитель2); ПозицияРазделителя3 = Найти(СтрокаФайла, Разделитель3); Разница12 = ПозицияРазделителя2 - ПозицияРазделителя1-1; Разница23 = ПозицияРазделителя3 - ПозицияРазделителя2-1; Запись.х = НомерУравнения; Запись.у = Сред(СтрокаФайла, ПозицияРазделителя1+1, Разница12 ); Запись.Коэффициент = Сред(СтрокаФайла, ПозицияРазделителя2+1, Разница23 ); Запись.Записать(); СтрокаФайла = Прав(СтрокаФайла,СтрДлина(СтрокаФайла)-ПозицияРазделителя3); ПозицияРазделителя1 = Найти(СтрокаФайла, Разделитель1); КонецЦикла; НомерУравнения = НомерУравнения + 1; СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); КонецЦикла; Вот я отрезал обработанную скобку: СтрокаФайла = Прав(СтрокаФайла,СтрДлина(СтрокаФайла)-ПозицияРазделителя3) |
|||
131
m-serg74
11.06.12
✎
18:03
|
и что в рег. ничего не пишется?
|
|||
132
hello19
11.06.12
✎
18:03
|
нет, не пишется(
|
|||
133
m-serg74
11.06.12
✎
18:03
|
я домой))
|
|||
134
hello19
11.06.12
✎
18:06
|
ээх, ладно.. спасибо за помощь - буду сидеть разбираться
|
|||
135
hello19
11.06.12
✎
18:22
|
Все-равное не пойму где косяк...
|
|||
136
ChAlex
11.06.12
✎
18:45
|
(135) - может стоило-бы кого-нибудь нанять? Ведь это еще даже не начало ...
|
|||
137
hello19
11.06.12
✎
19:00
|
нанять? Вы, разве начинали изучение платформы с того, что нанимали тех, кто за вас выполнит ваше задание на не?
|
|||
138
ChAlex
11.06.12
✎
19:07
|
а - это побаловаться..., ну тогда я начинал с того, что 3 раза перечитал все что было доступно, потом год с отладчиком так сказать в руках, и первый вопрос который у меня возник - был наверное лет через 5. К этому времени уже обленился искать сам. где-то так. не в укор конечно, но что бы задавать вопросы - неплохо бы сначала поискать ответы самому. а для этого ну хотя бы дочитать документацию до конца ВСЮ. а еще лучше - так видео курс посмотреть - благо на просторах инета скачать не проблема. Уверяю - результат на выходе будет значительно быстрее и качественнее...
|
|||
139
ChAlex
11.06.12
✎
19:08
|
(+138) - все это не в обиду, а в качестве совета.
|
|||
140
hello19
11.06.12
✎
19:11
|
мне бы сейчас больше подошел совет по коду...
|
|||
141
ChAlex
11.06.12
✎
19:23
|
(140) - ну с первого поста по 130 - я смотрю вопросы сместилось вместе с поправкой каждого шага. честно говоря перечитывать все посты что бы понять а в чем-же вопрос на нынешний момент - как-то неохота. после того как заработает последний вариант кода - появится следующий вопрос... Время на отладку данного кода прочитав документацию - 5 минут с перекуром с кружкой пива. А сколько времени потратили вы? Теперь умножьте на еще не полученные вопросы - такими темпами жизни не хватит. В принципе могу подсказать, если введете в курс проблемы не отправляя перечитывать развитие сего сюжета :-)
|
|||
142
hello19
11.06.12
✎
19:37
|
Как сделать так, чтобы после закрытия 1с предприятия Регистры сведений были пустыми, т.е. как их чистить?
|
|||
143
hello19
11.06.12
✎
19:39
|
Сейчас задал общий вопрос, ответ на который опытный программист может дать не перечитывая историю топика...
|
|||
144
ChAlex
11.06.12
✎
19:43
|
В модуле обычного приложения (если вы запускаете 1с в обычном режиме) либо модуле управляемого приложения (если запускается в управляемом режиме) пишется в обработчике события код:
Рег=РегистрыСведений.хххх.СоздатьНаборЗаписей(); Рег.Записать(); |
|||
145
ChAlex
11.06.12
✎
19:43
|
(+144) забыл указать: обработчик событий №ПриЗавершенииРаботыСистемы" - по-памяти по-моему так называется
|
|||
146
ChAlex
11.06.12
✎
19:45
|
(+144) - можно и в обработчике "ПередЗаверешениемРаботыСистемы", а можно при старте приложения в обработчике "ПередНачаломРаботыСистемы" - как нравится
|
|||
147
hello19
12.06.12
✎
13:55
|
Как сделать так, чтобы регистры сведений очищались после закрытия 1с:предприятие?
|
|||
148
hhhh
12.06.12
✎
14:07
|
ИМХО основная ошибка автора, он плохо учил русский язык в школе. Ча-ща надо писать через "а", а он пишет через "я"
ТекущяаСтрока = а вы тут развернули на 150 постов. |
|||
149
hello19
12.06.12
✎
14:13
|
Если бы было хоть немного разума, то прочел бы история и увидел, что 150 постов не к этому относятся...
|
|||
150
hello19
12.06.12
✎
14:15
|
код для очистки регистра такой:
РегСЛУ = РегистрыСведений.СЛУ.СоздатьНаборЗаписей(); РегСЛУ.Записать(); РегСЧ = РегистрыСведений.СвободныеЧлены.СоздатьНаборЗаписей(); РегСЧ.Записать(); Куда нужно его вставить, чтобы при закрытии приложения регистры очищались? |
|||
151
J_B
12.06.12
✎
14:18
|
(147) чем не нравится метод описанный в (144 - 146)? да и, если не надо хранить инфу, зачем использовать РС?
|
|||
152
hello19
12.06.12
✎
14:21
|
Тут такое дело - просто взял регистры сведений в качестве хранилищ для коэффициентов и свободных членов системы. Вообщем то, скоро думаю перейти на ТаблицыЗначений (просто в качестве практики)
Метод - нравиться.. только не знаю, куда именно нужно вставить строки, чтобы была очистка регистров... |
|||
153
J_B
12.06.12
✎
14:30
|
(152) Если очень надо очищать именно при закрытии приложения то в модуле обычного приложения (пкм на названии конфигурации в дереые метаданных в конфигураторе - "Открыть модуль обычного приложения") найти процедуру "Процедура ПриЗавершенииРаботыСистемы()" и туда вставить этот код.
Но вот если все это городится в какой-то внешней обработке, то лучше в обработчике ПриЗакрытии() формы этой обработки. И еще: неплохо бы раздобыть книжку "1С:Предприятие. Простые примеры разработки" |
|||
154
hello19
12.06.12
✎
14:35
|
Да да , мне многие рекомендовали книжку - появится у меня скоро...
Теперь по коду: я немного не понял - процедура "Процедура ПриЗавершенииРаботыСистемы()" уже где то есть, так? |
|||
155
hello19
12.06.12
✎
14:35
|
просто не пойму, где "Открыть модуль обычного приложения"
|
|||
156
m-serg74
12.06.12
✎
14:39
|
тебе ж J_B написал:
пкм на названии конфигурации в дереые метаданных в конфигураторе - "Открыть модуль обычного приложения") найти процедуру "Процедура ПриЗавершенииРаботыСистемы()" |
|||
157
m-serg74
12.06.12
✎
14:41
|
и ты ж вроде в v8: Проблема с обработками написал что разобрался...
|
|||
158
J_B
12.06.12
✎
14:41
|
В конфигураторе слева есть дерево метаданных, самая верхняя строчка в нем - название конфигурации - вот там и надо делать пкм (правая кнопка мыши).
Дальше: процедура может быть а может и не быть (зависит от того, какая конфигурация). Если есть - дописываем к существующей, нету - создаем свою |
|||
159
J_B
12.06.12
✎
14:45
|
Но вот я бы не лез в типовые модули... лучше прикрутить к обработке кнопочку "Очистить регистры" и в ее обработчик влепить упомянутый кусочек кода.
|
|||
160
m-serg74
12.06.12
✎
14:46
|
навряд ли там типовая...
|
|||
161
J_B
12.06.12
✎
14:48
|
(160) тем более не лез бы на начальных уровнях...
|
|||
162
m-serg74
12.06.12
✎
14:52
|
да там скорее всего или вообще пустая или каркасная
|
|||
163
m-serg74
12.06.12
✎
14:55
|
ибо
РегистрыСведений.СЛУ, РегистрыСведений.СвободныеЧлены |
|||
164
hello19
12.06.12
✎
16:13
|
Извиняюсь, что так долго... у меня там нет "Открыть модуль обычного приложения"
есть управляемое.. |
|||
165
m-serg74
12.06.12
✎
16:17
|
значит в модуле Управляемого приложения ваяй...
|
|||
166
m-serg74
12.06.12
✎
16:20
|
просто у тебя в настройках стоит вариант запуска - только Управляемое приложение
|
|||
167
hello19
12.06.12
✎
16:21
|
Ошибка(
{МодульУправляемогоПриложения(6,10)}: Переменная не определена (РегистрыСведений) РегСЧ = <<?>>РегистрыСведений.СвободныеЧлены.СоздатьНаборЗаписей(); (Проверка: Тонкий клиент) |
|||
168
m-serg74
12.06.12
✎
16:27
|
правильно... ошибка из
Процедура ПриЗавершенииРаботыСистемы() ОчиститьРегистры(); КонецПроцедуры; делай вызов другой процедуры, например: &НаСервере Процедура ОчиститьРегистры() ///ляляляляля КонецПроцедуры |
|||
169
hello19
12.06.12
✎
16:49
|
Почему то нет очистки...(
|
|||
170
hello19
12.06.12
✎
16:56
|
все работает,толкьо ничего не очищает(
|
|||
171
hello19
12.06.12
✎
17:42
|
Решил, что лучше держать все коэффициенты (и коэффициенты системы и свободные члены) в одном регистре - объединил 2 вышеуказанных процедуры и что-то не очень то получается....
Процедура Считывание() Экспорт Текст = Новый ТекстовыйДокумент; Путь = "C:\свободные.txt"; Текст.Прочитать(Путь); Для а = 1 По Текст.КоличествоСтрок() Цикл Запись = РегистрыСведений.СЛУ.СоздатьМенеджерЗаписи(); Запись.СвободныйЧлен = Текст.ПолучитьСтроку(а); Запись.Записать(); КонецЦикла; Путь2 = "C:\слу.txt"; Текст.Прочитать(Путь2); Разделитель1 = "("; Разделитель2 = ";"; Разделитель3 = ")"; // Переменная Х НомерУравнения = 1; // Цикл по количеству строк Для а = 1 По Текст.КоличествоСтрок() Цикл Строка = Текст.ПолучитьСтроку(а); ПозицияРазделителя1 = Найти(Строка, Разделитель1); // Цикл по строке Пока ПозицияРазделителя1 <> 0 Цикл Запись = РегистрыСведений.СЛУ.СоздатьМенеджерЗаписи(); ПозицияРазделителя1 = Найти(Строка, Разделитель1); ПозицияРазделителя2 = Найти(Строка, Разделитель2); ПозицияРазделителя3 = Найти(Строка, Разделитель3); Разница12 = ПозицияРазделителя2 - ПозицияРазделителя1 - 1; Разница23 = ПозицияРазделителя3 - ПозицияРазделителя2 - 1; Запись.х = НомерУравнения; Запись.у = Сред(Строка, ПозицияРазделителя1+1, Разница12 ); НепроверенныйКоэффициент = Сред(Строка, ПозицияРазделителя2+1, Разница23 ); Если НепроверенныйКоэффициент = "0" Тогда Запись.Коэффициент = 1; Иначе Запись.коэффициент = НепроверенныйКоэффициент; КонецЕсли; //Запись.Коэффициент = Сред(Строка, ПозицияРазделителя2+1, Разница23 ); Запись.Записать(); Строка = Прав(Строка,СтрДлина(Строка)-ПозицияРазделителя3); ПозицияРазделителя1 = Найти(Строка, Разделитель1); КонецЦикла; НомерУравнения = НомерУравнения + 1; КонецЦикла; КонецПроцедуры |
|||
172
hello19
12.06.12
✎
17:47
|
черт, вопрос отпал)
|
|||
173
hello19
12.06.12
✎
18:22
|
И, тем не менее, не работает очистка регистров.
|
|||
174
m-serg74
12.06.12
✎
18:48
|
off: чушь какая то очередная...
|
|||
175
hello19
20.06.12
✎
15:29
|
как узнать, сколько в регистре сведений элементов?
|
|||
176
hello19
20.06.12
✎
16:11
|
как скопировать данные из регистра сведений в таблицу значений?
|
|||
177
Bob2005
22.06.12
✎
11:14
|
Выгрузить()
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |