|
v7: Групповое создание документов на основании заказов | ☑ | ||
---|---|---|---|---|
0
kissolo
13.09.20
✎
19:28
|
Бухгалтерия 7.7
Надо создать на основании выбранных заказов документы вида "расходная накладная". Заказы выведены в тз ТаблицаДокументыНаОтправку на форме обработки, пользователь отмечает нужные документы и запускает формирование накладных. Не могу понять, изза чего происходит такой глюк - все документы создаются на основании первого выбранного заказа, ощущение, что КонтекстФормы1 не обнуляется (это я даже вижу в отладчике - то обнуляется, то нет..). Образец кода группового формирования документов взят с ИС. Вот сам код: Процедура СформироватьНакладную(Док,КонтекстФормы1) Перем КонтекстФормы1; Сообщить(""+Док.ТекущийДокумент()+". грп="+док.Заказчик); //создаю на основании документа ДОК расходную накладную, пишу ее в переменную КонтекстФормы1, не записываю ОткрытьФорму("Документ.РасходнаяНакладная",КонтекстФормы1,Док); // копирую реквизиты заполненного на основании ДОКа документа расх.накладной в ДокНа, который и записываю ДокНа = СоздатьОбъект("Документ.РасходнаяНакладная"); ДокНа.Новый(); ЧЧ = 0;ММ = 0;СС = 0; Док.ПолучитьВремя(ЧЧ,ММ,СС); ДокНа.УстановитьВремя(ЧЧ,ММ,СС+1); КонтекстФормы1.УстановитьВремя(ЧЧ,ММ,СС+1); ДокНа.ДатаДок = Док.ДатаДок; КолРек = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(); Для Сч = 1 По КолРек Цикл Рек = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(Сч); ДокНа.УстановитьАтрибут(Рек,КонтекстФормы1.ПолучитьАтрибут(Рек)); КонецЦикла; КолРек = Метаданные.ОбщийРеквизитДокумента(); Для Сч = 1 По КолРек Цикл Рек = Метаданные.ОбщийРеквизитДокумента(Сч); ДокНа.УстановитьАтрибут(Рек,КонтекстФормы1.ПолучитьАтрибут(Рек)); КонецЦикла; Таб = СоздатьОбъект("ТаблицаЗначений"); КонтекстФормы1.ВыгрузитьТабличнуюЧасть(Таб); ДокНа.ЗагрузитьТабличнуюЧасть(Таб); ДокНа.Записать(); ДокНа.Провести(); Сообщить("Сформирована расх. накладная "+ДокНа+". грп="+ДокНа.Грузополучатель+" "+ДокНа.Грузополучатель1); // обнуляю переменную КонтекстФормы1 - что не очень получается :( //Если ТипЗначенияСтр(КонтекстФормы1) = "ГрупповойКонтекст" Тогда КонтекстФормы1.Форма.Закрыть(0); //КонецЕсли; КонтекстФормы1=""; КонецПроцедуры // СформироватьНакладную Процедура СформироватьРасходныеНакладные() ТаблицаДокументыНаОтправку.ВыбратьСтроки(); Пока ТаблицаДокументыНаОтправку.ПолучитьСтроку() = 1 Цикл Если СокрЛП(ТаблицаДокументыНаОтправку._ФлагВыбора) = "" Тогда Продолжить; КонецЕсли; Док1 = СоздатьОбъект("Документ"); Док = ТаблицаДокументыНаОтправку._ТекущийДокумент; // Заказ флУжеЕстьРН = 0; Док1.ВыбратьПОдчиненныеДокументы(,,Док); Пока Док1.ПолучитьДокумент() = 1 Цикл Если (Док1.Вид() = "РасходнаяНакладная") и (Док1.ПометкаУдаления() = 0) Тогда Мессага = "Для заказа " + ТаблицаДокументыНаОтправку.Номер + " от " + ТаблицаДокументыНаОтправку.Дата + " уже есть реализация " + Док1; Сообщить(Мессага); флУжеЕстьРН = 1; КонецЕсли; КонецЦикла; Если флУжеЕстьРН=0 Тогда СформироватьНакладную(Док); КонецЕсли; КонецЦикла; ОбновитьСписокДокументов(); КонецПроцедуры |
|||
1
ДенисЧ
13.09.20
✎
19:30
|
Процедура СформироватьНакладную(Док,КонтекстФормы1)
... СформироватьНакладную(Док); Что-то меня тут смущает |
|||
2
kissolo
13.09.20
✎
19:36
|
(1) Прошу прощения, это я уже пробовал контекстФормы1 передавать как переменную, каждый раз заново инициализируя.
Конечно Процедура СформироватьНакладную(Док) |
|||
3
Ёпрст
13.09.20
✎
20:19
|
(0)
Процедура СформироватьНакладную(Док,КонтекстФормы1) Перем КонтекстФормы1; зачет ага |
|||
4
Ёпрст
13.09.20
✎
20:23
|
ну и в твоём коде, форма открытого дока будет закрыта после окончания цикла
|
|||
5
Ёпрст
13.09.20
✎
20:24
|
и..делать это через открытие формы, моветон. Это всё от лени, лени прописывать код в обработке.
|
|||
6
Ёпрст
13.09.20
✎
20:25
|
если че, ложное закрытие формы спасёт, или обработка ожидания, или формековское генерация внешнего события
|
|||
7
Cthulhu
13.09.20
✎
20:32
|
ну и, хм... Метаданные.ОбщийРеквизитДокумента(); незаслужено забыто...
короче - неаккуратный и невнимательно написанный говнокод |
|||
8
kissolo
13.09.20
✎
23:29
|
(3) я уже написал выше, переменная "контекстФормы1" в параметрах осталась от последнего варианта, когда я извращался по-разному, пытаясь заставить заработать обработку. Так-то она у меня локальная в пределах процедуры.
(4) Почему она не закрывается при завершении процедуры формирования конкретного документа? КонтекстФормы1 - это же локальная переменная! Тем более, что там принудительная команда стоит. Как мне закрывать форму при завершении процедуры "СформироватьНакладную"? (5) скажите, как это сделать оптимальнее? Повторять процедуры заполнения шапки и табличной части в обработке не хочется. Мало ли что мы в дальнейшем поменяем в коде документа, вдруг забудем внести эти изменения в обработку? Предыдущим вариантом было - вынесение процедур заполнения документа из модуля формы в глобальный модуль, чтобы там их запускать и при обычном вводе на основании (или при простом вводе документа), и при создании документов в обработке. Мне этот вариант, найденный в интернете и переработанный под себя, показался правильнее - я не трогаю основной код документа, и при этом все заполняется так, как мне надо. (7) Из общих реквизитов документа в конфигурации есть только комменты. Которые при вводе на основании не заполняются. Смысл их переносить? |
|||
9
kissolo
13.09.20
✎
23:37
|
(6) Почитал про ложное закрытие формы.
Спасибо, попробую. |
|||
10
GreyK
14.09.20
✎
01:42
|
(0) А зачем тебе нужно контекст формы открывать?
|
|||
11
Duke1C
14.09.20
✎
10:17
|
(10) +1. Создавай сразу, без открытия формы. Только не мешало бы проверочку организовать, на предмет того, что накладная уже создавалась на основании конкретного заказа. А то юзеры наформируют тебе...
|
|||
12
GreyK
14.09.20
✎
12:45
|
+(10) Для взятия контекста документа в 7ке есть специальная функция вроде ГлВзятьКнотекст().
|
|||
13
kissolo
14.09.20
✎
23:09
|
(10), (11) если я правильно понял вопрос, вы предлагаете сразу открывать форму нового расходного ордера, заполнять его на основании заказа, записывать его и проводить?
Такой вариант не работает. Если я в процедуре ВводНаОсновании() пытаюсь записать документ - программа ругается. (11) В исходном моем коде такая проверка (на существующие расх. накладные) есть. (12) Не покажете на примере, как ее можно использовать? |
|||
14
GreyK
14.09.20
✎
23:20
|
(13) Откуда вы запускаете процедуру СформироватьРасходныеНакладные()?
|
|||
15
kissolo
14.09.20
✎
23:50
|
(14) из кнопки на форме.
|
|||
16
GreyK
14.09.20
✎
23:51
|
(13) В 7ке есть примеры использования этой функции, достаточно поиском по конфигурации пройтись.
Пример. В форме документа: //__________________________________________________________________ Процедура ПриИзмененииДаты() Если ДатаГод(СтараяДата) <> ДатаГод(ДатаДок) Тогда глУстановитьНомерДок(глВзятьКонтекст(Контекст)); КонецЕсли; КонецПроцедуры //ПриИзмененииДаты() В глобальнике: //_____________________________________________________________________________ Процедура глУстановитьНомерДок(Конт,Префикс="-") Экспорт фЭтоАнгар=0; Если (Конт.вид()="Приход")или(Конт.Вид()="РасходнаяНакладная")или(Конт.Вид()="Счет")или(Конт.Вид()="СписаниеИзлишки") Тогда Если Конт.Склад=Константа.СкладАнгар Тогда фЭтоАнгар=1; КонецЕсли; КонецЕсли; Если Конт.вид()="Перемещение" Тогда Если (Конт.СкладИсточник=Константа.СкладАнгар)или(Конт.СкладПолучатель=Константа.СкладАнгар) Тогда фЭтоАнгар=1; КонецЕсли; КонецЕсли; Если фЭтоАнгар=0 Тогда Если (Конт.вид()="жРасходнаяНакладная")или(Конт.Вид()="РасходнаяНакладная") Тогда мПерем=СокрЛП(Конт.РБ.префикс)+СокрЛП(Конт.Фирма.ПрефиксНомеровДокументов)+СокрЛП(Конт.ВидОплаты.Префикс); Конт.УстановитьНовыйНомер(""+мПерем+Префикс); ИначеЕсли (Конт.вид()="жСчет")или(Конт.вид()="ПлатежноеПоручение") Тогда мПерем=СокрЛП(Конт.Фирма.ПрефиксНомеровДокументовПП); Конт.УстановитьНовыйНомер(""+мПерем+Префикс); ИначеЕсли (Конт.вид()="ПриходныйОрдер")или(Конт.вид()="РасходныйОрдер") Тогда мПерем=СокрЛП(Конт.Фирма.ПрефиксНомеровДокументов)+СокрЛП(Конт.Касса.Префикс); Конт.УстановитьНовыйНомер(""+мПерем+Префикс); ИначеЕсли Конт.РБ.Выбран()=1 Тогда Конт.УстановитьНовыйНомер(""+СокрЛП(Конт.РБ.Префикс)+СокрЛП(Конт.Фирма.ПрефиксНомеровДокументов)+Префикс); Иначе Сообщить("У Распр.базы "+ Конт.РБ + " не указан префикс!!!"); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
17
kissolo
15.09.20
✎
00:00
|
(16) офф. Подскажите, как прятать код в спойлер?
Чего сейчас удалось добиться. Документы создаются по всем заказам, но для первого заказа почему-то создаются 2 документа (пошагово посмотрел - контекст не закрывается по какой-то причине). Примечание к коду - на форме есть объект "Текст", который вызывает процедуру "обновление". При нажатии на кнопку [Сформировать накладные] сначала инициализируется переменная "флПервыйЗапуск=1;" Потом запускается процедура "СформироватьРасходныеНакладные()" Сам код (убрал лишние процедуры, не относящиеся к проблеме): Перем КонтекстФормы,Док; Перем Работаем; Перем флПервыйЗапуск; Процедура СформироватьНакладную(КонтекстФормы) // копирую реквизиты заполненного на основании ДОКа документа расх.накладной в ДокНа ДокНа = СоздатьОбъект("Документ.РасходнаяНакладная"); ДокНа.Новый(); ЧЧ = 0;ММ = 0;СС = 0; Док.ПолучитьВремя(ЧЧ,ММ,СС); ДокНа.УстановитьВремя(ЧЧ,ММ,СС+1); КонтекстФормы.УстановитьВремя(ЧЧ,ММ,СС+1); ДокНа.ДатаДок = Док.ДатаДок; КолРек = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(); Для Сч = 1 По КолРек Цикл Рек = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(Сч); ДокНа.УстановитьАтрибут(Рек,КонтекстФормы.ПолучитьАтрибут(Рек)); КонецЦикла; КолРек = Метаданные.ОбщийРеквизитДокумента(); Для Сч = 1 По КолРек Цикл Рек = Метаданные.ОбщийРеквизитДокумента(Сч); ДокНа.УстановитьАтрибут(Рек,КонтекстФормы.ПолучитьАтрибут(Рек)); КонецЦикла; Таб = СоздатьОбъект("ТаблицаЗначений"); КонтекстФормы.ВыгрузитьТабличнуюЧасть(Таб); ДокНа.ЗагрузитьТабличнуюЧасть(Таб); ДокНа.Записать(); ДокНа.Провести(); Сообщить("Сформирована расх. накладная "+ДокНа+"("+ДокНа.ДокОснование+")"+". грп="+ДокНа.Грузополучатель+" "+ДокНа.Грузополучатель1); КонецПроцедуры // СформироватьНакладную Процедура СформироватьРасходныеНакладные() Если флПервыйЗапуск=1 Тогда //в нажатии на кнопку формирования расх.накладных переменная флПервыйЗапуск устанавливается в 1 (в формуле кнопки) ТаблицаДокументыНаОтправку.ВыбратьСтроки(); флПервыйЗапуск = 0; КонецЕсли; Если ТаблицаДокументыНаОтправку.ПолучитьСтроку()=1 Тогда Сообщить("флПервыйЗапуск="+флПервыйЗапуск+". Строка в тз="+ТаблицаДокументыНаОтправку.НомерСтроки); Если СокрЛП(ТаблицаДокументыНаОтправку._ФлагВыбора) = "" Тогда //эта строка не отмечена дл формирования накладной СформироватьРасходныеНакладные(); Возврат; КонецЕсли; Док = ТаблицаДокументыНаОтправку._ТекущийДокумент; // Заказ флУжеЕстьРН = 0; Док1 = СоздатьОбъект("Документ"); Док1.ВыбратьПОдчиненныеДокументы(,,Док); Пока Док1.ПолучитьДокумент() = 1 Цикл Если (Док1.Вид() = "РасходнаяНакладная") и (Док1.ПометкаУдаления() = 0) Тогда Мессага = "Для заказа " + ТаблицаДокументыНаОтправку.Номер + " от " + ТаблицаДокументыНаОтправку.Дата + " уже есть реализация " + Док1; Сообщить(Мессага); флУжеЕстьРН = 1; КонецЕсли; КонецЦикла; Если флУжеЕстьРН=0 Тогда Сообщить(""+Док.ТекущийДокумент()+". грп="+док.Заказчик); //создаю на основании документа ДОК расходную накладную, пишу ее в переменную КонтекстФормы, не записываю ОткрытьФорму("Документ.РасходнаяНакладная",КонтекстФормы,Док); СформироватьНакладную(КонтекстФормы); Иначе СформироватьРасходныеНакладные(); Возврат; КонецЕсли; КонецЕсли; КонецПроцедуры Функция Обновление() Если ТипЗначенияСтр(КонтекстФормы) = "ГрупповойКонтекст" Тогда Сообщить("Обновление. Закрываю КонтекстФормы="+КонтекстФормы+". грп="+КонтекстФормы.Грузополучатель+" "+КонтекстФормы.Грузополучатель1); КонтекстФормы.Форма.Закрыть(0); Работаем = 1; Форма.Закрыть(0); Иначе Сообщить("Обновление. Пропуск"); КонецЕсли; КонецФункции Процедура ПриЗакрытии() Если Работаем = 1 Тогда Сообщить("ПриЗакрытии. Работаем=1"); Работаем = 0; СтатусВозврата(0); СформироватьРасходныеНакладные(); КонецЕсли; КонецПроцедуры На всякий случай привожу полученные сообщения: флПервыйЗапуск=0. Строка в тз=1 Заказ 5259 (18.08.20). грп=Барышня Сформирована расх. накладная Отгрузка товаров, продукции 00005249 (18.08.20)(Заказ 5259 (18.08.20)). грп=Барышня Барышня Обновление. Закрываю КонтекстФормы=ГрупповойКонтекст. грп=Барышня ПриЗакрытии. Работаем=1 флПервыйЗапуск=0. Строка в тз=2 Заказ 5260 (18.08.20). грп=Триптих Сформирована расх. накладная Отгрузка товаров, продукции 00005250 (18.08.20)(Заказ 5259 (18.08.20)). грп=Барышня Барышня Обновление. Закрываю КонтекстФормы=ГрупповойКонтекст. грп=Барышня ПриЗакрытии. Работаем=1 флПервыйЗапуск=0. Строка в тз=2 Заказ 5260 (18.08.20). грп=Триптих Сформирована расх. накладная Отгрузка товаров, продукции 00005252 (18.08.20)(Заказ 5260 (18.08.20)). грп=Триптих Триптих Обновление. Закрываю КонтекстФормы=ГрупповойКонтекст. грп=Триптих ПриЗакрытии. Работаем=1 флПервыйЗапуск=0. Строка в тз=2 Для заказа 5260 от 18.08.20 уже есть реализация Отгрузка товаров, продукции 00005252 (18.08.20) флПервыйЗапуск=0. Строка в тз=3 Заказ 5261 (18.08.20). грп=Мальта Сформирована расх. накладная Отгрузка товаров, продукции 00005254 (18.08.20)(Заказ 5261 (18.08.20)). грп=Мальта Мальта Обновление. Закрываю КонтекстФормы=ГрупповойКонтекст. грп=Мальта ПриЗакрытии. Работаем=1 флПервыйЗапуск=0. Строка в тз=2 Для заказа 5260 от 18.08.20 уже есть реализация Отгрузка товаров, продукции 00005252 (18.08.20) флПервыйЗапуск=0. Строка в тз=3 Для заказа 5261 от 18.08.20 уже есть реализация Отгрузка товаров, продукции 00005254 (18.08.20) флПервыйЗапуск=0. Строка в тз=4 Заказ 5262 (18.08.20). грп=Саймон Сформирована расх. накладная Отгрузка товаров, продукции 00005256 (18.08.20)(Заказ 5262 (18.08.20)). грп=Саймон Саймон Обновление. Закрываю КонтекстФормы=ГрупповойКонтекст. грп=Саймон ПриЗакрытии. Работаем=1 флПервыйЗапуск=0. Строка в тз=2 Для заказа 5260 от 18.08.20 уже есть реализация Отгрузка товаров, продукции 00005252 (18.08.20) флПервыйЗапуск=0. Строка в тз=3 Для заказа 5261 от 18.08.20 уже есть реализация Отгрузка товаров, продукции 00005254 (18.08.20) флПервыйЗапуск=0. Строка в тз=4 Для заказа 5262 от 18.08.20 уже есть реализация Отгрузка товаров, продукции 00005256 (18.08.20) Обновление. Пропуск |
|||
18
GreyK
15.09.20
✎
00:15
|
(17) Не обращай внимания на спойлер, он не всегда работает правильно.
Что за таблица ТаблицаДокументыНаОтправку? Что в ней содержится? |
|||
19
GreyK
15.09.20
✎
00:37
|
(17) Может так надо:
Процедура Сформировать() Если ТаблицаДокументыНаОтправку.КоличествоСтрок() > 0 Тогда ТаблицаДокументыНаОтправку.ВыбратьСтроки(); Пока ТаблицаДокументыНаОтправку.ПолучитьСтроку()=1 Цикл Если СокрЛП(ТаблицаДокументыНаОтправку._ФлагВыбора) = "" Тогда Продолжить; КонецЕсли; Док = ТаблицаДокументыНаОтправку._ТекущийДокумент; // Заказ флУжеЕстьРН = 0; Док1 = СоздатьОбъект("Документ"); Док1.ВыбратьПОдчиненныеДокументы(,,Док); Пока Док1.ПолучитьДокумент() = 1 Цикл Если (Док1.Вид() = "РасходнаяНакладная") и (Док1.ПометкаУдаления() = 0) Тогда Мессага = "Для заказа " + ТаблицаДокументыНаОтправку.Номер + " от " + ТаблицаДокументыНаОтправку.Дата + " уже есть реализация " + Док1; Сообщить(Мессага); флУжеЕстьРН = 1; КонецЕсли; КонецЦикла; Если флУжеЕстьРН=0 Тогда ДокНа = СоздатьОбъект("Документ.РасходнаяНакладная"); ДокНа.Новый(); ЧЧ = 0;ММ = 0;СС = 0; Док.ПолучитьВремя(ЧЧ,ММ,СС); ДокНа.УстановитьВремя(ЧЧ,ММ,СС+1); КонтекстФормы.УстановитьВремя(ЧЧ,ММ,СС+1); ДокНа.ДатаДок = Док.ДатаДок; ДокНа.УстановитьНовыйНомер(); КолРек = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(); Для Сч = 1 По КолРек Цикл Рек = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(Сч); ДокНа.УстановитьАтрибут(Рек,КонтекстФормы.ПолучитьАтрибут(Рек)); КонецЦикла; КолРек = Метаданные.ОбщийРеквизитДокумента(); Для Сч = 1 По КолРек Цикл Рек = Метаданные.ОбщийРеквизитДокумента(Сч); ДокНа.УстановитьАтрибут(Рек,КонтекстФормы.ПолучитьАтрибут(Рек)); КонецЦикла; Таб = СоздатьОбъект("ТаблицаЗначений"); КонтекстФормы.ВыгрузитьТабличнуюЧасть(Таб); ДокНа.ЗагрузитьТабличнуюЧасть(Таб); ДокНа.Записать(); ДокНа.Провести(); Сообщить("Сформирована расх. накладная "+ДокНа+"("+ДокНа.ДокОснование+")"+". грп="+ДокНа.Грузополучатель+" "+ДокНа.Грузополучатель1); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
20
GreyK
15.09.20
✎
01:09
|
+(19) Что намудрилось с копированием
//******************************************* Процедура Сформировать() Если ТаблицаДокументыНаОтправку.КоличествоСтрок() > 0 Тогда ТаблицаДокументыНаОтправку.ВыбратьСтроки(); Пока ТаблицаДокументыНаОтправку.ПолучитьСтроку()=1 Цикл Если СокрЛП(ТаблицаДокументыНаОтправку._ФлагВыбора) = "" Тогда Продолжить; КонецЕсли; Док = ТаблицаДокументыНаОтправку._ТекущийДокумент; // Заказ флУжеЕстьРН = 0; Док1 = СоздатьОбъект("Документ"); Док1.ВыбратьПОдчиненныеДокументы(,,Док); Пока Док1.ПолучитьДокумент() = 1 Цикл Если (Док1.Вид() = "РасходнаяНакладная") и (Док1.ПометкаУдаления() = 0) Тогда Мессага = "Для заказа " + ТаблицаДокументыНаОтправку.Номер + " от " + ТаблицаДокументыНаОтправку.Дата + " уже есть реализация " + Док1; Сообщить(Мессага); флУжеЕстьРН = 1; КонецЕсли; КонецЦикла; Если флУжеЕстьРН=0 Тогда ДокНа = СоздатьОбъект("Документ.РасходнаяНакладная"); ДокНа.Новый(); ЧЧ = 0;ММ = 0;СС = 0; Док.ПолучитьВремя(ЧЧ,ММ,СС); ДокНа.УстановитьВремя(ЧЧ,ММ,СС+1); ДокНа.ДатаДок = Док.ДатаДок; ДокНа.УстановитьНовыйНомер(); КолРек = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(); Для Сч = 1 По КолРек Цикл Рек = Метаданные.Документ("РасходнаяНакладная").РеквизитШапки(Сч); ДокНа.УстановитьАтрибут(Рек,Док.ПолучитьАтрибут(Рек)); КонецЦикла; КолРек = Метаданные.ОбщийРеквизитДокумента(); Для Сч = 1 По КолРек Цикл Рек = Метаданные.ОбщийРеквизитДокумента(Сч); ДокНа.УстановитьАтрибут(Рек,Док.ПолучитьАтрибут(Рек)); КонецЦикла; Таб = СоздатьОбъект("ТаблицаЗначений"); Док.ВыгрузитьТабличнуюЧасть(Таб); ДокНа.ЗагрузитьТабличнуюЧасть(Таб); ДокНа.Записать(); ДокНа.Провести(); Сообщить("Сформирована расх. накладная "+ДокНа+"("+ДокНа.ДокОснование+")"+". грп="+ДокНа.Грузополучатель+" "+ДокНа.Грузополучатель1); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
21
kissolo
15.09.20
✎
10:33
|
(18) таблица значений на экранной форме. Туда записываются заказы, которые есть в базе за указанный период. и пользователь флажки проставляет - какие заказы надо обработать - создать расходные накладные по ним.
|
|||
22
Ёпрст
15.09.20
✎
10:34
|
(21) дык перепиши полностью код фрагстера с нимфостарта
|
|||
23
Ёпрст
15.09.20
✎
10:35
|
так то идея, так себе..мелькание окошка открытия-закрытия формы..+ можно нарваться на ошибки с предупреждением\вопросом.. не, проще всё в самом коде слепить, чем форму открывать и с неё реквизиты считывать
|
|||
24
Ёпрст
15.09.20
✎
10:35
|
и это будет, в разы быстрее по скорости работы
|
|||
25
kissolo
15.09.20
✎
10:45
|
(20) Док - это заказ. на основании которого надо создать и заполнить расходную накладную (которая в переменной ДокНА находится). Реквизиты шапки и табличной части в документах не совпадают. просто скопировать реквизиты не получится. тем более в расходной накладной еще и пересчет табличной части идет.
(22) полностью не получится - у него выборка документов в коде - всех подряд. а у меня на откуп пользователю. что он отметил - по тем и формирую. Но имхо это некритично. в остальном - код взят оттуда. и не работает корректно. (23) зато формирование табличной части и пересчет ее - все в одном месте. и код самой конфигурации не трогается. Но если не поучится - так и вернусь к исходномуварианту - вынес все процедуры заполнения дока и пересчета в гл. модуль, чтобы запускать и из дока, и из обработки. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |