|
v8: Загрузка поступления товаров и услуг ШТРИХ_М из xls -вопрос по работе с ТЗ | ☑ | ||
---|---|---|---|---|
0
anisa8310
11.12.13
✎
09:32
|
Загрузка в Поступление товаров конфа 1с ШТРИХ-М.1С:Предприятие 8.2 (8.2.18.104)
До того работала другая загрузка (массив ) но сейчас поставщик перешел на другой формат-поэтому нужно писать новую... с ТаблицейЗначений ни разу не работала..помогите пожалуйста с синтаксисом разобраться!!!! как мне поискать среди элементов справочника по наименованию по ТЗ колонке его значению и если нет тогда создать новые элементы справочника по таблице значений... Задача срочная-прошу помощи !Заранее всех благодарю!!!! Процедура КнопкаВыполнитьНажатие(Кнопка) //Создаю таблицу Значений тзТовары = Новый ТаблицаЗначений; тзТовары.Колонки.Добавить("Код"); тзТовары.Колонки.Добавить("Наименование"); тзТовары.Колонки.Добавить("Артикул"); тзТовары.Колонки.Добавить("Комментарий"); тзТовары.Колонки.Добавить("Проба"); тзТовары.Колонки.Добавить("Размер"); тзТовары.Колонки.Добавить("Коллекция"); тзТовары.Колонки.Добавить("ВесМеталла"); тзТовары.Колонки.Добавить("Количество"); тзТовары.Колонки.Добавить("Единица"); тзТовары.Колонки.Добавить("Коэфициент"); тзТовары.Колонки.Добавить("Вес"); тзТовары.Колонки.Добавить("Цена"); тзТовары.Колонки.Добавить("Сумма"); тзТовары.Колонки.Добавить("Город"); тзТовары.Колонки.Добавить("Код1"); тзТовары.Колонки.Добавить("шк"); тзТовары.Колонки.Добавить("Код2"); /////////////открытие xls-документа Док = ПолучитьCOMОбъект(Путь); //счСтроки = 1; ///////////Создаем новый документ НовыйДокумент= Документы.ПриходнаяНакладная.СоздатьДокумент(); НовыйДокумент.Фирма = Справочники.Фирмы.НайтиПоКоду("0000001") ; НовыйДокумент.Дата = ДатаДокумента; НовыйДокумент.Контрагент =Контрагент; НовыйДокумент.Договор = Договор; НовыйДокумент.Склад = Справочники.Склады.НайтиПоНаименованию("Основной"); НовыйДокумент.Валюта = Справочники.Валюты.НайтиПоКоду("643"); НовыйДокумент.ТипЦен = Справочники.ТипыЦен.НайтиПоКоду("2"); НовыйДокумент.Курс = "1"; НовыйДокумент.Кратность = "1"; НовыйДокумент.КурсВзаиморасчетов = "1"; НовыйДокумент.КратностьВзаиморасчетов = "1"; НовыйДокумент.ВходящаяДатаДокумента = ДатаВходДока; НовыйДокумент.ВходящийНомерДокумента = НомерВходДока; НовыйДокумент.ТорговыйОбъект = Справочники.ТорговыеОбъекты.НайтиПоКоду("00001"); НовыйДокумент.ВариантРасчетаНДС=Перечисления.ВариантыРасчетаНДС.БезНДС; НовыйДокумент.Комментарий = "Загрузка#"; /////////////////////////Перебор строк Excel = Новый COMОбъект("Excel.Application"); ДокументExcel = Excel.WorkBooks.Open(Док); Лист = ДокументExcel.Sheets(1); ВсегоСтрок = Лист.Cells.SpecialCells(11).Row; //ВсегоКолонок = Лист.Cells.SpecialCells(11).Column; Данные = Лист.Range(Лист.Cells(2,1),Лист.Cells(ВсегоСтрок,18)).Value.Выгрузить(); Excel.Quit(); Для А=2 По ВсегоСтрок Цикл тзТовары.Добавить(); КонецЦикла; тзТовары.ЗагрузитьКолонку(Данные[0],"Код"); тзТовары.ЗагрузитьКолонку(Данные[1],"Наименование"); тзТовары.ЗагрузитьКолонку(Данные[2],"Артикул"); тзТовары.ЗагрузитьКолонку(Данные[3],"Комментарий"); тзТовары.ЗагрузитьКолонку(Данные[4],"Проба"); тзТовары.ЗагрузитьКолонку(Данные[5],"Размер"); тзТовары.ЗагрузитьКолонку(Данные[6],"Коллекция"); тзТовары.ЗагрузитьКолонку(Данные[7],"ВесМеталла"); тзТовары.ЗагрузитьКолонку(Данные[8],"Количество"); тзТовары.ЗагрузитьКолонку(Данные[9],"Единица"); тзТовары.ЗагрузитьКолонку(Данные[10],"Коэфициент"); тзТовары.ЗагрузитьКолонку(Данные[11],"Вес"); тзТовары.ЗагрузитьКолонку(Данные[12],"Цена"); тзТовары.ЗагрузитьКолонку(Данные[13],"Сумма"); тзТовары.ЗагрузитьКолонку(Данные[14],"Город"); тзТовары.ЗагрузитьКолонку(Данные[15],"Код1"); тзТовары.ЗагрузитьКолонку(Данные[16],"ШК"); тзТовары.ЗагрузитьКолонку(Данные[17],"код2"); /////////Создаем строку табличной части услуги Товары = НовыйДокумент.Товары.Добавить(); ///////////////Выбираем/Создаем номенклатуру ЗагружаемаяНоменклатура=Справочники.ШтрихКоды.НайтиПоНаименованию(тзСотрудники]); // Здесь надо как то поискать есть ли такая номенклатру по штрих коду!!! незнаю как обратиться к значению в ТЗТОВАРЫ 17 элемент "ШК" Если ЗагружаемаяНоменклатура.Пустая()= Истина Тогда НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); //если нет такого тогда создать номенклатуру а данные для создания загрузки брать из ТЗТОВАРЫ НоваяНоменклатура.Наименование = НоваяНоменклатура.код1 = НоваяНоменклатура.Артикул = НоваяНоменклатура.Размер = //как это написать обратиться в тзТовары..5колонка "Размер" НоваяНоменклатура.Коллекция = НоваяНоменклатура.вес = НоваяНоменклатура.ГородСтрана = НоваяНоменклатура.ДлиныйНомер = НоваяНоменклатура.код2 = НоваяНоменклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар; НоваяНоменклатура.БазоваяЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); НоваяНоменклатура.Комментарий = "Загруженая"; НоваяНоменклатура.СтавкаНДС = Справочники.СтавкиНДС.НайтиПоКоду("50"); НоваяНоменклатура.ОсновнойШтрихКод = Строка(Массив[17]); НоваяНоменклатура.Записать(); НовыйШитрихКод = Справочники.ШтрихКоды.СоздатьЭлемент(); //и элемент штрих кода создаю из "ШК" НовыйШитрихКод.Владелец=НоваяНоменклатура.Ссылка; Сообщить(НовыйШитрихКод.Владелец); НовыйШитрихКод.Наименование = Сообщить(НовыйШитрихКод.Наименование); НовыйШитрихКод.Единица=НоваяНоменклатура.БазоваяЕдиница; Сообщить (НовыйШитрихКод.Единица); НовыйШитрихКод.Записать(); НоваяНоменклатура.ОсновнойШтрихКод=НовыйШитрихКод; //КоманднаяПанельШтрихКодовСделатьОсновным(); НоваяНоменклатура.Записать(); НоваяНоменклатура.ОсновнойШтрихКод = НовыйШитрихКод.Ссылка; // НоваяНоменклатура.Записать(); //ВвестиНовуюХарактеристику(); //Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("ОсновнойШтрихКод",СтрЗаменить(Массив[5],Символ(17),"")); Товары.Номенклатура=НоваяНоменклатура.Ссылка; Товары.ПриходнаяЦена= Товары.Количество= //сюда тоже из тзтовары Товары.ПриходнаяСумма = Товары.Всего=Товары.ПриходнаяСумма; Товары.СтавкаНДС = Справочники.СтавкиНДС.БезНДС; Товары.Единица = НоваяНоменклатура.БазоваяЕдиница; //Товары.Единица = Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("Владелец",НоваяНоменклатура.Ссылка); НовыйДокумент.Записать(); Иначеесли ЗагружаемаяНоменклатура.Пустая()= ложь Тогда Номенклатура = ЗагружаемаяНоменклатура.Владелец; Товары.Номенклатура=Номенклатура.Ссылка; //Товары. Товары.ПриходнаяЦена= Товары.Количество= Товары.ПриходнаяСумма = Товары.Всего = Товары.СтавкаНДС = Справочники.СтавкиНДС.БезНДС; Товары.Единица = Номенклатура.БазоваяЕдиница; НовыйДокумент.Записать(); КонецЕсли; счСтроки = счСтроки + 1; КонецЦикла; //////////закрываем документ Док.Application.Quit(); КонецПроцедуры |
|||
1
ProProg
11.12.13
✎
09:35
|
8000 рублей
|
|||
2
Любопытная
11.12.13
✎
09:35
|
Штрихкоды в справочнике? Оригинально...
Во-первых, обходить тзТовары в цикле. Во-вторых, посмотреть в СП про работу с ТаблицаЗначений. В-третьих, может подумать про запрос? |
|||
3
anisa8310
11.12.13
✎
09:39
|
(2) не запрос не хочу..
|
|||
4
Любопытная
11.12.13
✎
09:40
|
(3) ну и зря. сложила бы все в тз и тз загрузила уже в тч. Быстрее бы получилось, пожалуй
|
|||
5
anisa8310
11.12.13
✎
09:40
|
(1) спасибо! я штатный айтишник-мне задачу поставили (писать мало приходится да так мелочи вот отсюда и вопросы)
|
|||
6
anisa8310
11.12.13
✎
09:41
|
(4) у меня нет времени совсем...
|
|||
7
anisa8310
11.12.13
✎
09:42
|
(4) как к ним обращаться комментарии указала-где не знаю как писать
|
|||
8
anisa8310
11.12.13
✎
09:44
|
ой ЗагружаемаяНоменклатура=Справочники.ШтрихКоды.НайтиПоНаименованию(тзСотрудники])ТЗТОВАРЫ конечно же
|
|||
9
Любопытная
11.12.13
✎
09:49
|
(8) ну почитай СП уже про таблицу значений. Методы посмотри. Все быстрее будет, чем тут ждать, когда помогут :)
Обходи ТЗ циклом и пиши строки в таб часть |
|||
10
anisa8310
11.12.13
✎
09:51
|
(9) ага читаю судорожно)) не могу понять как обратить к значению которое вТЗТовары загрузила
НоваяНоменклатура.Размер = //как это написать обратиться в тзТовары..5колонка "Размер" |
|||
11
Пенза58
11.12.13
✎
09:52
|
Что то типа:
Только надо учитывать, что к штрихкоду может быть характеристика привязана. Процедура ЗаполнитьНоменклатураШтрихКоды() Экспорт ЗапросНоменклатураШтрих = Новый Запрос; ЗапросНоменклатураШтрих.Текст = "ВЫБРАТЬ | Штрихкоды.ТипШтрихкода, | Штрихкоды.Штрихкод КАК Штрихкод0, | Штрихкоды.Владелец, | Штрихкоды.ЕдиницаИзмерения |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды |ГДЕ | Штрихкоды.ТипШтрихкода = &ЕАН13"; ЗапросНоменклатураШтрих.УстановитьПараметр("ЕАН13",ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13); ТЗНоменклатураШтрих = ЗапросНоменклатураШтрих.Выполнить().Выгрузить(); ТЗНоменклатураШтрих.Колонки.Добавить("Штрихкод"); Для каждого СтрТЗ из ТЗНоменклатураШтрих Цикл СтрТЗ.Штрихкод=СокрЛп(СтрТЗ.Штрихкод0); КонецЦикла; КонецПроцедуры Функция ПолучитьНоменклатуруПоШтрихКодуЭДИ(ШтрихКод) Экспорт Номенклатура=Справочники.Номенклатура.ПустаяСсылка(); ЕдИз=Справочники.ЕдиницыИзмерения.ПустаяСсылка(); Отбор = Новый Структура(); Отбор.Вставить("Штрихкод",ШтрихКод); Строки = ТЗНоменклатураШтрих.НайтиСтроки(Отбор); Если Строки.Количество() = 1 Тогда Номенклатура=Строки[0].Владелец.Ссылка; ЕдИз=Строки[0].ЕдиницаИзмерения; ИначеЕсли Строки.Количество() > 1 Тогда //Сообщить("У контрагента:"+Номенклатура+" для единицы измерения: "+ЕдИзШтрихКода+" - несколько штрихкодов."); Иначе //Сообщить("У контрагента:"+Номенклатура+" для единицы измерения: "+ЕдИзШтрихКода+" - отсутсвует штрихкод."); КонецЕсли; спНомен=Новый списокЗначений; спНомен.Добавить(Номенклатура); спНомен.Добавить(ЕдИз); Возврат спНомен; КонецФункции |
|||
12
anisa8310
11.12.13
✎
09:54
|
(11) так уже проясненияе пошло как к ним обращаться элементам ТЗ
|
|||
13
Пенза58
11.12.13
✎
09:54
|
+ Если ЗначениеЗаполнено(СтрокаТоваров.ШтрихКод) Тогда
спШтрихНоменклатура=ПолучитьНоменклатуруПоШтрихКодуЭДИ(СтрокаТоваров.ШтрихКод); СтрокаТоваров.элНоменклатура=спШтрихНоменклатура[0].Значение; СтрокаТоваров.элЕдИз=спШтрихНоменклатура[1].Значение; |
|||
14
anisa8310
11.12.13
✎
09:54
|
нет я ранее писала такую с массивом правда-все отлично работало...сейчас необходимо с ТЗ формат поменялся у поставщика...массив никак не прокатывает
|
|||
15
Любопытная
11.12.13
✎
09:55
|
(10) про обход в цикле прочитай.
Для каждого ТекСтрока из тзТовары Цикл ... КонецЦикла |
|||
16
Любопытная
11.12.13
✎
09:56
|
Уже 10 раз можно было написать и отладить.
|
|||
17
anisa8310
11.12.13
✎
09:57
|
(16) да вставила цикл
|
|||
18
anisa8310
11.12.13
✎
09:59
|
Для каждого СтрТЗ из тзТовары Цикл
/////////Создаем строку табличной части услуги Товары = НовыйДокумент.Товары.Добавить(); ///////////////Выбираем/Создаем номенклатуру ЗагружаемаяНоменклатура=Справочники.ШтрихКоды.НайтиПоНаименованию(тзТовары.]); // Здесь надо как то поискать есть ли такая номенклатру по штрих коду!!! незнаю как обратиться к значению в ТЗТОВАРЫ 17 элемент "ШК" Если ЗагружаемаяНоменклатура.Пустая()= Истина Тогда |
|||
19
Любопытная
11.12.13
✎
10:00
|
(18) ну и? в цикле обращаешься не к тзТовары, а к СтрТЗ. И по имени колонки так же как к реквизитам таб части. Что непонятно?
|
|||
20
anisa8310
11.12.13
✎
10:03
|
а тогда понятно...спасибо-я сейчас допишу и о результате сообщу..просто первый раз с ТЗ ..очень стыдно за тупость
|
|||
21
anisa8310
11.12.13
✎
10:05
|
тзТовары.ЗагрузитьКолонку(Данные[16],"ШК");
тзТовары.ЗагрузитьКолонку(Данные[17],"код2"); Для каждого СтрТЗ из тзТовары Цикл /////////Создаем строку табличной части услуги Товары = НовыйДокумент.Товары.Добавить(); ///////////////Выбираем/Создаем номенклатуру ЗагружаемаяНоменклатура=Справочники.ШтрихКоды.НайтиПоНаименованию(СтрТЗ.шк); |
|||
22
anisa8310
11.12.13
✎
10:05
|
разве так можно? НайтиПоНаименованию(СтрТЗ.шк)
|
|||
23
Любопытная
11.12.13
✎
10:54
|
(22)Находит?
|
|||
24
anisa8310
11.12.13
✎
10:57
|
нет возможности проверить..сейчас.
|
|||
25
anisa8310
11.12.13
✎
10:58
|
так в слепую пишу без конфигурации. посто есть старая загрузка аналог пишу только с ТЗ. поверить не могу пока. ключ недоспуен-не хватает их на всех...
|
|||
26
anisa8310
11.12.13
✎
10:59
|
на другой конфигурации в конфигураторе пишу(интерграция учебная-ну так для среды развернула)))
|
|||
27
anisa8310
11.12.13
✎
11:00
|
поэтому и пытаюсь выяснить как к нему обращатьк ся к ТЗ ЭЛЕМЕНТУ
|
|||
28
Любопытная
11.12.13
✎
11:02
|
(25) короче, так можно. Ты же позволяешь себе Товары.Номенклатура=НоваяНоменклатура.Ссылка.
|
|||
29
Любопытная
11.12.13
✎
11:02
|
(27) Ты со строкой табличной части документа работала когда-нибудь?
|
|||
30
anisa8310
11.12.13
✎
11:11
|
(29) да работала вот с массивом например-очень много загружала-красиво было все:
фрагментик с моей работающей загрузки с массивом: Иначеесли ЗагружаемаяНоменклатура.Пустая()= ложь Тогда Номенклатура = ЗагружаемаяНоменклатура.Владелец; //Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("ОсновнойШтрихКод",Массив[17]); Товары.Номенклатура=Номенклатура.Ссылка; //Товары. Товары.ПриходнаяЦена= Массив[14]/Массив[9]; Товары.Количество= Массив[9]; Товары.ПриходнаяСумма = Массив[14]; Товары.Всего = Массив[14]; Товары.СтавкаНДС = Справочники.СтавкиНДС.БезНДС; Товары.Единица = Номенклатура.БазоваяЕдиница; НовыйДокумент.Записать(); КонецЕсли; счСтроки = счСтроки + 1; КонецЦикла; |
|||
31
anisa8310
11.12.13
✎
11:11
|
к массиву обращалась и как к ТЗТОВАРЫ моему не пойму что писать и прооверить пока не могу( уже в отчании.. спасибо что помогаете!
|
|||
32
Любопытная
11.12.13
✎
11:16
|
(31) Да при чем тут массив? У тебя есть таблица значений. У таблицы значений есть колонки, они именованы. Ты обходишь таблицу значений построчно и в строке таблицы значений можешь получить значение в пересечении строка/колонка через точку. Так же как и в строке табличной части.
|
|||
33
anisa8310
11.12.13
✎
11:45
|
(32) не причем-массив использовала для прошлой своей загрузке которая работала. )
|
|||
34
anisa8310
11.12.13
✎
11:45
|
получила доступ к программе буду эксперименты ставить
|
|||
35
anisa8310
11.12.13
✎
12:03
|
{Форма.Форма.Форма(98)}: Ошибка при вызове метода контекста (Получить)
НоваяНоменклатура.Наименование = СтрТЗ.Получить("Наименование"); по причине: Несоответствие типов (параметр номер '1') |
|||
36
Любопытная
11.12.13
✎
12:41
|
СтрТЗ.Получить("Наименование") Что это?
|
|||
37
Любопытная
11.12.13
✎
12:42
|
Синтаксис:
Получить(<Индекс>) Параметры: <Индекс> (обязательный) Тип: Число. Индекс колонки. Аниса, золотоко, напиши просто СтрТЗ.Наименование. И прекрати тупить |
|||
38
anisa8310
11.12.13
✎
14:11
|
(37) хорошо) спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |