УПП редакция 1.3. Подскажите пожалуйста как можно отменить проводку документа "ПеремещениеТоваров" если в документе товара больше чем на складе? Я сделал следующим образом: В процедуру ОбработкаПроведения добавил следующий код.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПеремещениеТоваровТовары.Номенклатура, | ПеремещениеТоваровТовары.Количество, | ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток |ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстатки | ПО ПеремещениеТоваровТовары.Номенклатура.Ссылка = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура |ГДЕ | ПеремещениеТоваровТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка); Результат = Запрос.Выполнить().Выгрузить(); Для каждого Строка из Результат Цикл Если Строка.Количество > Строка.КоличествоОстаток Тогда ЭтотОбъект.Проведен = Ложь; ЭтотОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
Сообщить("Документ " + ЭтотОбъект.Ссылка + " записан, но не проведен!");
КонецЕсли; КонецЦикла;
Но как оказалось этот вариант не подходит. Т.к. вчера он работал, все было нормально, а сегодня ,точнее 15мин назад он уже не работает. По какой причине, я не смог разобраться. Подскажите какой вариант еще можно использовать? За ранее спасибо!
Пробую еще раз УПП редакция 1.3 Делаю обработку которая позволяет перезаписывать данные в регистр сведений. Как можно сделать программно обход списка документов для получения ссылки на каждый документ. Документ ПлатежноеПоручениеИсходящее. Вот сам код:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Ссылка.Контрагент КАК Контрагент, | ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.СтавкаНДС, | КонтрагентыОрганизаций.СтавкаНДСПриобретений |ИЗ | Документ.ПлатежноеПоручениеИсходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеИсходящееРасшифровкаПлатежа | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтрагентыОрганизаций КАК КонтрагентыОрганизаций | ПО ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Ссылка.Контрагент = КонтрагентыОрганизаций.Контрагент |ГДЕ | ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Ссылка.ВидОперации = &ВидОперации | И ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("ВидОперации", Перечисления.ВидыОперацийППИсходящее.ОплатаПоставщику); Запрос.УстановитьПараметр("Ссылка", Ссылка); РегистрыСведений.КонтрагентыОрганизаций.ВыбратьПоРегистратору(Ссылка).СтавкаНДСПриобретений = Выборка.СтавкаНДС; Результат = Запрос.Выполнить().Выгрузить(); Для каждого Строка из Результат Цикл РегистрыСведений.КонтрагентыОрганизаций.ВыбратьПоРегистратору(Ссылка).СтавкаНДСПриобретений = Строка.СтавкаНДС; КонецЦикла; КонецЦикла;
С этим вопросом разобрался. Спасибо. Но вот меня мучает один вопрос. В документе который помечен на удаление отображаются движения. Как можно отследить почему в документе помеченном на удаление отображются движения? И как можно их удалить ?
Уважаемые помогите. С этой же задачей. При проведении документа когда товара на складе недостаточно выдается ошибка следующего содержания.
Цитата
"Управленческий учет. Документ Списание товаров ДО000000005 от 26.06.2012 17:19:14, табличная часть "Товары" Не списано по партиям 100 000 000 000 шт товара Водка Nemiroff Nemirovskaya 0.7л, со склада: Главный складБухгалтерский учет. Документ Списание товаров ДО000000005 от 26.06.2012 17:19:14, табличная часть "Товары" Не списано по партиям 100 000 000 000 шт товара Водка Nemiroff Nemirovskaya 0.7л, счета учета 281, 0241, налоговое назначение Обл. НДС, со склада: Главный склад"
И это нормально А вот когда выдает эту же ошибку когда при проведении документа есть наличие товара на складе-это уже беда. Помогите пожалуйста решить эту проблему. Как убрать это сообщение?
Как сделать эту обработку? Понятно, что создать внешнюю обработку. А дальше? Т.е. какие объекты должны быть созданы? Понимаю, что все это должно будет записываться в РС Контрагенты организаций.
Доброго времени суток! УПП редакция 1.3. Помогите с обработкой. Задача следующая: Необходима обработка, которая пройдется по документам «Платежное поручение исходящее» с видом операции «Оплата поставщику» и значение реквизита «Ставка НДС» запишет в РС «Контрагенты организаций» в реквизит «Ставка НДС по приобретению» по тем контрагентам, которые указаны в платежном поручении в реквизите «Получатель». Спасибо!
Доброго времени суток! Помогите с задачкой разобраться. УПП редакция 1.3 Задача следующая : ИС разрешает неоперативное проведение документов при отсутствии остатков ТМЦ, т.е сообщение выдается, но документ все равно проводится. При этом выдается сообщение для каждого из видов учета (УУ и БУ): «Упр.учет. не списано по партиям «наименование ТМЦ»/»количество ТМЦ»/склад» «Бух.учет. не списано по партиям «наименование ТМЦ»/»количество ТМЦ»/склад/налоговое назначение» Необходимо в документах: - Требование-накладная - Списание товаров - Перемещение товаров - Реализация товаров и услуг Реализовать следующий функционал: Если по документу выдается данное сообщение, то документ записывать, но не проводить. Пользователю выдавать дополнительное сообщение о том, что документ проведен не будет.
Отследил в какой процедуре вызываются ошибки. Вот сама процедура:
Эти строки их там нет) Не правильно скопировал. Подскажите пожалуйста. Такая ситуация, при загрузке в справочник номенклатура задваиваются строки. Вообще расчитано единоразово загружать из документа новый товар. Но мне надо проверять же при загрузке. Как сделать, что бы каждый раз когда я открываю справочник до того как в него загружаю данные, он был пуст? А то как-то не весело смотреть на один и тот же товар в 20 строках...
Вот вернулся снова к этой обработке. Только она уже не внешняя. Ситуация следующая. При копировании из экселя в табчасть формы данных при нажатии на кнопку Загрузить, данные записываются в справочник Номенклатура. Вот код :
&НаСервере Процедура М_Присвоение()
Для каждого ТЧ из Объект.Таблица Цикл Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Артикул = ТЧ.Артикул; Спр.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Новинки Весна 2012"); Спр.Наименование = ТЧ.РабочееНаименование; Спр.НаименованиеПолное = ТЧ.НаименованиеДляПечати;
Если ТЧ.СтавкаНДС = "СтавкаНДС" Тогда Спр.СтавкаНДС = Перечисления.СтавкаНДС.НДС18; КонецЕсли;
Если ТЧ.ВестиУчетПоГТД = "Да" Тогда Спр.ВестиУчетПоГТД = Истина; ИначеЕсли ТЧ.ВестиУчетПоГТД = "Нет" Тогда Спр.ВестиУчетПоГТД = Ложь; КонецЕсли; Спр.Записать();
Для каждого Стр ИЗ Спр.ДополнительныеРеквизиты Цикл Если Стр.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Бренд") Тогда Стр.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("ТЧ.Бренд"); Если ТЧ.Новинка = "Да" Тогда Спр.Новинка = Истина; ИначеЕсли ТЧ.Новинка ="нет" тогда Спр.Новинка = Ложь; КонецЕсли;
Не записывает дополнительные реквизиты , Бренд, новинка и минимальный заказ. Не могу понять почему, и ошибки нет и записи тоже. Помогите пожалуйста! Спасибо!
Уважаемые помогите пожалуйста! Не могу разобраться в чем проблема! Все в той же внешней обработке с той же табличной частью. В пользовательском режиме,пользователь в ручную копирует данные из экселя и вставляет в табличную часть формы. Но выводится следующее сообщение : "Строка №Х количество имеет не числовой формат!" И так по всем строкам в колонке КоличествоВУпаковкеПоУмолчанию. Сначала думал, что из-за того, что там нет чисел, т.е. колонка полностью пустая, но проставил там числа и то же сообщение выводится! Вот код :
Объект.ЕстьОшибки = Ложь; Для ТекущаяСтрока = 2 По ТабличныйДокумент.ВысотаТаблицы Цикл Группа = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C1").Текст); Код = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C2").Текст); Артикул = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C3").Текст); РабочееНаименование = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C4").Текст); НаименованиеДляПечати = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C5").Текст); Новинка = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C6").Текст); СтавкаНДС = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C7").Текст); ВидНоменклатуры = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C8").Текст); ТипНоменклатуры = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C9").Текст); ЕдиницаХранения = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C10").Текст); ВестиУчетПоГТД = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C11").Текст); Поставщик = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C12").Текст); Бренд = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C13").Текст);
Попытка
КоличествоВУпаковкеПоУмолчанию = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"С14").Текст)); Исключение КоличествоВУпаковкеПоУмолчанию = 0; Объект.ЕстьОшибки = Истина; Сообщить("Строка №"+ТекущаяСтрока+". Количество имеет не числовой формат!"); ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C14").Примечание.Текст = "Количество имеет не числовой формат!";
КонецПопытки;
МинимальныйЗаказ = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C15").Текст); Попытка ЦенаПоступления = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C16").Текст)); Исключение ЦенаПоступления = 0; Объект.ЕстьОшибки = Истина; Сообщить("Строка №"+ТекущаяСтрока+". Цена имеет не числовой формат!"); ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C16").Примечание.Текст = "Цена имеет не числовой формат!"; КонецПопытки; Попытка ЦенаБазовая = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C17").Текст)); Исключение ЦенаБазовая = 0; Объект.ЕстьОшибки = Истина; Сообщить("Строка №"+ТекущаяСтрока+". Цена имеет не числовой формат!"); ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C17").Примечание.Текст = "Цена имеет не числовой формат!"; КонецПопытки; ШтрихКод = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C18").Текст); Склад = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C19").Текст); СпособПополненияЗапаса = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C20").Текст); ВремяТранспортировки = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C21").Текст); Календарь = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C22").Текст); ПорядокПрименения = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C23").Текст); АртикулА = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C24").Текст); Наименование = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C25").Текст); Попытка Цена = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C26").Текст)); Исключение Цена = 0; Объект.ЕстьОшибки = Истина; Сообщить("Строка№"+ТекущаяСтрока+". Цена имеет не числовой формат!"); ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C26").Примечание.Текст = "Цена имеет не числовой формат!"; КонецПопытки;
Все равно все переигралось Клиент подумал и передумал. Теперь ему нужно, что бы при открытии Внешней обработки при нажатии кнопки, открывался пустой макет в котором будет кнопка Заполнить из эксель, ну и там уже выбирать файл Еще раз спасибо всем!
{Форма.Форма.Форма(8,29)}: Переменная не определена (ЭтотОбъект) ТабличныйДокумент = <<?>>ЭтотОбъект.ТЗ; (Проверка: Тонкий клиент) {Форма.Форма.Форма(11,13)}: Процедура или функция с указанным именем не определена (мПрочитатьТабличныйДокументИзExcel) <<?>>мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла); (Проверка: Тонкий клиент)
в функцию мПрочитатьТабличныйДокументИзExcel добавил "#Если Клиент Тогда" "#КонецЕсли"
&НаКлиенте Процедура Загрузить(Команда) ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла"; ДиалогВыбораФайла.Фильтр = "Лист Excel (*.xlsx)|*.xlsx|"; Если ДиалогВыбораФайла.Выбрать() Тогда ТабличныйДокумент = ЭлементыФормы.ТЗ; ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла); Если нРег(ФайлНаДиске.Расширение) = ".xlsx" Тогда мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла); КонецЕсли; КонецЕсли; КонецПроцедуры
Это сама кнопка. И добавил функцию в модуль объекта
Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт
xlLastCell = 11;
ВыбФайл = Новый Файл(ИмяФайла); Если НЕ ВыбФайл.Существует() Тогда Сообщить("Файл не существует!"); Возврат Ложь; КонецЕсли;
Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ИмяФайла); Состояние("Обработка файла Microsoft Excel..."); ExcelЛист = Excel.Sheets(НомерЛистаExcel); Исключение Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel."); Возврат ложь;
КонецПопытки;
ТабличныйДокумент.Очистить();
ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell); RowCount = ActiveCell.Row; ColumnCount = ActiveCell.Column; Для Column = 1 По ColumnCount Цикл ТабличныйДокумент.Область("C" + Формат(Column, "ЧГ=")).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth; КонецЦикла; Для Row = 1 По RowCount Цикл
Для Column = 1 По ColumnCount Цикл ТабличныйДокумент.Область("R" + Формат(Row, "ЧГ=") +"C" + Формат(Column, "ЧГ=")).Текст = ExcelЛист.Cells(Row,Column).Text; КонецЦикла;
КонецЦикла;
Excel.WorkBooks.Close(); Excel = 0;
Возврат Истина;
КонецФункции // ()
Выдает ошибку :
{Форма.Форма.Форма(8,29)}: Переменная не определена (ЭлементыФормы) ТабличныйДокумент = <<?>>ЭлементыФормы.ТЗ; (Проверка: Тонкий клиент) {Форма.Форма.Форма(11,13)}: Процедура или функция с указанным именем не определена (мПрочитатьТабличныйДокументИзExcel) <<?>>мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла); (Проверка: Тонкий клиент)
И такую ошибку:
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(15,3)}: Процедура или функция с указанным именем не определена (Состояние) <<?>>Состояние("Обработка файла Microsoft Excel..."); (Проверка: Сервер)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!