Имя: Пароль:
1C
1C 7.7
v7: Загрузка данных из Excel в 1С
0 Asia2016
 
21.07.17
13:59
Есть выписка из банка в формате .xls. Надо загрузить в документ выписка в 1С.
В банковской выписке в одну ячейку вбит расчетный счет/ИНН/контрагент. Как можно присвоить значение
Расчетный счет - первые 20 знаков, затем ИНН - 9 знаков

Ячейка=ОкноExcel.ActiveCell.Offset(0, 1);        
Ячейка.Activate();      
РасчетныйСчет =Ячейка.Value;
1 Ёпрст
 
21.07.17
13:59
РасчетныйСчет = Лев(Хрень,20);
ИНН = Сред(Хрень,21,9);
2 Волшебник
 
модератор
21.07.17
13:59
функция Лев и Сред
3 Масянька
 
21.07.17
14:00
(0) Вбит без разделителей?
4 Масянька
 
21.07.17
14:02
(1) А если ИП?
5 Ёпрст
 
21.07.17
14:03
(4)
ИНН = Сред(Хрень,21);
6 aka AMIGO
 
21.07.17
14:03
(4) в строке может быть разделитель типа ИНН/КПП или еще какой.
ТС - как партизан..
7 Asia2016
 
21.07.17
14:06
да разделители есть /
8 Asia2016
 
21.07.17
14:08
спасибо
9 Масянька
 
21.07.17
14:09
(7) Замечательно.
Найти(), Лев(), Сред(), Прав().
10 Ёпрст
 
21.07.17
14:14
(9) глРазложить()
или через ИзСтрокиСРазделителями
11 Масянька
 
21.07.17
14:15
(10) Не ищем легких путей :)
12 Asia2016
 
21.07.17
15:06
Еще не вечер
Почему не присваивает Субконто1 наименование контрагента. В отладке Наименование контрагента выбирает правильно по инн.
Ячейка=ОкноExcel.ActiveCell.Offset(0, 1);        
            Ячейка.Activate();      
            Куча=Ячейка.Value;                                                
            ИНН = Сред(Куча,22,9);  
            
            СпрКонт.ВыбратьЭлементы();  
            Пока СпрКонт.ПолучитьЭлемент() = 1  Цикл
                Если ИНН = СпрКонт.ИНН Тогда
                    НазначитьТип("Субконто1", "Справочник.Контрагенты");
                    НазначитьТип("Субконто2", "Справочник.Договора");        
                    Субконто1 = СпрКонт.Наименование;
            
                КонецЕсли;
            КонецЦикла;
13 Ёпрст
 
21.07.17
15:21
(12)
Потому, что вот тут
Субконто1 = СпрКонт.Наименование
написан бред (не Пит)
14 Ёпрст
 
21.07.17
15:21
Субконто1 у вас, это не строка, это элемент конкретного справочника
15 Ёпрст
 
21.07.17
15:22
ну и перебирать все элементы..тоже не есть гуд.
16 Asia2016
 
21.07.17
15:28
Субконто1 реквизит в выписке тип значения не определенный. в зависимости от счета выбирается тип. почему бред
17 Масянька
 
21.07.17
15:28
(12) В (13) - вместо Наименование нужно ТекущийЭлемент(). А в (15) - просто ищите нужно контрагента по ИНН - не нужно перебирать все элементы.
18 Asia2016
 
21.07.17
15:32
ЗАРАБОТАЛО!!
19 Asia2016
 
22.07.17
07:45
Движение по ячейкам
Ячейка=ОкноExcel.ActiveCell.Offset(1, -6);
т.е. 1 на строку ниже -6 на 6 столбцов влево
но не переводит выдает сообщение Ячейка=ОкноExcel.ActiveCell.Offset(1,-6);
{Документ.ВыпискаНов.Форма.Модуль(470)}: :

Не могу осуществить перевод строки
20 bolder
 
22.07.17
08:05
(0) Упоротый постановщик задачи.Давно уже есть 1С-совместимый формат обмена с банками.Читается Любой типовой.Вам зачем велосипеды с квадратными колёсами?
21 Asia2016
 
22.07.17
08:18
(20) зачем же так?
22 Asia2016
 
22.07.17
08:19
может у вас и есть 1С-совместимый формат обмена с банками.
23 bolder
 
22.07.17
08:19
(21) Потому что это профанация.
24 Asia2016
 
22.07.17
08:20
у нас нет, поэтому приходится пыхтеть самим или с помощью форума
25 bolder
 
22.07.17
08:21
(24) Где у Вас то?)
26 Asia2016
 
22.07.17
08:27
у нас, это у меня. впрочем мы от темы уклоняемся.
27 vadim777
 
22.07.17
08:35
(0) В первый раз слышу, что выписки банка в формате xls. У вас клиент-банк их формирует? Нельзя формат изменить на другой - dbf, cvs?
28 Asia2016
 
22.07.17
08:37
в указанных вами форматах нет. только в txt
29 Asia2016
 
22.07.17
08:38
выбрали excel
30 Asia2016
 
22.07.17
08:40
(27) более того у нашей организации несколько счетов, причем форма у всех разная. хочу с помощью форума разобраться на одном банке, потом уже посмотреть что делать с остальными.
31 h-sp
 
22.07.17
08:41
(29) а зачем вы активную ячейку какую-то там берете? Бредите? Тупо взять номер строки и колонки в таблице уже не модно?
32 Asia2016
 
22.07.17
08:43
каким образом?
33 Asia2016
 
22.07.17
09:12
Ячейка=ОкноExcel.ActiveCell.Offset(1, -2);
работает
не могу понять, почему на сдвигает только на две
34 vadim777
 
22.07.17
09:18
(30) Была аналогичная ситуацию и у нас - у каждого банка свой формат. Разбил задачу на две части.
1. Для каждого банка - свой блок загрузки данных в Таблицу значений стандартного формата.
2. Общий блок обработки этой ТЗ по формированию БВ.
35 vadim777
 
22.07.17
09:21
(33) Загрузите БВ из Excel в ТЗ - легче будет работать.
Всегда отделяйте мух от котлет, по другому - применяйте принцип разделяй и властвуй.
36 Asia2016
 
22.07.17
09:24
(34) что такое БВ
37 vadim777
 
22.07.17
09:25
(36) Банковская выписка
38 Asia2016
 
22.07.17
09:26
(37) при загрузке в ТЗ надо все равно считывать с Excel. т.е. те же проблемы при переводе строк
39 vadim777
 
22.07.17
09:37
(38) Ты делишь задачу на стандартизированные этапы
1. Загрузка БВ из Excel в Т3_1
2. Обработка ТЗ_1 - заполнение ТЗ_2
3. Обработка ТЗ_2 - формирование из ТЗ_2 БВ
Поверь, это гораздо проще и быстрее, чем сразу из Excel в БВ.
Потом эти 3 модуля можешь отдельно дорабатывать, усовершенствовать, не трогая остальных. Последний, 3-й, будет стандартный для остальных банков.
40 Asia2016
 
22.07.17
09:53
(38) спасибо.
в как перевести строку в Excel.
БВ состоит из много строк и 8 столбцов.
первую строку загрузила. надо прочитать следующую в Excel.
пытаюсь сделать через Ячейка=ОкноExcel.ActiveCell.Offset(1, -6) не получается. как сдвинутся на вторую строку
41 Зуекщмшср
 
22.07.17
09:53
(0) Найди обработку XLS_Doc_v26 в инете, я ее еще лет 15 назад писал для 1С 7.7, универсальная обработка загрузки данных из excel. Попробуй, может пригодится.
42 Asia2016
 
22.07.17
09:59
(41) нашла только упоминание о ней Нужна инфа по загрузке DBF файлов
43 vadim777
 
22.07.17
10:16
(42) Проверь почту - что нашлось выслал.
44 Asia2016
 
22.07.17
13:27
спасибо. сижу разбираю.
45 Asia2016
 
22.07.17
13:32
и еще вопрос: например датаА в формате текст  и датаВ в формате дата
А="18.07.2017"
В='18.07.2017'
Как их прописать в условие
Если СокрЛП(А)=СокрЛП(Строка(В)) Тогда

В преобразовывает в формат текст, но условие не выполняется
Почему?
46 vadim777
 
22.07.17
13:43
(45) Насколько помню, преобразование даты вида '18.07.2017' в строку вернет строку вида "18.7.2017", или "17.7.17". Вставь отладочный вывод Сообщить(СокрЛП(В)).
47 Asia2016
 
22.07.17
13:53
спасибо разобралась
48 Asia2016
 
22.07.17
14:22
Спасибо всем!
(43) Большое спасибо!
Пока работает 1 банк. Буду  экспериментировать с другими.,
Ура!!!!!!!!!!!!!!
49 vadim777
 
22.07.17
15:27
(48) Молодец. Теперь по правилам форума добавь свое фото в личную карточку.