8.х В модуле сделать отбор как?

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

  1. TopicStarter Overlay
    ArtDurtuli
    Offline

    ArtDurtuli

    Регистрация:
    7 апр 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Эта функция выгружает карточки клиентов,и при выгрузке к коду КЛАДРУ он добавляет 0,но возникла проблема что некоторым кодам КЛАДР не нужно добавлять 0.
    Коды КЛАДР которым не нужно добавлять 0:
    1601200100
    1604400000
    1604400000
    1604400000
    1604400000
    1604400000
    1604400000
    1600300100
    1601200100
    или
    сделать какой нибудь отбор если наименование Татарстан, то убрать 0 или Найти(кодКладр, "016") = 1 тогда удалить 0, иначе оставить
    Как это в код вписать чтобы работало?
    Пробовал по разному что то не получается.




    Функция ВыгрузитьКарточкиКлиентов(ИмяФайла)

    Состояние("Выгрузка клиентов");
    //Создаем файл
    ПотокВыгрузки = Новый XBase();
    ПотокВыгрузки.Кодировка = КодировкаXBase.OEM; // Кодировка - DOS866
    ПотокВыгрузки.Поля.Добавить("DistrID", "S", 15, ); // Код дистрибьютора
    ПотокВыгрузки.Поля.Добавить("Cust_ID", "S", 15, ); // Код клиента
    ПотокВыгрузки.Поля.Добавить("CustName", "S", 200, ); // Юридическое название клиента.
    ПотокВыгрузки.Поля.Добавить("INN", "S", 12, ); // ИНН клиента
    ПотокВыгрузки.Поля.Добавить("CustCityId","S", 13, ); // Код города юр. адреса клиента
    ПотокВыгрузки.Поля.Добавить("CustAdd", "S", 200, ); // Индекс, название населенного пункта (города), название улицы, дома, корпуса, квартиры
    ПотокВыгрузки.СоздатьФайл(ИмяФайла);
    Если Не ПотокВыгрузки.Открыта() Тогда
    Сообщить("Не удалось создать файл выгрузки " + ИмяФайла, СтатусСообщения.Важное);
    Возврат Ложь;
    КонецЕсли;

    гЗапрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
    гЗапрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);
    гЗапрос.УстановитьПараметр("Дата1", НачалоДня(Дата1));
    гЗапрос.УстановитьПараметр("Дата2", КонецДня(Дата2));

    гЗапрос.Текст =
    "ВЫБРАТЬ
    | ПродажиОбороты.Контрагент КАК Контрагент
    |ПОМЕСТИТЬ Контрагенты
    |ИЗ
    | РегистрНакопления.Продажи.Обороты(
    | &Дата1,
    | &Дата2,
    | Период,
    | Организация = &Организация
    | И Номенклатура В
    | (ВЫБРАТЬ
    | КодыЛБД.Ссылка
    | ИЗ
    | КодыЛБД КАК КодыЛБД)) КАК ПродажиОбороты
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    | КонтактнаяИнформация.Представление КАК Представление,
    | КонтактнаяИнформация.Объект КАК Объект,
    | КонтактнаяИнформация.Поле4 КАК Город,
    | ЕСТЬNULL(АдресныйКлассификатор.Код, АдресныйКлассификатор2.Код) / 100000000000 КАК КодКЛАДР,
    | ЕСТЬNULL(АдресныйКлассификатор.Наименование, АдресныйКлассификатор2.Наименование) КАК Наименование,
    | ЕСТЬNULL(АдресныйКлассификатор.Сокращение, АдресныйКлассификатор2.Сокращение) КАК Сокращение,
    | КонтактнаяИнформация.Поле1 КАК Индекс,
    | КонтактнаяИнформация.Поле2 КАК Регион,
    | КонтактнаяИнформация.Поле3 КАК Район,
    | КонтактнаяИнформация.Поле5 КАК НаселенныйПункт,
    | КонтактнаяИнформация.Вид
    |ПОМЕСТИТЬ КодыКЛАДР
    |ИЗ
    | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
    | ПО (КонтактнаяИнформация.Поле4 = АдресныйКлассификатор.Наименование + "" "" + АдресныйКлассификатор.Сокращение)
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор2
    | ПО (КонтактнаяИнформация.Поле5 = АдресныйКлассификатор2.Наименование + "" "" + АдресныйКлассификатор2.Сокращение)
    |ГДЕ
    | КонтактнаяИнформация.Вид = &Вид
    | И КонтактнаяИнформация.Объект В
    | (ВЫБРАТЬ
    | Контрагенты.Контрагент
    | ИЗ
    | Контрагенты КАК Контрагенты)
    | И АдресныйКлассификатор.Наименование = &Татарстан
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    | КодыКЛАДР.Объект,
    | ВЫРАЗИТЬ(КодыКЛАДР.Представление КАК СТРОКА(1000)) КАК Представление,
    | КодыКЛАДР.КодКЛАДР,
    | КодыКЛАДР.Объект.ИНН,
    | КодыКЛАДР.Объект.Наименование КАК ОбъектНаименование,
    | КодыКЛАДР.Объект.Код,
    | ВЫРАЗИТЬ(КодыКЛАДР.Объект.НаименованиеПолное КАК СТРОКА(1000)) КАК НаименованиеПолное
    |ИЗ
    | КодыКЛАДР КАК КодыКЛАДР
    |ГДЕ
    | (ИСТИНА
    | ИЛИ КодыКЛАДР.КодКЛАДР ЕСТЬ NULL )
    |
    |УПОРЯДОЧИТЬ ПО
    | ОбъектНаименование";
    РезультатЗапроса = гЗапрос.Выполнить();
    ТЗ = РезультатЗапроса.Выгрузить();

    естьОшибка = ложь;
    Для Каждого Строка Из ТЗ Цикл
    Если Не ЗначениеЗаполнено(Строка.ОбъектИНН) Тогда
    Сообщить("Не задан ИНН <"+Строка.ОбъектНаименование+">");
    естьОшибка = Истина;
    //Продолжить;
    КонецЕсли;
    Если Не ЗначениеЗаполнено(Строка.КодКЛАДР) Тогда
    Сообщить("Не задан юр. адрес <"+Строка.ОбъектНаименование+">");
    естьОшибка = Истина;
    //Продолжить;
    КонецЕсли;

    ПотокВыгрузки.Добавить();
    ПотокВыгрузки.DistrID = КодДистрибьютора; // Код дистрибьютора
    ПотокВыгрузки.Cust_ID = УбратьПробелыИзКода(Строка.ОбъектКод); // Код клиента
    ПотокВыгрузки.CustName = Строка.НаименованиеПолное; // Юридическое название клиента.
    ПотокВыгрузки.INN = УбратьПробелыИзКода(Строка.ОбъектИНН); // ИНН клиента
    ПотокВыгрузки.CustCityId = "0"+ УбратьПробелыИзКода(Строка.КодКЛАДР); // Код города торговой точки клиента
    ПотокВыгрузки.CustAdd = Строка.Представление; // Индекс, название населенного пункта (города), название улицы, дома, корпуса, квартиры
    ПотокВыгрузки.Записать();
    КонецЦикла;

    Если естьОшибка Тогда Возврат Ложь; КонецЕсли;

    ПотокВыгрузки.ЗакрытьФайл();
    Возврат Истина;
    КонецФункции
  2. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    В этой строке добавляется "0"?
    Код:
    ПотокВыгрузки.CustCityId = "0"+ УбратьПробелыИзКода(Строка.КодКЛАДР); // Код города торговой точки клиента
    
    
    Тогда может так попробовать?
    Код:
    ПотокВыгрузки.CustCityId = ?(Найти(Строка.КодКладр, "16") = 1,УбратьПробелыИзКода(Строка.КодКЛАДР),"0"+ УбратьПробелыИзКода(Строка.КодКЛАДР)); // Код города торговой точки клиента
    
    
  3. TopicStarter Overlay
    ArtDurtuli
    Offline

    ArtDurtuli

    Регистрация:
    7 апр 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Вроде работет,но выгружать стал меньше записей,ща проверю полностью
  4. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Ну можно удалить "0"
    Код:
    КодКладр = "0" + УбратьПробелыИзКода(Строка.КодКладр);
    Если Найти(КодКладр, "016") = 1 Тогда
    КодКладр = Прав(КодКладр, СтрДлина(КодКладр) - 1);
    КонецЕсли;
    ПотокВыгрузки.CustCityId = КодКладр; // Код города торговой точки клиента
    
    
    не проверял, но както так.
    Ах, да это делать после добавления нуля. Отредактировал код
  5. TopicStarter Overlay
    ArtDurtuli
    Offline

    ArtDurtuli

    Регистрация:
    7 апр 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Спасибо первый вариант работает,второй пока не проверял,но потом тоже проверю

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