|
|
|
Отбор стран в столбце документа Excel ↓ (Волшебник 25.10.2024 09:48) |
☑ | ||
|---|---|---|---|---|
|
0
iiwanc
25.10.24
✎
08:10
|
Здравствуйте!
Только изучаю 1С, делаю задание из книги. Загружаю данные из документа Excel. &НаСервере
Процедура ЗагрузитьДанныеНаСервере(АдресВХ)
ТабДок = Новый ТабличныйДокумент;
ДанныеВХ=ПолучитьИзВременногоХранилища(АдресВХ); //получаем данные по указанному адресу из ВХ
ПутьКФайлуНаСервере=ПолучитьИмяВременногоФайла("xlsx");
ДанныеВХ.Записать(ПутьКФайлуНаСервере);
Попытка
ТабДок.Прочитать(ПутьКФайлуНаСервере,СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст="Не удалось прочитать указанный файл!" + ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КоличествоСтрок=ТабДок.ВысотаТаблицы;
ДанныеФайла = Новый ТаблицаЗначений;
ДанныеФайла.Колонки.Добавить("Наименование");
ДанныеФайла.Колонки.Добавить("ИНН");
ДанныеФайла.Колонки.Добавить("Телефон");
ДанныеФайла.Колонки.Добавить("КластерДоставки");
ДанныеФайла.Колонки.Добавить("ТНВЭД");
Для НомерСтроки=2 По КоличествоСтрок Цикл
СтрокаДанных=ДанныеФайла.Добавить();
СтрокаДанных.Наименование=ТабДок.ПолучитьОбласть("R"+Формат(НомерСтроки, "ЧГ=0")+"C"+13).ТекущаяОбласть.Текст;
СтрокаДанных.ИНН=ТабДок.ПолучитьОбласть("R"+Формат(НомерСтроки, "ЧГ=0")+"C"+14).ТекущаяОбласть.Текст;
СтрокаДанных.Телефон=ТабДок.ПолучитьОбласть("R"+Формат(НомерСтроки, "ЧГ=0")+"C"+25).ТекущаяОбласть.Текст;
СтрокаДанных.КластерДоставки=ТабДок.ПолучитьОбласть("R"+Формат(НомерСтроки, "ЧГ=0")+"C"+27).ТекущаяОбласть.Текст;
СтрокаДанных.ТНВЭД=ТабДок.ПолучитьОбласть("R"+Формат(НомерСтроки, "ЧГ=0")+"C"+35).ТекущаяОбласть.Текст;
КонецЦикла;
ЗагруженныеДанные.Загрузить(ДанныеФайла);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанные(Команда)
ДвоичныеДанныеФайла=Новый ДвоичныеДанные(Файл); //получаем двоичные данные нашего файла
АдресВременногоХранилища=ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла); //помещаем двоичные данные во временное хранилище
ЗагрузитьДанныеНаСервере(АдресВременногоХранилища);
КонецПроцедуры
&НаСервере
Процедура СоздатьКонтрагентовНаСервере()
Для каждого Контрагент Из ЗагруженныеДанные Цикл
НовыйЭлемент=Справочники.Контрагенты.СоздатьЭлемент();
НовыйЭлемент.Наименование=Контрагент.Наименование;
НовыйЭлемент.ИННКлиент=Контрагент.ИНН;
НовыйЭлемент.ТелефонКлиент=Контрагент.Телефон;
НовыйЭлемент.КластерДоставки=Контрагент.КластерДоставки;
НовыйЭлемент.ТНВЭД=Контрагент.ТНВЭД;
НовыйЭлемент.Записать();
КонецЦикла;
КонецПроцедуры
В столбце КластерДоставки указаны города и страны. Нужно загрузить строки, содержащие только страны. Создал справочник Страны, где перечислил страны. Не подскажите, как это реализовать? Понимаю, что нужно сравнить содержимое в столбце Excel со справочником Страны, и если есть совпадение, загрузить эти совпадения в базу. Но вот как это реализовать в коде, не смогу сообразить. Если нужны дополнительные данные, то готов предоставить. Подскажите, пожалуйста. Буду благодарен советам. |
|||
|
1
Волшебник
25.10.24
✎
08:11
|
НайденнаяСтрана = Справочник.Страны.НайтиПоНаименованию(название, Истина); Если НайденнаяСтрана.Пустая() Тогда // создать элемент КонецЕсли; |
|||
|
2
Мультук
гуру
25.10.24
✎
08:31
|
(0) (1)
Я бы еще обработал условие на пустую строку СокрЛП(название) <> ""
Функция ЭтоСтрана(название)
Если ПустаяСтрока(название) Тогда
Возврат Ложь;
КонецЕсли;
НайденнаяСтрана = Справочник.Страны.НайтиПоНаименованию(название, Истина);
Возврат не НайденнаяСтрана.Пустая();
КонецФункции
|
|||
|
3
Мультук
гуру
25.10.24
✎
08:37
|
(0)
P.S. Для обучения код из (2) нормален. Если (во взрослой жизни) нужно будет грузить сотни тыс строк (а может и раньше) -- это код нужно будет выбросить на помойку. Переписать на запрос и не для каждой строки, а сразу для всего набора. Но это уже потом Для каждого Контрагент Из ЗагруженныеДанные Цикл Привыкайте называть итераторы строк "Строка", "СтрокаДанные" и т.п. Иначе будете сами путаться. Особенно неприятно будет, если у вас на форме будет реквзит формы с именем "Контрагент" Вы его будете перезатирать |
|||
|
4
программистище
25.10.24
✎
08:45
|
Человек 12 лет на форуме и только сейчас начал изучать 1с
и даже не знает как сделать проверку очень странно |
|||
|
5
Волшебник
25.10.24
✎
08:51
|
(4) Это бот, а ник он угнал на днях
|
|||
|
6
maxab72
25.10.24
✎
09:01
|
(5) а может кто-то наклепал 12 лет назад 100500 ников на Мисте про запас, а теперь ими торгует?
(3) "Привыкайте называть итераторы строк "Строка", "СтрокаДанные" и т.п." а меня учили подзатыльниками иначе: Для каждого стрЗагруженныеДанные Из ЗагруженныеДанные Цикл Тогда, если несколько вложенных циклов, понятнее что у тебя за строка. |
|||
|
7
iiwanc
25.10.24
✎
09:02
|
(4) какое имеет отношение моя жизнь и вопрос по теме?
мне нужно предварительно рассказать драму жизни, чтобы задать свой вопрос? |
|||
|
8
craxx
25.10.24
✎
09:16
|
(0) Твоя тема от 2019 года
500 ошибка при запуске сервера 1С "Простите, если не сюда пишу. 1С только начинаю изучать." Это ты 5 лет только начинаешь изучать? |
|||
|
9
программистище
25.10.24
✎
09:19
|
(8) с тех пор все начинает изучать и никак не закончит начинать
|
|||
|
10
Гена
гуру
25.10.24
✎
09:34
|
Злые вы... недобрые...
Автору нужны деньги, а программист 1С сейчас в топе. Вот он и решил на старости лет переквалифицироваться. Кстати, фотку в профиле видели? Такого кекса аватарят те, кто на сексе повёрнуты. Не удивлюсь, если автор в сексшопе работает. |
|||
|
11
Волшебник
25.10.24
✎
09:36
|
(10) Фотка явно сгенерированная
|
|||
|
12
Гена
гуру
25.10.24
✎
09:39
|
Упс! Поиск по нику и городу выдал:
https://www.weblancer.net/users/iiwanc/ |
|||
|
13
Волшебник
25.10.24
✎
09:43
|
(12) на фото американский актёр Закари Джон Куинто
wiki:Куинто,_Закари
|
|||
|
14
Гена
гуру
25.10.24
✎
09:44
|
(13) Да это понятно. По психологии данный тип людей не любит свои фото и всегда выкладывает чужие.
|
|||
|
15
Гена
гуру
25.10.24
✎
09:45
|
Я к чему... добрее надо... а вы сразу набросились на человека... как волки...
Мякше надо... тоньше... |
|||
|
16
Волшебник
25.10.24
✎
09:46
|
(12) А вот вам ещё информация к размышлению.
Ссылку давать не буду, чтобы не продвигать мошенников.
|
|||
|
17
Волшебник
25.10.24
✎
09:47
|
(15) Он сгенерировал модуль и не может проверить на пустую ссылку? Пошёл он в жопу, такой красивый....
|
|||
|
18
Гена
гуру
25.10.24
✎
09:49
|
(17) Нет такого слова в русском языке...
|
|||
|
19
yurikmellon2
25.10.24
✎
09:56
|
(16) смешные люди... Нафига использовать чью-то реальную фотке, если можно легко сгенерить сеткой
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |