|
Как разбить Таблицу значений на несколько частей? | ☑ | ||
---|---|---|---|---|
0
mila1231
26.03.19
✎
07:54
|
Есть обычное приложение, дальше в функции запрос, результат записываю в таблицу значений и её же возвращаю. А дальше её нужно разбить на несколько.Как это можно сделать? Как я понимаю, через цикл, но я же не знаю конечное число ТаблицЗначений.
Вообще задача состоит в том, чтоб брать данные из запроса, а дальше записывать в файл, при этом файл не должен содержать более 100 строк. Возможно какое-то другое решение должно быть. Заранее спасибо за подсказки. |
|||
1
ДенисЧ
26.03.19
✎
07:56
|
а в чём проблема?
Цикл, проверка на количество строк прочитанных, запись файла, открытие нового... И не забыть после цикла закрыть... |
|||
2
mila1231
26.03.19
✎
08:05
|
Я не могу сообразить, как цикл сделать Вот функция записи
кодировка = КодировкаТекста.ANSI; ТекстовыйФайлЗапись = Новый ТекстовыйДокумент; Для НачальныйИндекс По КонечныйИндекс Цикл ТекстовыйФайлЗапись.ДобавитьСтроку(текст); КонецЦикла; //ТекстовыйФайлЗапись.ДобавитьСтроку(текст); ТекстовыйФайлЗапись.Записать(имяфайла, Кодировка); ТекстовыйФайлЗапись.закрыть(); Возврат 0; я не могу сообразить, какой должен быть начальный и конечный индексы..то ли я такая то ли день такой.... |
|||
3
Aleksey
26.03.19
✎
08:17
|
(2) И что этот код рабочий? Я имею ввиду цикл.
|
|||
4
SleepyHead
гуру
26.03.19
✎
08:19
|
(0) Не надо таблицы значений разбивать вообще. В цикле сделай счетчик и как только он перевалит за 100, закрывай текущий файл и открывай новый, а счетчик сбрасывай в ноль.
|
|||
5
Aleksey
26.03.19
✎
08:30
|
Для й=НачальныйИндекс По КонечныйИндекс Цикл
Если й % 100 = 0 тогда //новый док Если ТекстовыйДокумент.КоличествоСтрок() > 0 тогда ТекстовыйФайлЗапись.Записать(имяфайла, Кодировка); КонецЕсли; ТекстовыйФайлЗапись = Новый ТекстовыйДокумент; КонецЕсли; ТекстовыйФайлЗапись.ДобавитьСтроку(текст); КонецЦикла; Если ТекстовыйДокумент.КоличествоСтрок() > 0 тогда ТекстовыйФайлЗапись.Записать(имяфайла, Кодировка); КонецЕсли; |
|||
6
mila1231
26.03.19
✎
11:19
|
Если кто разъжует, я рада буду, потому ка как поняла я и гугл ничего мне подходящего не выдаёт . Вот та самая функция, которая ничего не делит и она работает.Сюда передаётся, Та самая таблицазначений = текст и имя файла, оно уже по команде формируется.
///////// Функция ЗаписатьCSV(текст,имяФайла) кодировка = КодировкаТекста.ANSI; ТекстовыйФайлЗапись = Новый ТекстовыйДокумент; ТекстовыйФайлЗапись.ДобавитьСтроку(текст); ТекстовыйФайлЗапись.Записать(имяфайла, Кодировка); ТекстовыйФайлЗапись.закрыть(); Возврат 0; конецФункции ////////// Теперь по циклу. Как я понимаю, я должна поставить цикл, который считает строки моего Текстового документа. Т.е внешний вид что-то типа такого? Для Индекс = 1 по ТекстовыйФалкЗапись.КоличествоСтрок() Цикл Если ТекстовыйФалкЗапись.КоличествоСтрок() = 100 тогда ТекстовыйФайлЗапись.ДобавитьСтроку(текст); ТекстовыйФайлЗапись.Записать(имяфайла, Кодировка); конецЕсли; ТекстовыйФайлЗапись.закрыть(); конецЦикла |
|||
7
sqr4
26.03.19
✎
11:24
|
Фото!
|
|||
8
mila1231
26.03.19
✎
11:33
|
да я себя уже сама по интеллекту на год чувствую.
|
|||
9
sqr4
26.03.19
✎
12:02
|
Лан, начни с постановки, что конкретно нужно сделать.
|
|||
10
1Сергей
26.03.19
✎
12:05
|
разбей код на блоки:
1. Запрос 2. Создание файла 3. обход запроса, заполнение файла 4. Запись файла И дальше думай, что должно выполняться в каком порядке. Что до обхода, что внутри, что после. При каких условиях что должно происходить |
|||
11
mila1231
26.03.19
✎
12:56
|
Из всего, что получилось-это 1. создать функцию с запросом, результат записать в таблицуЗначений и соответственно эту таблицу значений вернуть.
2. Сохранение ТаблицыЗначений в файл.csv. с разбивокй по 100 строк И тут не поехало. |
|||
12
ДенисЧ
26.03.19
✎
12:58
|
Что именно не поехало? Вроде всё уже написали...
|
|||
13
1Сергей
26.03.19
✎
14:03
|
(11) для годовасика неплохо уже :)
|
|||
14
mila1231
27.03.19
✎
08:06
|
Я понимаю, что всё вроде и элементарно, но правда... не стала далеко ходить решила записать просто 100 строк. Возможно, я что-то не так делаю, покажите, если не трудно...
разделитель = ";"; ТаблицаЗначений = ПолучитьТабЗнач(); //из запроса текст = СоздатьДанныеCSV(ТаблицаЗначений,разделитель); кодировка = КодировкаТекста.ANSI; НачальныйИндекс= 1; КонечныйИндекс = ТаблицаЗначений.Количество(); Для й=НачальныйИндекс по КонечныйИндекс цикл й=й+1; ТекстовыйФайлЗапись = Новый ТекстовыйДокумент; Если й < 100 тогда ТекстовыйФайлЗапись.ДобавитьСтроку(текст); ТекстовыйФайлЗапись.Записать(имяфайла, Кодировка); конецЕсли; КонецЦикла; у меня в файле всё равно весь объем... |
|||
15
SleepyHead
гуру
27.03.19
✎
08:12
|
(14) Ну так у вас такой код, который пишет весь объем файла каждый раз в каждый новый файл. Бегло просмотрел код, насчитал три логические ошибки, которые к этому приводят.
|
|||
16
Йохохо
27.03.19
✎
08:16
|
(14) тебе надо %
Арифметические операции В языке определены следующие виды арифметических операций: сложение (Оп1 + Оп2) вычитание (Оп1 - Оп2) умножение (Оп1 * Оп2) деление (Оп1 / Оп2) остаток от деления (Оп1 % Оп2) унарный минус (-Оп1) |
|||
17
Мыш
27.03.19
✎
08:31
|
разделитель = ";";
ДолжноБытьСтрокВФайле = 100; ТаблицаЗначений = ПолучитьТабЗнач(); //из запроса текст = СоздатьДанныеCSV(ТаблицаЗначений,разделитель); ВсегоСтрокТекста = СтрЧислоСтрок(текст); кодировка = КодировкаТекста.ANSI; НомерФайла = 0; Для НомерСтроки=1 По ВсегоСтрокТекста Цикл Если НомерСтроки%ДолжноБытьСтрокВФайле=1 Тогда ТекстовыйФайлЗапись=Новый ТекстовыйДокумент; КонецЕсли; СтрокаТекста = СтрПолучитьСтроку(текст, НомерСтроки); ТекстовыйФайлЗапись.ДобавитьСтроку(СтрокаТекста); Если НомерСтроки%ДолжноБытьСтрокВФайле=0 Тогда НомерФайла = НомерФайла + 1; имяфайла = "КакоетоИмя"+Формат(НомерФайла, "ЧГ=")+".csv"; ТекстовыйФайлЗапись.Записать(имяфайла, Кодировка); КонецЕсли; КонецЦикла; Если Не НомерСтроки%ДолжноБытьСтрокВФайле=0 Тогда НомерФайла = НомерФайла + 1; имяфайла = "КакоетоИмя"+Формат(НомерФайла, "ЧГ=")+".csv"; ТекстовыйФайлЗапись.Записать(имяфайла, Кодировка); КонецЕсли; |
|||
18
mila1231
28.03.19
✎
04:26
|
О, спасибо, я немного по другому сделала, но ваш вариант короче)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |