8.х Хочу написать учет мобильной связи с 0 нид хелп

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем dime_veyron, 17 дек 2008.

  1. TopicStarter Overlay
    dime_veyron
    Offline

    dime_veyron

    Регистрация:
    17 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    ТЗ
    есть файл вида
    номер какой-то
    сотрудника дата время код кто звонил цена
    79ххххххххх 01.10.2008 1:30:20 1 <--+795хххххххх I sms i 0
    79ххххххххх 01.10.2008 7:38:00 32 <--89хххххххххх I Телеф. 0
    79ххххххххх 01.10.2008 7:48:29 22 <--89ххххххххх I Телеф. 0
    79ххххххххх 01.10.2008 9:21:55 116 хххххх O Телеф. 2,6318
    1.нужно его загрузить считать в разные столбцы в табличной части, сравнить со справочником сотрудников
    2. ну а дальше отчеты всевозможные

    собственно нужна помощь как это лучше организовать и сделать если можно с примером... :smile: я только начинаю вникать в мир 1С, так что помогите пожалуйста :unsure:
  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    На самом деле файл у вас плохого вида, а так - вполне себе решаемая задача.
    Просто подумайте как вы хранить собираетесь это, какие документы и регистры вам понадобятся. Загрузку сделать как раз несложно.

    В чем проблема вашего файла - значения разделены пробелами, при этом есть моменты, где само значение разделено пробелом. Вам строк делить будет неудобно.

    А так - придумайте какую-нибудь * или ; для разделения значений и используйте аналог процедуры "ИзСтрокиСРазделителями". Либо напишите свой анализ строк.

    Как бы я организовал:
    1. Сделал бы документ "Регистрация мобильной связи"
    2. Сделал бы регистр накопления "МобильнаяСвязь" (остатки)

    В документе сделал бы табличную часть и кнопку "Заполнить из файла", при проведении сделал бы запись в регистр.

    Табличная часть примерно такая как у вас и написано:
    НомерСотрудника, Дата (включая время), Код (Число), КтоЗвонил, ВидСвязи (справочник, где типа СМСка входящая, исходящая, звонок и т.д.) Цена/Стоимость.

    Регистр:
    Все кроме стоимости закидывается в измерения, стоимость вписывается в ресурсы.

    Номера сотрудников и с кем говорили я бы сделал справочником. Единым, типа "Номера абонентов". Делать измерение "Строка" некорректно.
  3. TopicStarter Overlay
    dime_veyron
    Offline

    dime_veyron

    Регистрация:
    17 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    в файле разделители символ табуляции, а не пробел :) А можно примерчик как это все загрузить
  4. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Тогда Строку можно поделить сразу на набор строк (я обычно сам разделение пишу, мне так проще)
    Код:
    Для Каждого ИсходнаяСтрока И СтрокиФайла Цикл
    НаборСтрок = СтрЗаменить(ИсходнаяСтрока, Символы.Таб, Символы.ПС);
    НомерАбонента = НаборСтрок[0];
    Дата = НаборСтрок[1];
    Время = НаборСтрок[2];
    // ...
    КонецЦикла;
    
    
    Потом конвертируете значения как вам надо, например:
    Абонент = Справочники.Абоненты.НайтиПоРеквизиту(); И т.д.
  5. TopicStarter Overlay
    dime_veyron
    Offline

    dime_veyron

    Регистрация:
    17 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1

    Вложения:

    • 1с8.1.JPG
      1с8.1.JPG
      Размер файла:
      169,6 КБ
      Просмотров:
      57
  6. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    "И" на "ИЗ" поменяйте, опечатка там у Эмина.
  7. TopicStarter Overlay
    dime_veyron
    Offline

    dime_veyron

    Регистрация:
    17 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Код:
     Процедура КнопкаВыполнитьНажатие(Кнопка)
    Текст = Новый ТекстовыйДокумент;
    Текст.Прочитать("D:\111.txt");
    
    Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
    СтрокиФайла = Текст.ПолучитьСтроку(НомерСтроки);
    Для Каждого ИсходнаяСтрока ИЗ СтрокиФайла Цикл
    НаборСтрок = СтрЗаменить(ИсходнаяСтрока, Символы.Таб, Символы.ПС);
    НомерАбонента = НаборСтрок[0];
    стДата = НаборСтрок[1];
    Время = НаборСтрок[2];
    // ...
    КонецЦикла;
    
    //		Позиция = Найти(Стр, Символ(9));
    //		Телефон = Сред(Стр,1,Позиция-1);
    //		прНаименование = Сред(Стр, Позиция+1);
    //		стДата = Сред(Стр, Позиция+1, 20);
    
    //Сообщить (Телефон + " - " + стДата);
    ТЗ = ТабличнаяЧасть1.Добавить();
    
    ТЗ.ТелефонСотрудника=НомерАбонента;
    ТЗ.ДатаЗвонка=стДата;//'20090101000000';
    ТЗ.Абонент=//стДата;
    ТЗ.Цена=100;
    КонецЦикла;	
    КонецПроцедуры
    
    
    теперь выглядит вот так
    но теперь ошибка вот такая

    {Обработка.ЗагрузкаФайлаДетализации.Форма.Форма(8)}: Итератор для значения не определен
    Для Каждого ИсходнаяСтрока ИЗ СтрокиФайла Цикл
  8. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Напишите пользователю Romik он как раз это делает сейчас
  9. TopicStarter Overlay
    dime_veyron
    Offline

    dime_veyron

    Регистрация:
    17 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    мне кажется он не частый гость на форуме :unsure:
  10. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    посмотри вот это ....

    Вложения:

  11. TopicStarter Overlay
    dime_veyron
    Offline

    dime_veyron

    Регистрация:
    17 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    спасибо попробую
  12. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Исправьте код, лишний цикл появляется. Смотрите:
    Код:
     
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Текст = Новый ТекстовыйДокумент;
    Текст.Прочитать("D:э111.txt");
    
    Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
    СтрокаФайла = Текст.ПолучитьСтроку(НомерСтроки);
    НаборСтрок = СтрЗаменить(СтрокаФайла, Символы.Таб, Символы.ПС);
    НомерАбонента = НаборСтрок[0];
    стДата = НаборСтрок[1];
    Время = НаборСтрок[2];
    // ...
    ТЗ = ТабличнаяЧасть1.Добавить();
    
    ТЗ.ТелефонСотрудника=НомерАбонента;
    ТЗ.ДатаЗвонка=стДата;//'20090101000000';
    ТЗ.Абонент=//стДата;
    ТЗ.Цена=100;
    КонецЦикла;    
    КонецПроцедуры
    
    
    
    
  13. TopicStarter Overlay
    dime_veyron
    Offline

    dime_veyron

    Регистрация:
    17 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    {Обработка.ЗагрузкаФайлаДетализации.Форма.Форма(36)}: Получение элемента по индексу для значения не определено
    НомерАбонента = НаборСтрок[0];
    теперь вот это пишет, хотя строку разбивает, ставит вместо таба конец строки :unsure:
  14. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Значит сделайте:
    НаборСтрок.Получить(0) или ПолучитьСтроку(0) и посмотрите в отладчике. Там же не массив получается, я забыл просто, сорри. =)
  15. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    :unsure: Я писал нечто подобное для нашего безопасника - загружал детализации от МТС, конвертированные из PDF детализаций которые рассылает оператор. Штука черновая и предназначалась исключительно для расследования одного инцидента, но вполне стабильная. Все собираюсь ею заняться, добавить поддержку Мегафона, отчетики и прочее, но лениво. Для ускорения ввода юзались регулярки - значительный прирост производительности по сравнению с разбором строк через Лев Прав Сред. Даю с одним условием - если будешь ее дальше развивать, выкладывай в свободный доступ для людев, т.к. когда кинулся искать - программ вроде море, а рабочих нема :(

    Вложения:

  16. TopicStarter Overlay
    dime_veyron
    Offline

    dime_veyron

    Регистрация:
    17 дек 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    сделал вот так
    Код:
    Для НомерСтроки = 1 по СтрЧислоСтрок(НаборСтрок) Цикл
    СтрокаПараметра = СтрПолучитьСтроку(НаборСтрок, НомерСтроки);
    КонецЦикла;
    
    
    заработало :unsure:

Поделиться этой страницей