Загрузить данные из одной ТЧ в другую ТЧ по артикулу
По теме из базы знаний
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Распознавание и загрузка сканов в 1С "одним нажатием". УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.
- СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках
- Отчеты по товарам и материалам для 1С Бухгалтерии 3.0
- Wildberries. Загрузка еженедельных отчетов и финансовые показатели в разрезе карточек товаров (Юнит-экономика в 1с)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)
Теперь, я понял, что вы делаете.
Но не понял зачем вам из ТабличнойЧасти документа вытаскивать номенклатуру обратно на форму обработки...
Просто у вас, на сколько я понимаю, поле "Номенклатура" на форме обработки - СТРОКА, а вы хотите туда после заполнения документа передать ссылку на номенклатуру?
Теперь, я понял, что вы делаете.
Но не понял зачем вам из ТабличнойЧасти документа вытаскивать номенклатуру обратно на форму обработки...
Просто у вас, на сколько я понимаю, поле "Номенклатура" на форме обработки - СТРОКА, а вы хотите туда после заполнения документа передать ссылку на номенклатуру?
(5) Ну да, можно и так сказать. Грубо говоря, мне из Экселя нужно заполнить ТЧ документа. Но из экселя то все строкой загружается в ТЧ. Вот я и вытащил артикулы, по которым нашел их номенклатуры но уже с типом Ссылка. И хочу поместить в ТЗ, только чтобы в ней уже была номенклатура не строкой, а ссылка, чтобы нормально потом из этой ТЗ заполнить ТЧ документа
(6)
На сколько я себе это представляю, у вас происходит загрузка из эксель на форму обработки в ТЗ, вы ведь можете в момент загрузки из EXCEL сразу грузить Номенклатуру а не наименование....
Выгрузка на форму идет в цикле, посмотрите что я сейчас напишу и тогда быть может вам придет в голову дельная мысль:
Замените код на артикул и значение строки и столбика, и вы получите сразу преобразование в, так нужную вам, ссылку)))
На сколько я себе это представляю, у вас происходит загрузка из эксель на форму обработки в ТЗ, вы ведь можете в момент загрузки из EXCEL сразу грузить Номенклатуру а не наименование....
Выгрузка на форму идет в цикле, посмотрите что я сейчас напишу и тогда быть может вам придет в голову дельная мысль:
КодНоменклатуры=Лист.Cells(СчСтрок,2).Value;
Ном=Справочники.Номенклатура.НайтиПоКоду(КодНоменклатуры);
Замените код на артикул и значение строки и столбика, и вы получите сразу преобразование в, так нужную вам, ссылку)))
(10) На форме:
Модуль Объекта:
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
КонецПроцедуры
Процедура НачатьЗагрузку(Элемент)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
//Диалог.Фильтр = "Документ Excel (*.xlsx, *.xls)|*.xlsx,*.xls|";
Диалог.Фильтр = "Файл данных (*.xls)|*.xls";
ОповещениеЗавершения = Новый ОписаниеОповещения("ВыгрузитьЗавершение", ЭтотОбъект);
Диалог.Показать(ОповещениеЗавершения);
Сообщить("Загрузка завершена.");
КонецПроцедуры
ПоказатьМодуль Объекта:
Процедура ВыгрузитьЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы <> Неопределено Тогда
ПутьКФайлу = ВыбранныеФайлы[0];
Иначе
Возврат;
КонецЕсли;
Файл = Новый Файл(ПутьКФайлу);
ДвоичДан = Новый ДвоичныеДанные(ПутьКФайлу);
ТаблицаДанных = EXCEL_ВТаблицуЗначений(ДвоичДан, Файл.Расширение);
СформироватьДокументы(ТаблицаДанных);
КонецПроцедуры
Функция EXCEL_ВТаблицуЗначений(ДвоичДан, Расширение)
ФайлEXCELНаСервере = ПолучитьИмяВременногоФайла(Расширение);
ДвоичДан.Записать(ФайлEXCELНаСервере);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ФайлEXCELНаСервере);
УдалитьФайлы(ФайлEXCELНаСервере);
ОбластьТаблицы = ТабличныйДокумент.Область(24, 2, 85, ТабличныйДокумент.ШиринаТаблицы);
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьТаблицы);
ПостроительЗапроса.Выполнить();
ТаблицаДанных = ПостроительЗапроса.Результат.Выгрузить();
Возврат ТаблицаДанных;
КонецФункции
Процедура СформироватьДокументы(ТаблицаДанных)
Форма = ЭтотОбъект.ПолучитьФорму("Форма");
Поставщик = Форма.ВыборПоставщика;
Документ = Форма.ВыборДокумента;
//ДокОбъект = Документ.ПолучитьОбъект();
Массив = ТаблицаДанных.ВыгрузитьКолонку(Поставщик.Артикул);
ТЗНоменклатура = НайтиНоменклатуруПоАртикулам(Массив, Поставщик.Поставщик);
МассивНоменклатура = ТЗНоменклатура.ВыгрузитьКолонку(ТЗНоменклатура.Колонки.Ссылка);
Для Каждого Строка ИЗ ТЗНоменклатура Цикл
Стр = ТаблицаДанных.НайтиСтроки(новый структура("Код",Строка.Артикул));
Стр[0][Поставщик.Номенклатура] = Строка.Ссылка;
КонецЦикла;
//ТЗТоваров = Новый ТаблицаЗначений;
КонецПроцедуры
Функция НайтиНоменклатуруПоАртикулам(Массив, Поставщик)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураМТД_Поставщики.Ссылка,
| НоменклатураМТД_Поставщики.Артикул
|ИЗ
| Справочник.Номенклатура.МТД_Поставщики КАК НоменклатураМТД_Поставщики
|ГДЕ
| НоменклатураМТД_Поставщики.Артикул В(&Артикул)";
Запрос.УстановитьПараметр("Артикул", Массив);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Возврат РезультатЗапроса;
КонецФункции
//Процедура ЗаполнитьТабличнуюЧастьДокумента()
// //Для каждого Строка из ТаблицаДанных Цикл //Перебираем каждую строку из экселя
// // НоваяСтрока = ДокОбъект.Товары.Добавить();
// //
// // НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка[Поставщик.Номенклатура]);
// // НоваяСтрока.
// //КонецЦикла;
//КонецПроцедуры;
Показать
(11)под ваши потребности не совсем подходит такой вариинт который вы выбрали.
Но можно извратиться немного))
Делайте в ТЗ на форме еще одно поле с типом Справоники.Номенклатура, делайте его скрытым.
И после создания документа, передавайте в него значение номенклатуры, и делайте видимым, а столбик со строкой номенклатуры, скрывайте, и будет вам то что нужно)))
Но можно извратиться немного))
Делайте в ТЗ на форме еще одно поле с типом Справоники.Номенклатура, делайте его скрытым.
И после создания документа, передавайте в него значение номенклатуры, и делайте видимым, а столбик со строкой номенклатуры, скрывайте, и будет вам то что нужно)))
(13)
да, в момент когда вы выгружаете и у вас в ТЗ строчные значения,оставляете строки, а в процедуре создания документа дописываете заполнение новой колонки в таблице значений со строками (откуда вы брали артикулы), можно даже не удалять ту колонку в которой была строка, а просто добавить еще одну и все)
да, в момент когда вы выгружаете и у вас в ТЗ строчные значения,оставляете строки, а в процедуре создания документа дописываете заполнение новой колонки в таблице значений со строками (откуда вы брали артикулы), можно даже не удалять ту колонку в которой была строка, а просто добавить еще одну и все)
Но вот чтобы в ТЗ обратно загрузить номенклатуру с типом ссылка, нужно их сопоставлять по артикулу, я вот так сделал:
Но он блин все равно строкой закидывает, потому что у поля в ТЗ тип строка.
Для Каждого Строка ИЗ ТЗНоменклатура Цикл
Стр = ТаблицаДанных.НайтиСтроки(новый структура("Код",Строка.Артикул));
Стр[0][Поставщик.Номенклатура] = Строка.Ссылка;
КонецЦикла;
Но он блин все равно строкой закидывает, потому что у поля в ТЗ тип строка.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот