|
Как программно убрать пробелы при загрузке данных | ☑ | ||
---|---|---|---|---|
0
amadeus2010
05.11.13
✎
10:37
|
Добрый день как убрать пробелы между цифрами при заполнении значений
Вот строка кода Строка.НомерМаршрута = Формат(Лист.Cells(ПоСтрокам,20).Value,"ЧГ="); Если в администрировании в региональных настройках в группировка поставить 0 то пробелы исчезают, но клиент не хочет так как боится сбить настройки. Поле в форме куда загружается строка имеет строковый тип |
|||
1
Ненавижу 1С
гуру
05.11.13
✎
10:38
|
Строка.НомерМаршрута = Лист.Cells(ПоСтрокам,20).Text;
|
|||
2
amadeus2010
05.11.13
✎
10:44
|
пробелы все равно остались между цифрами получается так 1 002 004
|
|||
3
amadeus2010
05.11.13
✎
10:46
|
пардон был не прав все получилось, в обработке в реквизите номер маршрута стоял тип число вместо строка
|
|||
4
depthzer0
05.11.13
✎
10:47
|
ЧГ=0 - единственный вариант для форматной строки.
а СтрЗаменить(Лист.Cells(ПоСтрокам,20).Text, " ", "") не помогает? |
|||
5
amadeus2010
05.11.13
✎
11:01
|
Получилось вот так
Строка.НомерМаршрута = Лист.Cells(ПоСтрокам,20).Text; спасибо (1) |
|||
6
Господин ПЖ
05.11.13
✎
11:03
|
346467567567563 жертва неразрывного пробела...
|
|||
7
amadeus2010
05.11.13
✎
11:16
|
еще вопрос по теме при загрузке данных в пустой справочник идет дублирование наименований по коду Спр.Наименование = Строка.ShopName; в контрагентах создаются 2 наименования но с разными кодами,хотя в тестовой базе такого не было
|
|||
8
Ненавижу 1С
гуру
05.11.13
✎
11:26
|
(7) на то она и тестовая
|
|||
9
amadeus2010
05.11.13
✎
11:28
|
рабочая база тоже пустая и не содержит никаких контрагентов
|
|||
10
amadeus2010
05.11.13
✎
11:29
|
просто интересно как такое возможно, клиент начал делать мозги
|
|||
11
Холодильник
05.11.13
✎
11:30
|
(7) для начала необходимо искать контрагентов по наименованию, а потом создавать новых
|
|||
12
Холодильник
05.11.13
✎
11:30
|
+ у вас в третьей строке кода ошибка
|
|||
13
amadeus2010
05.11.13
✎
11:32
|
(12) какая ошибка у меня только Спр.Наименование = Строка.ShopName,
я сейчас сделал так ////////////////////////////////////////////////// Спр = Справочники.Контрагенты.СоздатьЭлемент(); Если Справочники.Контрагенты.НайтиПоНаименованию(Строка.ShopName).Пустая() тогда Спр.Наименование = Строка.ShopName; Спр.НаименованиеПолное=Строка.ShopName; Спр.Покупатель = Истина; Спр.ИНН =Строка.НомерМаршрута; Спр.ЮрФизЛицо=Перечисления.ЮрФизЛицо.ЮрЛицо; Спр.Подразделение=Справочники.Подразделения.НайтиПоНаименованию(Строка.Filial, Истина); Спр.Родитель =Группа.Ссылка; Спр.Комментарий = Строка.ContactPerson + ";"; Иначе Сообщить("Найден элемент справочника с указанным наименованием!"); КонецЕсли; /////////////////////////////////////////////////////// |
|||
14
Ненавижу 1С
гуру
05.11.13
✎
11:34
|
может наименование обрезается?
|
|||
15
Господин ПЖ
05.11.13
✎
11:37
|
код УГ.
|
|||
16
Холодильник
05.11.13
✎
11:41
|
код - мега УГ.
зачем создавать, а потом искать? |
|||
17
amadeus2010
05.11.13
✎
11:45
|
если я должен вынести в начало кода, а потом создать элемент так?
|
|||
18
Холодильник
05.11.13
✎
11:52
|
алгоритм:
Ищем по наименованию. если не находим - создаем новый если находим - ничего не делаем, либо получаем объект и изменяем |
|||
19
amadeus2010
05.11.13
✎
12:00
|
я немного подправил код
/////////////////////////////////// Если Справочники.Контрагенты.НайтиПоНаименованию(Строка.ShopName).Пустая() тогда Спр = Справочники.Контрагенты.СоздатьЭлемент(); //Спр.Код=Строка.Код; Спр.Наименование = Строка.ShopName; Спр.НаименованиеПолное=Строка.ShopName; Спр.Покупатель = Истина; Спр.ИНН =Строка.НомерМаршрута; Спр.ЮрФизЛицо=Перечисления.ЮрФизЛицо.ЮрЛицо; Спр.Подразделение=Справочники.Подразделения.НайтиПоНаименованию(Строка.Filial, Истина); Спр.Родитель =Группа.Ссылка; Спр.Комментарий = Строка.ContactPerson + ";"; Иначе Сообщить("Найден элемент справочника с указанным наименованием!"); КонецЕсли; /////////////////////////////////////////////////// |
|||
20
Холодильник
05.11.13
✎
12:02
|
не используйте в качестве имени переменной "строка"
это зарезервированное слово, лучше вместо него использовать, например, "СтрокаФайла" И обрезайте пробелы в строковых реквизитах: Спр.Наименование = СокрЛП(СтрокаФайла.ShopName); |
|||
21
Ненавижу 1С
гуру
05.11.13
✎
12:07
|
(20) "не используйте в качестве имени переменной "строка"
это зарезервированное слово" это миф (для 8.х) |
|||
22
xantimans
05.11.13
✎
12:07
|
(0)стрзаменить(Лист.Cells(ПоСтрокам,20).Value, символы.нпп,"")
|
|||
23
Холодильник
05.11.13
✎
12:08
|
(21) это не миф, а правила хорошего кода.
|
|||
24
amadeus2010
05.11.13
✎
12:08
|
(22) это вместо Строка.НомерМаршрута = Формат(Лист.Cells(ПоСтрокам,20).Value,"ЧГ=");
|
|||
25
Холодильник
05.11.13
✎
12:09
|
+оно к ошибке может и не приведет, но лучше этим не злоупотреБЛЯТЬ и называть переменные соответственно их предназначениям
|
|||
26
xantimans
05.11.13
✎
12:12
|
(24) вместо
|
|||
27
amadeus2010
05.11.13
✎
12:29
|
(26) понятно, интересно пока не убирал пробелы между цифрами все садилось нормально без дублей, сейчас ни ИНН не заполняется и наименования дублируются
|
|||
28
amadeus2010
05.11.13
✎
12:36
|
насчет ИНН разобрался в форме были поставлены 0000 у реквизита,теперь основной менеджер покупателя вставляется 2 менеджера
|
|||
29
amadeus2010
05.11.13
✎
12:54
|
можно как-то избавиться от двойной записи наименований в справочник?
|
|||
30
amadeus2010
05.11.13
✎
13:14
|
Строка.ShopName = СокрЛП(Лист.Cells(ПоСтрокам,21).Value);
дает 2 записи одного наименования |
|||
31
amadeus2010
06.11.13
✎
11:49
|
добрый день извините что снова обращаюсь к вчерашней теме, не могли бы подсказать по коду должны заполниться контрагенты находящиеся в разных группах. У меня сейчас если закомментировать код относящийся к другой группе не происходит дублирование элементов вот код
////////////////////////////////////////////////////// КодГруппы = "000001169"; ПоискПоПолномуКоду = Ложь; // значение по умолчанию Группа = Справочники.Контрагенты.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду); Если Группа.Пустая() Тогда Группа = Справочники.Контрагенты.СоздатьГруппу(); Группа.Код = КодГруппы; Группа.Наименование = Справочники.Контрагенты.НайтиПоНаименованию("2-Bakmil Filial?"); Группа.ЭтоГруппа = Истина; Группа.Записать(); ИначеЕсли Не Группа.ЭтоГруппа Тогда Сообщить("Найден элемент справочника с указанным кодом!"); // Предусмотреть прерывание алгоритма. КонецЕсли; Для Каждого Строка Из Таб Цикл ПоСтрокам = ПоСтрокам + 1; Если Не Строка.Пометка Тогда Продолжить; КонецЕсли; //Если Справочники.Контрагенты.НайтиПоНаименованию(Строка.ShopName).Пустая() тогда Спр = Справочники.Контрагенты.СоздатьЭлемент(); Спр.Наименование = Строка.ShopName; Спр.НаименованиеПолное=Строка.ShopName; Спр.Покупатель = Истина; Спр.ИНН =Строка.НомерМаршрута; Спр.ЮрФизЛицо=Перечисления.ЮрФизЛицо.ЮрЛицо; Спр.Подразделение=Справочники.Подразделения.НайтиПоНаименованию(Строка.Filial, Истина); Спр.Родитель =Группа.Ссылка; Спр.Комментарий = Строка.ContactPerson + ";"; // Иначе Сообщить("Найден элемент справочника с указанным наименованием!"); //КонецЕсли; НазначатьМенеджера = Ложь; ФЛ = Справочники.ФизическиеЛица.НайтиПоНаименованию(Строка.Salesman, Истина); Если ФЛ = Неопределено Тогда Сообщить("Не задано имя менеджера!"); ИначеЕсли ФЛ.Пустая() Тогда Сообщить("Не найден менеджер «" + Строка.Salesman + "»"); Иначе НазначатьМенеджера = Истина; КонецЕсли; Если НазначатьМенеджера Тогда ПЛ = Справочники.Пользователи.НайтиПоРеквизиту("ФизЛицо", ФЛ); НазначатьМенеджера = НЕ ПЛ.Пустая(); КонецЕсли; Если НазначатьМенеджера Тогда НовМенеджер = Спр.МенеджерыПокупателя.Добавить(); НовМенеджер.МенеджерПокупателя = ПЛ; Спр.ОсновнойМенеджерПокупателя = ПЛ; КонецЕсли; Спр.Записать(); Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); Договор.ТипЦен =Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Standart Qiym?t"); Договор.Владелец =Спр.Ссылка; Договор.Организация = Справочники.Организации.НайтиПоНаименованию("Crocus"); Договор.Наименование = "?sas M?qavil?"; Договор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем; Договор.ВидУсловийДоговора = Перечисления.ВидыУсловийДоговоровВзаиморасчетов.БезДополнительныхУсловий; Договор.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом; Договор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду(944); Договор.КонтролироватьСуммуЗадолженности = Истина; Договор.КонтролироватьЧислоДнейЗадолженности = Истина; Договор.ВестиПоДокументамРасчетовСКонтрагентом = Истина; Договор.ДопустимаяСуммаЗадолженности = 0; Договор.ДопустимоеЧислоДнейЗадолженности = 0; Договор.Дата = ТекущаяДата(); Договор.Записать(); РегистрАдрес = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи(); РегистрАдрес.Объект = Спр.Ссылка; РегистрАдрес.Представление = Строка.Address; РегистрАдрес.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента; РегистрАдрес.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; РегистрАдрес.Записать(); РегистрТелефон = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи(); РегистрТелефон.Объект = Спр.Ссылка; РегистрТелефон.Поле3 = Строка.Mob; РегистрТелефон.Представление =Строка.Mob; РегистрТелефон.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента; РегистрТелефон.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон; РегистрТелефон.Записать(); Спр.ОсновнойДоговорКонтрагента = Договор.Ссылка; КонецЦикла; //КодГруппы = "000001171"; //ПоискПоПолномуКоду = Ложь; // значение по умолчанию //Группа = Справочники.Контрагенты.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду); // //Если Группа.Пустая() Тогда // Группа = Справочники.Контрагенты.СоздатьГруппу(); // Группа.Код = КодГруппы; // Группа.Наименование = Справочники.Контрагенты.НайтиПоНаименованию("1-D?rn?g?l Filial?"); // Группа.ЭтоГруппа = Истина; // Группа.Записать(); //ИначеЕсли Не Группа.ЭтоГруппа Тогда // Сообщить("Найден элемент справочника с указанным кодом!"); // // // Предусмотреть прерывание алгоритма. //КонецЕсли; //Для Каждого Строка Из Таб Цикл // ПоСтрокам = ПоСтрокам + 1; // Если Не Строка.Пометка Тогда // Продолжить; // КонецЕсли; // // //Если Справочники.Контрагенты.НайтиПоНаименованию(Строка.ShopName).Пустая() тогда // Спр = Справочники.Контрагенты.СоздатьЭлемент(); // //Спр.Код=Строка.Код; // Спр.Наименование = Строка.ShopName; // Спр.НаименованиеПолное=Строка.ShopName; // Спр.Покупатель = Истина; // Спр.ИНН =Строка.НомерМаршрута; // Спр.ЮрФизЛицо=Перечисления.ЮрФизЛицо.ЮрЛицо; // Спр.Подразделение=Справочники.Подразделения.НайтиПоНаименованию(Строка.Filial, Истина); // Спр.Родитель =Группа.Ссылка; // Спр.Комментарий = Строка.ContactPerson + ";"; // // Иначе Сообщить("Найден элемент справочника с указанным наименованием!"); // //КонецЕсли; // НазначатьМенеджера = Ложь; // ФЛ = Справочники.ФизическиеЛица.НайтиПоНаименованию(Строка.Salesman, Истина); // Если ФЛ = Неопределено Тогда // Сообщить("Не задано имя менеджера!"); // ИначеЕсли ФЛ.Пустая() Тогда // Сообщить("Не найден менеджер «" + Строка.Salesman + "»"); // Иначе // НазначатьМенеджера = Истина; // КонецЕсли; // Если НазначатьМенеджера Тогда // ПЛ = Справочники.Пользователи.НайтиПоРеквизиту("ФизЛицо", ФЛ); // НазначатьМенеджера = НЕ ПЛ.Пустая(); // КонецЕсли; // Если НазначатьМенеджера Тогда // НовМенеджер = Спр.МенеджерыПокупателя.Добавить(); // НовМенеджер.МенеджерПокупателя = ПЛ; // Спр.ОсновнойМенеджерПокупателя = ПЛ; // КонецЕсли; // Спр.Записать(); // // Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); // Договор.ТипЦен =Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Standart Qiym?t"); // Договор.Владелец =Спр.Ссылка; // Договор.Организация = Справочники.Организации.НайтиПоНаименованию("Crocus"); // Договор.Наименование = "?sas M?qavil?"; // Договор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем; // Договор.ВидУсловийДоговора = Перечисления.ВидыУсловийДоговоровВзаиморасчетов.БезДополнительныхУсловий; // Договор.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом; // Договор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду(944); // Договор.КонтролироватьСуммуЗадолженности = Истина; // Договор.КонтролироватьЧислоДнейЗадолженности = Истина; // Договор.ВестиПоДокументамРасчетовСКонтрагентом = Истина; // Договор.ДопустимаяСуммаЗадолженности = 0; // Договор.ДопустимоеЧислоДнейЗадолженности = 0; // Договор.Дата = ТекущаяДата(); // Договор.Записать(); // // // // РегистрАдрес = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи(); // РегистрАдрес.Объект = Спр.Ссылка; // РегистрАдрес.Представление =Строка.Address; // РегистрАдрес.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента; // РегистрАдрес.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; // РегистрАдрес.Записать(); // // РегистрТелефон = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи(); // РегистрТелефон.Объект = Спр.Ссылка; // РегистрТелефон.Поле3 = Строка.Mob; // // РегистрТелефон.Представление = Строка.Mob; // РегистрТелефон.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента; // РегистрТелефон.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон; // РегистрТелефон.Записать(); // // Спр.ОсновнойДоговорКонтрагента = Договор.Ссылка; // //КонецЦикла; /////////////////////////////////////////////////////////// т.е идет повторение кода для заполнения контрагентов в разных группах. Как можно сделать так чтобы остальной код заполняющий договоры, адрес не повторялся дважды? |
|||
32
Холодильник
06.11.13
✎
12:00
|
за что ты нас так неуважаешь, выкладывая простыню закомменченного кода?((
А за " Группа.Наименование = Справочники.Контрагенты.НайтиПоНаименованию("2-Bakmil Filial?");" даже помогать не хочу, извини. _______________ Позовите специалиста, прекратите насилие над базой и над здравым смыслом |
|||
33
amadeus2010
06.11.13
✎
12:12
|
(32) не хотел никого обидеть только выложил весь код для полного понимания процесса. Если я комментирую часть кода то контрагенты садятся в нужную группу без дублирования,если раскомментировать эту часть кода то уже начинается дубляж записей. Специалиста звать не получиться
|
|||
34
amadeus2010
06.11.13
✎
12:45
|
нашел причину дубляжа вот исправленный код
///////////////////////////////////////////////////// КодГруппы = "000001169"; ПоискПоПолномуКоду = Ложь; // значение по умолчанию Группа = Справочники.Контрагенты.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду); Если Группа.Пустая() Тогда Группа = Справочники.Контрагенты.СоздатьГруппу(); Группа.Код = КодГруппы; //Группа.Наименование = Справочники.Контрагенты.НайтиПоНаименованию("2-Bakmil Filial?"); Группа.Наименование = "2-Bakmil Filial?"; Группа.ЭтоГруппа = Истина; Группа.Записать(); ИначеЕсли Не Группа.ЭтоГруппа Тогда Сообщить("Найден элемент справочника с указанным кодом!"); // Предусмотреть прерывание алгоритма. КонецЕсли; КодГруппы = "000001171"; ПоискПоПолномуКоду = Ложь; // значение по умолчанию Группа = Справочники.Контрагенты.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду); Если Группа.Пустая() Тогда Группа = Справочники.Контрагенты.СоздатьГруппу(); Группа.Код = КодГруппы; Группа.Наименование = "1-D?rn?g?l Filial?"; Группа.ЭтоГруппа = Истина; Группа.Записать(); ИначеЕсли Не Группа.ЭтоГруппа Тогда Сообщить("Найден элемент справочника с указанным кодом!"); // Предусмотреть прерывание алгоритма. КонецЕсли; Спр = Справочники.Контрагенты.СоздатьЭлемент(); //Спр.Код=Строка.Код; Спр.Наименование = Строка.ShopName; Спр.НаименованиеПолное=Строка.ShopName; Спр.Покупатель = Истина; Спр.ИНН =Строка.НомерМаршрута; Спр.ЮрФизЛицо=Перечисления.ЮрФизЛицо.ЮрЛицо; Спр.Подразделение=Справочники.Подразделения.НайтиПоНаименованию(Строка.Filial, Истина); Спр.Родитель =Группа.Ссылка; Спр.Комментарий = Строка.ContactPerson + ";"; НазначатьМенеджера = Ложь; ФЛ = Справочники.ФизическиеЛица.НайтиПоНаименованию(Строка.Salesman, Истина); Если ФЛ = Неопределено Тогда Сообщить("Не задано имя менеджера!"); ИначеЕсли ФЛ.Пустая() Тогда Сообщить("Не найден менеджер «" + Строка.Salesman + "»"); Иначе НазначатьМенеджера = Истина; КонецЕсли; Если НазначатьМенеджера Тогда ПЛ = Справочники.Пользователи.НайтиПоРеквизиту("ФизЛицо", ФЛ); НазначатьМенеджера = НЕ ПЛ.Пустая(); КонецЕсли; Если НазначатьМенеджера Тогда НовМенеджер = Спр.МенеджерыПокупателя.Добавить(); НовМенеджер.МенеджерПокупателя = ПЛ; Спр.ОсновнойМенеджерПокупателя = ПЛ; КонецЕсли; Спр.Записать(); //////////////////////////////////////////////////////// и так далее по коду. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |