Имя: Пароль:
1C
1С v8
План-схема обработки по загрузке из Эксель в 1С
,
0 lirt82
 
03.11.16
06:30
Подскажите порядок написания кода, нужна обработка для обычных форм которая будет загружать номенклатуру из файла эксель в таб. часть дока поступление. Можно ли в одной процедуре это написать?
Процедура Загрузить()
1) подключаемся к файлу и считываем данные
1а) создаем док поступление и его таб часть.
2)Открываем цикл внутри которого ищем номенклатуру по реквизиту в справочнике Номенклатура, если не находим то создаем.
3) В этом же цикле заполняем таб. часть дока Поступление.
4) Закрываем цикл.
5) Записываем новый документ.
КонецПроцедуры Загрузить()
Правильный порядок?
1 mrpink
 
03.11.16
06:37
почему-бы и нет
2 shadow_sw
 
03.11.16
06:41
(0) подход имеет быть место :)
3 DDwe
 
03.11.16
06:42
(0) А зачем в одной? Что бы подлиннее ?
4 DDwe
 
03.11.16
06:43
Или вы платите деньги за каждую процедуру-функцию?
5 PLUT
 
03.11.16
07:00
(0) нормальный такой план для диплома
6 lirt82
 
03.11.16
07:21
(4) оптимизация:)
7 DDwe
 
03.11.16
07:22
(6) Это в чем она выражается?
8 DDwe
 
03.11.16
07:24
(6) " подключаемся к файлу и считываем данные " - куда считываем?
9 Йохохо
 
03.11.16
07:32
в 1а еще надо склад, контрагента, организацию, вид и тип договора, ндс, счета взаиморасчетов, упаковки номенклатуры, шк
10 Мимохожий Однако
 
03.11.16
07:36
Если есть кнопка Заполнить у документа Поступления, то п. 1а и 5 лишние
11 Мимохожий Однако
 
03.11.16
07:36
ИМХО, информации недостаточно. Конфигурация, сэр?
12 lirt82
 
03.11.16
08:27
(11) отбой, задача написать в одной процедуре весь код, ответ получен что можно.
13 Йохохо
 
03.11.16
08:38
(12) в тонком клиенте? нюню
14 Мимохожий Однако
 
03.11.16
08:40
(12) с тобой рядом кто-то сидит? ))
15 Wirtuozzz
 
03.11.16
08:42
(0) Думаю что лучше так:
Подключаемся к файлу
проверяем его структуру
считываем в ТЗ
создаем новый документ нужного типа
в документе заполняем шапку
заполняем в документе ТЧ любым удобным способом.
16 Wirtuozzz
 
03.11.16
08:43
потом записываем документ, режим записи запись или проведение по вкусу)
17 DDwe
 
03.11.16
08:43
(12) Можно с дури и столб сломать.
18 lirt82
 
03.11.16
08:46
(15) в чем преимущества создания Таблицы значении? если можно сразу проверять если не нашел создавать и тут же созданый заносить в таб часть дока?
19 DDwe
 
03.11.16
08:54
(18) Ну, как бы странный вопрос. Если подумать конечно.
20 Масянька
 
03.11.16
09:08
(18) Извечный спор, что лучше (в "лучше" вкладывается "оптимальнее", "быстрее", "безопаснее" и пр.) - построчное чтение из файла или считать всю инфу из файла, а потом (опять таки) построчно обрабатывать....
Дилемма...
21 IlyaSR
 
03.11.16
09:17
(18) Можно все проверить, прежде чем создавать документ, скажем вывести это все на форме загрузки, возможно что-то добавить или....
а потом сделать так Документ.ТабличнаяЧасть.Загрузить(ТЗ);
22 AneJIbcuH
 
03.11.16
09:48
(18) Почему-то не увидел ответа, наверное, самого главного (про оптимальность). Считав сначала всё в ТЗ, можно исключить "запрос в цикле", а ваш метод - "если можно сразу проверять если не нашел создавать" - это он самый!
23 _stay true_
 
03.11.16
10:09
(18)
1. Конфигурация, сэр!

2. Microsoft JET OLE DB считывает файл в 4500 строк в ТЗ с помощью универсальной функции за 1.4 секунды. Workbooks, по мне так, работает дольше. К тому же, ТЗ получается со структурой колонок как в таблице эксель, что очень удобно.

3. Я бы разбил на несколько процедур/функций
24 lirt82
 
03.11.16
11:46
(23) Торговля на обычных формах
25 Wirtuozzz
 
03.11.16
13:08
(15) Свой косяк не дал покоя:
Подключаемся к файлу
проверяем его структуру
считываем в ТЗ
Закрываем файл
создаем новый документ нужного типа
в документе заполняем шапку
заполняем в документе ТЧ любым удобным способом.
записываем документ, режим записи запись или проведение по вкусу)
26 LeReve
 
03.11.16
13:17
Можно весь модуль документа запихнуть в одну функцию.. делов то.
27 Wirtuozzz
 
03.11.16
13:25
(26) И назвать это сапом
28 Demasiado
 
03.11.16
13:40
Возможно что в (0) какой то заказчик проверяет ТЗ которое прогеры к исполнению накидали:)
29 Garykom
 
гуру
03.11.16
13:49
(0) Чтение данных из xls (может же быть что угодно) и запись этих данных в базу (с поиском и созданием при необходимости номенклатуры и прочего) это же разные штуки.

Раздели на процедуры/функции и лучше отдельные для поиска и создания нужных объектов в базе.

1. Читаем из ... в ТЗ строки
2. Преобразовываем в ТЗ строки в нужные простые данные (числа, дата. булево и т.д.)
3. Передаем ТЗ для загрузки
4. Получаем ТЗ и запускаем цикл загрузки
4.1. Ищем/создаем объекты
30 Garykom
 
гуру
03.11.16
13:52
(29)+ Может быть тонкость что для избежания "запросов в цикле" для поиска/подбора номенклатуры лучше поле(я) поиска списком/таблицей передать.

А уже затем обработка с автосозданием номенклатуры только для не заполненных строк в ТЗ.