Имя: Пароль:
1C
1С v8
Загрузка данных из табличных документов
0 fleur
 
19.10.12
10:55
Одно поле вычисляется, для его вычисления считывается не маленький текстовый файл, как сделать так чтобы он не считывался на каждой строчке табличного документа, а только один раз? Как можно указать, что он должен считываться на первой строчке?
1 fleur
 
19.10.12
11:00
как прервать процесс считывания на каждой строке из 1300 текстового файла из 1300 строк?
2 fleur
 
19.10.12
11:05
Из-за этого принтер не печатает, sos
3 fleur
 
19.10.12
11:20
Видимо фотку надо поменять
4 Infsams654
 
19.10.12
11:21
ОбработкаПрерыванияПользователя() не ?
5 fleur
 
19.10.12
11:21
Это куда и когда?
6 fleur
 
19.10.12
11:23
Видимо надо было до запуска программы или вместо запуска?
7 ZanderZ
 
19.10.12
11:23
а если его считать ДО цикла ?
8 Infsams654
 
19.10.12
11:24
(5) СП
(6) чего надо-то до запуска программы или вместо запуска?
9 fleur
 
19.10.12
11:25
Обработка Вычислить выполняется на каждой строке, а куда писать то что нужно сделать до вычисления, "До записи" тоже мне кажется уже поздно
10 fleur
 
19.10.12
11:26
Сейчас надо прервать обработку как-то эту(загрузка данных ...), а считывать файл текстовый не знаю куда написать
11 Infsams654
 
19.10.12
11:29
(9), (10) - что это было ?
12 fleur
 
19.10.12
11:30
Запустила обработку, на каждой строке считывает текстовый файл, и теперь отдыхаю
13 MSII
 
19.10.12
11:31
контрол+брейк не помогает?
14 Infsams654
 
19.10.12
11:31
(12) чью обработку ?
15 Infsams654
 
19.10.12
11:32
(13) см. (4)
16 Бледно Золотистый
 
19.10.12
11:35
(1) Это надо?
Пример:

Текст = Новый ЧтениеТекста("d:\win.txt", КодировкаТекста.ANSI);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
   Сообщить(Стр);
   Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
17 fleur
 
19.10.12
13:32
(16) спасибо это уже нашла, но куда это писать?
18 fleur
 
19.10.12
13:36
если где вычислить, то делает на каждой строке, если перед записью, то уже поздно
19 fleur
 
20.10.12
00:56
Можно в таблице выбрать пустой столбец  и написать там 1, дальше проверять ТекстыЯчеек[НомерСтолбца]=1? тогда загружать текстовый файл, а как-нибудь по-другому можно это сделать?
20 zladenuw
 
20.10.12
01:21
""""". АДО в РУКИ.
21 fleur
 
20.10.12
09:09
АДО - аббревиатура?
22 milan
 
20.10.12
10:23
ну сделай фунцию общего модуля, передаешь ей имя файла + чего найти, оно первый раз запоминается. да и обработку допилить 3 секунды
23 fleur
 
20.10.12
21:56
Да, но "конфигурация поставщика не редактируется", поэтому я хотела сделать все в самой обработке, может быть есть параметр номер строки, как к нему обратиться?
24 Сияющий Асинхраль
 
20.10.12
22:52
Ну считай файл один раз, запихни его содержимое в таблицу значений и дальше работай с ней. Этот вариант будет быстро работать и для варианта файла больше 2000 строк
25 fleur
 
20.10.12
23:50
Например если ФайлСчитан =Истина то не считывать файл, иначе считывать и ФайлСчитан= Истина; и это пишем в Выражении для "Вычислить" Так?
26 kotletka
 
21.10.12
00:00
я бы помог и в этот раз, но фотка не торт.. а так на закладке настройка есть кнопка "События" пощелкай по ней вдумчиво ))
27 kotletka
 
21.10.12
00:03
+ без незначительного дописывания обрабоки превать не получится
28 fleur
 
21.10.12
13:18
Проблема в том, что есть 4 места для вставки кода  и они отрабатывают в таком порядке, сначала вычислить и после добавления строки и так на каждой строке, потом по одному разу перез записью, а за ней после записи. А мне нужно перед вычислить. Когда попыталась сделать как в (25), то пишет , что переменная не определена, если написать Перем ФайлСчитан, то к следующему разу значение не запомнится
29 fleur
 
21.10.12
23:34
(24) Вопрос в том, как сделать так, чтобы файл считался 1 раз , а не на каждой строчке?
30 fleur
 
21.10.12
23:34
И этот вопрос был в (0)
31 zladenuw
 
22.10.12
00:55
покажи свой велик. а там подумаю.
32 fleur
 
22.10.12
21:53
Есть поле,которое вычисляю и вот формула:
//Если Число(ТекстыЯчеек[14]) = 1 Тогда
   Результаты = Новый Массив;
   Текст = Новый ЧтениеТекста("D:\1c\Инвентаризация пробная.txt");
Стр = Текст.ПрочитатьСтроку();
Номер = 0;
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
   Результаты.Добавить(Лев(Стр,13));
   Сообщить(Результаты[Номер]);
   Номер = Номер+1;
   Сообщить(Стр);
   Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
       
//КонецЕсли;

РезНом = Справочники.Номенклатура.НайтиПоНаименованию(ТекстыЯчеек[1]);            
Если РезНом =  Справочники.Номенклатура.ПустаяСсылка() Тогда            
   Сообщить  ("Не найдена номенклатура " +  ТекстыЯчеек[1]);        
КонецЕсли;            
РезХар = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(ТекстыЯчеек[2],,,РезНом);            
Если РезХар =  Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка() Тогда            
    Сообщить  (" Не найдена характеристика номенклатуры "+ТекстыЯчеек[2]);        
КонецЕсли;            
ШтрихкодСтроки="";
Штрих = РегистрыСведений.Штрихкоды;
ОтборШтрих = Новый Структура("Владелец");
ОтборШтрих.Владелец = РезНом;
ВыборкаШтрих = Штрих.Выбрать(ОтборШтрих);
Пока ВыборкаШтрих.Следующий() Цикл
Если ВыборкаШтрих.ХарактеристикаНоменклатуры = РезХар  Тогда
   Сообщить("Штрихкод " + ВыборкаШтрих.Штрихкод);
   ШтрихкодСтроки =   ВыборкаШтрих.Штрихкод;
КонецЕсли;
КонецЦикла;
КоличествоФактически = 0;
Для НомерЭлемента =  1 по Результаты.Количество() цикл
   Сообщить ("Ищем в массиве "+ Результаты[НомерЭлемента-1]+" "+ШтрихкодСтроки);
   Если Результаты[НомерЭлемента-1] = ШтрихкодСтроки Тогда
       Сообщить ("Нашла в массиве");    
       КоличествоФактически = КоличествоФактически+1;    
   КонецЕсли;
КонецЦикла;    

Сообщить("КоличествоФактически " + КоличествоФактически);
//ОтборШтрих = Новый Структура();
//ОтборШтрих.Вставить("Владелец", РезНом);
//ОтборШтрих.Вставить("ХарактеристикаНоменклатуры", РезХар);
//ВыборкаШтрих = Штрих.Получить(ОтборШтрих);
//Пока ВыборкаШтрих.Следующий() Цикл
//    Сообщить("Штрихкод " + ВыборкаШтрих.Штрихкод);
//КонецЦикла

Результат = КоличествоФактически;
33 fleur
 
25.10.12
20:53
Запустила обработку загрузка данных из табличных документов и в одном поле вместо "искать" исправила на "вычислить", а формула в (32). За 6 часов отработало 50%. Самое смешное, что я выбрала не "Загрузить", а "Контроль исполнения". Кто работал с этой обработкой, меня поймет. Как можно хотя бы немного ускорить эту обработку, может убрать все "Сообщить"?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn