Имя: Пароль:
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%. Самое смешное, что я выбрала не "Загрузить", а "Контроль исполнения". Кто работал с этой обработкой, меня поймет. Как можно хотя бы немного ускорить эту обработку, может убрать все "Сообщить"?