Создания документа ПоступлениеТоваровУслуг
Добрый вечер всем, помогите пожалуйста никак не пойму.
необходимо что бы по кнопке создать поступление создавался документ новый "Поступление ТоваровУслуг", а так же все данные с формы интерфейса перенеслись в созданный документ.
Платформа 8.0
Следую следующей логике:
Подскажите что не так, кликаю на кнопку а она просто моргает.
Файлик с интерфейсом обработки добавлю.
необходимо что бы по кнопке создать поступление создавался документ новый "Поступление ТоваровУслуг", а так же все данные с формы интерфейса перенеслись в созданный документ.
Платформа 8.0
Следую следующей логике:
Процедура СоздатьПоступлениеНажатие(Элемент)
НовДок=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
НовДок.Дата=ТекущаяДата();
НовДок.УстановитьНовыйНомер();
НовДок.Организация=Организация;
НовДок.Контрагент=Контрагент;
НовДок.ОтражатьВБухгалтерскомУчете=Истина;
НовДок.ОтражатьВНалоговомУчете=Истина;
НовДок.ОтражатьВУправленческомУчете=истина;
НовДок.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
НовДок.Записать();
КонецПроцедуры
ПоказатьПодскажите что не так, кликаю на кнопку а она просто моргает.
Файлик с интерфейсом обработки добавлю.
Прикрепленные файлы:
По теме из базы знаний
- Интеграция сценарного тестирования в процесс разработки
- Обмен: Бухгалтерия предприятия. Загрузка документов приходов из расходов
- Загрузка документов поступления из XML формата 820 (Контур.Диадок) в 1С:УТ10/11, БП 3.0, КА2.5, УПП1.3 и обработка выгрузки УПД в Контур Диадок и СБИС для 1С:Бухгалтерии 3.0
- Создание счетов-фактур по поступлениям и реализациям
- Выгрузка документа Поступление товаров на комиссию из 1С 7.7 в универсальный формат EnterpriseData 1.12 для загрузки в 1С: Бухгалтерию 3
Найденные решения
(30)
Как-то так...
Загружать все в транзакции обязательно.
НачатьТранзакцию();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если НайденнаяНоменклатура.Пустая() Тогда
Сообщить("Не найдена номенклатура по артикулу");
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
ПоказатьКак-то так...
Загружать все в транзакции обязательно.
Процедура СоздатьПоступлениеНажатие(Элемент)
НовДок=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
НовДок.Дата=ТекущаяДата();
НовДок.УстановитьНовыйНомер();
НовДок.Организация=Организация;
НовДок.Контрагент=Контрагент;
НовДок.ОтражатьВБухгалтерскомУчете=Истина;
НовДок.ОтражатьВНалоговомУчете=Истина;
НовДок.ОтражатьВУправленческомУчете=истина;
НовДок.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
НовДок.Записать();
Сообщить("Создан документ:" + НовДок.Ссылка);
КонецПроцедуры
ПоказатьПопытка
НовДок.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
НовДок.ПолучитьФорму().Открыть();
Попробуйте так и посмотрите.
(34)
А чем отличается? Ищете в справочнике, если нет то создаете элемент, а потом его подставляете.
Для 8.2 и 8.3 аналогично.
1. Создаете запись номенклатуры вручную, затем консолью запросов смотрите, какие реквизиты надо заполнить.
2. Код будет примерно таким:
А чем отличается? Ищете в справочнике, если нет то создаете элемент, а потом его подставляете.
Для 8.2 и 8.3 аналогично.
1. Создаете запись номенклатуры вручную, затем консолью запросов смотрите, какие реквизиты надо заполнить.
2. Код будет примерно таким:
НС = Справочники.Номенклатура.СоздатьЭлемент();
НС.Родитель = Родитель;
НС.Наименование = СтрПолучитьСтроку(СтрокаФайла, 1);
НС.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(СтрПолучитьСтроку(СтрокаФайла, 2));
НС.ВариантОформленияПродажи = Перечисления.ВариантыОформленияПродажи.РеализацияТоваровУслуг;
НС.ВидНоменклатуры = ВидНоменклатуры;
НС.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать;
НС.Качество = Перечисления.ГрадацииКачества.Новый;
НС.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
НС.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
НС.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.БезОсобенностейУчета;
НС.Записать();
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Подключение к ексель и все прочее сделал
//Попытка
// 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;
// Конецесли;
//Попытка
// 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;
// Конецесли;
Да привязана, сейчас посмотрю, создает ли он что-то, даже если я до этого дойду, то как перенести данные Организации, контрагента и Склада с реквизитов интерфейса обработки?
Код для выбора файла и прочее его :
Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "Файл поступлений|*.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;
Конецесли;
КонецЕсли;
КонецПроцедуры
ПоказатьПроцедура СоздатьПоступлениеНажатие(Элемент)
НовДок=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
НовДок.Дата=ТекущаяДата();
НовДок.УстановитьНовыйНомер();
НовДок.Организация=Организация;
НовДок.Контрагент=Контрагент;
НовДок.ОтражатьВБухгалтерскомУчете=Истина;
НовДок.ОтражатьВНалоговомУчете=Истина;
НовДок.ОтражатьВУправленческомУчете=истина;
НовДок.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
НовДок.Записать();
Сообщить("Создан документ:" + НовДок.Ссылка);
КонецПроцедуры
Показать
вот несколько предположений на вскидку
1. возможно нет прав
2. возможно что-то прописано в обработчике "ПриЗаписи" модуля ПоступлениеТоваровУслуг
3. кнопка без обработчика - наверное
4. номер не уникальный - поэтому не создается документ
1. возможно нет прав
2. возможно что-то прописано в обработчике "ПриЗаписи" модуля ПоступлениеТоваровУслуг
3. кнопка без обработчика - наверное
4. номер не уникальный - поэтому не создается документ
Попытка
НовДок.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
НовДок.ПолучитьФорму().Открыть();
Попробуйте так и посмотрите.
Больше всего теперь интересует вопрос а как создать справочник и засунуть туда значения из колонок из файла Эксель
Создаю справочник как и документы
НовСпр=Справочники.РегистрационныеНомераАлкогольныхСправок.СоздатьЭлемент();
НовСпр.ФормаСправки=Перечисления.ФормыАлкогольныхСправок.ФормаА;
НовСпр=Справочники.РегистрационныеНомераАлкогольныхСправок.СоздатьЭлемент();
НовСпр.ФормаСправки=Перечисления.ФормыАлкогольныхСправок.ФормаА;
Но перед создание файла необходима проверка:
Для каждой строки загружаемого файла выполняется поиск элемента в справочнике «Номенклатура», значение поля «Артикул» которого равно значению в колонке 1 строки файла.
Если элемент с таким артикулом не найден, пользователю выдаётся сообщение «Не найдена номенклатура с артикулом [значение в колонке 1 строки файла]», документ «Поступление» не сохраняется и выполнение обработки прерывается.
Для каждой строки загружаемого файла выполняется поиск элемента в справочнике «Номенклатура», значение поля «Артикул» которого равно значению в колонке 1 строки файла.
Если элемент с таким артикулом не найден, пользователю выдаётся сообщение «Не найдена номенклатура с артикулом [значение в колонке 1 строки файла]», документ «Поступление» не сохраняется и выполнение обработки прерывается.
(30)
Как-то так...
Загружать все в транзакции обязательно.
НачатьТранзакцию();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если НайденнаяНоменклатура.Пустая() Тогда
Сообщить("Не найдена номенклатура по артикулу");
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
ПоказатьКак-то так...
Загружать все в транзакции обязательно.
(34)
А чем отличается? Ищете в справочнике, если нет то создаете элемент, а потом его подставляете.
Для 8.2 и 8.3 аналогично.
1. Создаете запись номенклатуры вручную, затем консолью запросов смотрите, какие реквизиты надо заполнить.
2. Код будет примерно таким:
А чем отличается? Ищете в справочнике, если нет то создаете элемент, а потом его подставляете.
Для 8.2 и 8.3 аналогично.
1. Создаете запись номенклатуры вручную, затем консолью запросов смотрите, какие реквизиты надо заполнить.
2. Код будет примерно таким:
НС = Справочники.Номенклатура.СоздатьЭлемент();
НС.Родитель = Родитель;
НС.Наименование = СтрПолучитьСтроку(СтрокаФайла, 1);
НС.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(СтрПолучитьСтроку(СтрокаФайла, 2));
НС.ВариантОформленияПродажи = Перечисления.ВариантыОформленияПродажи.РеализацияТоваровУслуг;
НС.ВидНоменклатуры = ВидНоменклатуры;
НС.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать;
НС.Качество = Перечисления.ГрадацииКачества.Новый;
НС.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
НС.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
НС.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.БезОсобенностейУчета;
НС.Записать();
Показать
(33)
А как сравнить с 1 строкой файла ексель, и если данный артикул не найден по 1 строке, то сообщение и прерывание транзакции?
НачатьТранзакцию();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если НайденнаяНоменклатура.Пустая() Тогда
Сообщить("Не найдена номенклатура по артикулу");
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если НайденнаяНоменклатура.Пустая() Тогда
Сообщить("Не найдена номенклатура по артикулу");
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
А как сравнить с 1 строкой файла ексель, и если данный артикул не найден по 1 строке, то сообщение и прерывание транзакции?
(37)
В примере 2 строчка Артикул - это и есть артикул из файла ексель.
Как он там у вас получается я не знаю. Это строка.
Соответственно, ищем по строке, если не нашли (пустая ссылка) то отказ в истину и транзакция прерывается.
Таким образом, у вас либо загрузится все (все должно быть без ошибок), либо не загрузится ничего.
В примере 2 строчка Артикул - это и есть артикул из файла ексель.
Как он там у вас получается я не знаю. Это строка.
Соответственно, ищем по строке, если не нашли (пустая ссылка) то отказ в истину и транзакция прерывается.
Таким образом, у вас либо загрузится все (все должно быть без ошибок), либо не загрузится ничего.
(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();
КонецЦикла;
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот