Имя: Пароль:
1C
1С v8
Общий модуль
,
0 fleur
 
26.10.12
14:33
Выдает ошибку:"{ОбщийМодуль.Инвентаризация(24,13)}: Обнаружено логическое завершение исходного текста модуля
КонецФункции<<?>>; (Проверка: Толстый клиент (обычное приложение))"



Функция РезультатыИнвентаризации(ШтрихкодСтроки)
Результаты = Новый Массив;
Текст = Новый ЧтениеТекста("D:\1c\Инвентаризация пробная.txt");
Стр = Текст.ПрочитатьСтроку();
Номер = 0;
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
   Результаты.Добавить(Лев(Стр,13));
   Сообщить(Результаты[Номер]);
   Номер = Номер+1;
   Сообщить(Стр);
   Стр = Текст.ПрочитатьСтроку();
   
КонецЦикла;
КоличествоФактически = 0;
Для НомерЭлемента =  1 по Результаты.Количество() цикл
   Сообщить ("Ищем в массиве "+ Результаты[НомерЭлемента-1]+" "+ШтрихкодСтроки);
   Если Результаты[НомерЭлемента-1] = ШтрихкодСтроки Тогда
       Сообщить ("Нашла в массиве");    
       КоличествоФактически = КоличествоФактически+1;    
   КонецЕсли;
КонецЦикла;    

Возврат КоличествоФактически;
КонецФункции;
1 Kashemir
 
26.10.12
14:35
Точку запятую в конце убери, гений.
2 Happy Bear
 
26.10.12
14:35
первый раз вижу точку с запятой после КонецФункции
3 fleur
 
26.10.12
14:40
Быстрее всех оказался Kashemir, спасибо

Это блиц опрос:
Результат = ОбщиеМодули.Инвентаризация.РезультатыИнвентаризации(ШтрихкодСтроки);

Выдает ошибку:"Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(45,13)}: Переменная не определена (ОбщиеМодули)"
4 Kashemir
 
26.10.12
14:42
(3) А что такое ОбщиеМодули ?
5 fleur
 
26.10.12
14:47
Общие модули предназначены для размещения в них текстов функций и процедур, которые могут вызываться из любого другого модуля конфигурации
6 rbcvg
 
26.10.12
14:49
В юмор.
7 Happy Bear
 
26.10.12
14:49
(5) ...могут вызываться из любого другого модуля конфигурации по имени общего модуля а не через ж... т.е. не через ОбщиеМодули
8 Kashemir
 
26.10.12
14:50
(5) Жесть какая. И что СП с тобой согласно ?
9 del123
 
26.10.12
14:50
не пиши общие модули
10 sanja26
 
26.10.12
14:51
(5)Общие модули как объект конфигурации, вызываются по названию
11 Defender aka LINN
 
26.10.12
14:51
(5) Это ты молодец, что скопипастил. А теперь ответь на (4)
12 Жан Пердежон
 
26.10.12
14:51
(3) что вы делали последние почти 2 года?
13 Daenerys
 
26.10.12
14:58
Экспорт
14 Kashemir
 
26.10.12
15:00
(13) К этому мы еще не дошли. Отвечаешь на еще не созревший вопрос
15 fleur
 
26.10.12
15:02
Все исправила, но
" Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(46,13)}: Процедура или функция с указанным именем не определена (РезультатыИнвентаризации)"
16 Kashemir
 
26.10.12
15:03
(15) Вот и дошли. А теперь смотри (13)
17 del123
 
26.10.12
15:03
вот теперь пора (13)
18 nv24
 
26.10.12
15:03
=)
19 fleur
 
26.10.12
15:04
да экспорт тоже уже написала
20 fleur
 
26.10.12
15:05
после этого перезагрузить 1с надо?
21 dmpl
 
26.10.12
15:05
Хм... стареют, видимо, участники. Даже фотку не попросили...
22 fleur
 
26.10.12
15:05
фотка давно уже есть
23 Kashemir
 
26.10.12
15:05
(19) Телепатирую, проблема в {46,13} ^^
24 Reset
 
26.10.12
15:10
а если так

Результат =Инвентаризация.РезультатыИнвентаризации(ШтрихкодСтроки);
25 Kashemir
 
26.10.12
15:11
(20) Ниче се вопросики.
26 pessok
 
26.10.12
15:13
lt;f d.
27 pessok
 
26.10.12
15:13
дежа вю *
28 hhhh
 
26.10.12
15:14
Таки я предлагаю во-первых переименовать общий модуль. Что-то дикое какое-то название. Надо МодульИнвентаризация.
29 fleur
 
26.10.12
15:22
А теперь не нравится строчка:
Стр = Текст.ПрочитатьСтроку();
Пишет:
Ошибка при вызове конструктора (ЧтениеТекста)
Видимо я открываю в режиме обычного приложения, поэтому не работает.
30 Kashemir
 
26.10.12
15:23
(29) Отойди от компьютера
31 fleur
 
26.10.12
15:25
Что еще можно сделать?
32 Kashemir
 
26.10.12
15:27
(31) Борщ сварить, салатик какой сварганить.
33 dmpl
 
26.10.12
15:28
(29) Зачем жестко текст с именем файла вписала? Брось реквизит на форму, прикрути к нему диалог выбора файла - и все заработает.
34 fleur
 
26.10.12
15:31
До этого все работало, просто очень долго, я ждала сутки, а потом компьютер был нужен
35 fleur
 
26.10.12
15:35
(33) точно, дело в названии файла, нет такого на этом ПК
36 fleur
 
26.10.12
15:54
Прироста производительности не случилось. Опять все долго. Функция в (0) работает не долго, но вызывается 1300 раз, как ее разделить на 2 части, чтобы 1 часть функции вызывалась 1 раз, а вторая часть 1300 раз?
37 Конфигуратор1с
 
26.10.12
15:56
(36)а зачем Вы ее на сервер то?
38 dmpl
 
26.10.12
15:58
(36) Сообщить() жрет достаточно много времени. И используй Найти() вместо обхода массива.
39 fleur
 
26.10.12
15:59
в смысле в общие модули?
Использую обработку загрузка данных из табличных документов и там программа, которую напишешь в "Вычислить" выполняется столько раз, сколько строк в табличной части, а так как это долго, то мне посоветовали в общий модуль записать
40 dmpl
 
26.10.12
16:01
А вообще, лучше используй табличную часть. В первой колонке штрих-код, во второй - количество. Дальше просто Свернуть("ШтрихКод", "Количество") - и будет таблица значений со штрихкодами и количеством.
41 Конфигуратор1с
 
26.10.12
16:02
(40)+100500
42 fleur
 
26.10.12
16:03
да, но у меня в табличной части нет штрихкодов
43 fleur
 
26.10.12
16:04
Мне нужно подсчитать количество вхождений в массив, а Найти найдет первое вхождение
44 Конфигуратор1с
 
26.10.12
16:11
(43)То есть для каждого штрихкода Вы перебираете весь текстовый файл?
45 Конфигуратор1с
 
26.10.12
16:11
(44)один и тот же?
46 dmpl
 
26.10.12
16:11
(42) Ну тогда используй таблицу значений промежуточную, где колонка штрих-кодов будет.
47 Конфигуратор1с
 
26.10.12
16:12
Не проще Вам прочитать текстовый файл один раз и запулить его в таблицу значений. А потом просто через найти строки и получать количество вхождений?
48 Конфигуратор1с
 
26.10.12
16:13
(47)Еще быстрее сделать тзшку с штрихкодами, в запрос и вернуть количество()
49 dmpl
 
26.10.12
16:16
Для ускорения работы нужно от подхода "курочка по зернышку клюет" перейти к подходу "все и сразу". В 8-ке именно такой подход приветствуется.
50 fleur
 
26.10.12
16:24
И все-таки как разделить эту функцию на 2 части, чтобы первая часть выполнялась 1 раз?
51 Segate
 
26.10.12
16:31
(50) лол ))) Простите.
Читаем файл один раз. возвращаем ТЗ и тз обходим всем чем угодно. хоть выбрать, хоть найти, хотьче. Зачем эту убогую процедуру как то делить? Ее надо выкинуть и забыть как кошмарный сон с утра
52 Segate
 
26.10.12
16:32
и да... Скажите, а что будет, если в текстовом файлике хаотично наставить лишних пробелов или буковок в начале строки?
53 Конфигуратор1с
 
26.10.12
16:40
(50)опишите задачу более детально
54 fleur
 
26.10.12
16:44
Есть документ "Инвентаризация"(открываю его через обработку Загрузка данных из табличных документов) и есть текстовый файл, в котором на каждой строчке "Штрихкод 1" (второе поле это количество у всех = 1). Далее пытаюсь заполнить поле количество через "Вычислить" фактическим количеством, которое в текстовом файле. При этом штрихкоды в текстовом файле могут повторяться
55 Конфигуратор1с
 
26.10.12
16:45
(54)а зачем вам обработка загрузки из табличных документов?
56 ОбычныйЧеловек
 
26.10.12
16:47
fleur пжалуста - убери слово "Профессионал" из личной карточки.
57 Конфигуратор1с
 
26.10.12
16:55
(56)на основании чего?
58 Segate
 
26.10.12
17:00
Функция РезультатыИнвентаризации() экспорт
Результаты = Новый ТаблицаЗначений;
Результаты.колонки.Добавить("ШК");
Текст = Новый ЧтениеТекста("D:\1c\Инвентаризация пробная.txt");
Стр = Текст.ПрочитатьСтроку();
Номер = 0;
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки

   Стз= Результаты.Добавить();
стз.шк = Лев(Стр,13);
   Стр = Текст.ПрочитатьСтроку();
   
КонецЦикла;

Возврат результаты;
КонецФункции;

результаты = РезультатыИнвентаризации();

отбор = новый структура;
Отбор...

Результат = Результаты.выбрать(Отбор);
PROFIT!!!! = результат.количество();


как то так. Но писал я на коленке прямо тут
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн