Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 06:23
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: автоматическое создание приходных из 1С  (Прочитано 5246 раз)

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

Оффлайн frontera

Здрасте всем!
Буду краток: создал файлик epf (как я понимаю внешняя форма или обработчик) для загрузки и автоматического создания документа "приход товара"
с одной стороны все работает, с другой:
1. сумма считается (вижу отладчиком), но не выводится в табличной части нового документа
2. СтавкаНДС вообще никак не хочет устанавливаться

Альфа-Авто: Автосалон+Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.02_003)
1С 8.1.15.14

код
Перем Приложение;

Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ВыборФайла();
КонецПроцедуры

Функция ВыборФайла()
ДиалогОткрытияФайла=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.ПолноеИмяФайла="";
Фильтр = "Любой файл(*.*)|*.*";
ДиалогОткрытияФайла.Фильтр=Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор=Ложь;
Если ДиалогОткрытияФайла.Выбрать() Тогда
ИмяФайла=ДиалогОткрытияФайла.ПолноеИмяФайла;
ВыбФайл=Новый Файл(ИмяФайла);
Иначе
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
перем Док;
Состояние("Открытие файла");
Приложение = Новый COMОбъект("Excel.Application");
Приложение.Application.Workbooks.Open(ИмяФайла);

Если Приложение=Неопределено Тогда
Предупреждение("MS Excel не загружен");
Возврат;
КонецЕсли;

Запросик = Новый Запрос;
Запросик.УстановитьПараметр("Период",ТекущаяДата());
Запросик.УстановитьПараметр("Валюта",ВыбВалюта);
Запросик.Текст = "ВЫБРАТЬ
| КурсыВалютСрезПоследних.Курс,
| КурсыВалютСрезПоследних.Кратность
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&Период, ) КАК КурсыВалютСрезПоследних
|ГДЕ
| КурсыВалютСрезПоследних.Валюта = &Валюта";
РР = Запросик.Выполнить().Выбрать();
РР.Следующий();
Курс = рр.Курс;

ОснЕдИзм = Константы.ОсновнаяЕдиницаИзмеренияКоличества.Получить();

Ох = Новый Запрос;
Ох.УстановитьПараметр("Владелец",ТипНомеклатуры);
Ох.УстановитьПараметр("Наиме","шт");
Ох.Текст = "ВЫБРАТЬ
| ЕдиницыИзмерения.Ссылка
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Владелец = &Владелец
| И ЕдиницыИзмерения.Наименование ПОДОБНО &Наиме";
Кака = Ох.Выполнить().Выбрать();
Кака.Следующий();
СуперОснЕдИзм = Кака.Ссылка;



Док = Документы.ПоступлениеТоваров.СоздатьДокумент();
Док.СкладКомпании = ВыбСкладКомпании;
Док.Организация = ВыбОрганизации;
Док.ПодразделениеКомпании = ВыбПодразделения;
Док.ХозОперация = ХозОперация;
Док.Дата = ТекущаяДата();
Док.ВалютаДокумента = ВыбВалюта;
Док.Автор = ПараметрыСеанса.Пользователь;
Док.ТипЦен = ТипЦен;
Док.КурсДокумента =Курс;
Док.УстановитьНовыйНомер();
Для ОбрабатываемаяСтрока = НачальнаяСтрока По 1000000 Цикл    //ВсегоСтрок+10
Если (ПустаяСтрока(СокрЛП(Приложение.ActiveSheet.Cells(ОбрабатываемаяСтрока,НомАртикул).Value) )= Истина) Тогда
Прервать;
КонецЕсли;
ОбработкаПрерыванияПользователя();

Артикул  = Приложение.ActiveSheet.Cells(ОбрабатываемаяСтрока,НомАртикул).Value;
Цена     = Приложение.ActiveSheet.Cells(ОбрабатываемаяСтрока,номЦена).Value;
КолВо    = Приложение.ActiveSheet.Cells(ОбрабатываемаяСтрока,номКолво).Value;
Если номГТД > 0 Тогда
ГТД = Приложение.ActiveSheet.Cells(ОбрабатываемаяСтрока,номГТД).Value;
КонецЕсли;
//Стоимость     = Приложение.ActiveSheet.Cells(ОбрабатываемаяСтрока,номСтоимость).Value;

АртикулСтрока = СокрЛП(Формат(Артикул,"ЧГ="));


Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Артикул",АртикулСтрока);
Запрос.Текст = "ВЫБРАТЬ
               | Номенклатура.Ссылка,
               | Номенклатура.ОсновнаяЕдиницаИзмерения,
   | [b]Номенклатура.СтавкаНДС.Ссылка[/b] КАК [b]ТоварНДС[/b]
               |ИЗ
               | Справочник.Номенклатура КАК Номенклатура
               |ГДЕ
               | Номенклатура.Артикул = &Артикул";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Если Выборка.Следующий() Тогда
нс = Док.Товары.Добавить();
Нс.Номенклатура = Выборка.Ссылка;

[b]Нс.СтавкаНДС = Выборка.ТоварНДС;[/b]

Если ОбЗначениеНеЗаполнено(Выборка.ОсновнаяЕдиницаИзмерения) Тогда
Нс.ЕдиницаИзмерения = СуперОснЕдИзм;
СсылкаНоменклатуры = Выборка.Ссылка;
ОбъектНоменклатуры = СсылкаНоменклатуры.ПолучитьОбъект();
ОбъектНоменклатуры.ОсновнаяЕдиницаИзмерения = СуперОснЕдИзм;
ОбъектНоменклатуры.Записать();
Иначе
Нс.ЕдиницаИзмерения = Выборка.ОсновнаяЕдиницаИзмерения;
КонецЕСли;

Нс.Цена         = Цена / Колво;
Нс.Количество   = Колво;
Нс.Коэффициент  = 1;
Нс.Сумма        = Цена;
Нс.СуммаВсего = Нс.Сумма;



ГТДСтрока = СокрЛП(ГТД);
ЗапросГТД = Новый Запрос;
ЗапросГТД.УстановитьПараметр("ГТД", ГТДСтрока);

ЗапросГТД.Текст = "ВЫБРАТЬ
   | ГТД.Ссылка
   |ИЗ
   | Справочник.ГТД КАК ГТД
   |ГДЕ
   | ГТД.Наименование = &ГТД";
   
РезультатГТД = ЗапросГТД.Выполнить().Выбрать();
РезультатГТД.Следующий();

Нс.ГТД = РезультатГТД.Ссылка;

Иначе
Сообщить("Не найден товар с кодом:"+Артикул);
КонецЕсли;
КонецЦикла;
Если Док.Товары.Количество()>0 Тогда
//Док.Записать(РежимЗаписиДокумента.Запись);

Форма = Док.ПолучитьФорму();

Форма.Открыть();
Форма.Обновить();
Приложение.Application.Workbooks.Close();     
Приложение = "";

Предупреждение("Загрузка выполнена!");
Иначе
Предупреждение("Пустой документ!",5);
КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
КонецПроцедуры

Процедура ПриЗакрытии()

так-же пробовал вставить тупо как выбор из формы - никакого результата, Нс.СтавкаНДС = выбНДС (читаем из формы) - не работает, Нс.СтавкаНДС = выбНДС.Ссылка - не работает..
уже весь мозг сломал...

Прошу сильно не пинать - это моя первая работа в 1С


Оффлайн Zavs

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 6
  • КПД: 17%
  • Регистрация: 2011-04-10
  • Сайт: 
  • Профессия: Консультант 1С
Со ставкой НДС дело в том, что это перечисление, а для перечисления нет ссылки, т.е. строку в запросе

Номенклатура.СтавкаНДС.Ссылка КАК ТоварНДС

нужно заменить на

Номенклатура.СтавкаНДС КАК ТоварНДС

Посмотрите в отладчике значение и тип Выборка.ТоварНДС для двух разных случаев. При правильном построении запроса тип этого значения должен быть перечисление.

Если я ошибаюсь, то прошу прощения.

Оффлайн frontera

Все равно пишет "БезНДС" в табличной части.. в отладчике то я все данные вижу... то есть оно их вытаскивает в любом случае, но не вставляет...

я уже по разному пробовал, ничего не помогает, и суммы не считаются, хотя например ГТД - на ура тащит... цену, количество тоже без вопросов вставляет... может там по хитрому форму после создания надо как-то пересчитать (чтоб хотябы суммы работали...)
а может надо передать общую сумму документу?

Оффлайн Zavs

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 6
  • КПД: 17%
  • Регистрация: 2011-04-10
  • Сайт: 
  • Профессия: Консультант 1С
А почему вы не записываете документ перед открытием формы? Уже пробовали и не помогло?

Когда вы в отладчике смотрите после присваивания ставки НДС на реквизит табличной части СтавкаНДС, то какое там значение?

Оффлайн frontera

Цитировать
А почему вы не записываете документ перед открытием формы? Уже пробовали и не помогло?

Очень неохота в боевой базе создавать кучу тестовых документов, которые потом прийдется удалять... хотя мне намекали что сохранение должно помочь (ибо там даже строчка есть закоментированная), помогло или нет - не помню если честно, при записи он на что-то ругался... могу попробовать....

Цитировать
Когда вы в отладчике смотрите после присваивания ставки НДС на реквизит табличной части СтавкаНДС, то какое там значение?
18% во всех случаях (если оно указано)

Оффлайн Zavs

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 6
  • КПД: 17%
  • Регистрация: 2011-04-10
  • Сайт: 
  • Профессия: Консультант 1С
Если вы не записываете документ, то при открытии обработчик ПриОткрытии() может что-то не видеть у объекта и заполнять ставку НДС по умолчанию установленную для вашего пользователя. Так что попробуйте записать. А с суммой - это последствия проблем с НДС скорее всего.

Оффлайн frontera

В общем либо безсонная ноч, либо я уже куда-то улетел в мыслях (либо вчерашний ДП) в общем спотыкаюсь при записи в договор.. в форме устанавливаю СправочникСсылка.ДоговорыВзаиморасчетов - он мне конечно вываливает ВСЕ
а как отобрать сразу только с конкретным контрагентом?!

Оффлайн Zavs

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 6
  • КПД: 17%
  • Регистрация: 2011-04-10
  • Сайт: 
  • Профессия: Консультант 1С
Не понял. Где отобразить только с конкретным контрагентом?

Оффлайн frontera

в форме выбор договора чтоб был привязан к выбранному контрагенту

Оффлайн Zavs

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 6
  • КПД: 17%
  • Регистрация: 2011-04-10
  • Сайт: 
  • Профессия: Консультант 1С
В свойствах элемента формы Договор установить параметр "Связь по владельцу" - Контрагент.


Теги:
 

Программное создание документа на основании документа

Автор GolickoffРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 4465
Последний ответ 23 Апр 2015, 08:45
от Golickoff
Создание отчета "Отсутствие заказов"

Автор dronspartak9@gmail.comРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 3871
Последний ответ 16 Апр 2014, 15:09
от dronspartak9@gmail.com
Создание заказаов на производство на основании заказа на производство.

Автор Елена1986Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 20
Просмотров: 7827
Последний ответ 09 Сен 2015, 13:01
от Елена1986
Создание плана закупок с использованием плана продаж

Автор NataVlРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 1181
Последний ответ 26 Сен 2016, 16:25
от NataVl
Создание расчета "курсовой разницы" 1С 8.3 УТ

Автор HabiРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1608
Последний ответ 18 Фев 2017, 17:47
от Геннадий ОбьГЭС

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Автозапчасти

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
171 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
38 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 236
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal