Помогите новичку, первый раз обновляю конфигу, да еще и не типовую, дали задание
Суть вопроса в том чтобы запустить процедуру в менеджере модуля Документа СчетПокупателю, есть там процедура:
Эта процедура переносит данные из табличного поля УдалитьУслуги (которое не видимое) в табличное поле Товары.
У меня старый релиз и в нем создан документ, на основании которого создается этот счет, так вот я передал данные из этого документа в таблицу УдалитьУслуги, раньше это была таблица Услуги, а теперь её нету.
Но почему то ничего в создаваемых документах не появляется.
Я вот и не могу понять, то ли эта процедура по каким то причинам не запускается (для старых проведенных документов, все сработало, счета заполнились) а вот если создаешь новые документы, ничего не заполняется.
Дак вот основной вопрос, какие параметры передать в эту процедуру и куда ее в модуль формы или в модуль объекта засунуть или же может другие есть пути решения?
Процедура ОбработатьТаблицуУслуги(Параметры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| СчетНаОплатуПокупателюУдалитьУслуги.Ссылка КАК СчетНаОплату
|ИЗ
| Документ.СчетНаОплатуПокупателю.УдалитьУслуги КАК СчетНаОплатуПокупателюУдалитьУслуги";
Выборка = Запрос.Выполнить().Выбрать();
ПроблемныхОбъектов = 0;
ОбъектовОбработано = 0;
Пока Выборка.Следующий() Цикл
Попытка
Если Не ЗначениеЗаполнено(Выборка.СчетНаОплату) Тогда
Продолжить;
КонецЕсли;
ДокументОбъект = Выборка.СчетНаОплату.ПолучитьОбъект();
Если ДокументОбъект = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ДокументОбъект.УдалитьУслуги.Количество() > 0 Тогда
ТаблицаУслуг = ДокументОбъект.УдалитьУслуги.Выгрузить();
Для Каждого СтрокаТЧ Из ТаблицаУслуг Цикл
НоваяСтрока = ДокументОбъект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ);
КонецЦикла;
ДокументОбъект.УдалитьУслуги.Очистить();
Иначе
Продолжить;
КонецЕсли;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ДокументОбъект);
ОбъектовОбработано = ОбъектовОбработано + 1;
Исключение
// Если не удалось обработать какой-либо документ, повторяем попытку снова.
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось объединить товары и услуги в ""%1"" по причине:
|%2'"),
Выборка.СчетНаОплату,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,
Выборка.СчетНаОплату, ТекстСообщения);
КонецПопытки;
КонецЦикла;
Если ОбъектовОбработано + ПроблемныхОбъектов = 0 Тогда
Параметры.ОбработкаЗавершена = Истина;
Иначе
Параметры.ОбработкаЗавершена = Ложь;
Если ОбъектовОбработано = 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги
|не удалось объединить товары и услуги в %1 документах Счет покупателю'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги
|обработала очередную порцию документов Счет покупателю: %1 элементов'"),
ОбъектовОбработано));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ПоказатьЭта процедура переносит данные из табличного поля УдалитьУслуги (которое не видимое) в табличное поле Товары.
У меня старый релиз и в нем создан документ, на основании которого создается этот счет, так вот я передал данные из этого документа в таблицу УдалитьУслуги, раньше это была таблица Услуги, а теперь её нету.
Но почему то ничего в создаваемых документах не появляется.
Я вот и не могу понять, то ли эта процедура по каким то причинам не запускается (для старых проведенных документов, все сработало, счета заполнились) а вот если создаешь новые документы, ничего не заполняется.
Дак вот основной вопрос, какие параметры передать в эту процедуру и куда ее в модуль формы или в модуль объекта засунуть или же может другие есть пути решения?
По теме из базы знаний
Найденные решения
(5)Здравствуйте!
Если я вас правильно понял, то вы хотите на основании самописного документа создать документ счет на оплату. Из вашего документа вы заполняли таблицу услуги в счете на оплату, а теперь пытаетесь заполнить таблицу удалить услуги. Сразу из вашего документа заполняйте таблицу товары в счете на оплату, так как сейчас услуги и товары счета на оплату находятся в одной таблице "Товары".
Если я вас правильно понял, то вы хотите на основании самописного документа создать документ счет на оплату. Из вашего документа вы заполняли таблицу услуги в счете на оплату, а теперь пытаетесь заполнить таблицу удалить услуги. Сразу из вашего документа заполняйте таблицу товары в счете на оплату, так как сейчас услуги и товары счета на оплату находятся в одной таблице "Товары".
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)Дак она и так в модуле менеджера? Процедуру вроде запустил, в параметры передал (Параметры), и закомментил окончание кода из за которого вылазила ошибка:
А процедуру засунул в модуль формы:
в самом конце процедура
Процедура ОбработатьТаблицуУслуги(Параметры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| СчетНаОплатуПокупателюУдалитьУслуги.Ссылка КАК СчетНаОплату
|ИЗ
| Документ.СчетНаОплатуПокупателю.УдалитьУслуги КАК СчетНаОплатуПокупателюУдалитьУслуги";
Выборка = Запрос.Выполнить().Выбрать();
ПроблемныхОбъектов = 0;
ОбъектовОбработано = 0;
Пока Выборка.Следующий() Цикл
Попытка
Если Не ЗначениеЗаполнено(Выборка.СчетНаОплату) Тогда
Продолжить;
КонецЕсли;
ДокументОбъект = Выборка.СчетНаОплату.ПолучитьОбъект();
Если ДокументОбъект = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ДокументОбъект.УдалитьУслуги.Количество() > 0 Тогда
ТаблицаУслуг = ДокументОбъект.УдалитьУслуги.Выгрузить();
Для Каждого СтрокаТЧ Из ТаблицаУслуг Цикл
НоваяСтрока = ДокументОбъект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ);
КонецЦикла;
ДокументОбъект.УдалитьУслуги.Очистить();
Иначе
Продолжить;
КонецЕсли;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ДокументОбъект);
ОбъектовОбработано = ОбъектовОбработано + 1;
Исключение
// Если не удалось обработать какой-либо документ, повторяем попытку снова.
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось объединить товары и услуги в ""%1"" по причине:
|%2'"),
Выборка.СчетНаОплату,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,
Выборка.СчетНаОплату, ТекстСообщения);
КонецПопытки;
КонецЦикла;
//Если ОбъектовОбработано + ПроблемныхОбъектов = 0 Тогда
//
// Параметры.ОбработкаЗавершена = Истина;
//
//Иначе
//
// Параметры.ОбработкаЗавершена = Ложь;
//
// Если ОбъектовОбработано = 0 Тогда
// ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
// НСтр("ru = 'Процедуре СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги
// |не удалось объединить товары и услуги в %1 документах Счет покупателю'"),
// ПроблемныхОбъектов);
// ВызватьИсключение ТекстСообщения;
// Иначе
// ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,,
// СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
// НСтр("ru = 'Процедура СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги
// |обработала очередную порцию документов Счет покупателю: %1 элементов'"),
// ОбъектовОбработано));
// КонецЕсли;
//
//КонецЕсли;
ПоказатьА процедуру засунул в модуль формы:
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.Печать
УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма, Элементы.ГруппаПечать);
// Конец СтандартныеПодсистемы.Печать
// ДополнительныеОтчетыИОбработки
ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма);
// Конец ДополнительныеОтчетыИОбработки
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
ОтправкаПочтовыхСообщений.ПриСозданииНаСервере(ЭтотОбъект);
Если Параметры.Свойство("ПравилоПовторения") И ЗначениеЗаполнено(Параметры.ПравилоПовторения) Тогда
ПравилоПовторения = Параметры.ПравилоПовторения;
НадписьПовторение = НадписьПовторение(ПравилоПовторения, Параметры.Ключ.Пустая());
Иначе
ЗаполнитьПравилоПовторенияИНадпись();
КонецЕсли;
Если Параметры.Ключ.Пустая() Тогда
ПодготовитьФормуНаСервере();
КонецЕсли;
// Активизировать первую непустую табличную часть
СписокТабличныхЧастей = Новый СписокЗначений;
СписокТабличныхЧастей.Добавить("Товары", "Товары");
СписокТабличныхЧастей.Добавить("ВозвратнаяТара", "ВозвратнаяТара");
АктивизироватьТабличнуюЧасть = ОбщегоНазначенияБПВызовСервера.ПолучитьПервуюНепустуюВидимуюТабличнуюЧасть(
ЭтаФорма, СписокТабличныхЧастей);
ОбщегоНазначенияБПВызовСервера.АктивизироватьЭлементФормы(ЭтаФорма, АктивизироватьТабличнуюЧасть);
УстановитьУсловноеОформление();
// СтандартныеПодсистемы.РаботаСКонтрагентами
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
// Конец СтандартныеПодсистемы.РаботаСКонтрагентами
УстановитьОтображениеЗакладок();
Элементы.НовыйДоговор.Видимость = ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Справочники.ДоговорыКонтрагентов);
ПравоРедактированияСрокаОплаты = СрокиОплатыДокументов.ПравоРедактирования();
Если Не ПравоРедактированияСрокаОплаты Тогда
Элементы.СрокОплаты.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
Элементы.СрокОплаты.ТолькоПросмотр = Истина;
КонецЕсли;
Если НЕ ПравоДоступа("Просмотр", Метаданные.ОбщиеФормы.СрокиОплатыПокупателями) Тогда
// В подсказке отображается ссылка на общую форму СрокиОплатыПокупателям.
// Без этой ссылки подсказка теряет смысл, поэтому в случае, если пользователю
// недоступна форма, то не показываем подсказку.
Элементы.СрокОплаты.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
Если НЕ Параметры.Ключ.Пустая() И НЕ ТолькоПросмотр Тогда
ПоказатьСопоставлениеНовыхОбъектов = ОбменСИнтернетМагазином.ТребуетсяСопоставлениеНовыхОбъектов(Объект.Ссылка);
КонецЕсли;
// ИнтернетПоддержкаПользователей.Новости.КонтекстныеНовости_ПриСозданииНаСервере
ИдентификаторыСобытийПриОткрытии = "ПриОткрытии";
ОбработкаНовостейПереопределяемый.КонтекстныеНовости_ПриСозданииНаСервере(
ЭтаФорма,
"БП.Документ.СчетНаОплатуПокупателю",
"ФормаДокумента",
НСтр("ru='Новости: Счет покупателю'"),
ИдентификаторыСобытийПриОткрытии
);
// Конец ИнтернетПоддержкаПользователей.Новости.КонтекстныеНовости_ПриСозданииНаСервере
// Подсистема "ОбменСКонтрагентами".
ПараметрыЭДОПриСоздании= ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.ДекорацияСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(Отказ, СтандартнаяОбработка, ПараметрыЭДОПриСоздании);
// Конец подсистема "ОбменСКонтрагентами".
Документы.СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги(Параметры);
КонецПроцедуры
Показатьв самом конце процедура
(5)Здравствуйте!
Если я вас правильно понял, то вы хотите на основании самописного документа создать документ счет на оплату. Из вашего документа вы заполняли таблицу услуги в счете на оплату, а теперь пытаетесь заполнить таблицу удалить услуги. Сразу из вашего документа заполняйте таблицу товары в счете на оплату, так как сейчас услуги и товары счета на оплату находятся в одной таблице "Товары".
Если я вас правильно понял, то вы хотите на основании самописного документа создать документ счет на оплату. Из вашего документа вы заполняли таблицу услуги в счете на оплату, а теперь пытаетесь заполнить таблицу удалить услуги. Сразу из вашего документа заполняйте таблицу товары в счете на оплату, так как сейчас услуги и товары счета на оплату находятся в одной таблице "Товары".
Все правильно если есть только услуги, то вид операции документа реализации будет услуги. Если вы посмотрите в предприятии, создадите документ ручками (товары услуги комиссия) и заполните только колонку услуги, то тогда документ примет вид операции "услуги", а не "товары услуги комиссия"..
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот