|
Очистка табличных частей документа при повторной загрузке | ☑ | ||
---|---|---|---|---|
0
balak05
04.04.14
✎
09:34
|
Здравствуйте. Есть код по зогрузке реализации из ДБФ
//Запрос = Новый Запрос; //Запрос.Текст = //"ВЫБРАТЬ //| РеализацияТоваровУслуг.Номер, //| РеализацияТоваровУслуг.Дата, //| РеализацияТоваровУслуг.Ссылка //|ИЗ //| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг //|ГДЕ //| РеализацияТоваровУслуг.Дата = &ДатаДок //| И РеализацияТоваровУслуг.Номер = &Номер"; // //Запрос.УстановитьПараметр("Номер", СОКРЛП(ОбъектDBF.Num)); //Запрос.УстановитьПараметр("ДатаДок", ОбъектDBF.Data); // //Результат = Запрос.Выполнить(); // //ВыборкаДетальныеЗаписи = Результат.Выбрать(); // //Если ВыборкаДетальныеЗаписи.Количество() > 1 Тогда // Сообщить("Имеются дубли Реализации № " + Результат.Выгрузить()[0].Ссылка.Номер); // //НовДок = Результат.Выгрузить()[0].Ссылка.ПолучитьОбъект(); // //НовДок.Товары.Очистить(); // //НовДок.Услуги.Очистить(); // //ОбъектDBF.Следующая(); // //Продолжить; //ИначеЕсли ВыборкаДетальныеЗаписи.Количество() = 1 Тогда // Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Сообщить("Реализация с таким номером уже есть " + Результат.Выгрузить()[0].Ссылка.Номер); // //НовДок = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); // //НовДок.Товары.Очистить(); // //НовДок.Услуги.Очистить(); // КонецЦикла; //Иначе // НовДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); //КонецЕсли; Если ОбъектDBF.Data = НовДок.Дата Тогда Если НЕ СОКРЛП(ОбъектDBF.Num) = СОКРЛП(НовДок.Номер) Тогда Если НЕ (НовДок=Документы.РеализацияТоваровУслуг.ПустаяСсылка()) Тогда НовДок.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Создана реализация с номером № "+НовДок.Номер; Сообщение.Сообщить(); КонецЕсли; НовДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); НовДок.Дата = ОбъектDBF.Data; НовДок.Номер = ОбъектDBF.Num; Если СокрЛП(ОбъектDBF.ORG) = "Софит-Экспо" тогда НовДок.Организация = Справочники.Организации.НайтиПоРеквизиту("ОГРН","1026402194719"); ИначеЕсли СокрЛП(ОбъектDBF.ORG) = "Экспотехсервис" тогда НовДок.Организация = Справочники.Организации.НайтиПоРеквизиту("ОГРН","1056405023905"); КонецЕсли; Если ОбъектDBF.vtovar = 0 Тогда НовДок.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Товары; Иначе НовДок.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги; КонецЕсли; НовДок.Склад = Справочники.Склады.НайтиПоНаименованию("Основной склад"); НовДок.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду(ОбъектDBF.val); НовДок.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.kontr)); НовДок.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.dog),,,НовДок.Контрагент); НовДок.Заказ = Справочники.Заказы.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.proekt)); НовДок.КурсВзаиморасчетов = 1; НовДок.КратностьВзаиморасчетов = 1; НовДок.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями; НовДок.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным; НовДок.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически; НомРод = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ОбъектDBF.parent)); Номенклатура1 = Справочники.Номенклатура.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.tovar), ,НомРод); //НовДок.Товары.Очистить(); //НовДок.Услуги.Очистить(); Если Номенклатура1.Услуга Тогда СтрокаТЧУ = НовДок.Услуги.Добавить(); СтрокаТЧУ.Номенклатура = Номенклатура1; СтрокаТЧУ.Количество = ОбъектDBF.kol; СтрокаТЧУ.Цена = ОбъектDBF.summa/ОбъектDBF.kol; СтрокаТЧУ.Сумма = ОбъектDBF.summa; СтрокаТЧУ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; СтрокаТЧУ.СчетДоходов = ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД; СтрокаТЧУ.СчетРасходов = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД; СтрокаТЧУ.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа"); Иначе СтрокаТЧТ = НовДок.Товары.Добавить(); СтрокаТЧТ.Номенклатура = Номенклатура1; СтрокаТЧТ.Количество = ОбъектDBF.kol; СтрокаТЧТ.Цена = ОбъектDBF.summa/ОбъектDBF.kol; СтрокаТЧТ.Сумма = ОбъектDBF.summa; СтрокаТЧТ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; СтрокаТЧТ.СчетДоходов = ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД; СтрокаТЧТ.СчетРасходов = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД; СтрокаТЧТ.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа"); КонецЕсли; Иначе НомРод = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ОбъектDBF.parent)); Номенклатура1 = Справочники.Номенклатура.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.tovar), ,НомРод); Если Номенклатура1.Услуга Тогда СтрокаТЧУ = НовДок.Услуги.Добавить(); СтрокаТЧУ.Номенклатура = Номенклатура1; СтрокаТЧУ.Количество = ОбъектDBF.kol; СтрокаТЧУ.Цена = ОбъектDBF.summa/ОбъектDBF.kol; СтрокаТЧУ.Сумма = ОбъектDBF.summa; СтрокаТЧУ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; СтрокаТЧУ.СчетДоходов = ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД; СтрокаТЧУ.СчетРасходов = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД; СтрокаТЧУ.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа"); Иначе СтрокаТЧТ = НовДок.Товары.Добавить(); СтрокаТЧТ.Номенклатура = Номенклатура1; СтрокаТЧТ.Количество = ОбъектDBF.kol; СтрокаТЧТ.Цена = ОбъектDBF.summa/ОбъектDBF.kol; СтрокаТЧТ.Сумма = ОбъектDBF.summa; СтрокаТЧТ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; СтрокаТЧТ.СчетДоходов = ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД; СтрокаТЧТ.СчетРасходов = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД; СтрокаТЧТ.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа"); КонецЕсли; КонецЕсли; Иначе НовДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); НовДок.Дата = ОбъектDBF.Data; НовДок.Номер = ОбъектDBF.Num; Если СокрЛП(ОбъектDBF.ORG) = "Софит-Экспо" тогда НовДок.Организация = Справочники.Организации.НайтиПоРеквизиту("ОГРН","1026402194719"); ИначеЕсли СокрЛП(ОбъектDBF.ORG) = "Экспотехсервис" тогда НовДок.Организация = Справочники.Организации.НайтиПоРеквизиту("ОГРН","1056405023905"); КонецЕсли; Если ОбъектDBF.vtovar = 0 Тогда НовДок.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Товары; Иначе НовДок.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги; КонецЕсли; НовДок.Склад = Справочники.Склады.НайтиПоНаименованию("Основной склад"); НовДок.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду(ОбъектDBF.val); НовДок.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.kontr)); НовДок.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.dog),,,НовДок.Контрагент); НовДок.Заказ = Справочники.Заказы.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.proekt)); НовДок.КурсВзаиморасчетов = 1; НовДок.КратностьВзаиморасчетов = 1; НовДок.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями; НовДок.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным; НовДок.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически; НомРод = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ОбъектDBF.parent)); Номенклатура1 = Справочники.Номенклатура.НайтиПоНаименованию(СОКРЛП(ОбъектDBF.tovar), ,НомРод); Если Номенклатура1.Услуга Тогда СтрокаТЧУ = НовДок.Услуги.Добавить(); СтрокаТЧУ.Номенклатура = Номенклатура1; СтрокаТЧУ.Количество = ОбъектDBF.kol; СтрокаТЧУ.Цена = ОбъектDBF.summa/ОбъектDBF.kol; СтрокаТЧУ.Сумма = ОбъектDBF.summa; СтрокаТЧУ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; СтрокаТЧУ.СчетДоходов = ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД; СтрокаТЧУ.СчетРасходов = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД; СтрокаТЧУ.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа"); Иначе СтрокаТЧТ = НовДок.Товары.Добавить(); СтрокаТЧТ.Номенклатура = Номенклатура1; СтрокаТЧТ.Количество = ОбъектDBF.kol; СтрокаТЧТ.Цена = ОбъектDBF.summa/ОбъектDBF.kol; СтрокаТЧТ.Сумма = ОбъектDBF.summa; СтрокаТЧТ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; СтрокаТЧТ.СчетДоходов = ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД; СтрокаТЧТ.СчетРасходов = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД; СтрокаТЧТ.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа"); КонецЕсли; КонецЕсли; ОбъектDBF.Следующая(); КонецЦикла; Если НЕ (НовДок=Документы.РеализацияТоваровУслуг.ПустаяСсылка()) Тогда НовДок.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Создана реализация с номером № "+НовДок.Номер; Сообщение.Сообщить(); КонецЕсли; Как сделать так чтобы при повторной загрузке табличные части очищались? Подскажите пожалуйста. |
|||
1
ДенисЧ
04.04.14
✎
09:35
|
Табличная часть.Очистить (Tabular section.Clear)
Табличная часть (Tabular section) Очистить (Clear) Синтаксис: Очистить() Описание: Удаляет все строки табличной части. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения. Пример: Состав.Очистить(); |
|||
2
Мимохожий Однако
04.04.14
✎
09:35
|
НовДок.Услуги.Очистить()
|
|||
3
Godofsin
04.04.14
✎
09:37
|
Раскомментить 2 строчки в твоем коде
|
|||
4
balak05
04.04.14
✎
09:38
|
(1) (2) Это я знаю. Но куда ее ставить? У меня загрузка происходит в том же цикле что и проверка.
|
|||
5
balak05
04.04.14
✎
09:39
|
(3) Тогда записывается последняя строчка из табличной части
|
|||
6
Godofsin
04.04.14
✎
09:45
|
(5) Переписать код
|
|||
7
ДенисЧ
04.04.14
✎
09:46
|
(4) 500 евро.
|
|||
8
Мимохожий Однако
04.04.14
✎
09:46
|
(4)Где у тебя найденный документ, чтобы его очищать при повторной загрузке? Вот где нашел, там и вставляй очистку? В приведенном коде найденного документа нет
|
|||
9
Godofsin
04.04.14
✎
09:47
|
(8) А мне вот что-то не хотелось в его код смотреть...
|
|||
10
balak05
04.04.14
✎
10:17
|
(8) поиск происходит по дате и номеру. если нашли документ с таким датой и номером тогда вставляем новую строчку в табличную часть. Проблема в том что если я в этом же цикле запросом нахожу документ с датой и номером, то он каждый раз очищается.
|
|||
11
balak05
04.04.14
✎
10:17
|
(9) ваше право
|
|||
12
Godofsin
04.04.14
✎
10:23
|
(10) Выгрузи сначала данные в ТЗ, выбери оттуда номера и даты
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |