|
Пишу обработку загрузка данных в бух справку.(код) | ☑ | ||
---|---|---|---|---|
0
anisa8310
04.12.12
✎
09:15
|
1С:Предприятие 8.2 (8.2.16.368)
Бухгалтерия предприятия, редакция 2.0 (2.0.39.6) для заполнения бух справки, файл так выглядет: (TOYOTA CAMRY №12648|588673,8)-знак табуляции "|", всего одномерный массив [2] из двух Функция ПолучитьПоле(ВходСтрока,НомерПоля, Видразделителя) Перем Строка1, Строка2, НашеПоле; Перем Позиция1, Позиция2; Перем ДлинаРазд, ЧислоРазд; ДлинаРазд = СтрДлина(Видразделителя); ЧислоРазд = СтрЧислоВхождений(ВходСтрока,Видразделителя); Если (ЧислоРазд+1) < НомерПоля Тогда Сообщить("Номер поля за пределами строки!!!", СтатусСообщения.ОченьВажное); Возврат "ЭтоФигня" КонецЕсли; Колполей = 0; Строка1 = ВходСтрока; Для ии = 1 По ЧислоРазд Цикл Позиция1 = Найти(Строка1, Видразделителя); НашеПоле = Лев(Строка1, Позиция1-1); Если ии = НомерПоля Тогда Возврат НашеПоле; ИначеЕсли ии = ЧислоРазд Тогда НашеПоле = Сред(Строка1, Позиция1 + ДлинаРазд); Возврат НашеПоле; Иначе Строка1 = Сред(Строка1, Позиция1 + ДлинаРазд); КонецЕсли; КонецЦикла; КонецФункции Процедура КнопкаВыполнитьНажатие(Кнопка) Док = ПолучитьCOMОбъект(Путь); счСтроки = 1; Пока Док.Sheets(1).Cells(счСтроки,1).Value <>Неопределено Цикл Стр=Док.Sheets(1).Cells(счСтроки,1).Value; //////////////Формирование массива услуги Массив = Новый Массив(2); Для Сч=1 По 2 Цикл Позиция = Найти(Стр, "|"); Массив.Вставить(сч,Сред(Стр, 1, Позиция-1)); стр = Сред(Стр, Позиция + 1); КонецЦикла; НовыйДокумент= Документы.ОперацияБух.СоздатьДокумент(); //НовыйДокумент.Организация = Организация ; СчКт = ПланыСчетов.Хозрасчетный.АрендованныеОсновныеСредства.Код; СубконтоКт1= Справочники.Контрагенты.НайтиПоКоду("000003173"); СубконтоКт2= Справочники.ОсновныеСредства.НайтиПоНаименованию(СтрЗаменить(Массив[1],Символ(34),"")); Сумма = Массив[2]; КонецЦикла; НовыйДокумент.Записать(); счСтроки = счСтроки + 1; Док.Application.Quit(); КонецПроцедуры Процедура ВыбФайлНачалоВыбора(Элемент, СтандартнаяОбработка) // Вставить содержимое обработчика. ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбораФайла.Фильтр = "Текстовые файлы (*.csv)|*.csv"; ДиалогВыбораФайла.Заголовок = "Выберите файл для загрузки данных"; ДиалогВыбораФайла.ПредварительныйПросмотр = Ложь; ДиалогВыбораФайла.Расширение ="csv"; ДиалогВыбораФайла.ИндексФильтра = 0; ДиалогВыбораФайла.ПолноеИмяФайла = Путь; Если ДиалогВыбораФайла.Выбрать() Тогда Путь = ДиалогВыбораФайла.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры |
|||
1
anisa8310
04.12.12
✎
09:15
|
не работает в чем дело..не понятно
|
|||
2
IamAlexy
04.12.12
✎
09:16
|
а счего оно должно работать?
движения ты где пишешь? |
|||
3
IamAlexy
04.12.12
✎
09:17
|
внтури цикла делаешь
НовыйДокумент= Документы.ОперацияБух.СоздатьДокумент(); затем снаружи цикла записываешь его :) то есть в цикле 10 000 строк, сделалось 10 000 новых документов а записался 1 последний :) :) |
|||
4
IamAlexy
04.12.12
✎
09:17
|
далее
сделав документ внутре цикла ты создаешь пару переменных в памяти и никуда их не записывешь.. и при новом витке ты эти перменные перезаписыаешь новыми значениями.. |
|||
5
IamAlexy
04.12.12
✎
09:18
|
ясен пень нихера работать не будет
|
|||
6
IamAlexy
04.12.12
✎
09:18
|
отвечаю только из за уважения к фотке в купальнике...
|
|||
7
Галахад
гуру
04.12.12
✎
09:23
|
Красотка!
|
|||
8
боксер
04.12.12
✎
09:29
|
хорошая фотка, я помню тоже в трудные времена под такими фотками релизы просил :-)
|
|||
9
anisa8310
04.12.12
✎
09:31
|
??? хм..спасибо
|
|||
10
Sedoy
04.12.12
✎
09:31
|
(8) Брился хоть...?
|
|||
11
anisa8310
04.12.12
✎
09:32
|
если цикл значит
|
|||
12
anisa8310
04.12.12
✎
09:35
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
НовыйДокумент= Документы.ОперацияБух.СоздатьДокумент(); Док = ПолучитьCOMОбъект(Путь); счСтроки = 1; Пока Док.Sheets(1).Cells(счСтроки,1).Value <>Неопределено Цикл Стр=Док.Sheets(1).Cells(счСтроки,1).Value; //////////////Формирование массива услуги Массив = Новый Массив(2); Для Сч=1 По 2 Цикл Позиция = Найти(Стр, "|"); Массив.Вставить(сч,Сред(Стр, 1, Позиция-1)); стр = Сред(Стр, Позиция + 1); КонецЦикла; СчКт = ПланыСчетов.Хозрасчетный.АрендованныеОсновныеСредства.Код; СубконтоКт1= Справочники.Контрагенты.НайтиПоКоду("000003173"); СубконтоКт2= Справочники.ОсновныеСредства.НайтиПоНаименованию(СтрЗаменить(Массив[1],Символ(34),"")); Сумма = Массив[2]; КонецЦикла; НовыйДокумент.Записать(); счСтроки = счСтроки + 1; Док.Application.Quit(); КонецПроцедуры Венесла из цикла НовыйДокумент= Документы.ОперацияБух.СоздатьДокумент(); -все? фото мое это я |
|||
13
hhhh
04.12.12
✎
09:36
|
(12) ну тогда еще момент: Массив[2] - это не второй, а третий элемент массива.
|
|||
14
Stim
04.12.12
✎
09:39
|
..какая прекрасная женственная фигура..
|
|||
15
cw014
04.12.12
✎
09:46
|
Наверное так??? :
Процедура КнопкаВыполнитьНажатие(Кнопка) НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент(); Док = ПолучитьCOMОбъект(Путь); Для счСтроки = 1 По Док.Sheets(1).UsedRange.Rows.Count Цикл Стр=Док.Sheets(1).Cells(счСтроки,1).Value; //////////////Формирование массива услуги Массив = Новый Массив(2); Для Сч = 1 По 2 Цикл Позиция = Найти(Стр, "|"); Массив.Вставить(сч,Сред(Стр, 1, Позиция-1)); стр = Сред(Стр, Позиция + 1); КонецЦикла; Проводка = НовыйДокумент.Движения.Хозрасчетный.Добавить(); Проводка.СчетКт = ПланыСчетов.Хозрасчетный.АрендованныеОсновныеСредства; Проводка.СубконтоКт.Контрагенты = Справочники.Контрагенты.НайтиПоКоду("000003173"); Проводка.СубконтоКт.ОсновныеСредства = Справочники.ОсновныеСредства.НайтиПоНаименованию(СтрЗаменить(Массив[0],Символ(34),"")); Проводка.Сумма = Массив[1]; КонецЦикла; НовыйДокумент.Записать(); Док.Application.Quit(); КонецПроцедуры P.S. (С) Bash.im Элька: Олегин спасибо тебе огромное выручил Элька: че с меня? Oleg: Ты же знаешь - я с красивых девушек только натурой беру Элька: ;) Oleg: C тебя 500р |
|||
16
Lama12
04.12.12
✎
09:46
|
(15) На месте девушки я б оскордился после такого :)
|
|||
17
cw014
04.12.12
✎
09:47
|
(16) Это не мое - это Баш
|
|||
18
anisa8310
04.12.12
✎
09:53
|
(10) точно...все все равно получиться..вот увидите) Спасибо)
|
|||
19
anisa8310
04.12.12
✎
17:03
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент(); НовыйДокумент.Дата=ТекущаяДата(); Док = ПолучитьCOMОбъект(Путь); Для счСтроки = 1 По Док.Sheets(1).UsedRange.Rows.Count Цикл Стр=Док.Sheets(1).Cells(счСтроки,1).Value; //////////////Формирование массива услуги Массив = Новый Массив(2); Для Сч = 1 По 2 Цикл Позиция = Найти(Стр, "|"); Массив.Вставить(сч,Сред(Стр, 1, Позиция-1)); стр = Сред(Стр, Позиция + 1); КонецЦикла; Проводка = НовыйДокумент.Движения.Хозрасчетный.Добавить(); Проводка.СчетКт = ПланыСчетов.Хозрасчетный.АрендованныеОсновныеСредства; Проводка.СубконтоКт.Контрагенты = Справочники.Контрагенты.НайтиПоКоду("000003173"); Проводка.СубконтоКт.ОсновныеСредства = Справочники.ОсновныеСредства.НайтиПоНаименованию(СтрЗаменить(Массив[0],Символ(34),"")); Проводка.Сумма = Массив[1]; КонецЦикла; НовыйДокумент.Записать(); Док.Application.Quit(); Сообщить("Загрузка документов завершена !!!"); СД=Документы.ОперацияБух.ПолучитьФормуСписка(); КонецПроцедуры |
|||
20
anisa8310
04.12.12
✎
17:04
|
но вот ошибка новая теперь
Процедура КнопкаВыполнитьНажатие(Кнопка) НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент(); НовыйДокумент.Дата=ТекущаяДата(); Док = ПолучитьCOMОбъект(Путь); Для счСтроки = 1 По Док.Sheets(1).UsedRange.Rows.Count Цикл Стр=Док.Sheets(1).Cells(счСтроки,1).Value; //////////////Формирование массива услуги Массив = Новый Массив(2); Для Сч = 1 По 2 Цикл Позиция = Найти(Стр, "|"); Массив.Вставить(сч,Сред(Стр, 1, Позиция-1)); стр = Сред(Стр, Позиция + 1); КонецЦикла; Проводка = НовыйДокумент.Движения.Хозрасчетный.Добавить(); Проводка.СчетКт = ПланыСчетов.Хозрасчетный.АрендованныеОсновныеСредства; Проводка.СубконтоКт.Контрагенты = Справочники.Контрагенты.НайтиПоКоду("000003173"); Проводка.СубконтоКт.ОсновныеСредства = Справочники.ОсновныеСредства.НайтиПоНаименованию(СтрЗаменить(Массив[0],Символ(34),"")); Проводка.Сумма = Массив[1]; КонецЦикла; НовыйДокумент.Записать(); Док.Application.Quit(); Сообщить("Загрузка документов завершена !!!"); СД=Документы.ОперацияБух.ПолучитьФормуСписка(); КонецПроцедуры |
|||
21
anisa8310
04.12.12
✎
17:05
|
{Форма.Форма.Форма(53)}: Ошибка при вызове метода контекста (Записать)
НовыйДокумент.Записать(); по причине: Запись не верна! Период не может быть пустым! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1) |
|||
22
mikecool
04.12.12
✎
17:06
|
(21) так заполни период!
|
|||
23
anisa8310
04.12.12
✎
17:07
|
Как? я ищу но пока не нашла-что это вообще такое
|
|||
24
anisa8310
04.12.12
✎
17:08
|
Процедура ПередЗаписью(Отказ, РежимЗаписи)
Для Каждого МЗ Из ЭтотОбъект Цикл Если НачалоДня(МЗ.Период)='00010101' Тогда Сообщить("В проводке номер "+ЭтотОбъект.Индекс(МЗ)+1+" не указан период ", СтатусСообщения.Важное); ТЗ=ЭтотОбъект.Выгрузить(); Стр=ТЗ[ЭтотОбъект.Индекс(МЗ)]; Для Каждого Колонка Из ТЗ.Колонки Цикл Сообщить(Символы.Таб+Колонка.Имя+Символы.Таб+"="+Символы.Таб+Стр[Колонка.Имя]); КонецЦикла; ТЗ=0; Отказ=Истина; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
25
anisa8310
04.12.12
✎
17:08
|
Все равно ругается
|
|||
26
mikecool
04.12.12
✎
17:08
|
(23)
Процедура КнопкаВыполнитьНажатие(Кнопка) НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент(); НовыйДокумент.Дата=ТекущаяДата(); Док = ПолучитьCOMОбъект(Путь); Для счСтроки = 1 По Док.Sheets(1).UsedRange.Rows.Count Цикл Стр=Док.Sheets(1).Cells(счСтроки,1).Value; //////////////Формирование массива услуги Массив = Новый Массив(2); Для Сч = 1 По 2 Цикл Позиция = Найти(Стр, "|"); Массив.Вставить(сч,Сред(Стр, 1, Позиция-1)); стр = Сред(Стр, Позиция + 1); КонецЦикла; Проводка = НовыйДокумент.Движения.Хозрасчетный.Добавить(); ПРОВОДКА.ПЕРИОД = ТЕКУЩАЯДАТА(); // ТИПА ТАК Проводка.СчетКт = ПланыСчетов.Хозрасчетный.АрендованныеОсновныеСредства; Проводка.СубконтоКт.Контрагенты = Справочники.Контрагенты.НайтиПоКоду("000003173"); Проводка.СубконтоКт.ОсновныеСредства = Справочники.ОсновныеСредства.НайтиПоНаименованию(СтрЗаменить(Массив[0],Символ(34),"")); Проводка.Сумма = Массив[1]; КонецЦикла; НовыйДокумент.Записать(); Док.Application.Quit(); Сообщить("Загрузка документов завершена !!!"); СД=Документы.ОперацияБух.ПолучитьФормуСписка(); КонецПроцедуры |
|||
27
anisa8310
04.12.12
✎
17:09
|
так по строке надо-я не знала -сейчас попробую спасибо. я думала отдельну процу надо и под свои потребы как"Процедура ПередЗаписью(Отказ, РежимЗаписи)"
|
|||
28
SeregaMW
04.12.12
✎
17:11
|
(0) Я бы вдул!
|
|||
29
mikecool
04.12.12
✎
17:11
|
(27) обычно в модуле записей перед записью проверяется - если период не заполнен, то лепится текущая дата
|
|||
30
anisa8310
04.12.12
✎
17:13
|
(29) Теперь не ругается, Сообщить("Загрузка документов завершена !!!");-сообщает))))но ничего нет с массивом буду разбираться теперь
|
|||
31
ПиН
04.12.12
✎
17:15
|
фотка супер, код ацтой! )))
(30) так выложи, что сейчас получилось... |
|||
32
anisa8310
04.12.12
✎
17:15
|
вот это загрузить пытаюсь: TOYOTA CAMRY №12648|588673,8
|
|||
33
anisa8310
04.12.12
✎
17:16
|
наименование и сумма в док ОперацияБух
|
|||
34
anisa8310
04.12.12
✎
17:17
|
(31)так учимся загрузку писать
|
|||
35
anisa8310
04.12.12
✎
17:17
|
(30) нечего выкладывать документа даже в списке нет)))
|
|||
36
mikecool
04.12.12
✎
17:20
|
(35) дуй в отладчик и смотри что получается
|
|||
37
anisa8310
04.12.12
✎
17:24
|
(37)Хорошо... эх время то...позже за ребенком погнала в школу..результат выложу позже! Спасибо!
|
|||
38
mikecool
04.12.12
✎
17:24
|
(37) ранняя ты мамочка )))
|
|||
39
anisa8310
04.12.12
✎
17:25
|
ай нет даже не создал документ((((
|
|||
40
anisa8310
04.12.12
✎
17:25
|
так точка останова стоит на месте(((
|
|||
41
mikecool
04.12.12
✎
17:25
|
я таки не понял - ребенок в школе ночует? )
|
|||
42
anisa8310
04.12.12
✎
17:25
|
на строке НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент(); F9нажимаю и ни с места
|
|||
43
anisa8310
04.12.12
✎
17:26
|
Ребенок-нет дома ночует))) сейчас в школе ещё -на танцах, после уроков основных
|
|||
44
mikecool
04.12.12
✎
17:27
|
(42) отладчик поломала оО
рестартани отладку |
|||
45
anisa8310
04.12.12
✎
17:27
|
Байк мне подарила на днях! ))) http://vk.com/anisalatypova?z=photo19433951_292570115%2Fwall19433951_394
|
|||
46
mikecool
04.12.12
✎
17:28
|
(45) кто?
|
|||
47
Stim
04.12.12
✎
17:29
|
(45) там не фиксин на фотках? оО
|
|||
48
anisa8310
04.12.12
✎
17:29
|
Дочка моя
|
|||
49
anisa8310
04.12.12
✎
17:30
|
Короче не отлаживается( так и стоит на месте точка-останова рестартанула, не создает док. вот реализацию делала ранее-все отлично получилось а бух справка-никак не получается
|
|||
50
anisa8310
04.12.12
✎
17:31
|
(47) для меня это сузуки имазума 400)))
|
|||
51
mikecool
04.12.12
✎
17:31
|
(48) тебе дочка подарила байк?
зы: фото не смотрел, недоступно |
|||
52
anisa8310
04.12.12
✎
17:31
|
игрушечный)))))
|
|||
53
anisa8310
04.12.12
✎
17:32
|
Я просто оч люблю мото
|
|||
54
anisa8310
04.12.12
✎
17:32
|
а 1с не очень..не отлаживается, зараза, скоро продолжу. спасибо!
|
|||
55
anisa8310
05.12.12
✎
16:33
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
//Создаю регистратор НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент(); НовыйДокумент.Дата=ТекущаяДата(); НовыйДокумент.Организация=Справочники.Организации.НайтиПоКоду("000000001"); НовыйДокумент.Содержание="Загрузка"; НовыйДокумент.Записать(); НовыйДокументСсылка = НовыйДокумент.Ссылка; //Получаю файл для загрузки Док = ПолучитьCOMОбъект(Путь); Для счСтроки = 1 По Док.Sheets(1).UsedRange.Rows.Count Цикл Стр=Док.Sheets(1).Cells(счСтроки,1).Value; //////////////Формирование массива услуги Массив = Новый Массив(2); Для Сч = 1 По 2 Цикл Позиция = Найти(Стр, "|"); Массив.Вставить(сч,Сред(Стр, 1, Позиция-1)); стр = Сред(Стр, Позиция + 1); КонецЦикла; Проводка = НовыйДокумент.Движения.Хозрасчетный.Добавить(); ПРОВОДКА.ПЕРИОД = ТЕКУЩАЯДАТА(); // ТИПА ТАК Проводка.СчетКт = ПланыСчетов.Хозрасчетный.АрендованныеОсновныеСредства; Проводка.СубконтоКт.Контрагенты = Справочники.Контрагенты.НайтиПоКоду("000003173"); Проводка.СубконтоКт.ОсновныеСредства = Справочники.ОсновныеСредства.НайтиПоКоду(СтрЗаменить(Массив[1],Символ(34),"")); Проводка.Сумма = Массив[2]; КонецЦикла; НовыйДокумент.Записать(); Док.Application.Quit(); Сообщить("Загрузка документов завершена !!!"); СД=Документы.ОперацияБух.ПолучитьФормуСписка(); КонецПроцедуры |
|||
56
anisa8310
05.12.12
✎
16:34
|
Как и обещала) говорила же все получиться) потом отрываю док ставлю опер в ручную, проверяю и провожу) в регистрах движение происходит) Спасибо мои дорогие Мистеры!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |