Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 сен 2021, 21:02

помогите с обработкой . заполнения документа.

Автор andron81_81, 06 дек 2018, 08:56

0 Пользователей и 1 гость просматривают эту тему.

andron81_81

Добрый всем день.

Есть не типовой документ сделанный кем-то. Скорее всего это велосипед сделанный из документа "Операция (бухгалтерский и налоговый учет)" , но заточен на определенный счет - 002.
в движении документа отмечен регистр бухгалтерии - "хозрасчетный". а на форме табличное поле которое связано с "Движения.Хозрасчетный" см. скриншот
Теперь сама задача : необходимо из екселовской таблички выгрузить данные в поля отмеченные на скриншоте. У меня субконто Дт выгрузить не получается.
я сделал обработку которая читает XLSX - файл по нажатию кнопки и должна разносить по идее в таб. поле .
Проблема в том, что не получается пробить по субконто Дт. я упростил задачу пока просто хотел пробить в аналитику константу (а должно из екселовской таблицы, ну тут без проблем), то есть вот такая строка не отрабатывает:

НоваяСтрокаВРегистре.СубконтоДт["Номенклатура"] = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок").Код;

скриншот :


весь код привожу :

Процедура ОбработатьНажатие(Элемент)


Эксель = Новый COMОбъект("Excel.Application");
// Открытие книги
Книга = Эксель.Workbooks.Open("D:\тест.xlsx");
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

НовыйДокумент = Документы.WОперацияБух002.СоздатьДокумент();  //ДокументРасчетовСКонтрагентом.СоздатьДокумент();



КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
НоваяСтрокаВРегистре=НовыйДокумент.Движения.Хозрасчетный.Добавить();
НоваяСтрокаВРегистре.СчетДт= ПланыСчетов.Хозрасчетный.НайтиПоКоду("002");
НоваяСтрокаВРегистре.Период =  ТекущаяДата();
Для НомерКолонки = 1 По 3 Цикл
   ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
   
   НоваяСтрокаВРегистре.СубконтоДт["Номенклатура"] = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок").Код;
    КонецЦикла;

КонецЦикла;
НовыйДокумент.Дата=ТекущаяДата();
НовыйДокумент.Записать(РежимЗаписиДокумента.Запись );

// Закрытие книги
Книга.Close(0);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

КонецПроцедуры


LexaK

да-а-а

НоваяСтрокаВРегистре.СубконтоДт["Номенклатура"] = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок").Код

вообще СубконтоДт.Номенклатура - подразумевает ссылку на Номенклатуру, а вы туда Код пытаетесь поместить!!! 

ответ Понравился? (в смысле пригодился?)

andron81_81

Цитата: LexaK от 06 дек 2018, 10:20
да-а-а

НоваяСтрокаВРегистре.СубконтоДт["Номенклатура"] = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок").Код

вообще СубконтоДт.Номенклатура - подразумевает ссылку на Номенклатуру, а вы туда Код пытаетесь поместить!!!

ой, нет . стоп. это я уже пытался выёживаться. изначально было без кода  вот так :

НоваяСтрокаВРегистре.СубконтоДт["Номенклатура"] = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок")

и тоже не рабочий вариант.
извините за неточность.

oleg-x

Кое что в этой строе еще лишнее:
НоваяСтрокаВРегистре.СубконтоДт["Номенклатура"] = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок")
А конкретно эта часть: ["Номенклатура"]
Это равносильно, если бы вы написали так:
НоваяСтрокаВРегистре.СубконтоДт.Номенклатура =
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

andron81_81

Цитата: oleg-x от 06 дек 2018, 11:08
Кое что в этой строе еще лишнее:
НоваяСтрокаВРегистре.СубконтоДт["Номенклатура"] = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок")
А конкретно эта часть: ["Номенклатура"]
Это равносильно, если бы вы написали так:
НоваяСтрокаВРегистре.СубконтоДт.Номенклатура =

да, это равносильно. неоспоримо ,  но ответа на вопрос не даёт.
если "прозвонить" в табло НоваяСтрокаВРегистре.СубконтоДт , то все поля Номенклатура и т.п. будут иметь тип "Неопределено". то есть сам подход неверный мне кажется. нельзя так :

НоваяСтрокаВРегистре.СубконтоДт["Номенклатура"] = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок")

ну и так тоже нельзя :

НоваяСтрокаВРегистре.СубконтоДт.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок")

а тогда как ? :mellow:

oleg-x

Цитата: andron81_81 от 06 дек 2018, 11:14да, это равносильно. неоспоримо ,  но ответа на вопрос не даёт.
Если логически подумать, то дает. Просто надо подумать
НоваяСтрокаВРегистре.СубконтоДт = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок")
Добавлено: 06 дек 2018, 11:20


Цитироватьесли "прозвонить" в табло НоваяСтрокаВРегистре.СубконтоДт , то все поля Номенклатура и т.п. будут иметь тип "Неопределено". то есть сам подход неверный мне кажется. нельзя так :
Тип неопределено имеет любой составной реквизит. То есть значение может принимать разные типы. Если хотите, что бы был определенный тип, то надо делать привидение типов или просто НоваяСтрокаВРегистре.СубконтоДт = Справочники.Номенклатура.Пустаяссылка()
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

andron81_81

Цитата: oleg-x от 06 дек 2018, 11:17
НоваяСтрокаВРегистре.СубконтоДт = Справочники.Номенклатура.НайтиПоНаименованию("100 загадок-100 отгадок")

фантастика. само должно подставиться в нужную аналитику

oleg-x

Некоторые скажут, что это зло, но мне этим и нравится 1С. не надо задумываться о типах, только помнить где какой может быть тип и каким образом преобразуется.
Пример
Сообщить("Целое число: " + 1); // Целое число: 1
Сообщить(1 + " целое число"); // Выдаст ошибку преобразования типов
//так как в первом случае все последующие значения будут преобразованы сначала в строку, а потом сложены.
//А во втором случае преобразование строки к число не возможно.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск