Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Расчет Количества клиентов в маршрутном листе , База ТИС 7.7 Помогите пожалуйста          
inna.innainna84 Подменю пользователя
сообщение 26.04.16, 22:36
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

В маршрутном листе есть список клиентов, есть такие что повторяються, но есть у клиента реквизит -Неиспользуется, то клиента нужно отнять, меня смущает ;Тз.СдвинутьСтроку(-1); "
вася-стоит реквизит неиспользовать
вася-стоит реквизит неиспользовать
петя
КолвоКлиентов-2, а нужно 1
или
вася-стоит реквизит неиспользовать
вася-стоит реквизит неиспользовать
петя
юра-стоит реквизит неиспользовать
юра-стоит реквизит неиспользовать
КолвоКлиентов-2, а нужно 1

Процедура РасчитатьКолвоКлиентов()       
    Тз = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ,"Клиент");  
    Тз.ВыбратьСтроки();
    Пока Тз.ПолучитьСтроку()=1 Цикл
        Если Тз.Клиент.Неиспользуется = 1 Тогда
            Тз.УдалитьСтроку(Тз.НомерСтроки);
            Если Тз.НомерСтроки > Тз.Количествострок()  Тогда
                Тз.СдвинутьСтроку(-1);    
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    ТЗ.Свернуть("Клиент","");
    КолвоКлиент = Тз.КоличествоСтрок();
    
КонецПроцедуры    // РасчитатьКолвоКлиентов


Сообщение отредактировал logist - 26.04.16, 22:52

Naghual Подменю пользователя
сообщение 27.04.16, 11:07
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 102
Из: Днепропетровск
Спасибо сказали: 21 раз
Рейтинг: 0

по моему намного проще будет просто удалить неиспользуемые


Signature
Я желаю всем Счастья!

Acid Подменю пользователя
сообщение 27.04.16, 11:16
Сообщение #3

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Процедура РасчитатьКолвоКлиентов()       
    Тз = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ,"Клиент");  
    
    КолвоКлиент = 0;
    
    Тз.ВыбратьСтроки();
    Пока Тз.ПолучитьСтроку()=1 Цикл
        Если Тз.Клиент.Неиспользуется = 0 Тогда
            КолвоКлиент = КолвоКлиент  + 1;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры    // РасчитатьКолвоКлиентов

inna.innainna84 Подменю пользователя
сообщение 27.04.16, 12:28
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Ой, нет не считает
клиента с реквизитом не считает, вася,юра, но петю не группирует считает как-2, а не 1
вася-стоит реквизит неиспользовать ----0
юра-стоит реквизит неиспользовать----0
петя
петя

Acid Подменю пользователя
сообщение 27.04.16, 13:17
Сообщение #5

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Процедура РасчитатьКолвоКлиентов()       
    Тз = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ,"Клиент");
    тз.Свернуть("Клиент");
    
    КолвоКлиент = 0;
    
    Тз.ВыбратьСтроки();
    Пока Тз.ПолучитьСтроку()=1 Цикл
        Если Тз.Клиент.Неиспользуется = 0 Тогда
            КолвоКлиент = КолвоКлиент  + 1;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры    // РасчитатьКолвоКлиентов

inna.innainna84 Подменю пользователя
сообщение 27.04.16, 13:21
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Спасибо.

Sharzem Подменю пользователя
сообщение 29.04.16, 16:05
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

inna.innainna84 @ 26.04.16, 22:36 *,

Можно и с удалением строк ТЗ и их подсчетом (так как Вы хотели реализовать), но строки удаляются оттуда немного по-другому.
Можно так:
Процедура РасчитатьКолвоКлиентов()
    Тз = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(Тз,"Клиент");
    Тз.Свернуть("Клиент");
    КолСтрок = Тз.КоличествоСтрок();
    Для сч = 1 По КолСтрок Цикл
        НомерСтрокиТз = КолСтрок-сч+1;//Идем снизу ТЗ вверх
        Тз.ПолучитьСтрокуПоНомеру(НомерСтрокиТз);
        Если Тз.Клиент.Неиспользуется = 1 Тогда
            Тз.УдалитьСтроку();
        КонецЕсли;
    КонецЦикла;
    КолвоКлиент = Тз.КоличествоСтрок();
КонецПроцедуры    // РасчитатьКолвоКлиентов


При использовании оператора цикла с предусловием (Пока ТЗ.ПолучитьСтроку() = 1 Цикл) у Вас происходит переход на n+1 строку, при ее удалении Вы нарушаете выборку строк при чем, следующая строка становится текущей (то есть при переходе на следующую строку строка n+2 будет пропущена поскольку она стает строкой n+1).


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 13:46
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!