Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
1

Загрузка в Справочник

12.02.2016, 11:26. Просмотров 1195. Ответов 53
Метки нет (Все метки)

Добрый день! Вопрос наверное глупы но что то я не понимаю почему не так, хочу загрузить в справочник данные с Excel и проверить по реквизиту КодУслуги, если он уже существует тогда пропустить. У меня загружает без проверки, не понимаю почему.

Вот часть кода
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
КодУслуг=ExcelЛист.Cells(Строка, 1).Value;
            Наименование=ExcelЛист.Cells(Строка, 2).Value;
            Ценна=ExcelЛист.Cells(Строка, 3).Value;
            
            ОчиститьСообщения();
            Спр=Справочники.Номенклатура.НайтиПоНаименованию(КодУслуг);
            Если Спр.Пустая()=Истина Тогда 
                НовЭл = Справочники.Номенклатура.СоздатьЭлемент();       
                НовЭл.КодУслуги=КодУслуг;
                НовЭл.Наименование=Наименование;
                НовЭл.Записать();
            
        Иначе
            Сообщить("Уже создан");
                КонецЕсли;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2016, 11:26
Ответы с готовыми решениями:

Загрузка в Справочник
Почему то не загружает в справочник Процедура КнопкаВыполнитьНажатие(Кнопка) ФайлДБФ = Новый...

Загрузка в Справочник
Написал код для загрузки в справочник, начинаю загружать зависает, подскажите что не так? Перем...

Загрузка данных из Excel в справочник 1С
Здравствуйте. Очень нужна помощь. У меня есть exel файл с очень нестандартным оформлением столбцов,...

Передача данных: Справочник <-> Документ <-> Справочник
Доброго все времени суток! я в 1С новичек, помогите пожалуйста Я понимаю, что на многие вопросы...

Загрузка Адреса Из Файла *.dbf В Справочник "физические Лица"
Подскажите, пожалуйста, может быть кто-нибудь сталкивался. Загружаю из *.dbf -файла строку с...

53
SHIFT_969
Злой самаритянин
178 / 179 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
12.02.2016, 11:48 2
Ermak27, потому что ты ищешь код услуги в наименовании. А он у тебя в КодУслуги.
0
Phil
Эксперт 1С
404 / 281 / 86
Регистрация: 28.05.2014
Сообщений: 1,138
12.02.2016, 11:50 3
SHIFT_969, не факт, что КодУслуг в Excel это код, а не наименование)
0
SHIFT_969
Злой самаритянин
178 / 179 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
12.02.2016, 11:52 4
Я бы перед циклом выгрузил все КодУслуги и в цикле искал по ним. Если не нашел - создать новый.

Добавлено через 1 минуту
Phil, судя по тому, что он пишет в справочник - он самый.
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
12.02.2016, 12:03  [ТС] 5
SHIFT_969, КодУслуги это наименование. Как выгрузить КодУслуги я смогу выгрузить а как искать по ним?
0
SHIFT_969
Злой самаритянин
178 / 179 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
12.02.2016, 13:31 6
Ermak27, ты не поверишь
Кликните здесь для просмотра всего текста
ТаблицаЗначений (ValueTable)
Найти (Find)
Синтаксис:

Найти(<Значение>, <Колонки>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Искомое значение.
<Колонки> (необязательный)

Тип: Строка.
Список имен колонок, разделенных запятыми, по которым производится поиск.
Если параметр не указан, поиск осуществляется по всей таблице значений.
Значение по умолчанию: Пустая строка.
Возвращаемое значение:

Тип: СтрокаТаблицыЗначений; Неопределено.
Строка, в которой содержится искомое значение. Если значение не найдено, то возвращается значение Неопределено.
Описание:

Осуществляет поиск значения в указанных колонках таблицы значений.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Метод эффективно использовать для поиска уникальных значений.
Пример:

НайденнаяСтрока = ТаблицаЦен.Найти(ВыбТовар, "Товар");
Если НайденнаяСтрока = Неопределено Тогда
Предупреждение(НСтр("ru = 'Товар не найден!';"
+ " en = 'Article not found!'"));
Иначе
ЦенаТовара = НайденнаяСтрока.Цена;
КонецЕсли;

0
OrkVasya
о_____О
Эксперт 1С
221 / 221 / 36
Регистрация: 19.11.2010
Сообщений: 1,061
Завершенные тесты: 1
12.02.2016, 14:42 7
А я бы расчехлил отладчик и разобрался, вместо того, чтобы обращаться к телепатам.
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
15.02.2016, 14:37  [ТС] 8
Загружаю файл с заполненными тремя строками, а сообщение выводит не три а больше и ошибку на последней строке, что не так?
{Форма.Форма.Форма(144)}: Преобразование значения к типу Число не может быть выполнено
КонецЦикла;

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        КодУслуг=ExcelЛист.Cells(Строка, 1).Value;
            Наименование=ExcelЛист.Cells(Строка, 2).Value;
            Ценна=ExcelЛист.Cells(Строка, 3).Value;
            
            ТЗ=Новый ТаблицаЗначений;
            Запрос = Новый Запрос;
            ТекстЗапроса =
            "ВЫБРАТЬ
            |   Номенклатура.Ссылка,
            |   Номенклатура.КодУслуги,
            |   Номенклатура.Наименование
            |ИЗ
            |   Справочник.Номенклатура КАК Номенклатура";
            Запрос.Текст=ТекстЗапроса;  
            ТЗ = Запрос.Выполнить().Выгрузить();
            ТЗ.Сортировать("КодУслуги");
            ТЗ.Свернуть("КодУслуги");
            
            ОчиститьСообщения();
            Для Каждого Строка Из ТЗ Цикл
                Если ТЗ.Найти(КодУслуг,"КодУслуги")=Неопределено Тогда
                    Сообщить("записываем новый");
                КонецЕсли;  
            КонецЦикла;
0
SHIFT_969
Злой самаритянин
178 / 179 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
15.02.2016, 14:46 9
Ermak27, из этого ничего не понятно. Отладку используй - включи остановку по ошибке и запусти. Когда остановит, смотри что у тебя где и откуда ошибка.
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
15.02.2016, 15:00  [ТС] 10
SHIFT_969, в отладчике видно что находит КодУслуг с файл, почему он выводит каждую строку номенклатуры. Как я понимаю он должен взять первое значение с файл искать такое же значение в справочнике если нет тогда создать.
0
OrkVasya
о_____О
Эксперт 1С
221 / 221 / 36
Регистрация: 19.11.2010
Сообщений: 1,061
Завершенные тесты: 1
15.02.2016, 15:12 11
Ermak27, это внешняя обработка? Проще будет сюда скинуть, чем телепатировать.
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
15.02.2016, 15:19  [ТС] 12
Вот
0
Вложения
Тип файла: zip ЗагрузкаСправочникНоменклатура.zip (6.1 Кб, 2 просмотров)
SHIFT_969
Злой самаритянин
178 / 179 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
15.02.2016, 15:23 13
Ermak27, ты Строку используешь повторно внутри цикла.
1
Миниатюры
Загрузка в Справочник  
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
15.02.2016, 15:29  [ТС] 14
SHIFT_969, вот я слепой . Спасибо. А почему неправильно выводит? должно вывести три сообщения так как я загружаю три строки в файле а КодУслуги нет в справочнике
0
SHIFT_969
Злой самаритянин
178 / 179 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
15.02.2016, 15:43 15
Ermak27, потому что у тебя проверка по номенклатуре идет. Вот он тебе для каждой номенклатуры, у которой код услуги не равен твоей создает новую.
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
15.02.2016, 15:44  [ТС] 16
SHIFT_969, а как надо сделать тогда, я же проверяю номенлкатуру
0
SHIFT_969
Злой самаритянин
178 / 179 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
15.02.2016, 16:16 17
Ermak27, сделать надо наоборот. На кой черт тебе вообще тот цикл? Убери его, "Если" который внутри оставь. Только добавь туда "НЕ". Вот туда и добавляй.
И вынеси запрос наружу основного цикла, не насилуй свой комп, тебе достаточно 1 раз его выполнить.
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
15.02.2016, 16:28  [ТС] 18
SHIFT_969, а как проверить если код улуги одинаковый а наименование разное тогда перезаписать наименование
0
Phil
Эксперт 1С
404 / 281 / 86
Регистрация: 28.05.2014
Сообщений: 1,138
15.02.2016, 16:43 19
Ermak27, так и проверить, получить элемент, перезаписать наименование. Записать.
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,199
16.02.2016, 08:30  [ТС] 20
Phil, как перезаписывать наименование в 1С, я знаю что можно удалить и заново создать но мне так не надо.
0
16.02.2016, 08:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2016, 08:30

справочник
Здравствуйте, сразу прошу меня не критиковать, я только начала заниматься этим делом... У меня...

Справочник по 1С 8.1
1. Каким образом из модуля формы можно обратиться к измерениям регистра накопления. Требуется...

Справочник.
Ребята, подскажите, как сделать такую вот операцию: Есть справочник товаров, в форме списка -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru