Создания документа ПоступлениеТоваровУслуг

1. LOTR 21.02.19 17:19 Сейчас в теме
Добрый вечер всем, помогите пожалуйста никак не пойму.

необходимо что бы по кнопке создать поступление создавался документ новый "Поступление ТоваровУслуг", а так же все данные с формы интерфейса перенеслись в созданный документ.

Платформа 8.0

Следую следующей логике:


Процедура СоздатьПоступлениеНажатие(Элемент)
      НовДок=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
	  НовДок.Дата=ТекущаяДата();
	  НовДок.УстановитьНовыйНомер();
	  НовДок.Организация=Организация;
	  НовДок.Контрагент=Контрагент;
	  НовДок.ОтражатьВБухгалтерскомУчете=Истина;
	  НовДок.ОтражатьВНалоговомУчете=Истина;
	  НовДок.ОтражатьВУправленческомУчете=истина;
	  НовДок.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
	  
	  НовДок.Записать();
	 КонецПроцедуры
Показать

Подскажите что не так, кликаю на кнопку а она просто моргает.

Файлик с интерфейсом обработки добавлю.
Прикрепленные файлы:
+
По теме из базы знаний
Найденные решения
33. dchumak 42 25.02.19 05:18 Сейчас в теме
(30)
НачатьТранзакцию();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если НайденнаяНоменклатура.Пустая() Тогда
Сообщить("Не найдена номенклатура по артикулу");
Отказ = Истина;
КонецЕсли;

Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
Показать

Как-то так...
Загружать все в транзакции обязательно.
LOTR; +1
10. Raskad 10 21.02.19 17:45 Сейчас в теме
Процедура СоздатьПоступлениеНажатие(Элемент) 
НовДок=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); 
НовДок.Дата=ТекущаяДата(); 
НовДок.УстановитьНовыйНомер(); 
НовДок.Организация=Организация; 
НовДок.Контрагент=Контрагент; 
НовДок.ОтражатьВБухгалтерскомУчете=Истина; 
НовДок.ОтражатьВНалоговомУчете=Истина; 
НовДок.ОтражатьВУправленческомУчете=истина; 
НовДок.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад; 

НовДок.Записать(); 
Сообщить("Создан документ:" + НовДок.Ссылка);
КонецПроцедуры
Показать
+
16. nike-arz 21.02.19 17:53 Сейчас в теме
Попытка
			НовДок.Записать();
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
			
		НовДок.ПолучитьФорму().Открыть();


Попробуйте так и посмотрите.
+
35. dchumak 42 26.02.19 03:28 Сейчас в теме
(34)
А чем отличается? Ищете в справочнике, если нет то создаете элемент, а потом его подставляете.
Для 8.2 и 8.3 аналогично.
1. Создаете запись номенклатуры вручную, затем консолью запросов смотрите, какие реквизиты надо заполнить.
2. Код будет примерно таким:
НС = Справочники.Номенклатура.СоздатьЭлемент();
НС.Родитель = Родитель;
НС.Наименование = СтрПолучитьСтроку(СтрокаФайла, 1); 
НС.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(СтрПолучитьСтроку(СтрокаФайла, 2)); 	
НС.ВариантОформленияПродажи  = Перечисления.ВариантыОформленияПродажи.РеализацияТоваровУслуг;
НС.ВидНоменклатуры = ВидНоменклатуры;
НС.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать; 
НС.Качество = Перечисления.ГрадацииКачества.Новый;
НС.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
НС.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар; 	
НС.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.БезОсобенностейУчета;
НС.Записать();
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DJDUH 17 21.02.19 17:30 Сейчас в теме
(1) по идее документ и создается,
в журнале нет ли новых доков?
+
32. LOTR 22.02.19 18:52 Сейчас в теме
Подключение к ексель и все прочее сделал
//Попытка
// Excel = Новый COMобъект("Excel.Application");
// Excel.Workbooks.Open(ИмяФайла);
// Excel.Sheets(1).select();
// //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
// Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
// Если Версия = "8" тогда
// Строк = Excel.Cells.CurrentRegion.Rows.Count;
// Колонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
// Иначе
// Строк = Excel.Cells(1,1).SpecialCells(11).Row;
// Колонок = Excel.Cells(1,1).SpecialCells(11).Column;
// Конецесли;
acanta; +1
3. YannikAlx 43 21.02.19 17:32 Сейчас в теме
А процедура к кнопке привязана?
+
4. LOTR 21.02.19 17:37 Сейчас в теме
Да привязана, сейчас посмотрю, создает ли он что-то, даже если я до этого дойду, то как перенести данные Организации, контрагента и Склада с реквизитов интерфейса обработки?
+
6. Raskad 10 21.02.19 17:41 Сейчас в теме
(4) Куда перенести? Вы значения этих параметров и так установили уже в реквизиты документа.
+
8. LOTR 21.02.19 17:43 Сейчас в теме
(6)перенести выбранные значения из поля ввода сразу в документ, да бы 50 раз не перевыбирать.
+
11. Raskad 10 21.02.19 17:46 Сейчас в теме
(8) Так значения на форме очищаются что-ли? Если нет, то и зачем их перевыбирать?
+
12. LOTR 21.02.19 17:48 Сейчас в теме
(11)Не очищаются, необходимо сделать так, чтобы то что пользователь ввел на форме, перенеслось и в документ при его создании.
+
14. Raskad 10 21.02.19 17:51 Сейчас в теме
(12) А сейчас в созданном документе эти реквизиты пустые?
+
28. LOTR 22.02.19 17:19 Сейчас в теме
Код для выбора файла и прочее его :
Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
	Режим = РежимДиалогаВыбораФайла.Открытие; 
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); 
	ДиалогОткрытияФайла.ПолноеИмяФайла = ""; 
	Фильтр = "Файл поступлений|*.xls"; 
	ДиалогОткрытияФайла.Фильтр = Фильтр; 
	ДиалогОткрытияФайла.МножественныйВыбор = Ложь; 
	ДиалогОткрытияФайла.Заголовок = "Выберите файл"; 	
	Если ДиалогОткрытияФайла.Выбрать() Тогда
		ИмяФайла = СокрЛП(ДиалогОткрытияФайла.ПолноеИмяФайла);
	Иначе
		ИмяФайла = "";
	    Предупреждение("Файл Excel не выбран!");
НомерЛиста         = 1;
   
Попытка
    Excel = новый COMОбъект("Excel.Application");
Исключение
    Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
    Возврат;
КонецПопытки;     
   
Excel.Workbooks.Open(ИмяФайла);
   
Excel.Sheets(НомерЛиста).select();   
   
Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
Если Версия = "8" тогда
    ФайлСтрок   = Excel.Cells.CurrentRegion.Rows.Count;
    ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
Иначе
    ФайлСтрок   = Excel.Cells(1,1).SpecialCells(11).Row;
    ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;   
Конецесли;
КонецЕсли;
КонецПроцедуры
Показать
+
5. LOTR 21.02.19 17:41 Сейчас в теме
не поверите, создается, но почему-то сразу исчезает как только на кнопку жму
+
7. Raskad 10 21.02.19 17:41 Сейчас в теме
(5) Где видно, что исчезает?
+
9. LOTR 21.02.19 17:43 Сейчас в теме
(7)Моргает кнопка при нажатии
+
10. Raskad 10 21.02.19 17:45 Сейчас в теме
Процедура СоздатьПоступлениеНажатие(Элемент) 
НовДок=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); 
НовДок.Дата=ТекущаяДата(); 
НовДок.УстановитьНовыйНомер(); 
НовДок.Организация=Организация; 
НовДок.Контрагент=Контрагент; 
НовДок.ОтражатьВБухгалтерскомУчете=Истина; 
НовДок.ОтражатьВНалоговомУчете=Истина; 
НовДок.ОтражатьВУправленческомУчете=истина; 
НовДок.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад; 

НовДок.Записать(); 
Сообщить("Создан документ:" + НовДок.Ссылка);
КонецПроцедуры
Показать
+
17. LOTR 21.02.19 17:54 Сейчас в теме
(10)Вот это то что нужно, спасибо.
+
13. MaxxiMiliSan 252 21.02.19 17:51 Сейчас в теме
вот несколько предположений на вскидку
1. возможно нет прав
2. возможно что-то прописано в обработчике "ПриЗаписи" модуля ПоступлениеТоваровУслуг
3. кнопка без обработчика - наверное
4. номер не уникальный - поэтому не создается документ
+
15. Raskad 10 21.02.19 17:52 Сейчас в теме
(13) НовДок.УстановитьНовыйНомер() - дает уникальный номер.
LOTR; +1
18. MaxxiMiliSan 252 21.02.19 17:56 Сейчас в теме
(15) не дает - если сбился нумератор
+
25. Raskad 10 22.02.19 09:11 Сейчас в теме
(18) тогда было бы четкое сообщение об ошибке, что номер не уникален
+
26. MaxxiMiliSan 252 22.02.19 10:17 Сейчас в теме
(25) тоже верно, ну значит либо период был установлен не тот, либо отбор в журнале стоял
+
16. nike-arz 21.02.19 17:53 Сейчас в теме
Попытка
			НовДок.Записать();
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
			
		НовДок.ПолучитьФорму().Открыть();


Попробуйте так и посмотрите.
+
19. LOTR 21.02.19 17:58 Сейчас в теме
Простите, я глуповат))
+
22. YannikAlx 43 21.02.19 18:01 Сейчас в теме
(19) Не глуповат, а ленив - ленишься читать книжки...
LOTR; +1
20. LOTR 21.02.19 17:59 Сейчас в теме
21. MaxxiMiliSan 252 21.02.19 17:59 Сейчас в теме
а вознаграждение?)
LOTR; +1
23. YannikAlx 43 21.02.19 18:02 Сейчас в теме
(21) еще и скуповат? ))))))
LOTR; +1
24. MaxxiMiliSan 252 21.02.19 18:07 Сейчас в теме
а я кажется знаю, что было - период был установлен не тот, либо отбор в журнале стоял
LOTR; +1
27. LOTR 22.02.19 17:18 Сейчас в теме
Больше всего теперь интересует вопрос а как создать справочник и засунуть туда значения из колонок из файла Эксель
+
29. LOTR 22.02.19 17:19 Сейчас в теме
Создаю справочник как и документы
НовСпр=Справочники.РегистрационныеНомераАлкогольныхСправок.СоздатьЭлемент();
НовСпр.ФормаСправки=Перечисления.ФормыАлкогольныхСправок.ФормаА;
+
30. LOTR 22.02.19 18:17 Сейчас в теме
Но перед создание файла необходима проверка:
Для каждой строки загружаемого файла выполняется поиск элемента в справочнике «Номенклатура», значение поля «Артикул» которого равно значению в колонке 1 строки файла.

Если элемент с таким артикулом не найден, пользователю выдаётся сообщение «Не найдена номенклатура с артикулом [значение в колонке 1 строки файла]», документ «Поступление» не сохраняется и выполнение обработки прерывается.
+
33. dchumak 42 25.02.19 05:18 Сейчас в теме
(30)
НачатьТранзакцию();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если НайденнаяНоменклатура.Пустая() Тогда
Сообщить("Не найдена номенклатура по артикулу");
Отказ = Истина;
КонецЕсли;

Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
Показать

Как-то так...
Загружать все в транзакции обязательно.
LOTR; +1
34. LOTR 25.02.19 11:10 Сейчас в теме
(33)А вы не знаете как в 8.0 перенести все данные из колонок файла ексель в попутно созданный справочник, я в 8.3 и 8.2 давно уже есть способы но как в 8.0 не пойму.
+
35. dchumak 42 26.02.19 03:28 Сейчас в теме
(34)
А чем отличается? Ищете в справочнике, если нет то создаете элемент, а потом его подставляете.
Для 8.2 и 8.3 аналогично.
1. Создаете запись номенклатуры вручную, затем консолью запросов смотрите, какие реквизиты надо заполнить.
2. Код будет примерно таким:
НС = Справочники.Номенклатура.СоздатьЭлемент();
НС.Родитель = Родитель;
НС.Наименование = СтрПолучитьСтроку(СтрокаФайла, 1); 
НС.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(СтрПолучитьСтроку(СтрокаФайла, 2)); 	
НС.ВариантОформленияПродажи  = Перечисления.ВариантыОформленияПродажи.РеализацияТоваровУслуг;
НС.ВидНоменклатуры = ВидНоменклатуры;
НС.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать; 
НС.Качество = Перечисления.ГрадацииКачества.Новый;
НС.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
НС.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар; 	
НС.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.БезОсобенностейУчета;
НС.Записать();
Показать
+
36. LOTR 26.02.19 10:21 Сейчас в теме
(35)Да разобрался вчера, спасибо, немного по-другому, но похоже.
+
37. LOTR 26.02.19 10:43 Сейчас в теме
(33)
НачатьТранзакцию();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если НайденнаяНоменклатура.Пустая() Тогда
Сообщить("Не найдена номенклатура по артикулу");
Отказ = Истина;
КонецЕсли;

Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;


А как сравнить с 1 строкой файла ексель, и если данный артикул не найден по 1 строке, то сообщение и прерывание транзакции?
+
38. dchumak 42 26.02.19 11:11 Сейчас в теме
(37)
В примере 2 строчка Артикул - это и есть артикул из файла ексель.
Как он там у вас получается я не знаю. Это строка.
Соответственно, ищем по строке, если не нашли (пустая ссылка) то отказ в истину и транзакция прерывается.
Таким образом, у вас либо загрузится все (все должно быть без ошибок), либо не загрузится ничего.
+
39. dchumak 42 26.02.19 11:14 Сейчас в теме
(37) а вообще, читать Excel неверно, т.к. это работает только на ОС Windows.
Правильно будет создать табличный документ на форме, и в него копировать записи.
Затем его перебирать и обрабатывать.
+
41. LOTR 26.02.19 12:54 Сейчас в теме
(39)Я получаю следующим образом строки и колонки ексель
Excel = Новый COMобъект("Excel.Application");
	Excel.Workbooks.Open(ИмяФайла);
	Excel.Sheets(1).select();
	Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
	Если Версия = "8" тогда
	  Строк   = Excel.Cells.CurrentRegion.Rows.Count;
	  Колонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
	Иначе
	  ВсегоСтрок   = Excel.Cells(1,1).SpecialCells(11).Row;
	  ВсегоКолонок = Excel.Cells(1,1).SpecialCells(11).Column;   
	Конецесли;
//Создание  элемента справочника «Регистрационные номера алкогольных справок» 
	  Для СЧ=2 По ВсегоСтрок Цикл
      НовСпр=Справочники.РегистрационныеНомераАлкогольныхСправок.СоздатьЭлемент();
	  НовСпр.ФормаСправки=Перечисления.ФормыАлкогольныхСправок.ФормаА;
	  НовСпр.Наименование=СокрЛП(Excel.Cells(СЧ,5).Value);
	  НовСпр.РегистрационныйНомер=СокрЛП(Excel.Cells(СЧ,5).Value);
	  НовСпр.Записать();
	  СЧ=СЧ+1;
  КонецЦикла;
  //Создание  2 элемента справочника «Регистрационные номера алкогольных справок» 
  Для Сч=2 По ВсегоСтрок Цикл	
	  НовСпр=Справочники.РегистрационныеНомераАлкогольныхСправок.СоздатьЭлемент();
	  НовСпр.ФормаСправки=Перечисления.ФормыАлкогольныхСправок.ФормаБ;
	  НовСпр.Наименование=СокрЛП(Excel.Cells(СЧ,6).Value);
	  НовСпр.РегистрационныйНомер=СокрЛП(Excel.Cells(СЧ,6).Value);
	  НовСпр.Записать();
	  Сч=Сч+1;
  Excel.Application.Quit();
  КонецЦикла;
Показать
+
42. LOTR 26.02.19 12:54 Сейчас в теме
(39)Думаю моим способом не получится получит строку и использовать ваш прописанный алгоритм
+
43. dchumak 42 27.02.19 04:40 Сейчас в теме
(42) выложите скриншот ексель файла открытого, посмотрим
+
31. LOTR 22.02.19 18:18 Сейчас в теме
с ней тоже заминки))
+
40. LOTR 26.02.19 11:22 Сейчас в теме
да, знаю, это все прописано не мной, а консультантами, которые писали это ТЗ
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот