|
Загрузка товаров в документ Инвентаризация | ☑ | ||
---|---|---|---|---|
0
lyapkoandy13
05.12.15
✎
13:30
|
Здравствуйте. Стоит конфигурация "УТП для Украины" редакция 1.2
Есть текстовый файл с товарами в формате "Наименование;ШтрихКод;ЧислоТоваров;Код". Нужно сделать обработку по загрузке товаров по Группам в документ ИнвентаризацияТоваровНаСкладе и что бы учетные остатки заполнялись по базе 1С. Вот часть обработки которую я сделал, теперь стал вопрос как заполнить остатки по базе. Ругания приветствуются :) В модуле объекта обработки : // переменная создание документа Перем Док Экспорт; //переменная таблицы товаров в документе Перем ДокТовары Экспорт; // создание документа Док = Документы.ИнвентаризацияТоваровНаСкладе.СоздатьДокумент(); // табличная часть документа ДокТовары = Док.Товары; Кусок кода из формы обработки: // перебор строк текстового документа Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл // получить строку файла с указанным номером Стр = Текст.ПолучитьСтроку(НомерСтроки); // «распарсивание» строки // ищем позицию символа-разделителя Позиция = Найти(Стр, ";"); МассивГрупп = ПолеНоменклатуры.ВыгрузитьЗначения(); // если нужно выгрузить всю номенклатуру Если МассивГрупп.Количество()=1 И МассивГрупп[0]="Вся Номенклатура" Тогда Если Не Справочники.Номенклатура.НайтиПоНаименованию(Сред(Стр,1,Позиция-1)).Пустая() Тогда // в таблицу добавляется товар НовыйТовар = ДокТовары.Добавить(); // записывается подстрока от первого символа до позиции // символа-разделителя НовыйТовар.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Сред(Стр,1,Позиция-1)); // обрезается после первого ; Стр = Сред(Стр,Позиция+1,СтрДлина(Стр)); // ищется второй ; Позиция = Найти(Стр, ";"); // обрезатся после второй ; Стр = Сред(Стр,Позиция+1,СтрДлина(Стр)); // третья ; Позиция = Найти(Стр, ";"); НовыйТовар.Количество = Число(Сред(Стр,1,Позиция-1)); // запись неизвестных товаров в таблицу Иначе НовыйНеизвестныйТовар = ТабличноеПолеНеизвестныхТоваров.Добавить(); НовыйНеизвестныйТовар.КолонкаТовар = Сред(Стр,1,Позиция-1); Стр = Сред(Стр,Позиция+1,СтрДлина(Стр)); // ищется второй ; Позиция = Найти(Стр, ";"); НовыйНеизвестныйТовар.КолонкаШтрихКод = Сред(Стр,1,Позиция-1); // обрезатся после второй ; Стр = Сред(Стр,Позиция+1,СтрДлина(Стр)); // третья ; Позиция = Найти(Стр, ";"); НовыйНеизвестныйТовар.КолонкаКоличество = Сред(Стр,1,Позиция-1); КонецЕсли; // если выбраны какие то группы номенклатуры Иначе Если Не Справочники.Номенклатура.НайтиПоНаименованию(Сред(Стр,1,Позиция-1)).Пустая() Тогда Для Каждого ЭлементМассива из МассивГрупп Цикл Принадлежит = Справочники.Номенклатура.НайтиПоНаименованию(Сред(Стр,1,Позиция-1)).ПринадлежитЭлементу(ЭлементМассива); Если Принадлежит Тогда Прервать; КонецЕсли; КонецЦикла; Если Принадлежит Тогда // в таблицу добавляется товар НовыйТовар = ДокТовары.Добавить(); // записывается подстрока от первого символа до позиции // символа-разделителя НовыйТовар.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Сред(Стр,1,Позиция-1)); // обрезается после первого ; Стр = Сред(Стр,Позиция+1,СтрДлина(Стр)); // ищется второй ; Позиция = Найти(Стр, ";"); // обрезатся после второй ; Стр = Сред(Стр,Позиция+1,СтрДлина(Стр)); // третья ; Позиция = Найти(Стр, ";"); НовыйТовар.Количество = Число(Сред(Стр,1,Позиция-1)); КонецЕсли; Иначе НовыйНеизвестныйТовар = ТабличноеПолеНеизвестныхТоваров.Добавить(); НовыйНеизвестныйТовар.КолонкаТовар = Сред(Стр,1,Позиция-1); Стр = Сред(Стр,Позиция+1,СтрДлина(Стр)); // ищется второй ; Позиция = Найти(Стр, ";"); НовыйНеизвестныйТовар.КолонкаШтрихКод = Сред(Стр,1,Позиция-1); // обрезатся после второй ; Стр = Сред(Стр,Позиция+1,СтрДлина(Стр)); // третья ; Позиция = Найти(Стр, ";"); НовыйНеизвестныйТовар.КолонкаКоличество = Сред(Стр,1,Позиция-1); КонецЕсли; КонецЕсли; КонецЦикла; // Увеличивается число загрузок ЧислоЗагрузок = ЧислоЗагрузок + 1; |
|||
1
lyapkoandy13
05.12.15
✎
14:06
|
Можете не смотреть на код и предложить как бы вы это сделали
|
|||
2
nordbox
05.12.15
✎
14:47
|
А поискать в инете готовую обработку загрузки не судьба? или религия не позволяет?
|
|||
3
tixis
05.12.15
✎
14:53
|
Сотри как заполняются остатки при типовом заполнении документа
|
|||
4
lyapkoandy13
05.12.15
✎
14:55
|
(2) Ничего подходящего не нашел
|
|||
5
hhhh
05.12.15
✎
15:18
|
(4) этот формат он везде. Не может быть, чтобы в УТП его не было. И в интернете.
|
|||
6
lyapkoandy13
05.12.15
✎
15:27
|
(5) Самому странно, плохой я искатель, наверное
|
|||
7
kotletka
05.12.15
✎
15:29
|
(6) в доке инвентаризации есть что то типа кнопки заполнить учетные количества и суммы?
|
|||
8
lyapkoandy13
05.12.15
✎
15:42
|
(7) Есть, я как раз сейчас просматриваю код процедуры ПерезаполнитьУчетныеКоличестваУпр, попробую оттуда взять нужное
|
|||
9
lyapkoandy13
05.12.15
✎
15:45
|
(7) Может можно как то вызвать ту процедуру прямо в документе?
|
|||
10
kotletka
05.12.15
✎
15:45
|
(8) а чего ее просматривать, вызови эту процедуру в своей обработке после своего кода
|
|||
11
tixis
05.12.15
✎
16:02
|
(9) я это и имел ввиду
|
|||
12
lyapkoandy13
05.12.15
✎
16:07
|
В процедуре как параметр берется ПостроительОтчета, как бы это глупо не звучало, я не знаю откуда берется это значение и вообще что это...
Процедура ПерезаполнитьУчетныеКоличестваУпр(ПостроительОтчета) ... |
|||
13
lyapkoandy13
05.12.15
✎
16:28
|
В принципе не важно, эта процедура и так не заполняет остатки, а только суммы, почему то.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |